1. 程式人生 > >DBC的故事(二)

DBC的故事(二)

value signed bsp 解析 解決 正數 有符號數 分享圖片 byte

上篇介紹了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)有符號數

技術分享圖片

DBC的故事(二)