CANopen已經(jīng)在很多對成本敏感且要求靈活組網(wǎng)的應(yīng)用領(lǐng)域(從工業(yè)自動化到商用汽車)成為了總線通信標(biāo)準(zhǔn)。CANopen標(biāo)準(zhǔn)的設(shè)備子協(xié)議,簡化了總線節(jié)點(diǎn)之間的通信,同時(shí)使來自不同廠商的ECU、傳感器和執(zhí)行器能夠輕松實(shí)現(xiàn)互連。一個(gè)專業(yè)的原型建模及測試工具不僅能服務(wù)于復(fù)雜CANopen項(xiàng)目的工程開發(fā) ,還能為工程師提供此領(lǐng)域的相關(guān)基礎(chǔ)知識。
開發(fā)一個(gè)CANopen網(wǎng)絡(luò)系統(tǒng),其任務(wù)范圍從開發(fā)各個(gè)單ECU到整個(gè)網(wǎng)絡(luò)能夠運(yùn)行起來。對于系統(tǒng)開發(fā)商而言,如果從一開始就采用CANopen系統(tǒng),則為整個(gè)系統(tǒng)開發(fā)工作開了個(gè)無法估量的好頭。在系統(tǒng)開發(fā)的V模式流程中,“驗(yàn)證和確認(rèn)”占了很大一部分工作。因此,盡可能早地進(jìn)行全面的測試工作,可大大減少因?yàn)樘戆l(fā)現(xiàn)錯(cuò)誤而帶來的風(fēng)險(xiǎn)。V模式開發(fā)流程如圖1所示:

圖1 V-模式開發(fā)流程
通過測試裝置進(jìn)行系統(tǒng)驗(yàn)證
系統(tǒng)開發(fā)過程中的系統(tǒng)化測試在所有開發(fā)步驟中是不可或缺的。但一般都要等到很晚,即獲得真實(shí)的系統(tǒng)組件后,才能進(jìn)行測試。如果出現(xiàn)問題,則系統(tǒng)完成的時(shí)間會面臨風(fēng)險(xiǎn)。
實(shí)際上,測試一般都不在真實(shí)的系統(tǒng)上進(jìn)行,取而代之的是使用測試裝置,在模擬的測試環(huán)境下進(jìn)行。除了有專門的測量和診斷裝置外,還包括各種執(zhí)行器,以盡可能的模仿切合實(shí)際的系統(tǒng)環(huán)境。根據(jù)不同的項(xiàng)目規(guī)模,這樣的測試裝置可能會花費(fèi)很大的成本及勞力。這種測試裝置的瓶頸在于如何將以上各種因素集成到各個(gè)測試環(huán)節(jié)之中。因?yàn)橥荒苡幸粋€(gè)測試設(shè)置可以起作用。
有一種方法可以擺脫這種窘境,那就是借助軟件工具,在軟件環(huán)境下搭建整個(gè)系統(tǒng)的原型。借助軟件工具還具備一個(gè)優(yōu)點(diǎn)是,軟件工具同時(shí)還提供測試的測試功能。
借助軟件工具創(chuàng)建系統(tǒng)原型環(huán)境
一個(gè)CAN網(wǎng)絡(luò)系統(tǒng)的原型起碼應(yīng)支持測試及驗(yàn)證。此外,另一個(gè)重點(diǎn)是系統(tǒng)原型里的各個(gè)單獨(dú)組件可以被真實(shí)的或模擬的ECU取代。利用這種方式,在系統(tǒng)開發(fā)的過程中,就可以比較容易地測試各個(gè)真實(shí)ECU的功能及性能。創(chuàng)建一個(gè)復(fù)雜系統(tǒng)的原型,需要借助合適的工具且要通過復(fù)雜的嘗試。Vector公司提供的CANoe.CANopen在創(chuàng)建系統(tǒng)原型通信方面提供了有效的幫助。僅需通過短短幾個(gè)配置步驟,就可讓用戶創(chuàng)建一個(gè)系統(tǒng)原型,其通信性能完全符合真實(shí)的系統(tǒng)。
CANopen網(wǎng)絡(luò)中各ECU的行為通過描述文件(EDS-電子數(shù)據(jù)表格)定義,這些描述文件需要事先選擇或創(chuàng)建好。接下來,需要定義將來會通過總線進(jìn)行數(shù)據(jù)交換的的各數(shù)據(jù)間的相互關(guān)系,例如:某個(gè)CANopen網(wǎng)絡(luò)上節(jié)點(diǎn)地址是5的設(shè)備(壓力傳感器),其輸入值“壓力”被鏈接到節(jié)點(diǎn)地址是10的設(shè)備(控制模塊)的“氣壓”變量上。這些工作即是定義系統(tǒng)原型里所有PDO(進(jìn)程數(shù)據(jù)對象)的相互關(guān)系。
配置工具會自動計(jì)算這些PDO的映射關(guān)系,這些映射關(guān)系如果有必要的話在以后還可以修改。所有配置都做好之后,配置工具的輸出是設(shè)備配置信息DCF(DCF-設(shè)備配置文件),根據(jù)這個(gè)配置信息,用戶就可以生成原型環(huán)境了,如,CANoe可以生成與各個(gè)真實(shí)ECU對應(yīng)相同的通信屬性。只要運(yùn)行CANoe,整個(gè)原型環(huán)境的通信部分功能就已經(jīng)具備了。如圖2所示:

圖2 一個(gè)簡單的模擬的由中央控制和I/O節(jié)點(diǎn)組成的CANopen網(wǎng)絡(luò)
定義應(yīng)用程序行為
每一個(gè)單獨(dú)ECU的應(yīng)用程序行為都不可能直接從EDS文件中派生出來,因?yàn)镋DS文件只是映射每一個(gè)對象字典的結(jié)構(gòu)。因此,制定應(yīng)用層程序行為總是涉及額外的編程工作。借助于CANoe環(huán)境里的CAPL編程語言,可以快速地實(shí)現(xiàn)ECU行為編程。此外,還可以將ECU行為編寫成DLL文件,并在CANoe中引用,同樣可以輕松集成Matlab/Simulink模型。如圖3所示:

圖3 CANoe.CANopen環(huán)境示意圖
測試功能
當(dāng)系統(tǒng)原型建立之后,需要對整個(gè)工程進(jìn)行必要的測試。CANoe支持用戶在它的環(huán)境下創(chuàng)建測試序列、測試過程記錄及測試結(jié)果評估。一個(gè)CANopen系統(tǒng)的測試功能由以下幾個(gè)等級構(gòu)成:見圖4所示。
協(xié)議級
通過協(xié)議級的測試,保證各個(gè)基于CANopen通信子協(xié)議的設(shè)備,可按照CANopen規(guī)范集成到整個(gè)系統(tǒng)里。
通信級
通信級測試重要的不是保證協(xié)議的正確,而是保證協(xié)議序列正確的邏輯順序,如PDO的配置。對象字典里PDO相關(guān)入口描述必須要符合特定的順序。
應(yīng)用程序級
應(yīng)用程序級測試用于檢查過程變量之間的相互關(guān)系。下面的幾個(gè)前提條件必須滿足,甚至決定了相互關(guān)系:首先,過程變量交換必須使用PDO,因此,系統(tǒng)必須充分配置。這就意味著,例如,某個(gè)閥門的狀態(tài)可以根據(jù)溫度或壓力的值來檢測。顯然,用戶必須要有相關(guān)的know-how去制定測試。

圖4 CANopen里的測試級別
用CANoe創(chuàng)建和執(zhí)行測試流程
測試序列可借助集成于CANoe環(huán)境的CAPL編程語言來制定,每個(gè)CAPL測試模塊代表一個(gè)單獨(dú)的測試,每一個(gè)單獨(dú)的測試有多個(gè)測試案例,這些測試案例又可能包含多個(gè)測試步驟。當(dāng)測試運(yùn)行時(shí),CANoe按順序調(diào)用各個(gè)測試案例。適當(dāng)?shù)臏y試流程控制可選擇性的跳過或重復(fù)某個(gè)測試。同時(shí),在后臺監(jiān)測此步驟與其他約束條件的一致性狀態(tài)。例如,當(dāng)CANoe正在等待某一個(gè)特定信息的同時(shí)時(shí),又可以檢測看是否有某個(gè)特定的其它報(bào)文被定期地發(fā)送到總線上。
特別是在自動化測試時(shí),重要的是需要詳細(xì)記錄每一個(gè)測試步驟的結(jié)果。CAPL程序里的其它函數(shù)用于處理將測試結(jié)果寫到XML文件,用于事后處理。CANoe的測試序列也可以通過XML語言實(shí)現(xiàn)。這在需要通過單個(gè)工具生成大量的測試流程時(shí)是非常有利的。因此,CANoe在XML中實(shí)現(xiàn)了一系列的測試模式,并能夠進(jìn)行相應(yīng)的處理。
總結(jié)
創(chuàng)建CANopen網(wǎng)絡(luò)的原型,總是需要花費(fèi)相當(dāng)大的勞力。然而,這一過程往往又是至關(guān)重要的,可以防止在項(xiàng)目的后期才發(fā)現(xiàn)功能性錯(cuò)誤。用戶借助CANoe.CANopen可以高效地創(chuàng)建系統(tǒng)原型,同時(shí),可以很容易地滿足在通信方面的技術(shù)要求。在項(xiàng)目的各個(gè)階段,網(wǎng)絡(luò)原型為系統(tǒng)開發(fā)商提供了及時(shí)檢查和驗(yàn)證組件完整性所需的測試功能。(end)