DBC文件格式解析

DBC文件格式解析

1. DBC文件结构

VERSION ""


NS_ : 
	NS_DESC_
	CM_
	BA_DEF_
	BA_
	VAL_
	CAT_DEF_
	CAT_
	FILTER
	BA_DEF_DEF_
	EV_DATA_
	ENVVAR_DATA_
	SGTYPE_
	SGTYPE_VAL_
	BA_DEF_SGTYPE_
	BA_SGTYPE_
	SIG_TYPE_REF_
	VAL_TABLE_
	SIG_GROUP_
	SIG_VALTYPE_
	SIGTYPE_VALTYPE_
	BO_TX_BU_
	BA_DEF_REL_
	BA_REL_
	BA_DEF_DEF_REL_
	BU_SG_REL_
	BU_EV_REL_
	BU_BO_REL_
	SG_MUL_VAL_

BS_:

BU_: IC BCM
VAL_TABLE_ EDR_CrashOutputSts 3 "Front and side(Reserved)" 2 "Side(Reserved)" 1 "Front" 0 "No crash" ;
VAL_TABLE_ FCW_Collision 7 "level 7" 6 "level 6" 5 "level 5" 4 "level 4" 3 "level 3" 2 "level 2" 1 "level 1" 0 "no warning" ;
VAL_TABLE_ LDW_Status 3 "Reserved" 2 "LDW Active(Speed >= 60km/h)" 1 "LDW Idle (Speed < 60km/h)" 0 "LDW Close" ;
VAL_TABLE_ IC_Fuel_Signal_Open 3 "Not available" 2 "Short Circuit" 1 "Open" 0 "No Fault" ;
VAL_TABLE_ BCM_DTC 3 "Not available" 2 "Error" 1 "Fault" 0 "No Fault" ;
VAL_TABLE_ TPMS_Battery_status 1 "low voltage" 0 "normal" ;
VAL_TABLE_ TPMS_Temperature 1 "high temperature" 0 "normal" ;
VAL_TABLE_ TPMS_high_Pressure 1 "high pressure" 0 "normal" ;
VAL_TABLE_ TPMS_low_Pressure 1 "low pressure" 0 "normal" ;
VAL_TABLE_ TPMS_Leak_status 1 "fast air leakage" 0 "normal" ;
VAL_TABLE_ TPMS_Battery_voltage_single 3 "reserved" 2 "reserved" 1 "ow voltage" 0 "normal" ;
VAL_TABLE_ TPMS_temperature_a_single 3 "reserved" 2 "high temperature" 1 "superhigh temperature" 0 "normal" ;
VAL_TABLE_ TPMS_Pressure_single 3 "reserved" 2 "low pressure" 1 "high pressure" 0 "normal" ;
VAL_TABLE_ TPMS_Leak_status_single 3 "reserved" 2 "slow air leakage(reserved)" 1 "fast air leakage" 0 "normal" ;
VAL_TABLE_ System_LED_status 3 "reserved" 2 "System error" 1 "System self-check" 0 "System normal" ;
VAL_TABLE_ TPMS_Signa_abnormal 1 "Signal abnormal" 0 "Signal normal" ;
VAL_TABLE_ TPMS_Tire_position 5 "RR" 4 "LR" 3 "RRO" 2 "LRO" 1 "RF" 0 "LF" ;
VAL_TABLE_ BCM_RKE 1 "unlock" 0 "lock" ;
VAL_TABLE_ BCM_Win 2 "falling" 1 "raising" 0 "inactive" ;
VAL_TABLE_ BCM_AntiThief 7 "Description for the value '0x7'" 6 "Description for the value '0x6'" 5 "partially_armed" 4 "alarm" 3 "remind" 2 "armed" 1 "pre-armed'" 0 "disarmed" ;
VAL_TABLE_ BCM_SW_2_Value 1 "active" 0 "inactive" ;
VAL_TABLE_ BCM_KeyStatus 4 "START" 3 "OFF" 2 "ACC" 1 "Reserved" 0 "ON" ;
VAL_TABLE_ BCM_SW_4_Value_ 3 "Not Available" 2 "Error" 1 "Activated" 0 " De-activated" ;


BO_ 3221225472 VECTOR__INDEPENDENT_SIG_MSG: 0 Vector__XXX
 SG_ BCM_SysSt_RKE : 0|2@1+ (1,0) [0|3] "" Vector__XXX

