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