基于SAE J1939協(xié)議的車輛信息采集與診斷模塊
摘要:本文在CAN總線技術與SAE J1939協(xié)議的基礎上,提出了基于Cortex-M3內核微控制器的車輛信息采集與診斷模塊系統(tǒng)設計。詳細介紹了SAE J1939協(xié)議的報文及內容格式,以及系統(tǒng)硬件、軟件開發(fā)過程,并指出了設計中需要注意的環(huán)節(jié)。該模塊通過對CAN總線及各傳感器數據的讀取和處理,能夠穩(wěn)定可靠地提供車輛工況數據,并可集成到車載多媒體系統(tǒng)和虛擬數字儀表等其他車載產品中。
關鍵詞:車輛工程;SAE J1939協(xié)議;CAN總線;Cortex-M3
0 引言
當前,汽車電子化程度不斷提高,大量采用基于微處理器的電控單元(ECU)對汽車的各個功能模塊進行信息采集及控制。由于ECU數量眾多,為了提高信號的利用率,要求在不同的ECU間,大量的數據狀態(tài)信息能夠實現共享,大量的控制信號能夠實時交換。同時,車載多媒體設備、虛擬數字儀表等產品也需要實時獲取車輛工況信息。因此傳統(tǒng)線束已遠遠不能滿足這種需求。
CAN總線及基于CAN的車輛通信應用層協(xié)議提供了解決上述問題的途徑。目前SAE J1939是汽車行業(yè)應用最為廣泛的CAN應用層協(xié)議之一。本文提出的基于CAN和SAE J1939的車輛信息采集與診斷模塊能夠實時獲取車輛的車速、油壓、制動壓力、發(fā)動機轉速等重要信息,在車輛發(fā)生故障時及時定位車輛故障,并可集成到車載多媒體、虛擬儀表等產品中,為車輛駕駛人員提供直觀實時的車輛工況。
1 SAE J1939協(xié)議介紹
SAE J1939協(xié)議是美國汽車工程師協(xié)會(SAE)在CAN2.0B協(xié)議基礎上制定的客車和重型貨車網絡通信應用層協(xié)議,在目前汽車電子網絡中得到廣泛應用。該協(xié)議采用CAN總線的數據幀封裝其數據信息,并明確規(guī)定了汽車內部各ECU的名稱、地址、通訊協(xié)議、優(yōu)先級等信息,使用多路復用技術為車輛各傳感器、執(zhí)行器和控制器提供建立在CAN總線基礎上的標準化高速網絡連接,在不同的ECU間實現高速數據共享,以期有效減少線束數量并提高車輛電子控制系統(tǒng)的靈活性、可靠性、可維修性。目前,車輛的ECU產品大都帶有遵循SAE J1939協(xié)議的CAN總線接口。這為車輛信息的快速采集和故障的在線診斷定位提供了便利。
1.1 SAE J1939報文格式
SAE J1939在通訊中是負責數據傳輸的傳輸協(xié)議,其功能分為數據的拆分打包和重組及連接管理兩部分。其數據幀是以PDU(協(xié)議數據單元)為單位傳送信息,每個PDU相當于CAN協(xié)議中的一幀。PDU由29位標識符和O~8個字節(jié)的數據所組成,如表l所示。SAE J1939利用29位標識符(CAN擴展幀)提供一種完整的網絡定義。表1中,P位為決定報文優(yōu)先級的前3位;R是保留位:DP是數據頁位;PF場識別兩個PDI格式(PDUl、PDU2):替代遠程請求位SRR和標識符擴展位IDE在CAN2.0B中己詳細定義,并未包含在PDU內;PS場由PF值決定其包含一個目標地址(DA)還是包含一個對PDU格式PF的組擴展(GE);SA為源地址。
1.2 SAE J1939應用層
應用層定義了針對車輛應用的信號(參數)和報文(參數組)。應用層通過參數描述信號,給每個參數分配了一個19位的可疑參數編號(SP-N);此外還通過參數組描述報文,給每個參數組分配了一個24位的參數組編號(PGN)。SPN用來標識與ECU相關的故障診斷元素、部件或參數組中參數;PGN用來唯一標識一個特定參數組。除已分配的參數和參數組外,用戶還可通過分配未使用的SPN給自定義參數和定義專有報文對應用層進行補充。
2 模塊設計開發(fā)
2.1 硬件電路設計
設計的模塊由微控制器、CAN總線接口、信號采集處理電路、接口電路等部分組成,如圖1所示。在實際的車載環(huán)境中,此模塊通過CAN總線獲取報文,并根據SAE J1939協(xié)議計算得出車輛的發(fā)動機轉速、節(jié)氣門開度、水溫以及故障代碼等信息,而燃油量、轉向泵壓力、制動氣壓等其它信息則從相應傳感器以模擬量、開關量、脈沖量等形式獲取,在經過信號采集處理電路進行分壓濾波整形處理后直接送往微控制器進行A/D變換處理。這些信息經過微控制器計算處理后通過USB和UART接口傳送給車載多媒體設備或虛擬數字儀表設備。
主控處理器采用ST公司的STM32F103C8T6,它基于ARM公司新一代32位Cortex-M3內核,可提供1.25 DMIPS/MHz的處理能力,內部帶有ADC、I2C、UART、USB等外圍接口,特別是其內部帶有支持CAN 2.0B協(xié)議的CAN控制器,位速率達lMb/s,具有兩個接收FIFO,3級14個可調節(jié)的濾波器,可收發(fā)ll位標準幀或29位擴展幀。因此可以省去類似設計中必須帶有的CAN協(xié)議接口器件SJAl000,大大降低了外圍電路的成本。
圖2給出了模塊CAN總線接口部分的電路。系統(tǒng)采用帶隔離及TVS保護的通用CAN收發(fā)器CTM8251T為CAN控制器與物理總線之間提供接口,CTM8251T內部集成了信號隔離電路和所有必需的CAN電平轉換電路,具備差動發(fā)送和接收功能,同時帶有TVS保護,可以支持最高1Mb/s的通訊速率,單芯片實現了CAN節(jié)點的數據收發(fā)、隔離、保護功能;從而省卻了傳統(tǒng)設計中采用的光電耦合器件、DC-DC隔離、CAN收發(fā)器等多種器件,既簡化了設計又節(jié)約了成本。
汽車的電磁環(huán)境非常復雜,既有內部各模塊之間的相互干擾(包括雨刮器、冷卻風扇電機、發(fā)電機等產生的傳導干擾、輻射干擾),也有外界對其產生的干擾(環(huán)境電磁場、人體放電和大自然的干擾雷電)。因此本模塊的設計主要采用了以下幾個方面的抗電磁干擾措施:首先,加裝鐵氧體互感器件抑制線路板的輻射和外部傳導干擾;其次,采用了帶隔離及過壓保護功能的CAN接口器件;再次,在輸入電源處采用TVS管抑制外部傳導干擾。
2.2 軟件設計
系統(tǒng)的軟件設計采用Keil RealView MDK-ARM環(huán)境編寫,通過J-Link調試仿真器與STM32 F103C8T6的JTAG接口連接,實現在線仿真調試。
ST公司為STM32系列微控制器開發(fā)了專門的固件庫和接口函數,大大簡化了軟件開發(fā)的過程。系統(tǒng)上電后首先對微控制器的RCC(重啟和時鐘控制)模塊以及NVIC(嵌套向量中斷控制器)模塊進行初始化,并使能CAN中斷,設置CAN屏蔽碼和驗收碼。CAN模塊的初始化過程是這樣的:a.根據CAN節(jié)點相關信息初始化一個CAN_InitTypeDef型結構,并調用CAN_Init函數對CAN接口進行初始化;b.創(chuàng)建CAN_FilterInitTypeDef結構體,調用CAN_FilterInit函數對CAN過濾器進行初始化;c.調用CAN_ITConfig函數對CAN中斷源進行使能設置。系統(tǒng)初始化完成后,等待CAN總線接收中斷的產生,并判斷總線數據是否滿足屏蔽條件,將29位標識符報文與驗收碼、屏蔽碼值逐位比較,屏蔽碼用于定位相關位(0為相關,1為不相關)。僅當標識符中的相關位與驗收碼相應位相同時,系統(tǒng)才接收報文;如滿足屏蔽條件則從寄存器讀取數據并存入緩沖區(qū),并通過CAN Receive函數讀取相應數據,再根據SAE J1939協(xié)議判斷計算車輛工況及故障代碼等信息,處理后通過USB或串行口發(fā)送到車載多媒體設備和虛擬儀表進行顯示。例如:接收的數據為0C FEF2 00 xx xx xx 0D 15 xx xx xx (xx為任意數據),若驗收碼為Ox00000000,屏蔽碼為OxlFFFFFFF,則接收該報文。根據SAE J1939-71協(xié)議,此報文為PGN65266,來自發(fā)動機ECU;可以得知第4、5字節(jié)為平均油耗,并遵循低位在前高位在后的傳輸方式,計算出車輛平均油耗=原始數×分辨率+偏移量=5389×1/5 12+O=10.5km/L。同理可計算其他車輛工況數據。圖3為CAN總線數據接收程序流程圖。
3 結語
本文介紹了基于CAN總線和SAE J1939協(xié)議的車輛信息采集與診斷模塊的設計開發(fā)過程,利用STM32F103C8T6微控制器和CAN隔離收發(fā)器CTM825lT等器件實現了車輛信息的實時采集,最大限度地利用了器件本身的接口功能并降低了外圍電路的成本。本模塊工作穩(wěn)定、性能可靠,軟件各部分功能運行完好,并可與影音娛樂產品和虛擬儀表產品相互結合,有一定的實用價值。隨著汽車電子化程度的不斷提高,CAN總線和SALE J1939協(xié)議必將得到更為廣泛的應用。