目录
1 Value Type = Unsigned的“负数/值”CAN信号描述
2 Value Type = Signed的“负数/值”CAN信号描述
2.2 以Factor 不等于 1,Offset不等于0为例
推荐阅读(单击下方文字即可跳转至对应博文):
1、【DBC专题】-1-如何使用CANdb++ Editor创建并制作一个DBC
2、【DBC专题】-2-CAN Signal信号的Multiplexor多路复用在DBC中实现
3、【DBC专题】-3-利用CANdb++ Editor在DBC文件添加帧CAN_ID和信号CAN_Signal
4、【DBC专题】-4-DBC文件中的Signal信号字节顺序Motorola和Intel介绍
6、【DBC专题】-6-Signal信号字节顺序Motorola_LSB/MSB/Sequential/Backward,Intel_Standard/Sequential等6类格式详解
7、【DBC专题】-7-在DBC中创建一个Signal Group信号组
8、【DBC专题】-8-经典CAN2.0 DBC快速切换为CANFD DBC
在DBC中,提供两种方式:描述CAN信号是“负数/值”。下面一一道来。
1 Value Type = Unsigned的“负数/值”CAN信号描述
CAN信号的Value Type = Unsigned。
公式:Phy值 = Hex值 * Factor + Offset。
注意:
- 如果一个CAN信号有负数/值,则Offset必须为负数;
- 负数区间的范围:[Offset,0),既Offset决定了负数/值的下限。
1.1 举例:测试CAN Log
以Factor = 0.1,Offset = -40为例。
2 Value Type = Signed的“负数/值”CAN信号描述
CAN信号的Value Type = Signed。
2.1 以Factor = 1,Offset = 0为例
以Factor = 1,Offset = 0为例。
描述负数的方法:
- CAN信号值的最高位(如果CAN信号长度12Bit,则最高位是Bit12)为0,则仅能描述正数,Phy值 = Hex值;
- CAN信号值的最高位(如果CAN信号长度12Bit,则最高位是Bit12)为1,则仅能描述负数,Phy值 = (-(“Hex值”取反 + 1))。
举例:
- Hex值 = 0xC18,其二进制:1100 0001 1000;
- “Hex值”取反,其二进制:0011 1110 0111;
- (“Hex值”取反 + 1),其二进制:0011 1110 1000,其十进制:1000;
- (-(“Hex值”取反 + 1)) = -1000
2.2 以Factor 不等于 1,Offset不等于0为例
以Factor 不等于 1,Offset 不等于 0为例。
描述负数的方法:
- CAN信号值的最高位(如果CAN信号长度12Bit,则最高位是Bit12)为0,则描述负数是有条件的Phy值 = Hex值 * Factor + Offset。注意:如果Offset是负数,则Offset的绝对值 大于 Hex值 * Factor,才有可能描述负数。
- CAN信号值的最高位(如果CAN信号长度12Bit,则最高位是Bit12)为1,则描述负数是有条件的Phy值 = (-(“Hex值”取反 + 1)) * Factor + Offset。注意:a)如果Offset是负数;b)如果Offset是正数,Offset 小于 (“Hex值”取反 + 1) * Factor。只有这两种情况,才有可能描述负数。
举例:
- Hex值 = 0xC18,其二进制:1100 0001 1000;
- “Hex值”取反,其二进制:0011 1110 0111;
- (“Hex值”取反 + 1),其二进制:0011 1110 1000,其十进制:1000;
- (-(“Hex值”取反 + 1)) * Factor + Offset = -1000 * 0.1 + (-40) = -140。
3 结尾
获取更多“汽车电子资讯”和“工具链使用”,
请关注CSDN博客:汽车电子助手,做您的好助手。