BO_ 2566840343 IC_SysSt1: 8 IC
 SG_ IC_SysSt1_distance : 32|32@1+ (0.125,0) [0|0] "" Vector__XXX

BO_ 2566847511 IC_SysSt: 8 IC
 SG_ IC_SysSt_Fuel_level : 8|8@1+ (0.4,0) [0|100] "" Vector__XXX

BO_ 2365484055 IC_TCO1: 8 IC
 SG_ IC_TCO1_Speed : 48|16@1+ (0.00390625,0) [0|255.99609375] "km/h" Vector__XXX

BO_ 2432639009 BCM_STA: 8 BCM
 SG_ BCM_STA_TGDoor : 32|2@1+ (1,0) [0|3] "" Vector__XXX
 SG_ BCM_STA_Seat_Belt : 2|2@1+ (1,0) [0|3] "" Vector__XXX
 SG_ BCM_STA_RRDoor : 30|2@1+ (1,0) [0|3] "" Vector__XXX
 SG_ BCM_STA_Right_Turn : 12|2@1+ (1,0) [0|3] "" Vector__XXX
 SG_ BCM_STA_RFDoor : 26|2@1+ (1,0) [0|3] "" Vector__XXX
 SG_ BCM_STA_Parking_Brake : 0|2@1+ (1,0) [0|3] "" Vector__XXX
 SG_ BCM_STA_LRDoor : 28|2@1+ (1,0) [0|3] "" Vector__XXX
 SG_ BCM_STA_LFDoor : 24|2@1+ (1,0) [0|3] "" Vector__XXX
 SG_ BCM_STA_Left_Turn : 14|2@1+ (1,0) [0|3] "" Vector__XXX
 SG_ BCM_STA_IGN : 34|4@1+ (1,0) [0|15] "" Vector__XXX



