早在1994年,美國(guó)移動(dòng)源商用車中動(dòng)力系統(tǒng)與ECU之間的通訊采用了SAEJ1587/J1708,由于這兩種協(xié)議使用微處理器的串行通訊,因而數(shù)據(jù)質(zhì)量較低。速銳得在大量現(xiàn)有車型測(cè)試中,涉及國(guó)六OBD排放移動(dòng)源的動(dòng)力系統(tǒng)和ECU之間的通訊都更新到了SAE J1939,有的采用的是ISO15765,也有部分采用的是 ISO-14229。這些類型的通訊協(xié)議大多用于卡車、大客車、建筑機(jī)械、農(nóng)業(yè)機(jī)械等CAN通訊領(lǐng)域。
SAE J1939 和他們的前身相比,主要區(qū)別在于SAEJ1708/1587是一種廣泛用于B類網(wǎng)絡(luò)的協(xié)議,他主要提供簡(jiǎn)單的信息交換,其中包括電子控制單元的診斷數(shù)據(jù)。而SAE J1939是基于CAN總線的協(xié)議,波特率可達(dá)250kb/s,一種傳輸速率較高的C類通訊網(wǎng)絡(luò)協(xié)議,那么在J1939里不僅可以實(shí)現(xiàn)J1708所有網(wǎng)絡(luò)功能,還可支持分布在整個(gè)車輛中的電子控制系統(tǒng)之間的實(shí)時(shí)性閉環(huán)控制和通信。
國(guó)六OBD排放在線檢測(cè),就需要在這個(gè)原有的閉環(huán)通訊采集到相應(yīng)的排放數(shù)據(jù),那么在SAE J1939的物理層和數(shù)據(jù)鏈路層可以參考 CAN2.0B協(xié)議為基礎(chǔ),它也和普通的CAN網(wǎng)絡(luò)結(jié)構(gòu)一樣,任何節(jié)點(diǎn)在CAN總線空閑時(shí)可向總線上傳輸報(bào)文,每個(gè)報(bào)文都包涵標(biāo)識(shí)符,采用CSMA/CD非破壞仲裁機(jī)制解決數(shù)據(jù)沖.突。
我們知道,CAN協(xié)議在OSI模型中只定義了物理層和數(shù)據(jù)鏈路層的MAC層,SAE J1939以 CAN2.0B為基礎(chǔ),它還定義了網(wǎng)絡(luò)層和應(yīng)用層的協(xié)議,SAE J1939為傳輸層、會(huì)話層和表示層預(yù)留了位置,以便將來擴(kuò)展。
J1939的物理層都可以用做主網(wǎng)或子網(wǎng)物理層,可以采集到的數(shù)據(jù)除了發(fā)動(dòng)機(jī)以外,還可以采集剎車系統(tǒng)、減速器、燈光、儀表、加熱及音響控制、車窗及鎖、發(fā)動(dòng)機(jī)防盜,通過4G或者5G網(wǎng)絡(luò)通訊,實(shí)現(xiàn)明確的需求目的。針對(duì)智能交通系統(tǒng)ITS在移動(dòng)源在車輛中的應(yīng)用中,商用車輛制造商也愿意將某些輔助設(shè)備連接到車輛網(wǎng)絡(luò)上,整個(gè)車輛能夠被經(jīng)常看作輔助設(shè)備的集合體,那么也反映了橫向的整合能力,但是商用車輛為ITS提供單獨(dú)的協(xié)議是沒有好處的,基于這個(gè)原因,SAE在考慮最初開發(fā)階段就已經(jīng)將ITS應(yīng)用放進(jìn)了考慮之內(nèi),為此,我們所看到的ITS應(yīng)用都可能使用的J1939。
SAE J1939和ITS數(shù)據(jù)總線之間,就需要有網(wǎng)關(guān)提供一個(gè)接口將其連接,商用車制造商有權(quán)決定是否將這樣的附加網(wǎng)絡(luò)及相關(guān)的網(wǎng)關(guān)功能添加到車輛上,網(wǎng)關(guān)比橋接器復(fù)雜得多,也更昂貴。在乘用車中,目前帶網(wǎng)關(guān)的車輛已經(jīng)很多了,很多車型采集CAN總線數(shù)據(jù)都需要繞過網(wǎng)關(guān),這里不贅述了。
速銳得在適配和采集SAE J1939這些國(guó)六OBD排放的移動(dòng)源車型中實(shí)踐結(jié)論得出,物理介質(zhì)、傳輸速率250kb/s、同一網(wǎng)絡(luò)上最大子系統(tǒng)數(shù)為30個(gè)、最大傳輸線長(zhǎng)度算的約為40米(一般都用不到40M)等,總之,物理層可實(shí)現(xiàn)的功能是:位表示、位定時(shí)、同步、總線故障檢測(cè)、物理媒介及其附屬裝置之間的機(jī)械和電氣接口,這些都是通過CAN來實(shí)現(xiàn)的。
商用車實(shí)際網(wǎng)絡(luò)通訊,距離都比較長(zhǎng),一般采用為屏蔽的雙絞線,CAN總線通訊線由一條CAN H、一條CAN L 、一條CAN SHLD組成,CAN H一般為黃色、CAN L為綠色,實(shí)測(cè)兩根信號(hào)線之間以1MHz速度傳輸。信號(hào)線總電阻由每個(gè)ECU的總線標(biāo)準(zhǔn)參數(shù)決定。連接CAN網(wǎng)絡(luò)中的通信線纜,一般有三芯、九芯,現(xiàn)在都直接采用OBD2標(biāo)準(zhǔn)接口了。
SAE J1939數(shù)據(jù)鏈路上是以CAN 2.0為基礎(chǔ),通過CAN總線進(jìn)行數(shù)據(jù)通訊的。它的數(shù)據(jù)鏈路層定義了信息幀的數(shù)據(jù)結(jié)構(gòu)、編碼規(guī)則、包括通訊優(yōu)先權(quán)、傳輸方式、通信要求、總線仲裁、錯(cuò)誤檢測(cè)及處理,它負(fù)責(zé)將CAN 擴(kuò)展幀的29位標(biāo)識(shí)符重新分組定義,使報(bào)文的標(biāo)志服就能夠描述報(bào)文的全部特征,包括目標(biāo)地址、源地址等內(nèi)容。目前支持五種類型消息,分別為命令、請(qǐng)求、廣播/響應(yīng)、確認(rèn)和群擴(kuò)展。對(duì)于出現(xiàn)在CAN數(shù)據(jù)幀換種數(shù)據(jù)場(chǎng)的多字節(jié)參數(shù),一般存放在最低字節(jié)。
應(yīng)該注意的幾個(gè)問題:
1、高速數(shù)據(jù)更新
當(dāng)遇到數(shù)據(jù)更新速度很高,要求在很短的時(shí)間作出反應(yīng)時(shí),如果可能的話,允許使用硬件的消息過濾。
2、請(qǐng)求調(diào)度
如果正準(zhǔn)備請(qǐng)求發(fā)送的信息在請(qǐng)求之前已經(jīng)被接收到了,那么這個(gè)請(qǐng)求調(diào)度應(yīng)該被取消。轉(zhuǎn)換說,如果在請(qǐng)求調(diào)度之前50ms信息已經(jīng)被接收了,那么就不要再發(fā)出請(qǐng)求。被推薦用于廣播的參數(shù)群不應(yīng)該被提出請(qǐng)求,但在超過推薦使用的廣播時(shí)間的特殊情況以外。這個(gè)和乘用車及其類似,之前作過一篇《速銳得破解寶馬奧迪大眾捷豹路虎CAN總線訪問控制經(jīng)驗(yàn)》可吸收進(jìn)來。
3、設(shè)備響應(yīng)時(shí)間和默認(rèn)超時(shí)
所有設(shè)備在被要求做出響應(yīng)時(shí),必須要在200毫秒內(nèi)做出響應(yīng)。所有等待響應(yīng)的設(shè)備必須在放棄和重試前,至少等待1.25s,這個(gè)時(shí)間確保了所有由于總線訪問或消息傳輸經(jīng)過橋接器的等待時(shí)間不會(huì)導(dǎo)致不必要的超時(shí)。需要時(shí),可以特定的應(yīng)用使用不同的時(shí)間值。
發(fā)送至指定目標(biāo)地址的多組消息中,數(shù)據(jù)之間的時(shí)間間隔是0-200毫秒,這意味著當(dāng)標(biāo)志符相同時(shí)可能產(chǎn)生背對(duì)背消息。使用CTS機(jī)制可以確保數(shù)據(jù)包之間有指定的時(shí)間間隔。在多組廣播消息中,數(shù)據(jù)包之間所需要的時(shí)間間隔是50-200毫秒。50毫秒的最短時(shí)間可以保證響應(yīng)者有時(shí)間從CAN硬件中收取數(shù)據(jù)。這時(shí),響應(yīng)者應(yīng)使用250毫秒的超時(shí)(為200毫秒的時(shí)間間隔提供了余量)。
國(guó)六OBD排放移動(dòng)源(商用車)的J1939消息格式參數(shù)中每一個(gè)都可以用ASCII碼表達(dá),或者由兩個(gè)或兩個(gè)以上的字位組成功能狀態(tài),字母數(shù)字字符將首先作為最高有效字節(jié)進(jìn)行傳送。對(duì)每個(gè)參數(shù)都應(yīng)該確定他的類型,數(shù)據(jù)的類型一般是狀態(tài)值或者測(cè)量值。狀態(tài)類型表示一個(gè)多狀態(tài)參數(shù)的目前狀態(tài),或者傳輸節(jié)點(diǎn)在執(zhí)行操作后所產(chǎn)生的結(jié)果。這個(gè)操作是根據(jù)本地或者網(wǎng)絡(luò)的測(cè)量值或者狀態(tài)信息進(jìn)行計(jì)算的結(jié)果。
要注意的是這個(gè)操作不需要有特定的信息,例如,狀態(tài)數(shù)據(jù)表示有一個(gè)電池線圈被激活了,但不需要對(duì)他進(jìn)行測(cè)試來確認(rèn)這個(gè)電磁線圈已經(jīng)實(shí)現(xiàn)了它的功能。狀態(tài)類型數(shù)據(jù)有發(fā)動(dòng)機(jī)啟動(dòng)、PTO速度控制運(yùn)行、巡航控制運(yùn)行、整車工況、故障碼情況、轉(zhuǎn)矩等等,測(cè)試值類型數(shù)據(jù)表示了傳輸節(jié)點(diǎn)對(duì)某個(gè)參數(shù)測(cè)量后得到當(dāng)前值,這樣可以確定已定義參數(shù)的狀態(tài)。屬于測(cè)量值類型的數(shù)據(jù)有進(jìn)氣壓力、點(diǎn)火開關(guān)、巡航設(shè)置開關(guān)打開、最大巡航速度、巡航設(shè)置速度、發(fā)動(dòng)機(jī)速度以及當(dāng)前負(fù)載等等。
通常由幾個(gè)參數(shù)組成一個(gè)參數(shù)群,一個(gè)參數(shù)群的定義包括了他們的屬性,例如刷新周期、數(shù)據(jù)長(zhǎng)度、數(shù)據(jù)頁(yè)P(yáng)G、PDU格式PF、PDU的擴(kuò)展場(chǎng)、默認(rèn)優(yōu)先級(jí)、參數(shù)組數(shù)PGN、參數(shù)列表。如果一個(gè)參數(shù)的數(shù)據(jù)長(zhǎng)度大于8字節(jié),比如車架號(hào),就必須按照分幀傳輸協(xié)議進(jìn)行。如果現(xiàn)有已有參數(shù)群不允許包含新的參數(shù),那么就會(huì)重新定義一個(gè)新的參數(shù)群,例如,按照實(shí)現(xiàn)功能(汽油、冷卻液、燃料等),而不按照類型(溫度、壓力、速度等),具備相近的更新數(shù)據(jù),按照通用的子系統(tǒng)用于測(cè)量和發(fā)送數(shù)據(jù)的設(shè)備。