既然是CAN仿真工具,第一篇就讲一下CAN DBC的格式,如何通过dbc文件定位到需要的信号 。下面用到的所有定义都已经做过处理,都是假的,不涉及任何商业使用的数据。
以下内容不针对没有CAN基础的同学,如果有基础问题可以后面留言,不定期回复。以下内容均为原创,转载请注明出处。
各个CAN工具公司都有CANDBC的编辑与查看工具并且都很智能 ,比如Vector的CANOE跟 CAN Alyzer或者intrepidcs的工具都有dbc的工具。那么问题来了,为啥我们还要人工去看看怎么解析 ,因为我们要做的是自己的CAN 工具,CAN dbc 的各种操作都需要自己去实现 ,所以这篇文章就是介绍如何用肉眼去解析CAN dbc,有了人工解析的能力,使用代码解析就手到擒来了。
针对一个信号无非是以下几个内容:
1. 信号所在的MessageID与名字,每个信号都依附于一个MeesageID;
2. 信号的名字,这个信号叫什么名字,有时候信号名字会有变化;
3. 信号的开始位置与长度,及时信号名变化,只要信号的位置与长度不变就不影响该信号的值;
4. 信号的Factor与Offset,由于每个CAN message 包含64bit的数据,只能表示整型,但是汽车中有很多物理量是需要小数点及负数的 ,比如温度,-40度-+40度。因此需要引入factor和offset的概念,在计算物理值的时候需要用以下公式计算:
raw_value*Factor+Offset=Py