J1939協議與CAN2.0對應關係之二

CAN2.0是一種總線規範,是數據鏈路層的技術。J1939是SAE(美國汽車協會)定義的基於CAN總線的規範,目的是解決不同發動機廠商、不同ECU廠商的兼容性問題。
1、J1939和CAN2.0的關係

J1939是在CAN2.0B的基礎上,對仲裁場部分的29位ID的重新解釋;其它部分完全一樣。
29位ID分爲:3位的優先級、8位的PF(幀格式)、8位的PS(幀擴展)、8位的SA(源地址)、1位的DP(Data Page數據頁)、1位的保留位。
其中1位的DP、8位的PF、8位的PS組成了PGN;
PGN是Parameter Group Number;是參數組列表。
在J1939中,將消息分爲了PDU1和PDU2兩種格式。
PDU1格式的消息發送給特定地址的ECU,地址用8位的PS記錄;PDU2格式的消息則發送給所有的ECU,8位的PS用於擴展。
當PF的值在0-239時,表示該消息爲PDU1格式,PS爲DA(目地地址)。
當PF的值在240-255時,表示該消息爲PDU2格式,PS爲擴展地址。
2、J1939的物理特性:

總線最大長度爲40M;最大支持30個節點;節點最大長度爲1M;傳輸速率最大爲250Kbps;3根線(CAN_H、CAN_L、GND)
J1939的分層:
J1939/11:物理層:物理介質、總線設計、長度、節點;
J1939/21:數據層:PGN信息、幀格式;
J1939/31:網絡層;
J1939/71/73:應用層;信息分享、控制、廣播、故障診斷;
3、PGN

PGN是Parameter Group Number的簡稱。J1939中最大支持(240+16×256)×2個PGN。
當消息爲PDU1格式時,PGN=DP×256×256+PF;
當消息爲PDU2格式時,PGN=DP×256×256+PF*256+PS;
在J1939中,消息的傳遞以參數組的形式,每個參數組中有若干參數,每個參數是一個SPN;
4、SPN

SPN:Suspent Parameter Number:特定的參數編號;例如:SPN 190表示發動機轉速。
5、CAN2.0與J1939的關係、J1939與特定的廠商協議的關係

CAN2.0是一種總線規範,是數據鏈路層的技術。J1939是SAE(美國汽車協會)定義的基於CAN總線的規範,目的是解決不同發動機廠商、不同ECU廠商的兼容性問題。J1939定義了 一系列的PGN和SPN,這些PGN包含了發動機、變速器、車軸等汽車上各部件的信息;對參數的表示方法(狀態和值)又定義了SLOT(Scaling比例、Limit界限、Offset偏移、Transfer傳送)。ECU廠商都應該遵循這個規範。ECU模塊的功能不同,廠商不同,在J1939的基礎上,又表現出其多樣性:支持或者不支持某些PGN、SPN和SLOT;新增了某些J1939未定義的PGN和SPN。
6、PDU消息包在CAN2.0上的拆包和重組

CAN2.0的數據場最多支持8字節的數據,如果PDU的數據小於等於8字節,1個PDU用1個CAN2.0幀傳輸即可;如果PDU的數據大於8字節,就需要在發送時進行拆包,在接收時進行重組。接收端如何識別是否需要重組以及怎麼重組呢?J1939的做法是在拆包的情況下,將8字節的數據區的第一個字節用於表示拆包後的序號(1-255);因此,最長的PDU爲255×7字節。
7、PDU的內容解析

PDU:Protocol Data Unit:協議數據單元。
在數據鏈路層CAN之上的就是PDU,包含了CAN2.0中仲裁場、控制場和數據場部分的內容。對J1939協議的解析其實就是對PDU的協議解析,先對接收到的包進行重組,構建一個完整的PDU包;再從PDU中數據包中提取出PGN和SPN對應的值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章