DBC的故事(二)

上篇介绍了MSB和LSB,此篇介绍更复杂的:有符号和无符号数。

1.信号符号

CAN信号有其物理意义,如温度、扭矩等,这些信号是有负值的,常见的解决方案有2种:

1)把offset设成负值

如温度offset=-40,则温度最小值-40。

2)CAN信号类型设为有符号

上篇文章中提到signal定义中有SignedFlag,当SignedFlag是负号时,表示此信号是由符号的。

  • 格式:SG_ Name : StartBit Length ByteOrder SignedFlag (Factor,Offset)  [Minimum | Maximum] "Unit"   Receiver1,Receiver2

2.信号传输

比较长度是一个byte(8个bit)数据传输。

1)无符号数

数值范围:0~255(2^8-1),传输原码。例如:7=00000111。

2)有符号数

最高位是符号位,数值范围:-128~127,正数传输原码,负数传输补码。例如-7,原码=10000111,补码(除符号位按位取反,再加1)=11111001。网络传输的就是补码。

3.信号解析

在上篇文章基础上,更新了《dbcvalue》项目,比较有无符号数据的值。回复“DBC例子”获取。

1)无符号数

 

2)有符号数

 

猜你喜欢

转载自www.cnblogs.com/zhyongquan/p/9032228.html