蔡彭騎



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