車(chē)用CAN總線網(wǎng)絡(luò)快速原型的設(shè)計(jì)實(shí)現(xiàn)
1 引言
隨著車(chē)用網(wǎng)絡(luò)中被控節(jié)點(diǎn)數(shù)量和控制復(fù)雜度的不斷增加,為了滿足控制要求、降低控制系統(tǒng)開(kāi)發(fā)成本,汽車(chē)生產(chǎn)廠商和汽車(chē)設(shè)計(jì)單位對(duì)車(chē)用嵌入式軟件開(kāi)發(fā)工具的要求越來(lái)越高。目前,市場(chǎng)上已經(jīng)存在一些針對(duì)這一應(yīng)用領(lǐng)域的軟件開(kāi)發(fā)技術(shù)和軟件開(kāi)發(fā)工具,例如基于快速原型的軟件設(shè)計(jì)技術(shù)和MATLAB/Simulink、dSPACE開(kāi)發(fā)工具?;诳焖僭偷能浖O(shè)計(jì)技術(shù)是指軟件設(shè)計(jì)者通過(guò)創(chuàng)建和維護(hù)嵌入式軟件的功能模型來(lái)描述軟件功能,并且使用面向微處理器的自動(dòng)代碼生成技術(shù)實(shí)現(xiàn)下位機(jī)代碼快速生成的軟件開(kāi)發(fā)方法。使用這一技術(shù)可以提高嵌入式軟件的開(kāi)發(fā)效率,降低開(kāi)發(fā)成本。
但是目前的軟件開(kāi)發(fā)工具都側(cè)重于單電控單元(ECU)建模和驗(yàn)證軟件在單ECU環(huán)境下的執(zhí)行效率和性能;對(duì)控制策略在網(wǎng)絡(luò)場(chǎng)景下的魯棒性和特征分析支持有限。另一方面,網(wǎng)絡(luò)協(xié)議仿真和分析工具,如OPNET雖然可以提供網(wǎng)絡(luò)場(chǎng)景下協(xié)議性能的分析[6],但是由于OPNET上開(kāi)發(fā)的仿真代碼無(wú)法直接移植到控制器上,所以開(kāi)發(fā)工作不能方便地實(shí)現(xiàn)針對(duì)目標(biāo)系統(tǒng)的重用。
如果我們針對(duì)車(chē)用CAN總線網(wǎng)絡(luò)的應(yīng)用場(chǎng)景,將基于快速原型的嵌入式軟件設(shè)計(jì)和基于網(wǎng)絡(luò)仿真的分析相結(jié)合,實(shí)現(xiàn)車(chē)用CAN總線網(wǎng)絡(luò)的快速原型。在設(shè)計(jì)前期用模型定義的虛擬硬件代替沒(méi)有設(shè)計(jì)完成或者擁有成本太高的實(shí)際硬件,進(jìn)行初期的系統(tǒng)設(shè)計(jì)分析;當(dāng)相應(yīng)的硬件到位后,替換虛擬硬件,將模型代碼轉(zhuǎn)化成面向目標(biāo)系統(tǒng)的目標(biāo)代碼,進(jìn)行更接近實(shí)際系統(tǒng)的驗(yàn)證分析;最后當(dāng)所有實(shí)際控制軟件、控制器硬件和被控硬件都完成時(shí),進(jìn)行集成的全系統(tǒng)實(shí)時(shí)仿真。這樣可以解決使用相互獨(dú)立的工具開(kāi)發(fā)模型和進(jìn)行仿真驗(yàn)證所存在的問(wèn)題。
本文通過(guò)對(duì)車(chē)用CAN總線網(wǎng)絡(luò)快速原型的設(shè)計(jì)實(shí)現(xiàn),提供了一種對(duì)車(chē)用CAN總線網(wǎng)絡(luò)進(jìn)行設(shè)計(jì)、仿真和性能分析的系統(tǒng);系統(tǒng)使用虛擬硬件的方法,通過(guò)在Simulink中構(gòu)造典型車(chē)用環(huán)境相關(guān)的控制器模型和被控對(duì)象模型,以及在Windows環(huán)境下構(gòu)造CAN卡仿真程序TH-CAN-Vcard和CAN總線分析工具TH-CAN_Scope,針對(duì)車(chē)用CAN總線網(wǎng)絡(luò)場(chǎng)景,實(shí)現(xiàn)了CAN總線網(wǎng)絡(luò)環(huán)境下控制策略仿真分析和控制代碼生成的有機(jī)結(jié)合。
2 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
2.1 車(chē)用CAN總線網(wǎng)絡(luò)的特征分析
CAN 總線是一種串行通信總線。使用帶有沖突檢測(cè)的載波偵聽(tīng)多路訪問(wèn)方式(即CSMA/CD)進(jìn)行總線仲裁與控制。為了對(duì)車(chē)用CAN總線在網(wǎng)絡(luò)場(chǎng)景下的性能進(jìn)行規(guī)范,國(guó)際標(biāo)準(zhǔn)化組織ISO和美國(guó)汽車(chē)工程師協(xié)會(huì)SAE對(duì)CAN通信診斷的基準(zhǔn)環(huán)境都制訂了相關(guān)的國(guó)際標(biāo)準(zhǔn)。這些標(biāo)準(zhǔn)依據(jù)CAN協(xié)議的分層結(jié)構(gòu),從不同層次定義基準(zhǔn)測(cè)試要求。例如:SAE J2012和ISO/DIS 15031-6對(duì)應(yīng)應(yīng)用層故障診斷的定義;[3] [7]ISO/DIS15765-2對(duì)應(yīng)網(wǎng)絡(luò)層通信協(xié)議,通過(guò)定義無(wú)應(yīng)答分段數(shù)據(jù)傳送協(xié)議(USDT)提供長(zhǎng)消息數(shù)據(jù)分段/重組、帶流量控制的數(shù)據(jù)傳輸和板上控制單元與板外測(cè)試工具間消息的超時(shí)處理控制。[2]
另一方面,各個(gè)汽車(chē)生產(chǎn)廠家也根據(jù)這些國(guó)際標(biāo)準(zhǔn)制訂了自己的企業(yè)標(biāo)準(zhǔn),用以規(guī)范ECU產(chǎn)品供應(yīng)商的產(chǎn)品。如戴姆勒克萊斯勒-奔馳集團(tuán)的CAN通信標(biāo)準(zhǔn)軟件模型分為車(chē)輛診斷相關(guān)的模塊和與車(chē)輛診斷無(wú)關(guān)的模塊兩部分。其中車(chē)輛診斷相關(guān)的模塊又分為診斷協(xié)議服務(wù)(KWP2000)和網(wǎng)絡(luò)傳輸協(xié)議服務(wù) (ISO-15765-2) ,分別對(duì)應(yīng)應(yīng)用層服務(wù)和網(wǎng)絡(luò)層服務(wù)的功能描述,定義相關(guān)的基準(zhǔn)環(huán)境參數(shù)和測(cè)試消息序列。[2]
這些標(biāo)準(zhǔn)對(duì)于車(chē)用環(huán)境下基于CAN總線的診斷服務(wù)的內(nèi)容、網(wǎng)絡(luò)傳送消息序列間的邏輯關(guān)系和時(shí)延要求給出了詳細(xì)定義。而依據(jù)這些要求,提供一個(gè)CAN總線網(wǎng)絡(luò)快速原型,真實(shí)地模擬具有給定特征的消息序列和數(shù)據(jù)流,再現(xiàn)可能出現(xiàn)的干擾和誤碼信號(hào)就是本設(shè)計(jì)的核心技術(shù)工作。這一工作成果可以提供對(duì)網(wǎng)絡(luò)流量、網(wǎng)絡(luò)效率和網(wǎng)絡(luò)響應(yīng)間相互關(guān)系的分析功能,仿真和驗(yàn)證車(chē)用CAN網(wǎng)絡(luò)環(huán)境中ECU控制代碼的魯棒性和實(shí)時(shí)性。
2.2 快速原型系統(tǒng)的結(jié)構(gòu)與實(shí)現(xiàn)
本快速原型系統(tǒng)有三類(lèi)節(jié)點(diǎn):有物理CAN硬件接口的實(shí)際CAN節(jié)點(diǎn)、由TH-CAN-Vcard與Simulink模型組成的虛擬CAN節(jié)點(diǎn)和運(yùn)行TH-CAN-Scope分析工具的監(jiān)控節(jié)點(diǎn)。在設(shè)計(jì)仿真實(shí)驗(yàn)時(shí),節(jié)點(diǎn)的數(shù)目沒(méi)有限制,僅受具體的CAN應(yīng)用層的編址方案影響。第一類(lèi)節(jié)點(diǎn)是我們通常使用的CAN節(jié)點(diǎn),這里重點(diǎn)描述后兩類(lèi)節(jié)點(diǎn)的實(shí)現(xiàn)。
2.2.1 虛擬CAN節(jié)點(diǎn)
虛擬CAN節(jié)點(diǎn)由TH-CAN-Vcard與Simulink模型組成,節(jié)點(diǎn)實(shí)現(xiàn)如圖1所示。當(dāng)物理CAN卡不存在時(shí),采用虛擬硬件技術(shù),通過(guò)選擇CAN卡驅(qū)動(dòng)庫(kù)提供的虛擬CAN通道,同時(shí)將開(kāi)發(fā)的VCANCtrl控制對(duì)象實(shí)例化成COM服務(wù)器(COM Server)就可以在單機(jī)下建立COM服務(wù)器與MATLAB中模型(作為COM客戶機(jī))間的聯(lián)系。虛擬接收/發(fā)送CAN消息到CAN總線的過(guò)程,為Simulink下建立的模型提供基本的CAN通信測(cè)試功能。
當(dāng)物理CAN卡存在時(shí),可以直接將模型中的目標(biāo)CAN通道進(jìn)行修改,從而使MATLAB中的模型具備與其它物理CAN節(jié)點(diǎn)通信的功能,這時(shí)多個(gè)位于不同PC機(jī)上的模型和多個(gè)ECU硬件上的控制器代碼可以通過(guò)CAN總線建立一個(gè)車(chē)用CAN網(wǎng)絡(luò)仿真分析環(huán)境。
圖1 虛擬CAN節(jié)點(diǎn)的實(shí)現(xiàn)
TH-CAN-Vcard則是在Windows環(huán)境下使用Visual Studio .NET和KVASER公司CAN卡驅(qū)動(dòng)庫(kù)開(kāi)發(fā)的CAN卡仿真程序。我們通過(guò)ActiveX技術(shù)開(kāi)發(fā)了VCANCtrl控制對(duì)象,并在VCANCtrl中實(shí)現(xiàn)了以下的內(nèi)部函數(shù):
VCAN_Read 報(bào)文接收函數(shù);入口參數(shù)為CAN通道句柄、返回參數(shù)為在接收緩沖區(qū)中的CAN報(bào)文的ID、數(shù)據(jù)包、長(zhǎng)度、標(biāo)識(shí)和時(shí)間戳。
VCAN_Write 報(bào)文發(fā)送函數(shù);入口參數(shù)為CAN通道句柄,以及待發(fā)送CAN報(bào)文的ID、數(shù)據(jù)包、長(zhǎng)度和標(biāo)識(shí)。
VCAN_Start CAN卡初始化函數(shù);入口參數(shù)為所選CAN通道號(hào)、波特率、通道開(kāi)啟模式、同步模式和同步段,以及CAN控制器工作模式。
VCAN_Close CAN卡關(guān)閉函數(shù);入口參數(shù)是CAN卡初始化成功時(shí)所返回的句柄。
2.2.2 監(jiān)控節(jié)點(diǎn)
監(jiān)控節(jié)點(diǎn)是進(jìn)行CAN總線消息序列監(jiān)測(cè)和控制的節(jié)點(diǎn),運(yùn)行TH-CAN-Scope - CAN消息仿真分析工具。TH-CAN-Scope是仿真CAN消息序列和進(jìn)行仿真結(jié)果記錄分析的工具,是使用KVASER公司的CANLIB SDK開(kāi)發(fā)的 Windows 下的應(yīng)用程序。
TH-CAN-Scope的CAN消息處理功能包括:創(chuàng)建/編輯消息流序列、CAN通信管理、CAN消息序列跟蹤、控制臺(tái)人機(jī)接口和用于消息序列管理的數(shù)據(jù)庫(kù)維護(hù)。其中創(chuàng)建/編輯消息流序列、CAN消息序列跟蹤、控制臺(tái)人機(jī)接口和與數(shù)據(jù)庫(kù)操作相關(guān)的消息序列管理使用用戶線程。而CAN通信管理對(duì)實(shí)時(shí)性要求較高,使用獨(dú)立的工作線程,兩個(gè)線程通過(guò)使用Windows 下的消息處理機(jī)制相互通信。
另外,TH-CAN-Scope提供的分析功能包括:在線顯示CAN報(bào)文、在線統(tǒng)計(jì)CAN總線的使用情況、記錄總線上的CAN報(bào)文、主動(dòng)發(fā)送/循環(huán)發(fā)送CAN擾動(dòng)報(bào)文。并且將一段時(shí)間內(nèi)收集的CAN報(bào)文記錄在數(shù)據(jù)庫(kù)中,可以進(jìn)行更詳細(xì)深入的性能分析,通過(guò)使用CAN報(bào)文編輯工具,可以指定監(jiān)控節(jié)點(diǎn)在時(shí)間觸發(fā)(在指定的相對(duì)時(shí)間發(fā)送某個(gè)/某組CAN消息)和事件觸發(fā)(收到某個(gè)CAN報(bào)文或收到某類(lèi)CAN報(bào)文時(shí)發(fā)送指定的CAN報(bào)文序列)機(jī)制下發(fā)送觸發(fā)報(bào)文,以考察CAN總線的性能。
2.3 系統(tǒng)實(shí)現(xiàn)技術(shù)
2.3.1 MATLAB外部程序接口的實(shí)現(xiàn)
TH-CAN-Vcard為MATLAB下的控制器模型和被控模型提供CAN通信的功能,采用了COM技術(shù)。與用DDE技術(shù)實(shí)現(xiàn)的Matlab外部通信方式相比[4], COM技術(shù)的性能更好,在Emanuele Ruffaldi等人所做的測(cè)試中, COM與DDE相比,寫(xiě)性能提高了10倍,讀性能提高了30多倍[5]; 另外MATHWORKS 對(duì) DDE接口現(xiàn)在也不再進(jìn)行繼續(xù)的開(kāi)發(fā),而推薦使用COM接口。
具體使用時(shí),首先我們?cè)赟imulink中構(gòu)造VCAN發(fā)送模塊和VCAN接收模塊,使用M語(yǔ)言中的actxcontrol命令將VCANCtrl COM對(duì)象實(shí)例化,獲得其句柄,然后就可以通過(guò)這個(gè)實(shí)例化句柄調(diào)用COM對(duì)象中相應(yīng)的VCAN_Write和VCAN_Read函數(shù),實(shí)現(xiàn)Matlab中控制模型的CAN通信支持,在使用上等同于一個(gè)有句柄的設(shè)備。
2.3.2 數(shù)據(jù)流模擬和節(jié)點(diǎn)同步的實(shí)現(xiàn)
為了在CAN總線上產(chǎn)生指定的CAN消息序列,我們通過(guò)TH-CAN-Scope定義需要的報(bào)文序列,然后通過(guò)時(shí)間觸發(fā)和事件觸發(fā)相結(jié)合的方式,定義對(duì)總線上的CAN消息的響應(yīng)操作,而相應(yīng)的控制邏輯,則通過(guò)Simulink模型來(lái)實(shí)現(xiàn)。所以實(shí)際的控制策略類(lèi)似于分布于各個(gè)CAN節(jié)點(diǎn)中。
節(jié)點(diǎn)間的同步是指在總線上的所有CAN節(jié)點(diǎn)應(yīng)該能夠在某一時(shí)刻同時(shí)產(chǎn)生各自指定的消息序列。使用由TH-CAN-Scope廣播發(fā)送自定義的CAN同步發(fā)送消息,啟動(dòng)各節(jié)點(diǎn)計(jì)時(shí)器的方式,可以實(shí)現(xiàn)一定精度的節(jié)點(diǎn)同步。
2.3.3 CAN總線性能分析的實(shí)現(xiàn)
在進(jìn)行CAN總線的性能分析時(shí),我們實(shí)現(xiàn)了以下的分析功能:考察總線負(fù)載(包括節(jié)點(diǎn)數(shù)、各節(jié)點(diǎn)信息量和各節(jié)點(diǎn)設(shè)置的總線速率)的影響;考察節(jié)點(diǎn)優(yōu)先級(jí)策略的影響;考察容錯(cuò)策略(例如發(fā)送接收錯(cuò)誤率過(guò)高的節(jié)點(diǎn)應(yīng)該主動(dòng)退出CAN總線網(wǎng)絡(luò))的影響;以及考察CAN網(wǎng)絡(luò)實(shí)時(shí)性能,主要包括網(wǎng)絡(luò)報(bào)文消息時(shí)延的大小范圍以及報(bào)文消息時(shí)延的變化。其中,時(shí)延大小描述了報(bào)文時(shí)延的靜態(tài)特性,而時(shí)延變化則描述了報(bào)文時(shí)延的動(dòng)態(tài)特性。
3 系統(tǒng)功能測(cè)試與分析
為了驗(yàn)證快速原型系統(tǒng)對(duì)多ECU下虛擬硬件和實(shí)際硬件混合仿真的支持,我們?cè)O(shè)計(jì)了圖2所示的系統(tǒng)功能測(cè)試實(shí)驗(yàn)平臺(tái):其中ECU-A和ECU-B是兩個(gè)獨(dú)立的硬件ECU,采用實(shí)驗(yàn)室開(kāi)發(fā)的TH-ECU2003控制器;ECU-C和ECU-D是在Simulink中開(kāi)發(fā)的兩個(gè)獨(dú)立的控制模型,通過(guò)VCAN發(fā)送模塊和VCAN接收模塊實(shí)現(xiàn)軟件仿真CAN卡功能,是虛擬硬件。在測(cè)試中,通過(guò)在各節(jié)點(diǎn)過(guò)濾接收到的CAN消息,控制通信流程如圖2所示,即ECU-A -> ECU-B -> ECU-C ->ECD-D -> ECU-A。從而驗(yàn)證虛擬硬件和實(shí)際硬件混合仿真下的所有場(chǎng)景。
圖2 快速原型系統(tǒng)功能測(cè)試的實(shí)驗(yàn)平臺(tái)
實(shí)驗(yàn)中,使用TH-CAN-Scope作為監(jiān)控軟件,對(duì)CAN總線上的數(shù)據(jù)進(jìn)行了5s的數(shù)據(jù)采集,并對(duì)節(jié)點(diǎn)間2000多條CAN消息報(bào)文的時(shí)延均值和標(biāo)準(zhǔn)方差進(jìn)行分析(這里的時(shí)延包括了節(jié)點(diǎn)的處理時(shí)延和節(jié)點(diǎn)間的傳輸時(shí)延),分析結(jié)果見(jiàn)表1,實(shí)驗(yàn)證明系統(tǒng)中任意兩個(gè)節(jié)點(diǎn)間都能進(jìn)行正常的通信,滿足測(cè)試要求,驗(yàn)證了系統(tǒng)設(shè)計(jì)的有效性。
表1 實(shí)驗(yàn)中的CAN消息報(bào)文時(shí)延分析
4 結(jié)論
本文針對(duì)現(xiàn)有ECU軟件開(kāi)發(fā)工具側(cè)重于單ECU建模和現(xiàn)有網(wǎng)絡(luò)仿真工具中的開(kāi)發(fā)代碼在目標(biāo)系統(tǒng)上重用比較困難的問(wèn)題,設(shè)計(jì)并實(shí)現(xiàn)了車(chē)用CAN總線網(wǎng)絡(luò)快速原型系統(tǒng)。最后,通過(guò)用THECU-2003硬件平臺(tái)與Simulink下的控制模型共同組成的仿真環(huán)境驗(yàn)證了快速原型系統(tǒng)設(shè)計(jì)的有效性。