基于SAE J1939協(xié)議的發(fā)動機總線數(shù)據(jù)模擬器開發(fā)
1 SAE J1939協(xié)議概述
SAE J1939標(biāo)準(zhǔn)是美國汽車工程師協(xié)會(SAE)發(fā)布的以CAN總線為核心的車輛網(wǎng)絡(luò)串行通訊和控制協(xié)議,采用多路復(fù)用技術(shù)為車輛上各傳感器、執(zhí)行器和控制器提供在CAN總線基礎(chǔ)上的標(biāo)準(zhǔn)化高速網(wǎng)絡(luò)連接,在車輛電子裝置之間實現(xiàn)高速數(shù)據(jù)共享,有效減少電子線束的數(shù)量,提高車輛電子控制系統(tǒng)的靈活性、可靠性、可維修性及標(biāo)準(zhǔn)化程度。
1.1 SAE J1939協(xié)議簡介
J1939協(xié)議包括12個子標(biāo)準(zhǔn)。本文主要涉及車輛應(yīng)用層及應(yīng)用層診斷2個子標(biāo)準(zhǔn)。車輛應(yīng)用層子標(biāo)準(zhǔn)(SAEJl939/71)規(guī)定了車輛控制控制參數(shù)的格式,包括參數(shù)范圍、分辨率、類型及刷新率,數(shù)據(jù)場各位的含義;應(yīng)用層診斷子標(biāo)準(zhǔn)(SAEJl939/73)主要針對排放的要求規(guī)定了12種診斷結(jié)果信息。
1.2 協(xié)議數(shù)據(jù)單元
SAE J1939應(yīng)用層協(xié)議采用協(xié)議數(shù)據(jù)單元PDU傳遞信息,PDU由優(yōu)先級P、保留位R、數(shù)據(jù)頁DP、PDU格式PF、PDU特定域PS(可作為目標(biāo)地址、組擴展或?qū)S?、源地址SA和數(shù)據(jù)域7部分組成,如表1所示。每個PDU相當(dāng)于CAN協(xié)議中的一幀,它們將被分組封裝在一個或多個CAN數(shù)據(jù)幀中,通過物理介質(zhì)傳送到其他網(wǎng)絡(luò)裝置。
2 總體方案設(shè)計
在開發(fā)過程中,通過調(diào)用USBCAN-Ⅱ接口卡庫端口函數(shù),利用CAN總線實現(xiàn)上位機與下位機之間的通訊。發(fā)動機總線數(shù)據(jù)模擬器通過USBCAN-II智能接口向總線儀表發(fā)送數(shù)據(jù)并實時顯示,達到測試儀表的目的。系統(tǒng)結(jié)構(gòu)如圖1所示。
該系統(tǒng)主要包括6大功能模塊,分別是發(fā)動機參數(shù)報文發(fā)送模塊、發(fā)動機故障報文發(fā)送模塊、CAN幀信息顯示模塊、虛擬儀表模塊、實時參數(shù)曲線模塊和儀表測試模塊。系統(tǒng)軟件采用C#環(huán)境開發(fā),運行于Windows平臺。系統(tǒng)開發(fā)的總體流程是:首先實現(xiàn)與USBCAN-Ⅱ接口卡的通訊,連接成功后,在主界面選擇需要實現(xiàn)的功能,然后執(zhí)行相關(guān)模塊的操作。在關(guān)閉程序的同時,關(guān)閉USBCAN-Ⅱ接口卡。程序開發(fā)流程如圖2所示。
3 發(fā)動機總線數(shù)據(jù)模擬系統(tǒng)設(shè)計
這里重點分析SAE J1939-7l關(guān)于發(fā)動機參數(shù)的定義以及SAE J1939-73關(guān)于故障診斷信息的定義,明確發(fā)動機發(fā)送報文的格式以及數(shù)據(jù)意義,進行系統(tǒng)各個模塊的方案設(shè)計。
3.1 發(fā)動機參數(shù)報文發(fā)送模塊
該模塊是類比現(xiàn)場測試的一組數(shù)據(jù),按照適用于BOSCH高壓共軌系統(tǒng)的歐Ⅲ發(fā)動機基于SAEJ1939的CAN通訊規(guī)范,將幀ID和代表發(fā)動機參數(shù)的數(shù)據(jù)字節(jié)位置相對應(yīng),在報文規(guī)定的更新率下.將發(fā)動機參數(shù)持續(xù)發(fā)送到總線網(wǎng)絡(luò)。該模塊有單次發(fā)送和按J1939協(xié)議規(guī)定的更新率發(fā)送2種模式。發(fā)動機參數(shù)包括發(fā)動機轉(zhuǎn)速、汽車行駛速度、油壓、水溫等。
3.2 發(fā)動機故障報文發(fā)送模塊
該模塊為總線儀表增加了故障診斷功能,即總線儀表可以借助液晶顯示屏實時顯示發(fā)動機的故障類型。該模塊程序流程見圖3,標(biāo)定的故障依次規(guī)定了故障路徑、故障詳情、編號、SPN和FMI。
3.3 虛擬儀表模塊
虛擬儀表主要將發(fā)動機的發(fā)動機轉(zhuǎn)速、車速、油壓、水溫、電壓等重要參數(shù)顯示在虛擬儀表盤上,更直觀顯示相應(yīng)數(shù)據(jù),模擬行車儀表實際運行狀態(tài)。采用Dundas Software公司的Dundas Gauge for.NET進行虛擬儀表的可視化開發(fā),Dundas軟件平臺完全支持Visual Studio 2005特征,包括智能標(biāo)記、高級數(shù)據(jù)綁定等。Dundas儀表向?qū)峁┝素S富的素材庫,利用該向?qū)В脩粼O(shè)計應(yīng)用于各領(lǐng)域的儀表控件外形和數(shù)據(jù)指示方式。用戶只需在應(yīng)用程序中對儀表需要動態(tài)變化和響應(yīng)的部分編寫代碼即可實現(xiàn)虛擬儀表的功能。
3.4 CAN幀信息顯示模塊
本模塊是通過調(diào)用一個listview控件實現(xiàn)的,列元素依次是時間、幀ID、P、R、DP、PF、PS、SA、幀格式、幀類型、數(shù)據(jù)長度、數(shù)據(jù)、傳輸方向、時間標(biāo)識、第幾路CAN。其中,P,R,DP.PF,PS,SA由幀ID解析函數(shù)得到,其他則由接口函數(shù)庫的參數(shù)得出。
以發(fā)動機轉(zhuǎn)速為例,給出CAN幀信息解析(實際參數(shù)=原始數(shù)×分辨率+偏移量)。報文名稱:Electronic Engine Controller#1 (EEC1),SPN:190,PGN:61 444,ID:OxCF00,源地址:發(fā)動機(接收地址:ABS(0x0B)、儀表(0x17),更新率:10 ms,位置:4~5字節(jié),分辨率:0.125 r/min,0偏移,數(shù)據(jù)范圍:0~8 031_875 r/min。要發(fā)送轉(zhuǎn)速為3 000 r/min,則發(fā)送數(shù)據(jù)的第4、5字節(jié)應(yīng)為:3 000/0.125=24 000(0xC051))。發(fā)送PDU編碼為:0CFD0400 XX XX XX C0 5D XX XX XX(XX表示任意數(shù)據(jù))。
3.5 實時參數(shù)曲線模塊
實時參數(shù)曲線模塊是利用Dundas Chart for.NET以動態(tài)曲線顯示發(fā)動機轉(zhuǎn)速、潤滑油壓力等參數(shù)以,并可以將顯示數(shù)據(jù)輸出、保存,同時還提供歷史數(shù)據(jù)回放功能。包括轉(zhuǎn)速、油壓、水溫、電壓4種曲線。該模塊和虛擬儀表模塊共同實現(xiàn)發(fā)動機參數(shù)動態(tài)直觀的顯示,便于實驗調(diào)試。
3.6 儀表測試模塊
該模塊將虛擬儀表的指針運行速度與開發(fā)儀表進行比較,測試開發(fā)儀表的步進電動機驅(qū)動效果。通過選擇待測表盤,設(shè)置發(fā)送數(shù)據(jù)的最大值,以及測試次數(shù),可以實現(xiàn)虛擬儀表在選定范圍內(nèi)的循環(huán)運行,從而與待測儀表進行比對。儀表測試模塊可以較直觀的對儀表的開發(fā)提供參考。
4 系統(tǒng)驗證
4.1 連接USB-t0-CAN設(shè)備
USB-t0一CAN系統(tǒng)的設(shè)計都是基于連接USB-to-CAN設(shè)備實現(xiàn)的。首先選擇設(shè)備索引號,調(diào)用函數(shù),打開設(shè)備。選擇第幾路CAN,初始化CAN設(shè)備。打開設(shè)備界面如圖4所示。
相關(guān)代碼如下:
4.2 虛擬儀表與CAN幀信息顯示模塊驗證
發(fā)動機參數(shù)報文發(fā)出后,經(jīng)過解析,CAN幀信息以及虛擬儀表實時顯示狀態(tài)如圖5所示。
4.3 實時參數(shù)曲線模塊驗證
實時曲線工具所顯示的數(shù)據(jù)與虛擬儀表同步,虛擬儀表的數(shù)值變化時,圖表控件也將同一個數(shù)據(jù)點添加到以時間為橫坐標(biāo)的圖表中,從而生成一條連續(xù)的曲線。在完成一次測試過程后,可以將數(shù)據(jù)保存,并輸出為標(biāo)準(zhǔn)XML格式文件。該模塊還提供歷史數(shù)據(jù)回放功能,將已保存的XML文件重新繪制成一條數(shù)據(jù)曲線。其工作過程如圖6所示。
5 結(jié)論
本文在研究CAN總線協(xié)議的基礎(chǔ)上,在C#編程環(huán)境下完成了基于SAE J1939協(xié)議的發(fā)動機總線數(shù)據(jù)模擬器開發(fā)。該系統(tǒng)與待開發(fā)總線儀表連接,可以模擬發(fā)動機的各項工況數(shù)據(jù)輸出。一旦選定某個發(fā)動機參數(shù),發(fā)動機參數(shù)即在報文規(guī)定的更新率下持續(xù)發(fā)送到待開發(fā)總線儀表。
此軟件可部分替代真實的發(fā)動機,隨機進行發(fā)動機各項工況檢測,靈活性強,其選擇范圍較實際發(fā)動機更廣。該系統(tǒng)可以輔助總線儀表等硬件開發(fā),從而簡化總線儀表測試過程。