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