《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 基于SAE J1939協(xié)議的車(chē)輛信息采集與診斷模塊
基于SAE J1939協(xié)議的車(chē)輛信息采集與診斷模塊
電子科技
陳一新 李武屹 莫家貴
摘要: 本文在CAN總線(xiàn)技術(shù)與SAEJ1939協(xié)議的基礎(chǔ)上,,提出了基于Cortex-M3內(nèi)核微控制器的車(chē)輛信息采集與診斷模塊系統(tǒng)設(shè)計(jì),。詳細(xì)介紹了SAEJ1939協(xié)議的報(bào)文及內(nèi)容格式,,以及系統(tǒng)硬件,、軟件開(kāi)發(fā)過(guò)程,,并指出了設(shè)計(jì)中需要注意的環(huán)節(jié)。該模塊通過(guò)對(duì)CAN總線(xiàn)及各傳感器數(shù)據(jù)的讀取和處理,,能夠穩(wěn)定可靠地提供車(chē)輛工況數(shù)據(jù),,并可集成到車(chē)載多媒體系統(tǒng)和虛擬數(shù)字儀表等其他車(chē)載產(chǎn)品中。
Abstract:
Key words :

0 引言
    當(dāng)前,,汽車(chē)電子化程度不斷提高,,大量采用基于微處理器的電控單元(ECU)對(duì)汽車(chē)的各個(gè)功能模塊進(jìn)行信息采集及控制。由于ECU數(shù)量眾多,,為了提高信號(hào)的利用率,,要求在不同的ECU間,大量的數(shù)據(jù)狀態(tài)信息能夠?qū)崿F(xiàn)共享,,大量的控制信號(hào)能夠?qū)崟r(shí)交換,。同時(shí),車(chē)載多媒體設(shè)備,、虛擬數(shù)字儀表等產(chǎn)品也需要實(shí)時(shí)獲取車(chē)輛工況信息,。因此傳統(tǒng)線(xiàn)束已遠(yuǎn)遠(yuǎn)不能滿(mǎn)足這種需求,。
    CAN總線(xiàn)及基于CAN的車(chē)輛通信應(yīng)用層協(xié)議提供了解決上述問(wèn)題的途徑。目前SAE J1939是汽車(chē)行業(yè)應(yīng)用最為廣泛的CAN應(yīng)用層協(xié)議之一,。本文提出的基于CAN和SAE J1939的車(chē)輛信息采集與診斷模塊能夠?qū)崟r(shí)獲取車(chē)輛的車(chē)速,、油壓、制動(dòng)壓力,、發(fā)動(dòng)機(jī)轉(zhuǎn)速等重要信息,,在車(chē)輛發(fā)生故障時(shí)及時(shí)定位車(chē)輛故障,并可集成到車(chē)載多媒體,、虛擬儀表等產(chǎn)品中,,為車(chē)輛駕駛?cè)藛T提供直觀實(shí)時(shí)的車(chē)輛工況。

1 SAE J1939協(xié)議介紹
    SAE J1939協(xié)議是美國(guó)汽車(chē)工程師協(xié)會(huì)(SAE)在CAN2.0B協(xié)議基礎(chǔ)上制定的客車(chē)和重型貨車(chē)網(wǎng)絡(luò)通信應(yīng)用層協(xié)議,,在目前汽車(chē)電子網(wǎng)絡(luò)中得到廣泛應(yīng)用,。該協(xié)議采用CAN總線(xiàn)的數(shù)據(jù)幀封裝其數(shù)據(jù)信息,并明確規(guī)定了汽車(chē)內(nèi)部各ECU的名稱(chēng),、地址,、通訊協(xié)議、優(yōu)先級(jí)等信息,,使用多路復(fù)用技術(shù)為車(chē)輛各傳感器,、執(zhí)行器和控制器提供建立在CAN總線(xiàn)基礎(chǔ)上的標(biāo)準(zhǔn)化高速網(wǎng)絡(luò)連接,在不同的ECU間實(shí)現(xiàn)高速數(shù)據(jù)共享,,以期有效減少線(xiàn)束數(shù)量并提高車(chē)輛電子控制系統(tǒng)的靈活性,、可靠性、可維修性,。目前,,車(chē)輛的ECU產(chǎn)品大都帶有遵循SAE J1939協(xié)議的CAN總線(xiàn)接口。這為車(chē)輛信息的快速采集和故障的在線(xiàn)診斷定位提供了便利,。
