在乘用車領(lǐng)域比較熟知的是CAN(FD)、LIN、FlexRay、Ethernet等通信協(xié)議,但對于J1939往往所知甚少。其實在CAN總線協(xié)議誕生之初,J1939協(xié)議便隨之誕生,并且始終在商用車、工程機械等領(lǐng)域發(fā)揮著重要作用。而在乘用車領(lǐng)域,隨著新能源汽車的發(fā)展,為了保證電動汽車與充電基礎(chǔ)設(shè)施互聯(lián)互通,我國在2015年發(fā)布了GB/T 27930-《電動汽車非車載傳導式充電機與電池管理系統(tǒng)之間的通信協(xié)議》,其使用的也正是J1939協(xié)議。因此,本期將對J1939協(xié)議做個基礎(chǔ)介紹,方便大家快速了解J1939協(xié)議包含的內(nèi)容。
什么是J1939J1939是由美國汽車工程師學會(Society of Automotive Engineers,簡稱SAE)開發(fā)的一系列標準,其目的是使不同制造商的車輛和設(shè)備能夠在同一個網(wǎng)絡(luò)上進行通信,實現(xiàn)數(shù)據(jù)交換和協(xié)作。J1939是基于CAN總線技術(shù)的,主要的通信速率是250Kbps或500Kbps,通常采用廣播通信的方式,同時也支持點對點通信。J1939誕生的背景在20世紀后半葉,隨著商用車輛、重型機械設(shè)備等對多功能化和電子化的需求急劇增加,其內(nèi)部不同子系統(tǒng)之間需要進行高效的通信和協(xié)作來實現(xiàn)更先進的控制和監(jiān)控功能。同時,為了在不同制造商和設(shè)備之間實現(xiàn)互操作性來確保不同系統(tǒng)之間的通信能夠無縫進行,制定一套標準化的通信協(xié)議變得尤為重要。而此時CAN總線技術(shù)的出現(xiàn)為實時、可靠且高速的通信提供了可能。在此背景下,一直倡導在汽車和機械領(lǐng)域制定標準的美國汽車工程師學會(SAE)組織開發(fā)了J1939協(xié)議的一系列標準規(guī)范,該工作于1994年左右開始,并在1998年正式發(fā)布了J1939協(xié)議,成為了商用車輛和重型機械設(shè)備領(lǐng)域中通信和控制的主要標準之一。
J1939分層結(jié)構(gòu)
J1939采用分層通信結(jié)構(gòu),主要包括物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層和應(yīng)用層,其中CAN提供了基本的“物理層”和“數(shù)據(jù)鏈路層”。這種分層結(jié)構(gòu)有助于管理復雜的通信系統(tǒng),使不同層次的功能分開,同時有助于確保J1939協(xié)議在不同的商用車輛和重型機械設(shè)備應(yīng)用中具有靈活性和可擴展性。圖1. J1939分層結(jié)構(gòu) J1939的標準文檔構(gòu)成
J1939協(xié)議的標準文檔構(gòu)成通常包括一系列文件,這些文件共同定義了協(xié)議的規(guī)范、特性和實施細節(jié)。
1)SAE J1939: Serial Control and Communications Heavy Duty Vehicle Network。通常被稱為J1939協(xié)議的頂級文檔,主要包括了關(guān)于J1939協(xié)議的概述、基本原則和總體架構(gòu),以及對其他相關(guān)J1939標準和文檔的引用,當前最新版本于2023年發(fā)布。
2)SAE J1939-01: On-Highway Equipment Control and Communication Network。定義了公路設(shè)備實現(xiàn)控制和通信網(wǎng)絡(luò)所需J1939協(xié)議文件的最小子集,當前最新版本于2021年發(fā)布。
3)SAE J1939-02: Agricultural and Forestry Off-Road Machinery Control and Communication Network。定義了農(nóng)林非道路機械實現(xiàn)控制和通信網(wǎng)絡(luò)所需J1939協(xié)議文件的最小子集,當前最新版本于2019年發(fā)布。
4)SAE J1939-03: On-Board Diagnostics Implementation Guide。介紹了J1939協(xié)議中診斷功能的基本概念,提供了關(guān)于如何實施診斷功能的指導,當前最新版本于2021年發(fā)布。
5)SAE J1939-05: Marine Stern Drive and Inboard Spark-Ignition Engine On-Board Diagnostics Implementation Guide。提供了關(guān)于如何在船舶引擎和尾驅(qū)系統(tǒng)上實施診斷功能的指導,當前最新版本于2012年發(fā)布。
6)SAE J1939-11: Physical Layer, 250 Kbps, Twisted Shielded Pair。主要關(guān)注針對250 Kbps通信速率和使用屏蔽雙絞線情況下的物理層規(guī)范,當前最新版本于2016年發(fā)布。
7)SAE J1939-13: Off-Board Diagnostic Connector。主要定義離線診斷設(shè)備連接器的要求,當前最新版本于2016年發(fā)布。
8)SAE J1939-14: Physical Layer, 500 kbit/s。主要定義500Kbps通信速率下的物理層規(guī)范,當前最新版本于2022年發(fā)布。
9)SAE J1939-15: Physical Layer, 250 Kbps, Un-Shielded Twisted Pair (UTP) 。主要關(guān)注針對250 Kbps通信速率和使用非屏蔽雙絞線情況下的物理層規(guī)范,當前最新版本于2018年發(fā)布。
10)SAE J1939-21: Data Link Layer。主要關(guān)注數(shù)據(jù)鏈路層規(guī)范,當前最新版本于2022年發(fā)布。
11)SAE J1939-22: CANFD Data Link Layer。主要關(guān)注基于CANFD的數(shù)據(jù)鏈路層規(guī)范,當前最新版本于2022年發(fā)布。
12)SAE J1939-31: Network Layer。主要關(guān)注網(wǎng)絡(luò)層規(guī)范,當前最新版本于2023年發(fā)布。
13)SAE J1939-71: Vehicle Application Layer。主要關(guān)注應(yīng)用層規(guī)范,當前最新版本于2022年發(fā)布。
14)SAE J1939-73: Application Layer - Diagnostics。主要關(guān)注應(yīng)用層診斷規(guī)范,當前最新版本于2022年發(fā)布。
15)SAE J1939-74: Application - Configurable Messaging。主要定義應(yīng)用層的可配置消息規(guī)范,當前最新版本于2021年發(fā)布。
16)SAE J1939-75: Application Layer - Generator Sets and Industrial。主要關(guān)注J1939協(xié)議發(fā)電機組和工業(yè)領(lǐng)域的應(yīng)用,當前最新版本于2021年發(fā)布。
17)SAE J1939-81: Network Management。主要關(guān)注網(wǎng)絡(luò)管理規(guī)范,當前最新版本于2017年發(fā)布。
18)SAE J1939-82: Compliance - Truck and Bus。主要關(guān)注卡車和公共汽車領(lǐng)域的合規(guī)性要求,當前最新版本于2015年發(fā)布。
19)SAE J1939-84: OBD Communications Compliance Test Cases for Heavy Duty Components and Vehicles。主要關(guān)注OBD通信的合規(guī)性測試,當前最新版本于2017年發(fā)布。
SAE J1939主要協(xié)議解讀
SAE J1939物理層
J1939物理層的協(xié)議主要有J1939-11,J1939-13,J1939-14,J1939-15等。以J1939-11為例,主要包含以下內(nèi)容:
1)通信速率:規(guī)定了通信速率為250Kbps。
2)連接器:包括類型、引腳分配和電氣特性等內(nèi)容。
3)傳輸線路:描述了適用于250Kbps通信速率的電纜和傳輸線路特性,如采用屏蔽雙絞線,總線阻抗為120Ω。
4)總線拓撲:最大線纜長度為40m,最大支線長度為1m,最大節(jié)點數(shù)量為30個。
5)一致性測試:規(guī)范中定義的參數(shù)(如總線電平)應(yīng)如何測試驗證。
6)故障:定義了不同故障情況下的通信行為。
SAE J1939 數(shù)據(jù)鏈路層
J1939數(shù)據(jù)鏈路層的協(xié)議主要有J1939-21,J1939-22等。其中J1939-21主要是針對CAN數(shù)據(jù)鏈路層,J1939-22則主要是針對CANFD數(shù)據(jù)鏈路層。以J1939-21為例,其基于CAN2.0B規(guī)范定義了J1939報文的報文格式、報文類型和傳輸協(xié)議等,在物理層之上提供了可靠的數(shù)據(jù)傳輸功能,實現(xiàn)應(yīng)用層報文的數(shù)據(jù)交換,接下來將針對J1939-21中的定義展開介紹。
| 報文格式
1)協(xié)議數(shù)據(jù)單元(Protocol Data Unit, PDU)J1939報文使用的基于CAN2.0B的拓展幀格式定義了一個完整的標準化通訊策略,通過PDU定義了一個框架,用來組織數(shù)據(jù)幀中J1939協(xié)議相關(guān)的信息。PDU由數(shù)據(jù)幀中的ID和數(shù)據(jù)場組成,數(shù)據(jù)幀和PDU的對應(yīng)關(guān)系如下圖所示。圖2. CAN2.0B幀格式與J1939PDU的對應(yīng)關(guān)系
P(Priority),優(yōu)先級字段,用于在仲裁過程中控制報文優(yōu)先級。EDP(Extended Data Page),為擴展數(shù)據(jù)頁位,在J1939中固定取值為0。P(Data Page),數(shù)據(jù)頁位,可用來擴展參數(shù)組的數(shù)量。PF(PDU Format),為PDU格式字段,通過不同的取值來確定參數(shù)組編號(Parameter Group Number, PGN)是按照PDU1格式還是PDU2格式。PS(PDU Specific),特定協(xié)議數(shù)據(jù)單元字段,當PF的值為0-239時PS表示目標地址(PDU1格式),當PF的值為240-255時PS字段表示組擴展(PDU2格式),且報文只能廣播。SA(Source Address),源地址字段,整個網(wǎng)絡(luò)中SA的值必須是唯一的。Data Field,數(shù)據(jù)場,對于Classic CAN來說是8個字節(jié),而CANFD則最多有64個字節(jié)數(shù)據(jù)。如果需要傳輸更多的數(shù)據(jù),則需要借助J1939的傳輸協(xié)議。2)參數(shù)組編號(PGN)參數(shù)組是應(yīng)用層中定義的與某個ECU相關(guān)的具有相同控制功能的若干個參數(shù)的組合,而PGN是用于唯一標識參數(shù)組的號碼,在應(yīng)用層中定義。PGN由三個字節(jié)組成,從最高位開始的前6個比特默認值為0,然后是EDP位和DP位,接下來兩個字節(jié)分別是PF和PS。
圖3. PDU與PGN的對應(yīng)關(guān)系
3)可疑參數(shù)編號(Suspect Parameter Number, SPN)某個特定PDU對應(yīng)的PGN是由一系列參數(shù)組成的,而SPN則是指明該PGN數(shù)據(jù)場中各個字節(jié)對應(yīng)的是哪些具體的參數(shù)。下圖為PGN 65262這個參數(shù)組的示例,包含發(fā)動機冷卻液溫度、燃油溫度、發(fā)動機機油溫度等參數(shù),不同的參數(shù)由不同的SPN區(qū)分。
圖4. PGN與SPN的對應(yīng)關(guān)系示例
| 報文類型SAE J1939目前支持五種報文類型。
1)命令從某個源地址向特定目標地址或全局目標地址發(fā)送命令類型的參數(shù)組。目標地址接收到命令類型的報文后,應(yīng)根據(jù)接收到的報文采取具體的動作。PDU1 格式(PS為目標地址)和PDU2 格式(PS為組擴展)都能用作命令。命令類型的消息可能包括傳動控制、地址請求、扭矩/速度控制等等。2)請求請求類型的報文提供了從全局范圍或從特定目標地址獲取信息的能力。請求 PGN能定向到特定目標地址的ECU來檢查是否支持特定參數(shù)組(即被請求的目標地址能否傳送特定PGN)。對請求的響應(yīng)取決于該PGN是否被支持,若是被支持,響應(yīng)設(shè)備會發(fā)送被請求的信息,若該PGN不被支持,響應(yīng)的設(shè)備會發(fā)送確認PGN來作為否定消息。
3)廣播/響應(yīng)設(shè)備主動提供的報文通常通過廣播報文發(fā)出來,如發(fā)動機周期性發(fā)往全局地址的水溫、油溫、油壓參數(shù)組報文。而收到命令或請求后則是通過響應(yīng)報文進行回復,如變速器接收到發(fā)動機控制命令后返回響應(yīng)。
4)應(yīng)答對于特定命令、請求需要進行應(yīng)答,包含肯定應(yīng)答、否定應(yīng)答、拒絕訪問和無法應(yīng)答。需要注意應(yīng)答報文必須被發(fā)送到全局地址。5)組功能報文組功能報文是完成某項任務(wù)(如專用功能、網(wǎng)絡(luò)管理、多包傳輸功能)的若干子功能的集合,通過請求對應(yīng)組功能的PGN可以探查是否支持該組功能。
|傳輸協(xié)議
當被傳輸?shù)臄?shù)據(jù)大于8字節(jié)(對于CANFD則是大于64字節(jié)),需要使用傳輸協(xié)議對參數(shù)組進行拆包與重組和連接管理,實現(xiàn)多包傳輸。
1)拆包與重組當需要傳輸?shù)臄?shù)據(jù)域無法用一個單獨的CAN數(shù)據(jù)幀完全裝載時(數(shù)據(jù)長度大于8個字節(jié)),例如一個PDU的數(shù)據(jù)域包含18個字節(jié),就需要將數(shù)據(jù)域拆分。在拆包和重組過程中,使用數(shù)據(jù)場的第一個字節(jié)作為序列號為拆包進行排序,接收方則根據(jù)這個序列號對接收到的多個包進行排序重組。第一個J1939報文的數(shù)據(jù)場包含序列號1和數(shù)據(jù)域的前1-7個字節(jié),第二個J1939報文的數(shù)據(jù)場包含序列號2和數(shù)據(jù)域的其后的8-14個字節(jié),最后一個J1939報文的數(shù)據(jù)場就包含序列號3和數(shù)據(jù)域最后的四個字節(jié),數(shù)據(jù)場剩下未使用的字節(jié)全部填充為0xFF。
2)連接管理連接管理指的是傳輸單個較大參數(shù)組的雙方之間建立虛擬連接過程中涉及的建立連接、使用連接傳輸數(shù)據(jù)和關(guān)閉連接三個過程。連接管理使用的是PGN 60416,相關(guān)的報文稱為Transport Protocol?Connection Management(TP.CM),包含Connection Mode Request to Send(TP.CM_RTS), Connection Mode Clear to Send(TP.CM_CTS), End of Message Acknowledgment(TP.CM_EndOfMsgACK), Connection Abort(TP.Conn_Abort), Data Transfer Message (TP.DT), Broadcast Announce Message(TP.CM_BAM)。點對點通信的連接管理過程如下所示:
建立連接
當某個發(fā)送節(jié)點需要傳輸超過8個字節(jié)的數(shù)據(jù)時,首先發(fā)送TP.CM_RTS報文,并且攜帶了需要傳輸數(shù)據(jù)的總長度。接收節(jié)點收到TP.CM_RTS之后,可以通過發(fā)送TP.CM_CTS報文表示可以發(fā)送,連接建立成功,其中TP.CM_CTS報文中攜帶了發(fā)送方允許發(fā)送報文的數(shù)量信息。
數(shù)據(jù)傳輸
當發(fā)送節(jié)點收到TP.CM_CTS報文后開始通過TP.DT報文發(fā)送拆包后的數(shù)據(jù),根據(jù)TP.CM_CTS報文中的數(shù)量信息發(fā)送特定數(shù)量后需等待下一個TP.CM_CTS報文才能繼續(xù)發(fā)送數(shù)據(jù)包。
關(guān)閉連接
當接收節(jié)點接收最后一個數(shù)據(jù)包后,向發(fā)送接節(jié)點發(fā)送TP.CM_EndOfMsgACK報文表示數(shù)據(jù)接收完畢關(guān)閉連接。
圖5. 點對點發(fā)送的連接管理過程
對于廣播發(fā)送大數(shù)據(jù)包時的連接管理則比較簡單,不需要建立連接和關(guān)閉連接,只需要發(fā)送方通過TP.CM_BAM報文通知接收方即將會發(fā)送大包數(shù)據(jù)。
圖6. 廣播數(shù)據(jù)發(fā)送過程SAE J1939網(wǎng)絡(luò)層
SAE J1939網(wǎng)絡(luò)層的協(xié)議主要有J1939-31等,主要描述了J1939不同網(wǎng)段之間進行通信需要的服務(wù)和功能。介紹了四種為不同網(wǎng)段之間實現(xiàn)互連提供功能的ECU類型:轉(zhuǎn)發(fā)器(實現(xiàn)轉(zhuǎn)發(fā)功能)、網(wǎng)橋(實現(xiàn)轉(zhuǎn)發(fā)和過濾功能)、路由器(實現(xiàn)轉(zhuǎn)發(fā)、過濾和地址轉(zhuǎn)換功能)和網(wǎng)關(guān)(實現(xiàn)轉(zhuǎn)發(fā)、過濾、地址轉(zhuǎn)換和報文重組功能)。
SAE J1939 應(yīng)用層
SAE J1939應(yīng)用層的協(xié)議主要有J1939-71,J1939-73等。
| J1939-71
J1939-71定義了針對車輛應(yīng)用的信號(即SPN)和報文(即PGN)。下圖分別是該規(guī)范中發(fā)動機燃氣流量PGN 61450參數(shù)組的定義和發(fā)動機進氣質(zhì)量流量SPN 132的定義。
圖7. PGN 61450定義
圖8.SPN 132定義
| J1939-73
J1939-73定義了診斷報文的類型,常用的有:
?DM1 - Diagnostic Message 1:DM1報文用于報告當前故障和相關(guān)的故障信息,它提供了有關(guān)車輛或設(shè)備上發(fā)生的故障的詳細信息,包括故障代碼、故障位置、嚴重性等。DM1報文的PGN是65226,該報文是法規(guī)強制要求實現(xiàn)的,通常是以廣播形式周期性發(fā)送。
?DM2 - Diagnostic Message 2:DM2報文用于報告歷史故障和相關(guān)的故障信息,其PGN是65227。
?DM3 - Diagnostic Message 3:DM3報文用于清除記錄的診斷故障碼,其PGN是65228。
另外在J1939-73中還定義了DTC(Diagnostic Trouble Code)的格式,長度為4個字節(jié),如下表所示。此處SPN主要用于識別診斷信息所關(guān)聯(lián)的對象,F(xiàn)MI定義了SPN的故障模式,OC表示故障發(fā)生的次數(shù),CM位目前協(xié)議規(guī)定其值應(yīng)為0,其取值為1主要是為了兼容早期版本,此時對應(yīng)的SPN還需要經(jīng)過換算才能得到真實的SPN值。表1. DTC的組成
J1939 網(wǎng)絡(luò)管理
J1939的網(wǎng)絡(luò)管理協(xié)議主要是J1939-81,需要注意的是此處的網(wǎng)絡(luò)管理不是用來實現(xiàn)網(wǎng)絡(luò)休眠喚醒的,而是對節(jié)點地址的配置和管理。一般情況下地址都是提前分配好的,因此針對這部分本文不再展開介紹。
總結(jié)J1939協(xié)議由各個層級的多個規(guī)范組成,本文介紹了當前J1939包含的協(xié)議并針對部分常見協(xié)議做了介紹。協(xié)議的規(guī)范以及版本眾多給不同節(jié)點之間的互操作性帶來了挑戰(zhàn),因此針對J1939的測試驗證是不可缺少的重要一環(huán)。北匯信息專注于汽車電子測試、與眾多OEM合作,在針對J1939的物理層、數(shù)據(jù)鏈路層、應(yīng)用層的測試開發(fā)和測試實施有著豐富的經(jīng)驗,也歡迎大家共同探討。
-
電動汽車
+關(guān)注
關(guān)注
156文章
12134瀏覽量
231631 -
CAN總線
+關(guān)注
關(guān)注
145文章
1952瀏覽量
130875 -
SAE
+關(guān)注
關(guān)注
0文章
27瀏覽量
13252
發(fā)布評論請先 登錄
相關(guān)推薦
評論