在車載網(wǎng)絡(luò)的開發(fā)過程中,需要發(fā)動機(jī)節(jié)點向總線網(wǎng)絡(luò)發(fā)送報文,為了降低成本,提高開發(fā)效率,模擬發(fā)動機(jī)。基于SAE J1939協(xié)議巾車輛應(yīng)用層子標(biāo)準(zhǔn)及應(yīng)用層診斷子標(biāo)準(zhǔn),通過軟件編程進(jìn)行發(fā)動機(jī)總線數(shù)據(jù)模擬器的開發(fā),模擬總線網(wǎng)絡(luò)中的發(fā)動機(jī)ECU節(jié)點,向總線網(wǎng)絡(luò)發(fā)送報文,從而測試總線網(wǎng)絡(luò)上的另一節(jié)點儀表,檢驗儀表是否工作正常。 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)地址、組擴(kuò)展或?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)上位機(jī)與下位機(jī)之間的通訊。發(fā)動機(jī)總線數(shù)據(jù)模擬器通過USBCAN-II智能接口向總線儀表發(fā)送數(shù)據(jù)并實時顯示,達(dá)到測試儀表的目的。系統(tǒng)結(jié)構(gòu)如圖1所示。 該系統(tǒng)主要包括6大功能模塊,分別是發(fā)動機(jī)參數(shù)報文發(fā)送模塊、發(fā)動機(jī)故障報文發(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ā)動機(jī)總線數(shù)據(jù)模擬系統(tǒng)設(shè)計 這里重點分析SAE J1939-7l關(guān)于發(fā)動機(jī)參數(shù)的定義以及SAE J1939-73關(guān)于故障診斷信息的定義,明確發(fā)動機(jī)發(fā)送報文的格式以及數(shù)據(jù)意義,進(jìn)行系統(tǒng)各個模塊的方案設(shè)計。 3.1 發(fā)動機(jī)參數(shù)報文發(fā)送模塊 該模塊是類比現(xiàn)場測試的一組數(shù)據(jù),按照適用于BOSCH高壓共軌系統(tǒng)的歐Ⅲ發(fā)動機(jī)基于SAEJ1939的CAN通訊規(guī)范,將幀ID和代表發(fā)動機(jī)參數(shù)的數(shù)據(jù)字節(jié)位置相對應(yīng),在報文規(guī)定的更新率下.將發(fā)動機(jī)參數(shù)持續(xù)發(fā)送到總線網(wǎng)絡(luò)。該模塊有單次發(fā)送和按J1939協(xié)議規(guī)定的更新率發(fā)送2種模式。發(fā)動機(jī)參數(shù)包括發(fā)動機(jī)轉(zhuǎn)速、汽車行駛速度、油壓、水溫等。 3.2 發(fā)動機(jī)故障報文發(fā)送模塊 該模塊為總線儀表增加了故障診斷功能,即總線儀表可以借助液晶顯示屏實時顯示發(fā)動機(jī)的故障類型。該模塊程序流程見圖3,標(biāo)定的故障依次規(guī)定了故障路徑、故障詳情、編號、SPN和FMI。 3.3 虛擬儀表模塊 虛擬儀表主要將發(fā)動機(jī)的發(fā)動機(jī)轉(zhuǎn)速、車速、油壓、水溫、電壓等重要參數(shù)顯示在虛擬儀表盤上,更直觀顯示相應(yīng)數(shù)據(jù),模擬行車儀表實際運行狀態(tài)。采用Dundas Software公司的Dundas Gauge for.NET進(jìn)行虛擬儀表的可視化開發(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ā)動機(jī)轉(zhuǎn)速為例,給出CAN幀信息解析(實際參數(shù)=原始數(shù)×分辨率+偏移量)。報文名稱:Electronic Engine Controller#1 (EEC1),SPN:190,PGN:61 444,ID:OxCF00,源地址:發(fā)動機(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ù)曲線模塊是利用Dundas Chart for.NET以動態(tài)曲線顯示發(fā)動機(jī)轉(zhuǎn)速、潤滑油壓力等參數(shù)以,并可以將顯示數(shù)據(jù)輸出、保存,同時還提供歷史數(shù)據(jù)回放功能。包括轉(zhuǎn)速、油壓、水溫、電壓4種曲線。該模塊和虛擬儀表模塊共同實現(xiàn)發(fā)動機(jī)參數(shù)動態(tài)直觀的顯示,便于實驗調(diào)試。 3.6 儀表測試模塊 該模塊將虛擬儀表的指針運行速度與開發(fā)儀表進(jìn)行比較,測試開發(fā)儀表的步進(jìn)電動機(jī)驅(qū)動效果。通過選擇待測表盤,設(shè)置發(fā)送數(shù)據(jù)的最大值,以及測試次數(shù),可以實現(xiàn)虛擬儀表在選定范圍內(nèi)的循環(huán)運行,從而與待測儀表進(jì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ā)動機(jī)參數(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ā)動機(jī)總線數(shù)據(jù)模擬器開發(fā)。該系統(tǒng)與待開發(fā)總線儀表連接,可以模擬發(fā)動機(jī)的各項工況數(shù)據(jù)輸出。一旦選定某個發(fā)動機(jī)參數(shù),發(fā)動機(jī)參數(shù)即在報文規(guī)定的更新率下持續(xù)發(fā)送到待開發(fā)總線儀表。 此軟件可部分替代真實的發(fā)動機(jī),隨機(jī)進(jìn)行發(fā)動機(jī)各項工況檢測,靈活性強(qiáng),其選擇范圍較實際發(fā)動機(jī)更廣。該系統(tǒng)可以輔助總線儀表等硬件開發(fā),從而簡化總線儀表測試過程。 |