1.1 SAE J1939報(bào)文格式
    SAE J1939在通訊中是負(fù)責(zé)數(shù)據(jù)傳輸?shù)膫鬏攨f(xié)議,,其功能分為數(shù)據(jù)的拆分打包和重組及連接管理兩部分。其數(shù)據(jù)幀是以PDU(協(xié)議數(shù)據(jù)單元)為單位傳送信息,,每個(gè)PDU相當(dāng)于CAN協(xié)議中的一幀,。PDU由29位標(biāo)識(shí)符和O~8個(gè)字節(jié)的數(shù)據(jù)所組成,如表l所示,。SAE J1939利用29位標(biāo)識(shí)符(CAN擴(kuò)展幀)提供一種完整的網(wǎng)絡(luò)定義,。表1中,P位為決定報(bào)文優(yōu)先級(jí)的前3位,;R是保留位:DP是數(shù)據(jù)頁(yè)位,;PF場(chǎng)識(shí)別兩個(gè)PDI格式(PDUl、PDU2):替代遠(yuǎn)程請(qǐng)求位SRR和標(biāo)識(shí)符擴(kuò)展位IDE在CAN2.0B中己詳細(xì)定義,,并未包含在PDU內(nèi),;PS場(chǎng)由PF值決定其包含一個(gè)目標(biāo)地址(DA)還是包含一個(gè)對(duì)PDU格式PF的組擴(kuò)展(GE),;SA為源地址。

13a.JPG


1.2 SAE J1939應(yīng)用層
    應(yīng)用層定義了針對(duì)車(chē)輛應(yīng)用的信號(hào)(參數(shù))和報(bào)文(參數(shù)組),。應(yīng)用層通過(guò)參數(shù)描述信號(hào),,給每個(gè)參數(shù)分配了一個(gè)19位的可疑參數(shù)編號(hào)(SP-N);此外還通過(guò)參數(shù)組描述報(bào)文,,給每個(gè)參數(shù)組分配了一個(gè)24位的參數(shù)組編號(hào)(PGN),。SPN用來(lái)標(biāo)識(shí)與ECU相關(guān)的故障診斷元素、部件或參數(shù)組中參數(shù),;PGN用來(lái)唯一標(biāo)識(shí)一個(gè)特定參數(shù)組,。除已分配的參數(shù)和參數(shù)組外,用戶(hù)還可通過(guò)分配未使用的SPN給自定義參數(shù)和定義專(zhuān)有報(bào)文對(duì)應(yīng)用層進(jìn)行補(bǔ)充,。

2 模塊設(shè)計(jì)開(kāi)發(fā)
2.1 硬件電路設(shè)計(jì)
    設(shè)計(jì)的模塊由微控制器,、CAN總線(xiàn)接口、信號(hào)采集處理電路,、接口電路等部分組成,,如圖1所示。在實(shí)際的車(chē)載環(huán)境中,,此模塊通過(guò)CAN總線(xiàn)獲取報(bào)文,,并根據(jù)SAE J1939協(xié)議計(jì)算得出車(chē)輛的發(fā)動(dòng)機(jī)轉(zhuǎn)速、節(jié)氣門(mén)開(kāi)度,、水溫以及故障代碼等信息,,而燃油量、轉(zhuǎn)向泵壓力,、制動(dòng)氣壓等其它信息則從相應(yīng)傳感器以模擬量,、開(kāi)關(guān)量、脈沖量等形式獲取,,在經(jīng)過(guò)信號(hào)采集處理電路進(jìn)行分壓濾波整形處理后直接送往微控制器進(jìn)行A/D變換處理,。這些信息經(jīng)過(guò)微控制器計(jì)算處理后通過(guò)USB和UART接口傳送給車(chē)載多媒體設(shè)備或虛擬數(shù)字儀表設(shè)備,。

13b.JPG


    主控處理器采用ST公司的STM32F103C8T6,,它基于ARM公司新一代32位Cortex-M3內(nèi)核,可提供1.25 DMIPS/MHz的處理能力,,內(nèi)部帶有ADC,、I2C、UART,、USB等外圍接口,,特別是其內(nèi)部帶有支持CAN 2.0B協(xié)議的CAN控制器,位速率達(dá)lMb/s,,具有兩個(gè)接收FIFO,,3級(jí)14個(gè)可調(diào)節(jié)的濾波器,,可收發(fā)ll位標(biāo)準(zhǔn)幀或29位擴(kuò)展幀。因此可以省去類(lèi)似設(shè)計(jì)中必須帶有的CAN協(xié)議接口器件SJAl000,,大大降低了外圍電路的成本,。
    圖2給出了模塊CAN總線(xiàn)接口部分的電路。系統(tǒng)采用帶隔離及TVS保護(hù)的通用CAN收發(fā)器CTM8251T為CAN控制器與物理總線(xiàn)之間提供接口,,CTM8251T內(nèi)部集成了信號(hào)隔離電路和所有必需的CAN電平轉(zhuǎn)換電路,,具備差動(dòng)發(fā)送和接收功能,同時(shí)帶有TVS保護(hù),,可以支持最高1Mb/s的通訊速率,,單芯片實(shí)現(xiàn)了CAN節(jié)點(diǎn)的數(shù)據(jù)收發(fā)、隔離,、保護(hù)功能,;從而省卻了傳統(tǒng)設(shè)計(jì)中采用的光電耦合器件、DC-DC隔離,、CAN收發(fā)器等多種器件,,既簡(jiǎn)化了設(shè)計(jì)又節(jié)約了成本。