CM_ BO_ 3221225472 "This is a message for not used signals, created by Vector CANdb++ DBC OLE DB Provider.";
BA_DEF_ SG_  "GenSigTimeoutTime" INT 0 65535;
BA_DEF_ SG_  "GenSigTimeoutValue" INT 0 65535;
BA_DEF_ SG_  "GenSigSendType" ENUM  "Cyclic","OnWrite","OnWriteWithRepetition","OnChange","OnChangeWithRepetition","IfActive","IfActiveWithRepetition","NoSigSendType","NotUsed","NotUsed","NotUsed","NotUsed","NotUsed";
BA_DEF_ SG_  "GenSigCycleTime" INT 0 0;
BA_DEF_ SG_  "GenSigCycleTimeActive" INT 0 0;
BA_DEF_ SG_  "GenSigInactiveValue" INT 0 0;
BA_DEF_ SG_  "GenSigStartValue" INT 0 0;
BA_DEF_ BO_  "DiagRequest" ENUM  "no","yes";
BA_DEF_ BO_  "DiagResponse" ENUM  "no","yes";
BA_DEF_ BO_  "DiagState" ENUM  "no","yes";
BA_DEF_ BO_  "DiagUudResponse" ENUM  "False","True";
BA_DEF_ BO_  "DiagUudtResponse" ENUM  "false","true";
BA_DEF_ BO_  "GenMsgFastOnStart" INT 0 65535;
BA_DEF_ BO_  "GenMsgILSupport" ENUM  "no","yes";
BA_DEF_ BO_  "NmAsrMessage" ENUM  "no","yes";
BA_DEF_ BO_  "NmMessage" ENUM  "no","yes";
BA_DEF_ BO_  "TpTxIndex" INT 0 255;
BA_DEF_ BO_  "GenMsgSendType" ENUM  "Cyclic","NotUsed","NotUsed","NotUsed","NotUsed","NotUsed","NotUsed","IfActive","NoMsgSendType","NotUsed";
BA_DEF_ BO_  "GenMsgCycleTime" INT 0 0;
BA_DEF_ BO_  "GenMsgCycleTimeFast" INT 0 0;
BA_DEF_ BO_  "GenMsgNrOfRepetition" INT 0 0;
BA_DEF_ BO_  "GenMsgDelayTime" INT 0 0;
BA_DEF_ BO_  "GenMsgStartDelayTime" INT 0 0;
BA_DEF_ BU_  "ILUsed" ENUM  "no","yes";
BA_DEF_ BU_  "NmAsrCanMsgCycleOffset" INT 0 65535;
BA_DEF_ BU_  "NmAsrCanMsgReducedTime" INT 1 65535;
BA_DEF_ BU_  "NmAsrNode" ENUM  "no","yes";
BA_DEF_ BU_  "NmAsrNodeIdentifier" HEX 0 255;
BA_DEF_ BU_  "NmNode" ENUM  "no","yes";
BA_DEF_ BU_  "NmStationAddress" HEX 0 255;
BA_DEF_  "DBName" STRING ;
BA_DEF_  "ILTxTimeout" INT 0 65535;
BA_DEF_  "NmAsrBaseAddress" HEX 0 2047;
BA_DEF_  "NmAsrCanMsgCycleTime" INT 1 65535;
BA_DEF_  "NmAsrMessageCount" INT 1 256;
BA_DEF_  "NmAsrRepeatMessageTime" INT 0 65535;
BA_DEF_  "NmAsrTimeoutTime" INT 1 65535;
BA_DEF_  "NmAsrWaitBusSleepTime" INT 0 65535;
BA_DEF_  "Manufacturer" STRING ;
BA_DEF_  "NmType" STRING ;
BA_DEF_  "Baudrate" INT 0 1000000;
BA_DEF_  "BusType" STRING ;
BA_DEF_ BU_  "NodeLayerModules" STRING ;
BA_DEF_ BU_  "ECU" STRING ;
BA_DEF_ BU_  "CANoeJitterMax" INT 0 0;
BA_DEF_ BU_  "CANoeJitterMin" INT 0 0;
BA_DEF_ BU_  "CANoeDrift" INT 0 0;
BA_DEF_ BU_  "CANoeStartDelay" INT 0 0;
BA_DEF_DEF_  "GenSigTimeoutTime" 0;
BA_DEF_DEF_  "GenSigTimeoutValue" 0;
BA_DEF_DEF_  "GenSigSendType" "Cyclic";
BA_DEF_DEF_  "GenSigCycleTime" 0;
BA_DEF_DEF_  "GenSigCycleTimeActive" 0;
BA_DEF_DEF_  "GenSigInactiveValue" 0;
BA_DEF_DEF_  "GenSigStartValue" 0;
BA_DEF_DEF_  "DiagRequest" "no";
BA_DEF_DEF_  "DiagResponse" "no";
BA_DEF_DEF_  "DiagState" "no";
BA_DEF_DEF_  "DiagUudResponse" "False";
BA_DEF_DEF_  "DiagUudtResponse" "false";
BA_DEF_DEF_  "GenMsgFastOnStart" 0;
BA_DEF_DEF_  "GenMsgILSupport" "no";
BA_DEF_DEF_  "NmAsrMessage" "no";
BA_DEF_DEF_  "NmMessage" "no";
BA_DEF_DEF_  "TpTxIndex" 0;
BA_DEF_DEF_  "GenMsgSendType" "Cyclic";
BA_DEF_DEF_  "GenMsgCycleTime" 0;
BA_DEF_DEF_  "GenMsgCycleTimeFast" 0;
BA_DEF_DEF_  "GenMsgNrOfRepetition" 0;
BA_DEF_DEF_  "GenMsgDelayTime" 0;
BA_DEF_DEF_  "GenMsgStartDelayTime" 0;
BA_DEF_DEF_  "ILUsed" "no";
BA_DEF_DEF_  "NmAsrCanMsgCycleOffset" 0;
BA_DEF_DEF_  "NmAsrCanMsgReducedTime" 320;
BA_DEF_DEF_  "NmAsrNode" "no";
BA_DEF_DEF_  "NmAsrNodeIdentifier" 50;
BA_DEF_DEF_  "NmNode" "no";
BA_DEF_DEF_  "NmStationAddress" 0;
BA_DEF_DEF_  "DBName" "";
BA_DEF_DEF_  "ILTxTimeout" 0;
BA_DEF_DEF_  "NmAsrBaseAddress" 1280;
BA_DEF_DEF_  "NmAsrCanMsgCycleTime" 640;
BA_DEF_DEF_  "NmAsrMessageCount" 128;
BA_DEF_DEF_  "NmAsrRepeatMessageTime" 3200;
BA_DEF_DEF_  "NmAsrTimeoutTime" 2000;
BA_DEF_DEF_  "NmAsrWaitBusSleepTime" 1500;
BA_DEF_DEF_  "Manufacturer" "Vector";
BA_DEF_DEF_  "NmType" "";
BA_DEF_DEF_  "Baudrate" 500000;
BA_DEF_DEF_  "BusType" "";
BA_DEF_DEF_  "NodeLayerModules" "";
BA_DEF_DEF_  "ECU" "";
BA_DEF_DEF_  "CANoeJitterMax" 0;
BA_DEF_DEF_  "CANoeJitterMin" 0;
BA_DEF_DEF_  "CANoeDrift" 0;
BA_DEF_DEF_  "CANoeStartDelay" 0;
BA_ "BusType" "CAN";
BA_ "DBName" "KLTPMS201228";
BA_ "NmStationAddress" BU_ IC 23;
BA_ "NmStationAddress" BU_ BCM 33;
BA_ "GenMsgCycleTime" BO_ 2566840343 1000;
BA_ "GenMsgCycleTime" BO_ 2566847511 1000;
BA_ "GenMsgCycleTime" BO_ 2365484055 50;
BA_ "GenMsgCycleTime" BO_ 2432639009 35;
VAL_ 3221225472 BCM_SysSt_RKE 1 "unlock" 0 "lock" ;
VAL_ 2432639009 BCM_STA_TGDoor 3 "Not Available" 2 "Error" 1 "Activated" 0 " De-activated" ;
VAL_ 2432639009 BCM_STA_Seat_Belt 3 "Not Available" 2 "Error" 1 "Activated" 0 " De-activated" ;
VAL_ 2432639009 BCM_STA_RRDoor 3 "Not Available" 2 "Error" 1 "Activated" 0 " De-activated" ;
VAL_ 2432639009 BCM_STA_Right_Turn 3 "Not Available" 2 "Error" 1 "Activated" 0 " De-activated" ;
VAL_ 2432639009 BCM_STA_RFDoor 3 "Not Available" 2 "Error" 1 "Activated" 0 " De-activated" ;
VAL_ 2432639009 BCM_STA_Parking_Brake 3 "Not Available" 2 "Error" 1 "Activated" 0 " De-activated" ;
VAL_ 2432639009 BCM_STA_LRDoor 3 "Not Available" 2 "Error" 1 "Activated" 0 " De-activated" ;
VAL_ 2432639009 BCM_STA_LFDoor 3 "Not Available" 2 "Error" 1 "Activated" 0 " De-activated" ;
VAL_ 2432639009 BCM_STA_Left_Turn 3 "Not Available" 2 "Error" 1 "Activated" 0 " De-activated" ;
VAL_ 2432639009 BCM_STA_IGN 4 "START" 3 "OFF" 2 "ACC" 1 "Reserved" 0 "ON" ;


