zoukankan      html  css  js  c++  java
  • DBC文件小结

    Vector的DBC文件描述了CAN网络的通信规范,通过定义signal可以表示CAN帧中的各个物理信号的含义。通过CANdb++ Editor软件可以创建和修改DBC文件,一般监控或控制CAN网络内的节点,不需要解析DBC文件里的全部信息,因为有些信息是给CANoe等软件使用的,我们自己编写软件,只利用vector的DBC文件中的部分信息。一个完整的DBC文件结构如下图:

     

     

    35行之前的部分可以忽略,36行定义的的网络节点单元,多个节点之间用空格分开。41、43、47是定义消息,消息结构如下:

    BO_ message_id message_name : message_size transmitter {signal}

    signal是可选项。45、46、48、49行定义的是信号(Signal),信号的结构如下:

    SG_ signal_name multiplexer_indicator : start_bit | signal_size @ byte_order value_type ( factor , offset ) [ minimum | maximum ] unit receiver {, receiver}

    其中byte_order分为motorola和intel两种格式,motorola对应0,intel对应1。这两种格式是区别如下:

    如果在同一个字节内,则没有区别,如果跨越多个字节则有区别,motorola格式是高位(msb)在低字节(说明:CAN消息的字节排列Byte0 Byte1 … Byte7,Byte0是低字节),intel格式是高位(msb)在高字节。

    Intel格式

     

    第一字节的bit0对应的是lsb(第一行的红色箭头),第二字节的bit14对应的是msb(第二行的红色箭头)。起始bit是lsb对应的bit0。

    Motorola格式

     

    第二字节的bit9对应的是lsb(第二行的红色箭头),第一字节的bit7对应的是msb(第一行的红色箭头)。起始bit是lsb对应的bit9。当然也可以修改起始位置,例如将起始位置改为bit8,如下图:

     

    55~58行定义的是信号的选项值,其结构如下:

    'VAL_' message_id signal_name { value_description } ';'

    注意,行结尾有一个分号。其中value_description的定义如下:

    value_description = double char_string ;

    以上是需要解析的部分,注意字符部分都限制在32字节内,不太方便。

  • 相关阅读:
    CentOS下crontab执行java程序
    大数据学习总结(1)任务描述
    敏捷开发总结(2)开发过程活动
    敏捷开发总结(1)软件研发过程
    持续集成(4)工具对比
    持续集成(2)整体流程
    持续集成(1)概念模型
    用户画像(3)用户画像的建模方法-事实标签
    用户画像(2)构建用户画像的数据源
    用户画像(1)用户画像的概念、意义和目标
  • 原文地址:https://www.cnblogs.com/icooper/p/9765043.html
Copyright © 2011-2022 走看看