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