上篇介绍了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)有符号数