갑자기 CAN데이터 파일을 파싱할 일이 생겼는데, CAN데이터에 대한 정보를 .dbc파일로 주셔서 급하게하는 공부공부 ㅠ.ㅠ
.dbc 파일 구조는 아래 순서대로 구성되어 있다.
이제 하나씩 천천히 살펴보자!
Version 은
version = ['VERSION' '"' { CANdb_version_string } '"' ];
New Symbol 은
newsymbols = [ '_NS' ':' ['CM'] ['BADEF']['BA_'] ['VAL_']['CAT_DEF_'] ['CAT_']['FILTER'] ['BADEF_DEF']['EV_DATA_']
['ENVVARDATA']['SGTYPE_'] ['SGTYPEVAL']['BA_DEF_SGTYPE_']
['BASGTYPE']['SIG_TYPE_REF_'] ['VALTABLE']['SIG_GROUP_']
['SIGVALTYPE']['SIGTYPE_VALTYPE_'] ['BOTX_BU']['BA_DEF_REL_'] ['BAREL']['BA_DEF_DEF_REL_'] ['BUSG_REL']['BU_EV_REL_'] ['BUBO_REL'] ];
bittiming = 'BS:' [baudrate ':' BTR1 ',' BTR2 ] ;
baudrate = unsigned_integer ;
BTR1 = unsigned_integer ;
BTR2 = unsigned_integer ;

nodes = 'BU_:' {node_name} ;
node_name = C_identifier ;
valuetables = {value_table} ;
value_table = 'VAL_TABLE' value_table_name >{value_description} ';' ;
value_table_name = C_identifier ;
messages = {message} ;
message = BO_ message_id message_name ':' message_size transmitter {signal} ;
message_id = unsigned_integer ;
signal = 'SG_' signal_name multiplexer_indicator ':' start_bit '|'
signal_size '@' byte_order value_type '(' factor ',' offset ')'
'[' minimum '|' maximum ']' unit receiver {',' receiver} ;
comments = {comment} ;
comment = 'CM' (char_string |
'BU' nodename char_string |
'BO' messageid char_string |
'SG' messageid signal_name char_string |
'EV' env_var_name char_string)
';' ;
VERSION ""
NS :
. NS_DESC
. CM
. BA_DEF
. BA
. VAL
. CATDEF
. CAT
. FILTER
. BA_DEF_DEF
. EVDATA
. ENVVARDATA
. SGTYPE
. SGTYPE_VAL
. BADEF_SGTYPE
. BASGTYPE
. SIGTYPE_REF
. VALTABLE
. SIGGROUP
. SIGVALTYPE
. SIGTYPEVALTYPE
. BOTX_BU
. BADEF_REL
. BAREL
. BADEF_DEF_REL
. BUSG_REL
. BUEV_REL
. BUBO_REL
BS:
BU: Engine Gateway
BO 100 EngineData: 8 Engine
. SG PetrolLevel : 24|8@1+ (1,0) [0|255] "l" Gateway
. SG EngPower : 48|16@1+ (0.01,0) [0|150] "kW" Gateway
. SG EngForce : 32|16@1+ (1,0) [0|0] "N" Gateway
. SG IdleRunning : 23|1@1+ (1,0) [0|0] "" Gateway
. SG EngTemp : 16|7@1+ (2,-50) [-50|150] "degC" Gateway
. SG EngSpeed : 0|16@1+ (1,0) [0|8000] "rpm" Gateway
. CM "CAN communication matrix for power train electronics
implemented: turn lights, warning lights, windows";
VAL_ 100 IdleRunning 0 "Running" 1 "Idle" ;
참고자료
https://newbie-developer.tistory.com/243
https://appia.tistory.com/100
http://mcu.so/Microcontroller/Automotive/DBC_File_Format_Documentation.pdf
잘 못 작성된 내용이 있다면 댓글 부탁드립니다. 감사합니다.😊