CANopen系統(tǒng)的原型開發(fā)和測(cè)試分析
Mirko Tischer (Vector Informatik)
遵循V模式的大多數(shù)的開發(fā)任務(wù)可歸結(jié)于測(cè)試和驗(yàn)證。全面的測(cè)試可以幫助開發(fā)人員盡可能早的發(fā)現(xiàn)并排除錯(cuò)誤。
CANopen系統(tǒng)開發(fā)中涉及的任務(wù)范圍包括從單個(gè)ECU的開發(fā)到整個(gè)系統(tǒng)的配置和啟動(dòng)。一個(gè)比較可取的做法是使用經(jīng)過(guò)驗(yàn)證的工具,這樣能充分利用CANopen的靈活性。同時(shí),開發(fā)人員不必關(guān)心單個(gè)ECU的協(xié)議功能實(shí)現(xiàn)。
在整個(gè)系統(tǒng)開發(fā)過(guò)程的每個(gè)階段都必須有相應(yīng)的測(cè)試工作。實(shí)際上,初始測(cè)試不是在第一級(jí)客戶的真實(shí)系統(tǒng)上完成的,而是使用一個(gè)包含有所有組成最終系統(tǒng)的組件的測(cè)試臺(tái)進(jìn)行測(cè)試。該測(cè)試臺(tái)同時(shí)也包括特殊的測(cè)量、測(cè)試診斷設(shè)備、執(zhí)行器,盡可能使測(cè)試系統(tǒng)環(huán)境與真實(shí)系統(tǒng)一致。當(dāng)系統(tǒng)的規(guī)模較大時(shí),構(gòu)建這樣一個(gè)測(cè)試臺(tái)也許是非常困難的,而且成本很高,通常情況下只能實(shí)現(xiàn)一個(gè)單獨(dú)的測(cè)試臺(tái)。在大多數(shù)情況下,這將成為測(cè)試過(guò)程中的一個(gè)瓶頸。
解決這一問(wèn)題的出路在于使用一種成熟的,能容易實(shí)現(xiàn)整個(gè)系統(tǒng)原型的工具。該工具將提供測(cè)試功能的理想的解決方案。
原型環(huán)境
首先并且首要的,整個(gè)系統(tǒng)的原型CAN網(wǎng)絡(luò)應(yīng)該支持測(cè)試和驗(yàn)證。此外,該原型還應(yīng)該提供早期項(xiàng)目開發(fā)功能。因此,用真實(shí)的ECU或仿真ECU表示整個(gè)系統(tǒng)中的各個(gè)獨(dú)立組件這一過(guò)程是非常重要的。這樣可以相對(duì)簡(jiǎn)單的在系統(tǒng)開發(fā)過(guò)程中測(cè)試真實(shí)ECU的功能完整性。因此原型環(huán)境的功能性要求比純仿真要多得多。
仿真一個(gè)復(fù)雜系統(tǒng)是成本很高的,而且工作量很大。合適的工具可以大大簡(jiǎn)化這一任務(wù)。Vector Informatik 公司的CANoe. CANopen產(chǎn)品能真正支持用戶建立系統(tǒng)原型的通信部分。只需要幾個(gè)簡(jiǎn)單的配置步驟就可以創(chuàng)建一個(gè)原型系統(tǒng),其通信功能與真實(shí)系統(tǒng)完全相同。
首先,為CANopen ECU選擇一個(gè)EDS(Electronic Data Sheet)描述文件。如果該設(shè)備的描述文件不存在,是因?yàn)樵O(shè)備開發(fā)過(guò)程尚未結(jié)束,將使用一個(gè)空模板占位。
下一步,在總線上交互的應(yīng)用程序數(shù)據(jù)被關(guān)聯(lián)起來(lái)。例如,位于5#地址設(shè)備的輸入“PressureValve” 與10#地址設(shè)備的變量 “GasPressure“相關(guān)聯(lián)。用這樣的方法定義原型系統(tǒng)的所有的過(guò)程數(shù)據(jù)對(duì)象( Process Data Object)連接。CANopen可以自動(dòng)計(jì)算映射關(guān)系,并可以在隨后修改。
下一步,所有原型系統(tǒng)的配置信息都存放于設(shè)備配置文件(DCF – Device Configuration File).中。用戶可以利用這些配置文件來(lái)創(chuàng)建一個(gè)原型環(huán)境。對(duì)于每個(gè)真實(shí)系統(tǒng)中的ECU都生成一個(gè)具有相同通信屬性的CANoe中的副本。
原型環(huán)境的通信部分在CANoe工具啟動(dòng)時(shí)生效。通過(guò)服務(wù)數(shù)據(jù)對(duì)象(SDO=Service Data Objects)可以訪問(wèn)(仿真)ECU的目標(biāo)目錄;可以對(duì)這些目錄作額外的修改。
應(yīng)用表現(xiàn)
系統(tǒng)中獨(dú)立ECU的應(yīng)用表現(xiàn)是另一個(gè)原型階段感興趣的內(nèi)容。不能從EDS文件中導(dǎo)出ECU的應(yīng)用表現(xiàn),因?yàn)镋DS文件只是表示了目標(biāo)目錄的框架。通常應(yīng)用表現(xiàn)的構(gòu)建是另外編程實(shí)現(xiàn)的。
集成了CAPL編程語(yǔ)言的軟件工具CANoe可以非常容易地描述ECU的表現(xiàn)。也可以用DLL描述ECU的表現(xiàn)。DLL用C/C++編寫,并鏈接到原型環(huán)境。CANoe也可以與Matlab/Simulink很好的集成。
根據(jù)需求等級(jí)不斷細(xì)化,原型將越來(lái)越優(yōu)化。完成了原型系統(tǒng)后,需要對(duì)整個(gè)系統(tǒng)進(jìn)行測(cè)試。在這一環(huán)節(jié),軟件工具CANoe將提供測(cè)試創(chuàng)建、評(píng)估和記錄。CANopen系統(tǒng)的測(cè)試功能需求包含以下幾個(gè)等級(jí):
協(xié)議層:
一個(gè)例子是依據(jù)CiA e.V的規(guī)范對(duì)SDO協(xié)議的測(cè)試。這個(gè)例子中,包括了對(duì)被測(cè)設(shè)備(DUT- device under test)發(fā)送請(qǐng)求,對(duì)接受到的響應(yīng)作出評(píng)估。不管在系統(tǒng)的獨(dú)立設(shè)備中是否實(shí)現(xiàn)了基于CANopen的通信協(xié)議都可以對(duì)其進(jìn)行測(cè)試。
通信層:
不在此處測(cè)試協(xié)議的正確性,而是對(duì)(獨(dú)立的)協(xié)議順序的邏輯流進(jìn)行了驗(yàn)證,如對(duì)PDO的配置。在PDO測(cè)試的例子中,在對(duì)象目錄中的PDO相關(guān)的實(shí)體必須按指定的順序書寫。在好的測(cè)試案例下,能檢測(cè)到遵循這一順序;在壞的測(cè)試案例下,錯(cuò)誤的順序?qū)⒈憩F(xiàn)在被測(cè)設(shè)備的響應(yīng)中。創(chuàng)建這一測(cè)試需要徹底理解CANopen的細(xì)節(jié),最主要的是理解所使用的不同通信機(jī)制之間的相互關(guān)系。
應(yīng)用層:
應(yīng)用層的測(cè)試會(huì)檢查過(guò)程變量之間的關(guān)系。要證實(shí)變量之間的關(guān)系,必須滿足如下先決條件:過(guò)程變量必須能與PDO發(fā)生交換,系統(tǒng)必須完全可配置。例如,在測(cè)試時(shí),閥的狀態(tài)可被看作溫度或壓力的函數(shù)。這一例子說(shuō)明用戶必須能清楚地描述測(cè)試。
測(cè)試過(guò)程
使用CANoe工具,借助于集成的CAPL編程語(yǔ)言可以準(zhǔn)確描述測(cè)試過(guò)程。開發(fā)者使用CAPL語(yǔ)言可準(zhǔn)確描述對(duì)復(fù)雜的通信系統(tǒng)的相當(dāng)靈活的測(cè)試過(guò)程。每個(gè)CAPL測(cè)試模塊是一個(gè)包含許多獨(dú)立測(cè)試用例的獨(dú)立測(cè)試。每個(gè)測(cè)試用例又包含了許多測(cè)試步。在測(cè)試執(zhí)行時(shí),CANoe工具可依次運(yùn)行各個(gè)測(cè)試用例。合適的測(cè)試流程控制可以跳過(guò)或重復(fù)某些測(cè)試。這樣可實(shí)現(xiàn)動(dòng)態(tài)測(cè)試功能。
借助預(yù)先定義的CAPL函數(shù)能大大簡(jiǎn)化產(chǎn)生測(cè)試用例的過(guò)程。一個(gè)典型的測(cè)試順序可能具有這樣的結(jié)構(gòu):先仿真被測(cè)設(shè)備,測(cè)試人員等待其響應(yīng),然后做出評(píng)估。CAPL提供了很多測(cè)試流程與事件同步的函數(shù),比如接受一個(gè)特定的消息或者一個(gè)改變了的(可能通過(guò)COM修改)環(huán)境變量的值。與此同時(shí),能在類似的后臺(tái)監(jiān)控到其它條件或約束的實(shí)現(xiàn)。如果在等待某個(gè)特定報(bào)文的過(guò)程中,用戶希望檢查此總線上是否還在周期性發(fā)送另一不同報(bào)文,這一功能就很有用。
尤其是建立自動(dòng)執(zhí)行的測(cè)試時(shí),對(duì)每個(gè)獨(dú)立的測(cè)試步結(jié)果的詳細(xì)數(shù)據(jù)記錄是非常重要的。另外的CAPL函數(shù)可用于將結(jié)果寫入XML文件作后處理,也可以寫入HTML文件做直接評(píng)估。CANoe工具的測(cè)試過(guò)程也可以由XML文件指定。如果能通過(guò)同一工具生成許多類似的測(cè)試過(guò)程,是更受歡迎的。CANoe工具提供了大量的XML格式的測(cè)試模板并能非常合適地使用。
總結(jié)
CANopen網(wǎng)絡(luò)系統(tǒng)的原型開發(fā)總是有許多重要的工作要做。不管怎樣,為了不需要等到項(xiàng)目階段的后期才能得到關(guān)于功能和系統(tǒng)性能的結(jié)論,原型設(shè)計(jì)經(jīng)常是至關(guān)重要的。用戶通過(guò)專用工具創(chuàng)建原型并得到支持,尤其能很容易實(shí)現(xiàn)對(duì)技術(shù)通信需求的覆蓋。CANoe工具的測(cè)試功能讓系統(tǒng)開發(fā)人員在項(xiàng)目的每個(gè)階段都能進(jìn)行驗(yàn)證工作,直至最終得到完美的系統(tǒng)。
非常好我支持^.^
(1) 50%
不好我反對(duì)
(1) 50%
相關(guān)閱讀:
- [今日頭條] 西門子PLC——CANopen系統(tǒng)通信解決方案 2022-03-21
( 發(fā)表人:admin )