Skip to content

Commit 5060697

Browse files
committed
[bug]:fix dbc file physValue calc when it has vt
1 parent 4fe4067 commit 5060697

File tree

3 files changed

+235
-5
lines changed

3 files changed

+235
-5
lines changed

src/renderer/src/database/dbc/calc.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -307,10 +307,10 @@ function readSignalFromBuffer(signal: Signal, data: Buffer, db: DBC) {
307307

308308
// 所有检查都通过后,更新信号值
309309
signal.value = rawValue
310-
310+
signal.physValue = physValue
311311
// 更新物理值
312312
if (signal.values || signal.valueTable) {
313-
signal.physValue = rawValue
313+
// signal.physValue = rawValue
314314
if (signal.values) {
315315
signal.physValueEnum = signal.values?.find((v) => v.value === signal.value)?.label
316316
} else if (signal.valueTable) {
@@ -319,9 +319,6 @@ function readSignalFromBuffer(signal: Signal, data: Buffer, db: DBC) {
319319
signal.physValueEnum = vt.values?.find((v) => v.value === signal.value)?.label
320320
}
321321
}
322-
} else {
323-
// 应用因子和偏移计算物理值
324-
signal.physValue = physValue
325322
}
326323
}
327324

test/dbc/TestDbc1.dbc

