蔡彭騎
摘要:隨著柴油機(jī)電控系統(tǒng)和車載CAN網(wǎng)絡(luò)的廣泛使用,基于車載網(wǎng)絡(luò)運行的柴油機(jī)故障診斷系統(tǒng)具有非常重要的作用。文章基于嵌入式Linux系統(tǒng)設(shè)計了一種能夠解析J1939網(wǎng)絡(luò)協(xié)議的柴油機(jī)故障診斷模塊,具有成本低、可維護(hù)性和可擴(kuò)展性好等優(yōu)點。在東風(fēng)康明斯CM2150柴油機(jī)上實驗結(jié)果表明,該模塊能夠正確高效地實現(xiàn)電控系統(tǒng)故障診斷。
關(guān)鍵詞:嵌入式Linux;柴油機(jī);J1939協(xié)議
隨著車載電控技術(shù)的飛速發(fā)展,柴油電控發(fā)動機(jī)及車載網(wǎng)絡(luò)技術(shù)已經(jīng)得到了普遍應(yīng)用。目前,高性能的柴油發(fā)動機(jī)故障診斷系統(tǒng)主要都采用國外企業(yè)生成的產(chǎn)品,這不但增加了國內(nèi)汽車企業(yè)的運用成本,也妨礙了我國發(fā)展具有自主知識產(chǎn)權(quán)的汽車工業(yè)。因此,本文嘗試基于開源軟件平臺設(shè)計一種柴油機(jī)故障診斷模塊。該模塊基于嵌入式Linux操作系統(tǒng)內(nèi)核,通過對車載J1939網(wǎng)絡(luò)故障診斷協(xié)議進(jìn)行解析,實現(xiàn)電控柴油機(jī)的故障診斷。該模塊提供了完善的應(yīng)用接口,能夠高效融入各種現(xiàn)有車載故障平臺,具有較好的應(yīng)用性價比[1]。
1 系統(tǒng)架構(gòu)
本文設(shè)計的柴油機(jī)故障診斷軟件模塊在邏輯上分為硬件抽象層、內(nèi)核層、J1939解析層和應(yīng)用層共4層,其架構(gòu)如圖1所示。
2 硬件抽象層設(shè)計
本文設(shè)計的硬件抽象層的主體是硬件資源包(BSP)。BSP的作用是對底層硬件的參數(shù)細(xì)節(jié)進(jìn)行封裝,并向內(nèi)核提供訪問接口。本文選擇的硬件平臺是飛思卡爾imx6q處理器,所以BSP移植針對imx6q處理器展開,其方法如下。
(1)在\mqx\source\bsp和installdir\lib目錄下分別創(chuàng)建新的目錄fsmqx;
(2)將nscf51acrl.mem 文件中的:
“range 0x00000410 0x0003FFFF 4 ReadWrite //Second Section of the 256KBytes of Flash Memory
reserved 0x00040000 0x007FFFFF ”
改為:
“range 0x00000410 OxOOOlFFFF 4 ReadWrite //Second Section of the 128KBytes of Flash Memory
reserved 0x00020000 0x007FFFFF ”
(3)將$installdir\mqx\source\bsp\nscf51acrl\cw\intflash.lcf文件中的:
“:rom(RX):
ORIGIN = 0x00000440, LENGTH = 0x0003FBBF #Code + Const data # = 0x3FFFF - 0x440::256K Flash”
修改為:
“rom(RX):ORIGIN = 0x00000440, LENGTH =0x0001FBBF # Code + Const data # = OxlFFFF - 0x440::128K Flash ”。
3 嵌入式Linux內(nèi)核移植
嵌入式Linux系統(tǒng)是一種針對嵌入式設(shè)備的開源、多任務(wù)操作系統(tǒng)。該系統(tǒng)具有性能穩(wěn)定、可移植性好等優(yōu)點,廣泛應(yīng)用在各類非實時嵌入式計算環(huán)境中。因此本文將其移植到基于的嵌入式平臺上[2]。具體移植方法如下所示。
3.1 驅(qū)動定制
因為飛思卡爾imx6q處理器集成了CAN總線驅(qū)動器MSCAN,所以本文所設(shè)計系統(tǒng)為MSCAN。
定制驅(qū)動程序mscan.c和mscan.h。其設(shè)計方法為:
(1)MSCAN初始化的流程如圖2所示。
(2)CAN數(shù)據(jù)幀收發(fā)功能設(shè)計。
CAN數(shù)據(jù)幀發(fā)送和接收功能流程如圖3—4所示。
3.2 文件系統(tǒng)定制
文件系統(tǒng)的作用是管理各類固化存儲器中的程序文件和配置文件。本文基于Yaffs2制作了嵌入式Linux文件系統(tǒng)鏡像[3]。
4 J1939協(xié)議解析
J1939協(xié)議是一種位于CAN總線應(yīng)用層的通信協(xié)議,用于定義和規(guī)范CAN數(shù)據(jù)幀中ID域和DATA域中的各項內(nèi)容。該協(xié)議基于J1708和J1587協(xié)議標(biāo)準(zhǔn)開發(fā),具有運行開銷低、通信過程高效等優(yōu)點,廣泛應(yīng)用于各類中大型客貨車輛中[4]。J1939協(xié)議包含了J1939/11,J1939/21,J1939/31, J1939/71, J1939/73等子協(xié)議,其中J1939/73定義了車輛電控單元通信應(yīng)用層和故障診斷方面的規(guī)范[5]。因此,本文所設(shè)計模塊的核心任務(wù)之一是對該協(xié)議進(jìn)行解析。解析過程主要針對PDU數(shù)據(jù)包展開,其基本方法包括以下兩個[6-7]。
4.1 ID識別
根據(jù)數(shù)字字典中的ID類型對CAN數(shù)據(jù)幀ID進(jìn)行模式匹配,具體方法為正則匹配法。
4.2 DATA區(qū)解析
采用協(xié)議樹查找法對CAN數(shù)據(jù)幀DATA區(qū)數(shù)據(jù)進(jìn)行解析,得到柴油發(fā)動機(jī)電控系統(tǒng)的原始參數(shù)。
5 實驗
將本文設(shè)計的柴油機(jī)故障診斷模塊通過CAN總線電纜和東風(fēng)康明斯CM2150柴油機(jī)的OBD接口進(jìn)行連接。分別進(jìn)行故障碼讀取和數(shù)據(jù)流讀取兩項實驗。該系統(tǒng)正確讀取到了2組故障碼,分別是水溫傳感器信號線對地短接,燃油軌道壓傳感器信號線斷路。該系統(tǒng)能以10 Hz的采樣率正確讀取發(fā)動機(jī)轉(zhuǎn)速、油門踏板開度、燃油軌道壓力、進(jìn)氣量、水溫等工況數(shù)據(jù),達(dá)到了預(yù)期效果[8]。
6 結(jié)語
本文基于嵌入式Linux系統(tǒng)設(shè)計了一種能夠解析J1939網(wǎng)絡(luò)協(xié)議的柴油機(jī)故障診斷模塊,具有成本低、可維護(hù)性和可擴(kuò)展性好等優(yōu)點。在東風(fēng)康明斯CM2150柴油機(jī)上實驗結(jié)果表明,該模塊能夠正確高效實現(xiàn)電控系統(tǒng)故障診斷。
[參考文獻(xiàn)]
[1]孫鵬.柴油機(jī)共軌電控噴射系統(tǒng)故障診斷方法探討[J].山東工業(yè)技術(shù),2018(8):44.
[2]劉世偉.船舶柴油機(jī)故障診斷技術(shù)發(fā)展現(xiàn)狀與趨勢分析[J].內(nèi)燃機(jī)與配件,2018(6):146-147.
[3]張遠(yuǎn)征.基于嵌入式Linux與QT的礦用柴油車虛擬儀表軟件設(shè)計[J].煤礦機(jī)械,2016(12):163-165.
[4]李招峰.基于嵌入式技術(shù)的柴油機(jī)故障診斷系統(tǒng)的設(shè)計[D].武漢:武漢理工大學(xué),2012.
[5]劉魯平,張鳳登,車蕊.基于CAN總線的柴油機(jī)故障診斷系統(tǒng)[J].電子測量技術(shù),2016(12):184-188.
[6]李文靜.船用柴油機(jī)信息化系統(tǒng)硬件在環(huán)系統(tǒng)的研發(fā)[D].上海:上海工程技術(shù)大學(xué),2014.
[7]佚名.基于CAN總線的常見的應(yīng)用層協(xié)議:J1939,CANopen,DeviceNet[J].國內(nèi)外機(jī)電一體化技術(shù),2018(1):42.
[8]汪志斌,吳長水,黃敏濤,等.基于J1939協(xié)議的車輛故障診斷與ECU報文解析[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2017(12):7-11.