基于SAE J1939協(xié)議的發(fā)動(dòng)機(jī)模擬系統(tǒng)開發(fā)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
CAN總線以其優(yōu)異性能在汽車局域網(wǎng)中占有重要地位。IS011992,IS011783以及SAE J1939都是基于CAN總線的汽車系統(tǒng)通訊協(xié)議,其中SAE J1939性能最好,是目前大型車輛采用最多的一種通信協(xié)議。分析研究SAE J1939協(xié)議,有助于推進(jìn)CAN通信總線在國內(nèi)汽車通信中的應(yīng)用,并對(duì)制定上層協(xié)議具有重要意義。該系統(tǒng)設(shè)計(jì)正是基于對(duì)SAE J1939的應(yīng)用層的理解,利用軟件編程,模擬發(fā)送發(fā)動(dòng)機(jī)信息,從而為總線儀表硬件設(shè)計(jì)提供良好的測(cè)試環(huán)境。
2 SAE J1939協(xié)議概述
SAE J1939標(biāo)準(zhǔn)是美國汽車工程師協(xié)會(huì)(Societv of Auto—motive Engineers,簡(jiǎn)稱SAE)發(fā)布的以CAN總線為核心的車輛網(wǎng)絡(luò)串行通訊和控制協(xié)議,SAE J1939協(xié)議以CAN2.0B協(xié)議為基礎(chǔ),通訊速率最高可達(dá)250 Kb/s。它對(duì)汽車內(nèi)部ECU的地址配置、命名、通訊方式以及報(bào)文發(fā)送優(yōu)先級(jí)等都給出明確規(guī)定,并且詳細(xì)說明汽車內(nèi)部各個(gè)共體的ECU通訊。SAE J1939應(yīng)用層協(xié)議詳細(xì)描述了SAE J1939網(wǎng)絡(luò)的參數(shù),包括數(shù)據(jù)長(zhǎng)度、數(shù)據(jù)類型、分辨率、范圍及參考標(biāo)簽,并為每個(gè)參數(shù)分配一個(gè)編號(hào)(SPN)。采用協(xié)議數(shù)據(jù)單元(ProtocolData Unit,簡(jiǎn)稱PDU)傳送信息,每個(gè)PDU相當(dāng)于CAN協(xié)議的一幀。SAE J1939是傳輸數(shù)據(jù)協(xié)議,其功能分為數(shù)據(jù)的拆分打包和重組連接管理兩部分。PDU是由29位標(biāo)識(shí)符和0~8個(gè)字節(jié)的數(shù)據(jù)組成,如圖1所示。SAE J1939利用29位標(biāo)識(shí)符(CAN擴(kuò)展幀)提供一種完整的網(wǎng)絡(luò)定義。圖1中,P位確定報(bào)文優(yōu)先級(jí)的前3位;R為保留位;DP是數(shù)據(jù)頁位:PF場(chǎng)識(shí)別2個(gè)PDI格式(PDUl,PDU2);替代遠(yuǎn)程請(qǐng)求位SRR和標(biāo)識(shí)符擴(kuò)展位IDE,未包含在PDU內(nèi);PS場(chǎng)由PF值決定其包含一個(gè)目標(biāo)地址(DA)還是包含一個(gè)對(duì)PDU格式PF的組擴(kuò)展(GE);SA為源地址。
SAE J1939采用多路復(fù)用技術(shù)為汽車的各種傳感器、執(zhí)行器和控制器提供在CAN總線基礎(chǔ)上建立的標(biāo)準(zhǔn)化高速網(wǎng)絡(luò)連接,從而在車載電子裝置之間實(shí)現(xiàn)高速數(shù)據(jù)共享,有效減少電子線束數(shù)量,提高車輛電子控制系統(tǒng)的靈活性、可靠性、可維修性和標(biāo)準(zhǔn)化程度,最大限度發(fā)揮CAN優(yōu)異性能。
3 系統(tǒng)設(shè)計(jì)方案
發(fā)動(dòng)機(jī)模擬系統(tǒng)通過USB CAN一Ⅱ智能接口向總線儀表CAN接口卡傳輸數(shù)據(jù),同時(shí)總線儀表通過USBCAN-Ⅱ接口卡應(yīng)答模擬系統(tǒng),如圖2所示。該系統(tǒng)設(shè)計(jì)C#環(huán)境下開發(fā),Windows平臺(tái)上運(yùn)行。該系統(tǒng)設(shè)計(jì)具有發(fā)動(dòng)機(jī)參數(shù)報(bào)文、發(fā)動(dòng)機(jī)故障報(bào)文、發(fā)動(dòng)機(jī)儀表測(cè)試等主要功能模塊,以及單幀或多幀可選的發(fā)送方式。通過調(diào)用USBCAN一Ⅱ接口卡庫端口函數(shù),利用CAN總線傳輸實(shí)現(xiàn)上位機(jī)與下位機(jī)之間的通訊,模擬發(fā)送發(fā)動(dòng)機(jī)各種參數(shù),如冷卻液溫度、進(jìn)氣溫度、機(jī)油壓力等,還可利用虛擬儀表評(píng)估總線儀表步進(jìn)電機(jī)的誤差。
USB CAN-Ⅱ雙路智能CAN接口卡具有2個(gè)CAN通道(汽車型)。它采用16位微控制器,具有強(qiáng)大功能,支持即插即用。板上16位微控制器能夠控制CAN控制器的發(fā)送和接收任務(wù),即使在總線負(fù)載較重的情況下,仍可有效支持帶有時(shí)間標(biāo)志的CAN報(bào)文的過濾、預(yù)處理和存儲(chǔ)以及CAN報(bào)文的實(shí)時(shí)傳輸?shù)裙δ?。通過編程調(diào)用USB CAN一Ⅱ輔助的通用CAN—bus接口函數(shù)庫,能有效支持CAN系統(tǒng)基于PC的應(yīng)用。程序設(shè)計(jì)流程圖如圖3所示。
C#調(diào)用接口庫函數(shù)的方法:(1)將庫函數(shù)文件置于工作目錄下;(2)聲明using System.Runtime.InteropServices;(3)聲明ZLGCAN系列接口卡信息的數(shù)據(jù)類型;(4)導(dǎo)入,以打開設(shè)備函數(shù)為例,其他功能函數(shù)引用與之類似。打開設(shè)備函數(shù)為:
4 發(fā)動(dòng)機(jī)模擬系統(tǒng)設(shè)計(jì)
該系統(tǒng)按功能分為發(fā)動(dòng)機(jī)參數(shù)報(bào)文、發(fā)動(dòng)機(jī)故障報(bào)文、發(fā)動(dòng)機(jī)儀表測(cè)試。為了便于單獨(dú)使用各個(gè)功能界面,采用復(fù)合界面形式。其運(yùn)行界面如圖4所示。
4.1 發(fā)動(dòng)機(jī)參數(shù)報(bào)文發(fā)送模塊
該模塊是類比現(xiàn)場(chǎng)測(cè)試的一組數(shù)據(jù),按照適用于BOSCH高壓共軌系統(tǒng)的歐III發(fā)動(dòng)機(jī)基于SAE J1939的CAN通訊規(guī)范,將幀ID與代表發(fā)動(dòng)機(jī)參數(shù)的數(shù)據(jù)字節(jié)位置相對(duì)應(yīng),同時(shí)可通過修改相關(guān)字節(jié),改變所要發(fā)送的參數(shù)值。
若想發(fā)送轉(zhuǎn)速2 000 r/m,數(shù)據(jù)在報(bào)文的第4、5字節(jié)。發(fā)送數(shù)據(jù)的第4、5字節(jié)為2 000/0.125=16 000轉(zhuǎn)化為兩字節(jié),注意高字節(jié)置于第5字節(jié),低字節(jié)置于第4字節(jié)。同理可查表計(jì)算其他發(fā)動(dòng)機(jī)參數(shù),如潤滑油壓力、冷卻液溫度、蓄電池電壓、燃油油位,ECU溫度,進(jìn)氣溫度,機(jī)油壓力,節(jié)氣門位置等參數(shù)值所對(duì)應(yīng)的幀ID及在數(shù)據(jù)幀的位置。
4.2 發(fā)動(dòng)機(jī)故障報(bào)文發(fā)送模塊
當(dāng)發(fā)動(dòng)機(jī)發(fā)生故障時(shí),傳感器所采集的數(shù)據(jù)通過EMR的單片機(jī)分析處理,決定該采集數(shù)據(jù)是否在正常范圍內(nèi)或有效。如果該數(shù)據(jù)未在正常范圍內(nèi)或無效,EMR將向上位機(jī)發(fā)送故障幀,表明該傳感器對(duì)應(yīng)的元件存在故障。該系統(tǒng)設(shè)計(jì)的總線儀表增加了故障診斷功能,可借助于液晶顯示屏實(shí)時(shí)顯示發(fā)動(dòng)機(jī)的故障類型。
在故障診斷方面,SAE J1939定義了19個(gè)診斷信息(Diagnostic Message,簡(jiǎn)稱DM)。該故障報(bào)文發(fā)送模塊主要采用DMl(顯示當(dāng)前故障)功能。DM由診斷故障燈代碼(2字節(jié))和診斷故障碼DTC (4字節(jié))組成。診斷故障碼DTC的長(zhǎng)度為4字節(jié),包括可疑參數(shù)碼SPN(19位)、故障類型代碼FMI(5位)、故障發(fā)生次數(shù)OC(7位)、SPN轉(zhuǎn)換方式CM(1位)。
該系統(tǒng)設(shè)計(jì)共定義400多個(gè)故障,將故障類型代碼FMI與SPN相結(jié)合進(jìn)行定義,定義時(shí)遵循SPN和FMI的組合與故障類型一一對(duì)應(yīng)的原則。
4.3 發(fā)動(dòng)機(jī)儀表測(cè)試模塊
發(fā)動(dòng)機(jī)儀表測(cè)試模塊是將虛擬儀表的指針運(yùn)行速度與開發(fā)儀表相比較,測(cè)試開發(fā)儀表的步進(jìn)電動(dòng)機(jī)驅(qū)動(dòng)情況。由于只有車速表、油壓表、水溫表、電壓表等儀表數(shù)據(jù)是由發(fā)動(dòng)機(jī)CAN總線提供的,所以測(cè)試儀表只能模擬這4個(gè)表盤的步進(jìn)電機(jī)驅(qū)動(dòng)情況。該測(cè)試儀表采用Dundas儀表向?qū)?,該產(chǎn)品能夠完全支持Visual Studio 2005特征,包括智能標(biāo)記,高級(jí)數(shù)據(jù)綁定等。Dundas儀表向?qū)峁┴S富的素材庫,利用該向?qū)?,用戶可以設(shè)計(jì)出應(yīng)用于各領(lǐng)域的儀表控件外形和數(shù)據(jù)指示方式。用戶只需編寫相關(guān)的儀表動(dòng)態(tài)變化和響應(yīng)部分代碼即可實(shí)現(xiàn)虛擬儀表功能。
5 結(jié)論
介紹基于SAE J1939協(xié)議的發(fā)動(dòng)機(jī)模擬系統(tǒng)設(shè)計(jì)。該系統(tǒng)具有發(fā)動(dòng)機(jī)工況選擇功能,與待開發(fā)總線儀表連接,可以模擬輸出發(fā)動(dòng)機(jī)的各項(xiàng)工況數(shù)據(jù)。一旦選定某個(gè)報(bào)文,該報(bào)文代表的發(fā)動(dòng)機(jī)參數(shù)即在報(bào)文規(guī)定的更新率下持續(xù)發(fā)送到待開發(fā)總線儀表的總線接口。以此系統(tǒng)設(shè)計(jì)軟件替代真實(shí)的發(fā)動(dòng)機(jī),可以隨機(jī)檢測(cè)各項(xiàng)發(fā)動(dòng)機(jī)工況,且具有人為可選擇的靈活性,選擇范圍較真實(shí)發(fā)動(dòng)機(jī)更大。在線模擬系統(tǒng)不受工作環(huán)境限制,可隨時(shí)隨地進(jìn)行檢測(cè)。該系統(tǒng)為實(shí)驗(yàn)室的一套發(fā)動(dòng)機(jī)試驗(yàn)系統(tǒng)的一部分,也可以配合教學(xué)實(shí)驗(yàn)課程。通過實(shí)驗(yàn),軟件各部分功能運(yùn)行良好,對(duì)總線儀表開發(fā)具有一定價(jià)值。隨著CAN總線應(yīng)用領(lǐng)域的不斷發(fā)展,SAE J1939協(xié)議必將得廣泛應(yīng)用。