Lines changed: 221 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,221 @@
1+
VERSION ""
2+
3+
4+
NS_ :
5+
NS_DESC_
6+
CM_
7+
BA_DEF_
8+
BA_
9+
VAL_
10+
CAT_DEF_
11+
CAT_
12+
FILTER
13+
BA_DEF_DEF_
14+
EV_DATA_
15+
ENVVAR_DATA_
16+
SGTYPE_
17+
SGTYPE_VAL_
18+
BA_DEF_SGTYPE_
19+
BA_SGTYPE_
20+
SIG_TYPE_REF_
21+
VAL_TABLE_
22+
SIG_GROUP_
23+
SIG_VALTYPE_
24+
SIGTYPE_VALTYPE_
25+
BO_TX_BU_
26+
BA_DEF_REL_
27+
BA_REL_
28+
BA_DEF_DEF_REL_
29+
BU_SG_REL_
30+
BU_EV_REL_
31+
BU_BO_REL_
32+
SG_MUL_VAL_
33+
34+
BS_:
35+
36+
BU_: MCU_F
37+
38+
39+
BO_ 336 MCU_F_0x150: 8 MCU_F
40+
SG_ MCU_F_150_CheckSum : 7|8@0+ (1,0) [0|255] "" Vector__XXX
41+
SG_ MCU_F_150_AliveCounter : 11|4@0+ (1,0) [0|15] "" Vector__XXX
42+
SG_ MCU_F_CrtTqVld : 13|2@0+ (1,0) [0|3] "" Vector__XXX
43+
SG_ MCU_F_CrtRotDir : 15|2@0+ (1,0) [0|3] "" Vector__XXX
44+
SG_ MCU_F_CrtSpd : 23|16@0+ (1,-32768) [-32768|32767] "rpm" Vector__XXX
45+
SG_ MCU_F_CrtTq : 39|16@0+ (0.1,-3276.8) [-3276.8|3276.7] "N��m" Vector__XXX
46+
SG_ MCU_F_CrtMod : 51|4@0+ (1,0) [0|15] "" Vector__XXX
47+
SG_ MCU_F_IninSts : 52|1@0+ (1,0) [0|1] "" Vector__XXX
48+
SG_ MCU_F_CrtSpdSigVld : 54|2@0+ (1,0) [0|3] "" Vector__XXX
49+
SG_ MCU_F_HVChkEndFlg : 55|1@0+ (1,0) [0|1] "" Vector__XXX
50+
SG_ MCU_F_HActvDchaSts : 57|2@0+ (1,0) [0|3] "" Vector__XXX
51+
SG_ MCU_F_LVPwrOffReqFlg : 58|1@0+ (1,0) [0|1] "" Vector__XXX
52+
SG_ MCU_F_CrtSts : 60|2@0+ (1,0) [0|3] "" Vector__XXX
53+
SG_ MCU_F_AlrmLamp_FS : 61|1@0+ (1,0) [0|1] "" Vector__XXX
54+
SG_ MCU_F_ASCFltFlg : 62|1@0+ (1,0) [0|1] "" Vector__XXX
55+
56+
57+
58+
CM_ SG_ 336 MCU_F_150_CheckSum "ǰMCU_150_����У���(0x29)MCU_F_150_CheckSum";
59+
CM_ SG_ 336 MCU_F_150_AliveCounter "ǰMCU_150_���ļ�����MCU_F_150_AliveCounter";
60+
CM_ SG_ 336 MCU_F_CrtTqVld "ǰ���������ǰת����ЧλMotorFTorquevalidflag";
61+
CM_ SG_ 336 MCU_F_CrtRotDir "ǰ���������ǰ��ת����MotorFRotingdirection";
62+
CM_ SG_ 336 MCU_F_CrtSpd "ǰ���������ǰת��MotorFSpeed";
63+
CM_ SG_ 336 MCU_F_CrtTq "ǰ���������ǰת��MotorFTorque";
64+
CM_ SG_ 336 MCU_F_CrtMod "ǰ���������ǰ����ģʽMotorFworkingmode";
65+
CM_ SG_ 336 MCU_F_IninSts "ǰMCU��ʼ��״̬MCUFInitState";
66+
CM_ SG_ 336 MCU_F_CrtSpdSigVld "ǰ���������ǰת���ź���ЧλMotorFSpeedsignalvalidflag";
67+
CM_ SG_ 336 MCU_F_HVChkEndFlg "ǰMCU��ѹ�����ɱ�־λMCUFHVCheckStates";
68+
CM_ SG_ 336 MCU_F_HActvDchaSts "ǰMCU��ѹ�����ŵ�״̬HVActiveDischargeState";
69+
CM_ SG_ 336 MCU_F_LVPwrOffReqFlg "ǰMCU��ѹ�µ������־λMCUFLVPowerOffRequestFlag";
70+
CM_ SG_ 336 MCU_F_CrtSts "ǰ���������ǰ״̬MotorFState";
71+
CM_ SG_ 336 MCU_F_AlrmLamp_FS "������_ǰ�������(���ܰ�ȫ)";
72+
CM_ SG_ 336 MCU_F_ASCFltFlg "ǰMCU�����־λ��Inverter����������·״̬(ASC)";
73+
BA_DEF_ BO_ "NmMessage" ENUM "No","Yes";
74+
BA_DEF_ BO_ "DiagState" ENUM "No","Yes";
75+
BA_DEF_ BO_ "DiagRequest" ENUM "No","Yes";
76+
BA_DEF_ BO_ "DiagResponse" ENUM "No","Yes";
77+
BA_DEF_ BO_ "GenMsgSendType" ENUM "cyclic","NoMsgSendType","IfActive","Event","CA","CE";
78+
BA_DEF_ BO_ "GenMsgCycleTime" INT 0 0;
79+
BA_DEF_ SG_ "GenSigSendType" ENUM "cyclic","OnChange","OnWrite","IfActive","OnChangeWithRepetition","OnWriteWithRepetition","IfActiveWithRepetition","CA","CE","Event";
80+
BA_DEF_ SG_ "GenSigStartValue" INT 0 0;
81+
BA_DEF_ SG_ "GenSigInactiveValue" INT 0 0;
82+
BA_DEF_ BO_ "GenMsgCycleTimeFast" INT 0 0;
83+
BA_DEF_ BO_ "GenMsgNrOfRepetition" INT 0 0;
84+
BA_DEF_ BO_ "GenMsgDelayTime" INT 0 0;
85+
BA_DEF_ "DBName" STRING ;
86+
BA_DEF_ BO_ "CANFD_BRS" ENUM "0","1";
87+
BA_DEF_ BO_ "VFrameFormat" ENUM "StandardCAN","ExtendedCAN","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","StandardCAN_FD","ExtendedCAN_FD";
88+
BA_DEF_ "BusBaudateData" INT 0 10000;
89+
BA_DEF_ "BusBaudateOther" INT 0 10000;
90+
BA_DEF_ SG_ "NWM-WakeupAllowed" ENUM "No","Yes";
91+
BA_DEF_ BO_ "GenMsgILSupport" ENUM "No","Yes";
92+
BA_DEF_ BO_ "GenMsgStartDelayTime" INT 0 65535;
93+
BA_DEF_ BU_ "NmStationAddress" INT 0 63;
94+
BA_DEF_ BU_ "NmNode" ENUM "no","yes";
95+
BA_DEF_ "NmBaseAddress" HEX 1024 1087;
96+
BA_DEF_ "BusType" STRING ;
97+
BA_DEF_ BU_ "NodeLayerModules" STRING ;
98+
BA_DEF_ BU_ "ECU" STRING ;
99+
BA_DEF_ BU_ "CANoeJitterMax" INT 0 0;
100+
BA_DEF_ BU_ "CANoeJitterMin" INT 0 0;
101+
BA_DEF_ BU_ "CANoeDrift" INT 0 0;
102+
BA_DEF_ BU_ "CANoeStartDelay" INT 0 0;
103+
BA_DEF_ SG_ "sigDespEng" STRING ;
104+
BA_DEF_ SG_ "sigSecLevel" STRING ;
105+
BA_DEF_ SG_ "sigConfig" STRING ;
106+
BA_DEF_ SG_ "sigExplanation" STRING ;
107+
BA_DEF_DEF_ "NmMessage" "No";
108+
BA_DEF_DEF_ "DiagState" "No";
109+
BA_DEF_DEF_ "DiagRequest" "No";
110+
BA_DEF_DEF_ "DiagResponse" "No";
111+
BA_DEF_DEF_ "GenMsgSendType" "cyclic";
112+
BA_DEF_DEF_ "GenMsgCycleTime" 0;
113+
BA_DEF_DEF_ "GenSigSendType" "cyclic";
114+
BA_DEF_DEF_ "GenSigStartValue" 0;
115+
BA_DEF_DEF_ "GenSigInactiveValue" 0;
116+
BA_DEF_DEF_ "GenMsgCycleTimeFast" 0;
117+
BA_DEF_DEF_ "GenMsgNrOfRepetition" 0;
118+
BA_DEF_DEF_ "GenMsgDelayTime" 0;
119+
BA_DEF_DEF_ "DBName" "";
120+
BA_DEF_DEF_ "CANFD_BRS" "1";
121+
BA_DEF_DEF_ "VFrameFormat" "StandardCAN";
122+
BA_DEF_DEF_ "BusBaudateData" 2;
123+
BA_DEF_DEF_ "BusBaudateOther" 500;
124+
BA_DEF_DEF_ "NWM-WakeupAllowed" "";
125+
BA_DEF_DEF_ "GenMsgILSupport" "Yes";
126+
BA_DEF_DEF_ "GenMsgStartDelayTime" 0;
127+
BA_DEF_DEF_ "NmStationAddress" 0;
128+
BA_DEF_DEF_ "NmNode" "no";
129+
BA_DEF_DEF_ "NmBaseAddress" 1024;
130+
BA_DEF_DEF_ "BusType" "CAN FD";
131+
BA_DEF_DEF_ "NodeLayerModules" "";
132+
BA_DEF_DEF_ "ECU" "";
133+
BA_DEF_DEF_ "CANoeJitterMax" 0;
134+
BA_DEF_DEF_ "CANoeJitterMin" 0;
135+
BA_DEF_DEF_ "CANoeDrift" 0;
136+
BA_DEF_DEF_ "CANoeStartDelay" 0;
137+
BA_DEF_DEF_ "sigDespEng" "";
138+
BA_DEF_DEF_ "sigSecLevel" "QM";
139+
BA_DEF_DEF_ "sigConfig" "";
140+
BA_DEF_DEF_ "sigExplanation" "";
141+
BA_ "BusType" "CAN FD";
142+
BA_ "DBName" "TEST_DBC_EVBUS_Matrix_CANFD";
143+
BA_ "GenMsgCycleTime" BO_ 336 10;
144+
BA_ "VFrameFormat" BO_ 336 14;
145+
BA_ "sigExplanation" SG_ 336 MCU_F_150_CheckSum "";
146+
BA_ "sigConfig" SG_ 336 MCU_F_150_CheckSum "";
147+
BA_ "sigSecLevel" SG_ 336 MCU_F_150_CheckSum "";
148+
BA_ "sigDespEng" SG_ 336 MCU_F_150_CheckSum "";
149+
BA_ "sigExplanation" SG_ 336 MCU_F_150_AliveCounter "";
150+
BA_ "sigConfig" SG_ 336 MCU_F_150_AliveCounter "";
151+
BA_ "sigSecLevel" SG_ 336 MCU_F_150_AliveCounter "";
152+
BA_ "sigDespEng" SG_ 336 MCU_F_150_AliveCounter "";
153+
BA_ "sigExplanation" SG_ 336 MCU_F_CrtTqVld "";
154+
BA_ "sigConfig" SG_ 336 MCU_F_CrtTqVld "";
155+
BA_ "sigSecLevel" SG_ 336 MCU_F_CrtTqVld "";
156+
BA_ "sigDespEng" SG_ 336 MCU_F_CrtTqVld "";
157+
BA_ "sigExplanation" SG_ 336 MCU_F_CrtRotDir "";
158+
BA_ "sigConfig" SG_ 336 MCU_F_CrtRotDir "";
159+
BA_ "sigSecLevel" SG_ 336 MCU_F_CrtRotDir "";
160+
BA_ "sigDespEng" SG_ 336 MCU_F_CrtRotDir "";
161+
BA_ "sigExplanation" SG_ 336 MCU_F_CrtSpd "";
162+
BA_ "sigConfig" SG_ 336 MCU_F_CrtSpd "";
163+
BA_ "sigSecLevel" SG_ 336 MCU_F_CrtSpd "";
164+
BA_ "sigDespEng" SG_ 336 MCU_F_CrtSpd "";
165+
BA_ "GenSigStartValue" SG_ 336 MCU_F_CrtSpd 32768;
166+
BA_ "sigExplanation" SG_ 336 MCU_F_CrtTq "";
167+
BA_ "sigConfig" SG_ 336 MCU_F_CrtTq "";
168+
BA_ "sigSecLevel" SG_ 336 MCU_F_CrtTq "";
169+
BA_ "sigDespEng" SG_ 336 MCU_F_CrtTq "";
170+
BA_ "GenSigStartValue" SG_ 336 MCU_F_CrtTq 32768;
171+
BA_ "sigExplanation" SG_ 336 MCU_F_CrtMod "";
172+
BA_ "sigConfig" SG_ 336 MCU_F_CrtMod "";
173+
BA_ "sigSecLevel" SG_ 336 MCU_F_CrtMod "";
174+
BA_ "sigDespEng" SG_ 336 MCU_F_CrtMod "";
175+
BA_ "GenSigStartValue" SG_ 336 MCU_F_CrtMod 15;
176+
BA_ "sigExplanation" SG_ 336 MCU_F_IninSts "";
177+
BA_ "sigConfig" SG_ 336 MCU_F_IninSts "";
178+
BA_ "sigSecLevel" SG_ 336 MCU_F_IninSts "";
179+
BA_ "sigDespEng" SG_ 336 MCU_F_IninSts "";
180+
BA_ "sigExplanation" SG_ 336 MCU_F_CrtSpdSigVld "";
181+
BA_ "sigConfig" SG_ 336 MCU_F_CrtSpdSigVld "";
182+
BA_ "sigSecLevel" SG_ 336 MCU_F_CrtSpdSigVld "";
183+
BA_ "sigDespEng" SG_ 336 MCU_F_CrtSpdSigVld "";
184+
BA_ "sigExplanation" SG_ 336 MCU_F_HVChkEndFlg "";
185+
BA_ "sigConfig" SG_ 336 MCU_F_HVChkEndFlg "";
186+
BA_ "sigSecLevel" SG_ 336 MCU_F_HVChkEndFlg "";
187+
BA_ "sigDespEng" SG_ 336 MCU_F_HVChkEndFlg "";
188+
BA_ "sigExplanation" SG_ 336 MCU_F_HActvDchaSts "";
189+
BA_ "sigConfig" SG_ 336 MCU_F_HActvDchaSts "";
190+
BA_ "sigSecLevel" SG_ 336 MCU_F_HActvDchaSts "";
191+
BA_ "sigDespEng" SG_ 336 MCU_F_HActvDchaSts "";
192+
BA_ "sigExplanation" SG_ 336 MCU_F_LVPwrOffReqFlg "";
193+
BA_ "sigConfig" SG_ 336 MCU_F_LVPwrOffReqFlg "";
194+
BA_ "sigSecLevel" SG_ 336 MCU_F_LVPwrOffReqFlg "";
195+
BA_ "sigDespEng" SG_ 336 MCU_F_LVPwrOffReqFlg "";
196+
BA_ "sigExplanation" SG_ 336 MCU_F_CrtSts "";
197+
BA_ "sigConfig" SG_ 336 MCU_F_CrtSts "";
198+
BA_ "sigSecLevel" SG_ 336 MCU_F_CrtSts "";
199+
BA_ "sigDespEng" SG_ 336 MCU_F_CrtSts "";
200+
BA_ "sigExplanation" SG_ 336 MCU_F_AlrmLamp_FS "";
201+
BA_ "sigConfig" SG_ 336 MCU_F_AlrmLamp_FS "";
202+
BA_ "sigSecLevel" SG_ 336 MCU_F_AlrmLamp_FS "";
203+
BA_ "sigDespEng" SG_ 336 MCU_F_AlrmLamp_FS "";
204+
BA_ "sigExplanation" SG_ 336 MCU_F_ASCFltFlg "";
205+
BA_ "sigConfig" SG_ 336 MCU_F_ASCFltFlg "";
206+
BA_ "sigSecLevel" SG_ 336 MCU_F_ASCFltFlg "";
207+
BA_ "sigDespEng" SG_ 336 MCU_F_ASCFltFlg "";
208+
VAL_ 336 MCU_F_CrtTqVld 3 "Reserved" 2 "Invalid" 1 "Valid" 0 "Initializing" ;
209+
VAL_ 336 MCU_F_CrtRotDir 3 "Reserved" 2 "��ת(����ģʽ)" 1 "��ת(ǰ��ģʽ)" 0 "����״̬" ;
210+
VAL_ 336 MCU_F_CrtSpd 65535 "Invalid" ;
211+
VAL_ 336 MCU_F_CrtTq 65535 "Invalid" ;
212+
VAL_ 336 MCU_F_CrtMod 15 "��ʼ��" 14 "Reserved" 13 "Reserved" 12 "Reserved" 11 "Reserved" 10 "Reserved" 9 "Reserved" 8 "SPO" 7 "Reserved" 6 "Calibration Of A New EM" 5 "�ڲ����������" 4 "Reserved" 3 "Reserved" 2 "�ٶȿ���(�ⲿ���ƻ�·)" 1 "ת��ģʽ" 0 "���� ASC" ;
213+
VAL_ 336 MCU_F_IninSts 1 "��ʼ�������" 0 "��ʼ��δ���" ;
214+
VAL_ 336 MCU_F_CrtSpdSigVld 3 "Reserved" 2 "Invalid" 1 "Valid" 0 "Initializing" ;
215+
VAL_ 336 MCU_F_HVChkEndFlg 1 "�����" 0 "��" ;
216+
VAL_ 336 MCU_F_HActvDchaSts 3 "�ŵ�ʧ��" 2 "�ŵ����" 1 "�ŵ���" 0 "δ�ŵ�" ;
217+
VAL_ 336 MCU_F_LVPwrOffReqFlg 1 "�����" 0 "��" ;
218+
VAL_ 336 MCU_F_CrtSts 3 "Reserved" 2 "����״̬" 1 "�綯״̬" 0 "����״̬" ;
219+
VAL_ 336 MCU_F_AlrmLamp_FS 1 "Enable" 0 "Disable" ;
220+
VAL_ 336 MCU_F_ASCFltFlg 1 "�쳣" 0 "����" ;
221+

