• DBC的故事


    欢迎关注《汽车软件技术》公众号,回复关键字获取资料。

    1.DBC定义

    DBC(data base CAN)是汽车ECU间进行CAN通讯的报文内容,有了它相互之间才能听懂。

    2.DBC查看

    DBC是文本文件,可以用记事本打开,一般都用CANdb++,可以更方便的查看和编辑。

    3.DBC组成

    DBC是由一系列的Message和Signal组成,文件定义了Message和Signal的属性,可参考vector文档(回复“DBC文档”获取)。下面介绍几个重要的关键字:

    1)BO_

    BO_是对Message的定义。

    • 格式:BO_ ID Name: DLC Transmiter
    • 例子:BO_ 100 ESP_01: 8 ESP
    • 释义:发送方=ESP,帧名称=ESP_01,帧ID=0x64,报文长度=8个字节

    2)SG_

    SG_是对Signal的定义。

    • 格式:SG_ Name : StartBit | Length @ ByteOrder SignedFlag (Factor,Offset)  [Minimum | Maximum] "Unit"   Receiver1,Receiver2
    • 例子:SG_ VehSpd : 7|16@0+ (0.01,0) [0|655.35]  "km/h"  ECM.TCM
    • 释义:信号名称=VehSpd,起始地址=7,长度=16,字节顺序=MSB(大端),符号位=无符号,系数=0.01,偏移=0,最小值=0,最大值=655.35,单位=km/h,接收方=ECM和TCM

    3)VAL_

    VAL_是对Signal枚举值的定义。

    • 格式:VAL_ ID Name key1  "value1key2 "value2"  ;
    • 例子:VAL_ 100 VehSpdValid  1 "Valid" 0 "Invalid" ;
    • 释义:帧ID=0x64,信号名称=VehSpdValid,枚举值(0x0=Invalid,0x1=Valid)

    4.DBC解析

    上文已经介绍了DBC的格式,接下来介绍如何使用DBC从原始报文中解析出物理值。在此之前要先理解MSB(大端)和LSB(小端)。MSB是高位在前,LSB是低位在前,大多数都用的MSB。

    1)原始值

    假设有3个信号:signal1、signal2和signal3,长度分别是16、4、12。这3个信号包括了3种类型:完整字节,部分字节和跨字节。用Layout来比较。下面使用了位操作指令:&是按位与,<<是左移,>>是右移。

    • MSB

     

    MSB高位在前。

    signal1:起始地址=7,值=Byte0<<8+Byte1。(Byte0是高位,Byte1是低位)

    signal2:起始地址=23,值=(Byte2&0xf0)>>4。(取Byte2的高4位)

    signal3:起始地址=19,值=(Byte2&0x0f)<<8+Byte3。(取Byte2的低4位,作为高位)

    • LSB

     

    LSB是低位在前。

    signal1:起始地址=0,值=Byte0+Byte1<<8。(Byte0是低位,Byte1是高位)

    signal2:起始地址=16,值=Byte2&0x0f。

    signal3:起始地址=20,值=(Byte2&0xf0)>>4+Byte3<<4。(Byte2是低位,Byte3是高位)

    2)物理值

    物理值=原始值*Factor+Offset

    3)代码实现

    以.NET(C#)为例,绘制layout,计算出数值。

    (回复“DBC例子”获取源代码)

    • MSB

     

    • LSB

     

    5.DBC开源资料

    (回复“DBC开源”随机获取)

  • 相关阅读:
    问答
    正在设计taijilang的解析器,真可谓尸横遍地
    因为这些理由而坚持用grunt?其实它们都不成立。
    开始设计taijijs
    从grunt转到gulp
    google 索引
    :: operator
    用coffeescript写构造函数
    jade与angular.js
    angular.js 资料收集
  • 原文地址:https://www.cnblogs.com/zhyongquan/p/8996409.html
Copyright © 2020-2023  润新知