> 技术文档 > CAN通信——.DBC文件

CAN通信——.DBC文件


CAN通信

.dbc文件

参考

汽车电子 – DBC详解

文件构成

  1. VERSION \"\"
    版本 version 或为空,或由用户自行定义。

  2. NS_
    为new symbol的缩写,后面紧跟着一堆ns,一般为创建dbc时自动生成

  3. 波特率定义

    • BS_
      定义CAN网络的波特率。必须部分,但通常为空。
  4. 网络节点的定义

    • BU_
      网络节点
       //用户自定义nodeName,保证唯一 BU_: Nodename1 Nodename2 Nodename3 ……
  5. 报文帧定义

    • BO_
      • 报文
      • 格式
        //MessageId:报文ID,是以10进制数表示的;//MessageName:报文的名字,命名规则和C语言变量相同;//MessageSize:报文数据域字节数,为无符号整型数据,CAN 2.0为最大8字节,CAN FD 最大64字节;//Transmitter:该报文的发送节点;如果该报文没有指定发送节点,则该值需设置为” Vector__XXX”。BO_: message_id message_name : message_size transmitter {signal}
        BO_ 529 B_CDCU_RDCU_VGACtrl: 8 CDCUSG_ B_CDCU_RDCU_EAVDriverWindModeBtn : 2|3@0+ (1,0) [0|7] \"\" Vector__XXXSG_ B_CDCU_RDCU_EAVPsnWindModeBtn : 5|3@0+ (1,0) [0|7] \"\" Vector__XXXSG_ B_CDCU_RDCU_EAVSweepWindBtn : 6|1@0+ (1,0) [0|1] \"\" Vector__XXXSG_ B_CDCU_RDCU_EAVDrvLeftHorzPos : 11|4@0+ (1,0) [0|15] \"\" Vector__XXXSG_ B_CDCU_RDCU_EAVDrvLeftVertPos : 15|4@0+ (1,0) [0|15] \"\" Vector__XXXSG_ B_CDCU_RDCU_EAVDrvRightHorzPos : 19|4@0+ (1,0) [0|15] \"\" Vector__XXXSG_ B_CDCU_RDCU_EAVDrvRightVertlPos : 23|4@0+ (1,0) [0|15] \"\" Vector__XXXSG_ B_CDCU_RDCU_EAVPsnLeftHorzPos : 27|4@0+ (1,0) [0|15] \"\" Vector__XXXSG_ B_CDCU_RDCU_EAVPsnLeftVertPos : 31|4@0+ (1,0) [0|15] \"\" Vector__XXXSG_ B_CDCU_RDCU_EAVPsnRightHorzPos : 35|4@0+ (1,0) [0|15] \"\" Vector__XXXSG_ B_CDCU_RDCU_EAVPsnRightVertPos : 39|4@0+ (1,0) [0|15] \"\" Vector__XXX
  6. 信号的定义

    • SG_
    • 格式
       SG_: signal_name [multiplexer_indicator] : start_bit | signal_size @ byte_order value_type ( factor , offset ) [ minimum | maximum ] unit receiver {, receiver}
      字段名 描述 signal_name 信号名 multiplexer_indicator 定义了该信号是否为一个正常信号,或一个复用信号,此项可以被省略。 start_bit 起始位置 signal_size 信号长度 byte_order 字节顺序。
      0: Intel格式
      1: Motorola格式 value_type 数值类型。
      Unsigned: 无符号数
      Signed: 有符号数 factor 因子。用于将原始值转换为物理值。 offset 偏移。用于将原始值转换为物理值。
      物理值 = 原始值 * 因子 + 偏移量 minimum 最小值。minimummaximumdouble 类型,表示信号的最值范围。 maximum 最大值。minimummaximumdouble 类型,表示信号的最值范围。 unit 单位 receiver 接收者。如果一个信号没有指定接收者,则必须设置为 Vector__XXX
  7. 注解部分

  • CM_
  • 格式:Object MessageId/NodeName “Comment”
    • Object:表示进行注解的对象类型,可以是节点“BU_”、报文“BO_”、消息”SG_”;
    • MessageId/NodeName:表示进行注解的对象,若前面的对象类型是信号或者报文,则这里的值应为报文的ID(10进制数表示);若前面的对象类型为节点,则这里的值应为节点的名字;
    • Comment :表示进行注解的文本信息;
  • 例子
    //信号CM_ SG_ 384 B_SRS_DrvSeatBeltWarning \"Driver seat belt status\";
  1. 属性定义部分
  • BA_DEF_
    • 对报文/信号/节点等的属性初始值定义
    • 格式
       BA_DEF_DEF_: AttributeName DefaultValue; //其中: //AttributeName:特征名称(C语言变量格式)。 //DefaultValue:该特征的默认设置值
    • 示例
       BA_DEF_ BO_ \"AliveTimeout\" INT 0 100000; BA_DEF_ BO_ \"XcpResp\" ENUM \"Yes\",\"No\"; BA_DEF_ \"Date\" STRING ; BA_DEF_ BU_ \"CANoeJitterMin\" INT 0 0; BA_DEF_DEF_ \"Manufacturer\" \"XXX\"; BA_DEF_DEF_ \"Project\" \"E38\"; BA_DEF_DEF_ \"Version\" \"N\"; BA_DEF_DEF_ \"Date\" \"N\";
  • BA_
    • 对报文/信号/节点等的属性设置值定义
    • 格式
       BA_: AttributeName projectValue //其中: //AttributeName:特征名称(C语言变量格式) //projectValue:该特征的设置值
    • 示例
       BA_ \"NmStationAddress\" BU_ AMP 47; BA_ \"NmStationAddress\" BU_ TTM 0; BA_ \"BusType\" \"CAN\"; BA_ \"DBName\" \"CAN\";
  1. 数值表部分
  • VAL_
    • 数值表定义
    • 格式
       VAL_: MessageId SignalName N “DefineN” …… 0 “Define0” //其中: //MessageId 表示该信号所属的报文ID(10进制数表示); //SignalName 表示信号名;
    • 示例
       VAL_ 384 B_SRS_CrashOutputSt 0 \"Not Active\" 1 \"Active\" ; //id384报文下,B_SRS_CrashOutputSt信号的数值定义