test/dbc/dbc.test.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ describe('DBC Parser Tests', () => {
2121
let id200Dbc: string
2222
let test1Dbc: string
2323
let scuDbc: string
24+
let testDbc1: string
2425
beforeAll(() => {
2526
dbcContentModel3 = fs.readFileSync(path.join(__dirname, 'Model3CAN.dbc'), 'utf-8')
2627
dbcContentHyundaiKia = fs.readFileSync(
@@ -38,6 +39,7 @@ describe('DBC Parser Tests', () => {
3839
id200Dbc = fs.readFileSync(path.join(__dirname, 'ID200.dbc'), 'utf-8')
3940
test1Dbc = fs.readFileSync(path.join(__dirname, 'test1.dbc'), 'utf-8')
4041
scuDbc = fs.readFileSync(path.join(__dirname, 'SCU.dbc'), 'utf-8')
42+
testDbc1 = fs.readFileSync(path.join(__dirname, 'TestDbc1.dbc'), 'utf-8')
4143
})
4244
test('scu', () => {
4345
const result = parse(scuDbc)
@@ -272,4 +274,14 @@ describe('DBC Parser Tests', () => {
272274
writeMessageData(msg, Buffer.from([0, 0, 0, 0xce, 0x80, 0, 0, 0]), result)
273275
expect(s.value).toBe(0x674)
274276
})
277+
278+
test('testDbc1.dbc', () => {
279+
const result = parse(testDbc1)
280+
expect(result).toBeDefined()
281+
const msg = result.messages[0x150]
282+
writeMessageData(msg, Buffer.from([0xb7, 0x1b, 0x80, 0x02, 0x80, 0, 0xb5, 0xa0]), result)
283+
const s = msg.signals['MCU_F_CrtSpd']
284+
expect(s.value).toBe(0x8002)
285+
expect(s.physValue).toBe(2)
286+
})
275287
})

0 commit comments

Comments
 (0)