1.1 CAN總線輸出數據表頭:

解析CAN數據的相關基礎知識:
1.channel:CAN通道。
2.Identifier:在某個時間點發送一條報文,該報文的ID號,將這個ID號對照解析文件,從而進行報文解析。
3.Is Standard:判斷是否是標准幀。
CAN的消息幀格式有兩種,分別是CAN2.0A標准幀(standard)和CAN2.0B擴展幀(extended)。
標准幀用11個bit表示ID編號(identifier),注意11bit的ID是一個有符號數,需要用偏置(offset)補償。【擴展幀用?個bit表示ID編號,是否是有符號數?】
4.Is Data:判斷幀類型是否是數據幀。
幀的類型有四種類型,分別是數據幀、遠程幀、錯誤幀、超載幀。
遠程幀:接收數據的節點可以通過發送遠程幀要求源節點發送數據,遠程幀沒有數據場。
錯誤幀:是6個連續的顯性位。
5. Is TX:判斷是接收節點還是發送節點(TX)
6.DLC:數據長度碼,占4個bit,可包括0~8Byte,本例中為8Byte。
7~14:報文(包含8個字節),十六進制表示。
1.2 解析原始數據的公式
【程序中的ui表示Ui(unsigned int)無符號整型數據,不同公司的CAN解析有各自的解析規則,需要解析文件】
CAN總線發送出來的原始數據是有符號數,需要轉化為無符號數,所以需要加一個offset偏置量。factor是調整(狀態參數物理值和報文數值)的比例系數
offset含義:將有符號數值(比如100 0000 0000)轉化為無符號數(000 0000 0000)需要+1024。
【100 0000 0000(bin)=1024 (dec)
CAN總線傳輸出的數據是 100 0000 0000 ,但是第一個bit表示的是符號位,1表示負號,其真正想傳輸的是0(十進制的數值0),所以需要解析的時候需要+1024;
100 0000 0000 是11個bit,這是由於標准幀表示ID的bit個數是11;【那么擴展幀的偏置是29bit,偏置+2^29?】
factor含義:
按照老師程序的編寫方式:解析規律= 狀態值 = (報文解析出的十進制數值 + offset) * factor (有空可以再去看看一般的CAN解析公式)
【程序中的/10,/8,/100 對應的就是 factor=0.1,0.125,0.01】
【程序中的ui表示Ui(unsigned int)無符號整型數據,不同公司的CAN解析有各自的解析規則,需要解析文件】
CAN總線發送出來的原始數據是有符號數,需要轉化為無符號數,所以需要加一個offset偏置量。factor是調整(狀態參數物理值和報文數值)的比例系數
offset含義:將有符號數值(比如100 0000 0000)轉化為無符號數(000 0000 0000)需要+1024。
【100 0000 0000(bin)=1024 (dec)
CAN總線傳輸出的數據是 100 0000 0000 ,但是第一個bit表示的是符號位,1表示負號,其真正想傳輸的是0(十進制的數值0),所以需要解析的時候需要+1024;
100 0000 0000 是11個bit,這是由於標准幀表示ID的bit個數是11;【那么擴展幀的偏置是29bit,偏置+2^29?】
factor含義:
按照老師程序的編寫方式:解析規律= 狀態值 = (報文解析出的十進制數值 + offset) * factor (有空可以再去看看一般的CAN解析公式)
【程序中的/10,/8,/100 對應的就是 factor=0.1,0.125,0.01】