2. DBC文件中的关键字

  • 基本关键字

    DBC-KeywordObject TypeNote
    BU_Network Node网络节点
    BO_Message帧/消息
    SG_Signal信号
    EV_Environment Variable环境变量
    SIG_GROUP_Signal Group信号组
    VAL_Signal Value Table信号值列表
  • 扩展关键字

    DBC-KeywordObject TypeNode
    VERSIONVERSIONDBC文件版本
    NS_NS_新符号定义段
    NS_DESC_NS_DESC_-
    CM_Node/Frame/Signal Comments节点/帧/信号 注释
    BA_DEF_Attribute Definitions属性定义
    BA_DEF_DEF_Attribute Default Value Definitions扩展属性缺省值定义
    BA_Attribute Value Definitions属性值定义
  • 其他关键字

    Expend-Keyword描述备注
    网络节点/网段名称Network使用数据库名称
    数据库名称DBNameBA_扩展属性定义
    帧发送类型GenMsgSendTypeBA_扩展属性定义
    帧周期GenMsgCycleTimeBA_扩展属性定义
    信号发送类型GenSigSendTypeBA_扩展属性定义
    信号初始值GenSigStartValueBA_扩展属性定义
    CAN FD帧属性VFrameFormatBA_扩展属性定义

3. 基本关键字详解

3.1 网络节点: BU_
  • 格式:
BU_ NetworkNodes
  • 说明: BU_后面是网络节点列表
3.2 报文帧定义: BO_
  • 格式:
BO_ MessageId MessageName: MessageSize Transmitter
BO_MessageIdMessageNameMessageSizeTransmitter
报文关键字帧的ID(用十进制表示)帧名帧长度(字节)发送节点
(无为Vector__XXX)
3.3 信号定义: SG_
  • 格式:
