重型商用車CAN總線通訊平臺的設(shè)計
引言
本文所敘述的基于J1939的重型商用車CAN通訊平臺,主要用于獨立開發(fā)的發(fā)動機電控單元、AMT(Automatic and Mechanical Transmission機械自動變速箱)電控單元以及防抱死制動系統(tǒng)三者之間,通過接收和發(fā)送來自不同節(jié)點的消息實現(xiàn)信息的實時傳遞和共享。
SAE J1939協(xié)議規(guī)范及通信原理
在早期載貨卡車、大客車上的電子系統(tǒng)采用串行通信的方法,用SAE J1587標(biāo)準(zhǔn)來實施,但是其速度較慢且傳遞的數(shù)據(jù)量少,不適用于高速通信的場合。近年來CAN總線已發(fā)展成為車輛電子系統(tǒng)的主流總線,載貨車及大客車已制定了SAE J1939協(xié)議作為它的通信標(biāo)準(zhǔn)。SAE J1939協(xié)議是由SAE組織發(fā)布并以CAN2.0B技術(shù)規(guī)范為基礎(chǔ)的串行通信協(xié)議標(biāo)準(zhǔn),它是一種支持閉環(huán)控制的在多個ECU之間高速通信的網(wǎng)絡(luò)協(xié)議,通訊速率最高可達到250Kbit/s。J1939協(xié)議以CAN2.0為網(wǎng)絡(luò)核心,取自ISO(國際標(biāo)準(zhǔn)化組織)定義的OSI模型中的四層:物理層、數(shù)據(jù)鏈路層、應(yīng)用層以及網(wǎng)絡(luò)管理層,其中CAN2.0技術(shù)規(guī)范定義了物理層及數(shù)據(jù)鏈路層規(guī)范,不同的汽車廠商可以制定符合自身需要的應(yīng)用層協(xié)議來建立更加完善的系統(tǒng)。SAE J1939支持的開放系統(tǒng)互連(OSI)模型如圖1所示。
物理層實現(xiàn)網(wǎng)絡(luò)中ECU的電氣連接。ECU的數(shù)目限制于總線線路的負載承受能力,在特定網(wǎng)段上ECU的最大數(shù)目設(shè)定為30。物理介質(zhì)為非屏蔽或屏蔽雙絞線。雙絞線特性阻抗為120Ω,電流對稱驅(qū)動,數(shù)據(jù)波特率設(shè)定為250kb/s。
在數(shù)據(jù)鏈路層,J1939協(xié)議對CAN標(biāo)識符進行了重新定義,并且僅使用CAN擴展幀格式作為其標(biāo)準(zhǔn)的通信消息幀格式并進行了詳細的劃分和定義,而CAN標(biāo)準(zhǔn)幀則留給用戶作為自定義通信消息幀。J1939協(xié)議采用PDU(Protocol Data Unit,協(xié)議數(shù)據(jù)單元)傳遞信息,對CAN2.0B擴展格式29位標(biāo)識符進行了重新定義,它包含了以下幾個部分:優(yōu)先權(quán)(P)、保留位(R)、數(shù)據(jù)頁標(biāo)識(DP)、PDU格式(PF)、PDU特定域(PS)、源地址(SA)。
SAE J1939PDU的數(shù)據(jù)格式如表1所示。
SAE J1939協(xié)議采用參數(shù)群編號(PGN)作為一組參數(shù)的標(biāo)號,用于標(biāo)識命令信息、請求信息、數(shù)據(jù)信息、確認應(yīng)答和否定應(yīng)答信息的。在J1939協(xié)議的應(yīng)用層中,一個參數(shù)組號可以代表一個或多個參數(shù)。
網(wǎng)絡(luò)層的主要作用是用于定義兩個或多個SAE J1939網(wǎng)絡(luò)間的網(wǎng)絡(luò)連接設(shè)備網(wǎng)橋的消息過濾功能。通過采用消息過濾功能,使兩個SAE J1939協(xié)議的網(wǎng)絡(luò)得以共享期望的PGN而無需將過度的網(wǎng)絡(luò)資源消耗在不期望的PGN上。
J1939協(xié)議應(yīng)用層中的參數(shù)主要可分為三類:傳輸信號,離散參數(shù)(測量值),以及控制命令傳遞值(狀態(tài)量)。狀態(tài)參數(shù)表示具有多態(tài)信號的某一種狀態(tài),如發(fā)動機剎車使能/禁能,巡航控制激活/關(guān)閉,扭矩/速度控制超載模式,錯誤代碼等;而測量參數(shù)則表示所接受到的信號的值的具體大小,如缸內(nèi)爆發(fā)壓力、最大巡航速度、發(fā)動機轉(zhuǎn)速等。不同類型的參數(shù)、其范圍類型也不同。在J1939協(xié)議中數(shù)據(jù)的傳輸范圍并不等于傳輸數(shù)值的范圍。對于物理數(shù)據(jù)J1939有如下的計算公式:物理數(shù)據(jù)=比例系數(shù)×傳輸數(shù)值+偏移量。
為了能更全面地定義應(yīng)用層中各個物理參數(shù)的范圍和精度,J1939協(xié)議為各物理參數(shù)定義了SLOT(比例Scaling,界限Limit,偏移量Offset和傳送Transfer Function)這些概念,主要用于定義新的參數(shù)。Transfer Function:傳輸功能表示了數(shù)據(jù)的用途;Scaling:比例系數(shù)表示的是物理數(shù)據(jù)的精度;Offset:偏移量決定了物理參數(shù)數(shù)據(jù)范圍的初始量;Limit:數(shù)據(jù)范圍則是根據(jù)傳輸數(shù)值范圍、比例系數(shù)和偏移量所決定的物理參數(shù)的數(shù)據(jù)范圍。在SAE J1939中增加新參數(shù)時,可以在給定的參數(shù)類型中盡量保持數(shù)據(jù)的一致性。
CAN通訊平臺硬件設(shè)計
所要設(shè)計的CAN通訊平臺是在發(fā)動機、變速器以及制動系統(tǒng)之間傳遞數(shù)據(jù),因此需要具備基本的接收和發(fā)送功能。通訊平臺硬件系統(tǒng)主要由CAN控制器和CAN驅(qū)動器收發(fā)器兩個部分組成。
CAN控制器硬件選用的是英飛凌(Infineon)公司的XC164CM系列單片機,它集成有CAN控制模塊。該單片機的TwinCAN模塊包含兩個全CAN功能節(jié)點,兩節(jié)點可以獨立工作或者通過網(wǎng)關(guān)功能交換數(shù)據(jù)幀或遠程幀,該模塊還擁有32個CAN消息通道,這32個報文對象可以被獨立地分配到兩個CAN節(jié)點之一并設(shè)置為發(fā)送或者接收對象,它們可以設(shè)置成處理帶11位或29位標(biāo)識符的幀。這個CAN控制器符合CAN規(guī)范V2.0B,每個CAN節(jié)點都有控制寄存器,支持速率可到1Mbit/s。
CAN驅(qū)動器收發(fā)器選擇NXP公司的PCA82C250芯片給CAN控制器與物理總線之間提供接口。該芯片提供對總線的差動發(fā)送和接收功能,也可以支持最高到1Mbit/s的通訊速率。其驅(qū)動電路內(nèi)部具有限流電路,可防止輸出極對電源、地或負載的短路。當(dāng)結(jié)溫超過160℃時,兩個發(fā)送器輸出端極限電流將減小,從而限制了芯片的溫升,實現(xiàn)了過熱保護。同時,PCA82C250芯片采用了雙線差分驅(qū)動,有助于抑制汽車在惡劣電器環(huán)境下的瞬變干擾。
CAN總線接口電路的設(shè)計在遵循SAE J1939協(xié)議的同時,要考慮對接口電路進行一定抗干擾和保護措施。連接XC164CM單片機與PCA82C250芯片的硬件電路設(shè)計如圖2所示。
XC164CM單片機具有兩個獨立的CAN節(jié)點A、B,故選用兩片PCA82C250分別與其引腳的TxD端與RxD端相連,總線連接的CAN節(jié)點1、2分別代表發(fā)動機電控單元和AMT的電控單元,數(shù)據(jù)由CAN節(jié)點1和CAN節(jié)點2發(fā)出,經(jīng)過該通訊平臺后傳給另一個節(jié)點。SAE J1939協(xié)議中需要使用屏蔽雙絞線作為CAN總線的通訊導(dǎo)線,選用PCA82C250的高速工作模式,只要將Rs引腳直接接低電平即可實現(xiàn)。
根據(jù)SAE J1939-11中要求,線性總線的主要中樞鏈路的每個終端都必須以一個合適的電阻來結(jié)束,用以提供CAN_H和CAN_L導(dǎo)線的正確終端,其取值范圍應(yīng)在110W~130W之間,額定值為120W。實際設(shè)計時在PCA82C250的CANH與CANL之間接入一個阻值為120W的電阻RL作為CAN總線抑制反射的終端電阻。CAN_H和CAN_L與地之間各并聯(lián)一個30pF的電容,可以起到濾除總線上的高頻干擾的作用,并且具有一定的防電磁輻射能力。
電路設(shè)計時考慮到進一步提高總線節(jié)點的抗干擾能力,有時在CAN控制器和CAN驅(qū)動器之間加入光耦器件,并使用隔離電源供電。但是增加光耦也會增加總線節(jié)點的循環(huán)延遲,信號在每個節(jié)點要從發(fā)送和接收路徑通過這些器件兩次,這將減少當(dāng)位速率給定時可使用的最大的總線長度。
CAN通訊平臺軟件流程
軟件的設(shè)計工作主要是基于底層硬件的CAN控制器驅(qū)動程序設(shè)計,該部分主要是面向CAN控制器的硬件系統(tǒng)的配置和CAN報文幀的收發(fā)處理,從而提供了面向通信層的服務(wù)功能,這由CAN模塊的初始化函數(shù)和CAN報文幀的發(fā)送接收函數(shù)來完成。
實車驗證
將已開發(fā)CAN通訊硬件平臺搭載在解放牌平頭柴油牽引車上,斷開AMT電控單元與發(fā)動機和制動系統(tǒng)之間的CAN總線,接入CAN通訊平臺后進行實車測試,試驗場地為長直坡道。重型車先平路起步后上坡,連續(xù)換擋至最高檔位并最終制動,整個實驗過程中沒有出現(xiàn)控制錯誤,車輛能夠正常工作,利用串口傳遞數(shù)據(jù)觀測總線實時的信息流,得到了部分通訊數(shù)據(jù)(略)。
CAN通訊平臺上接受和發(fā)送的報文均符合SAE J1939協(xié)議,包含了在CAN通訊平臺上接收和發(fā)送到來自發(fā)動機、AMT以及制動系統(tǒng)的部分報文內(nèi)容,先舉例說明一組來自發(fā)動機的報文如表2所示。
一條報文包含8字節(jié)的數(shù)據(jù)域,除了上述內(nèi)容占據(jù)的字節(jié)之外,其余位均作保留位。從這些數(shù)據(jù)可以看到發(fā)動機電子控制器的周期性發(fā)送,并且只有在CAN通訊平臺接收到更新的數(shù)據(jù)后,才會向總線發(fā)送更新的報文內(nèi)容,避免給總線帶來負擔(dān)。
結(jié)語
本文從CAN總線和SAE J1939協(xié)議特點和原理的介紹入手,通過設(shè)計符合J1939通訊協(xié)議的硬件和軟件模塊,實現(xiàn)了在重型車上利用該CAN通訊平臺完成數(shù)據(jù)實時傳遞與共享的功能,并且在實車上通過了發(fā)動機、變速箱和制動系統(tǒng)三方通訊的驗證,為使用J1939協(xié)議開發(fā)CAN通訊平臺提供了一定的思路。