(資料來源: https://d1.amobbs.com/bbs_upload782111/files_22/ourdev_509914.pdf )
之前提到CANBUS ID有區分兩種 ,11 bit 與 29 bit ID.
為了統一29 bit EID的用法,美國車輛工程學會(Society of Automotive Engineers,簡稱SAE)的卡車與公共汽車電子委員會制定J1939規範,來統一這 29bit的用法,以免各自廠商自己弄一套,以後很難維修與debug.
J1939 是基於 CAN BUS 上的協定,所有的訊息雖然都是以 CAN 2.0B 的封包在網路上傳輸/接收,但是這封包內的資訊卻與 CAN 2.0B 大不相同,而是利用了既有的 CAN 規範,再詳細加以區分到每個位元的定義規範,如圖 3、圖 4 所示, ID 部分便可再分為優先權(P)、參數群組編號(PGN)、來源位址(SA),而 PGN 又可再分為參數資料單元-格式(PDU-F)、參數資料單元-特定(PDU-S)等.
J1939目前的數據速率為 250 Kbps,目前已經漸漸支援到 500 kbps..
我們已經知道 CAN BUS FRAME的規定與種類。接著SAE J1939針對29bit 的Arbitration Field 與DATA FIELD來制定規格,也就是所謂的 PDU(Protocol Data Unit),這也是應用程式或使用者會去填寫的資料部分(Arbitration Field and Data Field)。
SPNs 表示 CAN BUS frame中的 DATA Field.
PDU=29 bits EID + 8 bytes(64 bit) DATA
PGN=18 bits of 29 bits( bit[8-25] ) 不包括 P與SA(優先級與源地址) ,最大值為 0x3FFFF(262,143)
協議數據單元Protocol Data Unit(PDU)由七部分組成,分別是優先級,保留位,數據頁,PDU格式,PDU特定域(可作為目標地址,組擴展或專用),源地址和數據域。PDU被封裝在一個或多個CAN中數據幀中,通過物理介質傳送到其他網絡設備。每個CAN數據幀只能有一個PDU.
Parameter Group Number(PGN)則是只有包含保留位,數據頁,PDU格式,PDU特定域 四個。
PDU=29 bits EID + 8 bytes DATA
PGN=18 bits of 29 bits( bit[8-25] ). ,最大值為 0x3FFFF(262,143)
範例
PGN 十進位 65213轉成18bit 2進位為 (0b 00,1111,1110,1011,1101 )
後面帶的8 bytes資料各自代表各自的意思,也有各自的SPN號碼
如 SPN 975值為 1 byts 代表 Estimated percent fan speed(風扇百分比估計值),可能有轉換公式.
如 SPN 977值為 4 bits 代表 fan drive stats(風扇驅動狀況),4 bits 代表有 0000-1111可以用,文件中必須描述各自的意思
SAE-1939完整文件,必須加入會員才能拿到,一般使用者是拿不到這樣的文件的。
留言列表