SG_ SignalName : StartBit|SignalSize@ByteOrder ValueType (Factor,Offset) [Min|Max] Unit Receiver
  • 说明:
    ① **SG_: ** 是关键字,表示信号
    ② **SignalName: ** 信号的名字
    ③ **StartBit: ** 信号起始位
    ④ **SignalSize: ** 是信号长度
    ByteOrder: ** 1表示是Inter格式; 如果是 0, 表示是Motorrola格式
    ValueType: ** + 表示无符号数; 如果是-
    ,表示有符号数
    ⑦ **(Factor, Offset): **原始值与物理值之间的转换, 物理值 = 原始值*因子Factor + 偏移量Offset
    ⑧ **[Min,Max]: ** 表示【最小值,最大值】, double类型
    ⑨ **unit/引号: **之间的是单位,为字符串类型
    ⑩ **Receiver: ** 表示该信号的接收节点,如果没有接受节点,必须设置为Vector_xxx
3.4 对报文或者信号的注释: CM_
  • 格式:
CM_ Object MessageId/NodeName “Comment”
  • 说明:
    CM_: ** 是关键字,表示cmments
    Object: ** 注解对象可以为节点BU_ 报文BO_ 与 消息SG_

    MessageId/NodeName: 报文ID或者节点名字
    “Comment”: 注解信息
3.5 属性值: BA_
  • 格式
BA_ Name ObjectType ObjectName AttributeValue;
  • 说明
    CM_: ** 是关键字,表示cmments
    Object: ** 注解对象可以为节点BU_ 报文BO_ 与 消息SG_

    MessageId/NodeName: 报文信号帧的ID或者节点名字
    “Comment” 注释信息
3.6 属性定义: BA_DEF_
  • 格式:
BA_DEF_ Object AttributeName ValueType Min Max;
  • 说明:
    BA_DEF_: ** 是关键字,表示s属性定义
    Object: ** 对象类型,可以为节点BU_
    、消息SG_或者网络节点“ ”
    AttributeName: 属性名字
    ValueType: 是属性值类型:整型、字符串、浮点型、枚举类型等
    Min Max: 属性值的上下值,字符串无
3.7 属性初始值定义: BA_DEF_DEF_
  • 格式:
BA_DEF_DEF_ AttributeName DefaultValue;
  • 说明:
    BA_DEF_DEF_: 是关键字,表示属性的初始值
    AttributeName: 属性名称
    DefaultValue: 属性的初始值
3.8 数值表: VAL_
  • 格式:
VAL_ MessageId SignalName N “DefineN” …… 0 “Define0”;
  • 说明:
    VAL_: 是关键字,表示数值表
    MessageId: 信号所属于的报文ID
    SignalName 信号名字
    N “DefineN” …… 0 “Define0”: 信号数值表

未完待续…

  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Java DBC文件解析是指使用Java编程语言对DBC文件进行解析和处理的过程。DBC文件是CAN网络通信协议的描述文件,它定义了CAN协议的消息,信号,节点等信息。 在Java中解析DBC文件涉及到以下几个步骤: 1. 导入相关的Java库:首先需要导入相关的Java库来处理和解析DBC文件。比如,可以使用Apache POI库来读取和解析Excel格式DBC文件,或者使用自定义的DBC解析库。 2. 读取DBC文件:使用Java代码读取和加载DBC文件,可以将DBC文件读取到内存中,以便后续的解析和处理。 3. 解析DBC文件解析DBC文件的过程包括解析消息、信号、节点等信息。根据DBC文件格式和结构,可以使用Java代码逐行解析DBC文件,并将解析的结果存储到相应的数据结构中,比如使用Java的类和对象来表示消息、信号和节点等。 4. 处理和利用解析结果:解析DBC文件后,可以根据解析结果进行各种操作和处理。例如,可以根据解析的节点信息,生成相应的代码来实现CAN节点的功能;或者根据解析的消息和信号信息,构建CAN消息的发送和接收逻辑。 5. 错误处理和异常处理:在解析DBC文件的过程中,可能会遇到各种错误和异常情况,比如文件路径错误、文件格式错误等。在Java代码中需要适当处理这些错误和异常情况,以保证程序的稳定性和可靠性。 总之,Java DBC文件解析是一项比较复杂的任务,需要熟悉DBC文件格式和结构,以及相关的Java编程知识和技巧。通过解析和处理DBC文件,可以方便地获取和利用CAN协议的消息和信号等信息,从而实现相应的功能和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值