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