13c.JPG


    汽車(chē)的電磁環(huán)境非常復(fù)雜,,既有內(nèi)部各模塊之間的相互干擾(包括雨刮器,、冷卻風(fēng)扇電機(jī)、發(fā)電機(jī)等產(chǎn)生的傳導(dǎo)干擾,、輻射干擾),,也有外界對(duì)其產(chǎn)生的干擾(環(huán)境電磁場(chǎng)、人體放電和大自然的干擾雷電),。因此本模塊的設(shè)計(jì)主要采用了以下幾個(gè)方面的抗電磁干擾措施:首先,,加裝鐵氧體互感器件抑制線(xiàn)路板的輻射和外部傳導(dǎo)干擾;其次,,采用了帶隔離及過(guò)壓保護(hù)功能的CAN接口器件,;再次,在輸入電源處采用TVS管抑制外部傳導(dǎo)干擾,。
2.2 軟件設(shè)計(jì)
    系統(tǒng)的軟件設(shè)計(jì)采用Keil RealView MDK-ARM環(huán)境編寫(xiě),,通過(guò)J-Link調(diào)試仿真器與STM32 F103C8T6的JTAG接口連接,實(shí)現(xiàn)在線(xiàn)仿真調(diào)試,。
    ST公司為STM32系列微控制器開(kāi)發(fā)了專(zhuān)門(mén)的固件庫(kù)和接口函數(shù),,大大簡(jiǎn)化了軟件開(kāi)發(fā)的過(guò)程。系統(tǒng)上電后首先對(duì)微控制器的RCC(重啟和時(shí)鐘控制)模塊以及NVIC(嵌套向量中斷控制器)模塊進(jìn)行初始化,,并使能CAN中斷,,設(shè)置CAN屏蔽碼和驗(yàn)收碼。CAN模塊的初始化過(guò)程是這樣的:a.根據(jù)CAN節(jié)點(diǎn)相關(guān)信息初始化一個(gè)CAN_InitTypeDef型結(jié)構(gòu),,并調(diào)用CAN_Init函數(shù)對(duì)CAN接口進(jìn)行初始化,;b.創(chuàng)建CAN_FilterInitTypeDef結(jié)構(gòu)體,,調(diào)用CAN_FilterInit函數(shù)對(duì)CAN過(guò)濾器進(jìn)行初始化;c.調(diào)用CAN_ITConfig函數(shù)對(duì)CAN中斷源進(jìn)行使能設(shè)置,。系統(tǒng)初始化完成后,,等待CAN總線(xiàn)接收中斷的產(chǎn)生,并判斷總線(xiàn)數(shù)據(jù)是否滿(mǎn)足屏蔽條件,,將29位標(biāo)識(shí)符報(bào)文與驗(yàn)收碼,、屏蔽碼值逐位比較,屏蔽碼用于定位相關(guān)位(0為相關(guān),,1為不相關(guān)),。僅當(dāng)標(biāo)識(shí)符中的相關(guān)位與驗(yàn)收碼相應(yīng)位相同時(shí),系統(tǒng)才接收?qǐng)?bào)文,;如滿(mǎn)足屏蔽條件則從寄存器讀取數(shù)據(jù)并存入緩沖區(qū),,并通過(guò)CAN Receive函數(shù)讀取相應(yīng)數(shù)據(jù),再根據(jù)SAE J1939協(xié)議判斷計(jì)算車(chē)輛工況及故障代碼等信息,,處理后通過(guò)USB或串行口發(fā)送到車(chē)載多媒體設(shè)備和虛擬儀表進(jìn)行顯示,。例如:接收的數(shù)據(jù)為0C FEF2 00 xx xx xx 0D 15 xx xx xx (xx為任意數(shù)據(jù)),若驗(yàn)收碼為Ox00000000,,屏蔽碼為OxlFFFFFFF,,則接收該報(bào)文。根據(jù)SAE J1939-71協(xié)議,,此報(bào)文為PGN65266,,來(lái)自發(fā)動(dòng)機(jī)ECU;可以得知第4,、5字節(jié)為平均油耗,,并遵循低位在前高位在后的傳輸方式,計(jì)算出車(chē)輛平均油耗=原始數(shù)×分辨率+偏移量=5389×1/5 12+O=10.5km/L,。同理可計(jì)算其他車(chē)輛工況數(shù)據(jù),。圖3為CAN總線(xiàn)數(shù)據(jù)接收程序流程圖。

13d.JPG

 

3 結(jié)語(yǔ)
    本文介紹了基于CAN總線(xiàn)和SAE J1939協(xié)議的車(chē)輛信息采集與診斷模塊的設(shè)計(jì)開(kāi)發(fā)過(guò)程,,利用STM32F103C8T6微控制器和CAN隔離收發(fā)器CTM825lT等器件實(shí)現(xiàn)了車(chē)輛信息的實(shí)時(shí)采集,,最大限度地利用了器件本身的接口功能并降低了外圍電路的成本。本模塊工作穩(wěn)定,、性能可靠,,軟件各部分功能運(yùn)行完好,,并可與影音娛樂(lè)產(chǎn)品和虛擬儀表產(chǎn)品相互結(jié)合,,有一定的實(shí)用價(jià)值。隨著汽車(chē)電子化程度的不斷提高,,CAN總線(xiàn)和SALE J1939協(xié)議必將得到更為廣泛的應(yīng)用,。
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。