提到CAPL,相信各位一定不陌生,它是由Vector公司開發(fā)的類似于C語言的面向過程編程語言,是CANoe和CANalyzer中可用的編程語言。CAPL中程序塊的執(zhí)行由事件控制,在專用的編譯器中開發(fā)和編譯,這樣可以訪問數(shù)據(jù)庫中的所有對象以及系統(tǒng)變量,作為汽車電子工程師,在工作中會經(jīng)常用到。
CAPL可以在CANoe界面Tools>>CAPL Browser中打開。

圖1CAPL打開方式
CAPL界面由功能區(qū)、程序框架瀏覽樹、輸出窗口、編輯區(qū)、訪問區(qū)五部分組成。

圖2CAPL界面
顧名思義,程序編輯區(qū)就是編寫CAPL腳本的區(qū)域;程序架構(gòu)瀏覽樹起目錄的作用,可以把編輯區(qū)定位到編寫的事件或函數(shù)類型的語句;輸出窗口可以輸出編譯過程中的事件和使用搜索時定位到的結(jié)果;訪問區(qū)能夠訪問到CANoe工程加載的數(shù)據(jù)庫中的信號、創(chuàng)建的系統(tǒng)變量以及CAPL函數(shù)庫中的語句,直接從右側(cè)訪問區(qū)拖拽到中間編輯區(qū)使用(注意:工程創(chuàng)建路徑中不能有中文,否則訪問不到數(shù)據(jù)庫文件)。
功能區(qū)由五部分構(gòu)成,首先是File菜單欄,與大多數(shù)軟件相同,它是文件創(chuàng)建、保存、加載、設(shè)置等功能區(qū)域。

圖3File菜單欄
Home功能區(qū)提供了CAPL編譯常用功能,包括代碼編譯、查找、替換、屏蔽、取消屏蔽等功能。

圖4Home功能區(qū)
Filter功能區(qū)的作用是管理CAPL的函數(shù)庫,可以在函數(shù)訪問區(qū)中屏蔽掉不需要的函數(shù)。

圖5Filter功能區(qū)
Debug功能區(qū)是調(diào)試的區(qū)域,提供了一些基本的調(diào)試操作,一般情況下不通過debug模式來調(diào)試腳本?;旧暇幾g一次,存在錯誤可以通過Output輸出窗口獲得錯誤類型并進行更改。如果腳本編譯成功之后,仍然不能滿足測試步驟的輸出,一般會使用Write窗口進行調(diào)試。

圖6Debug功能區(qū)
Layout功能區(qū)主要是針對CAPL用戶的頁面展示。例如進行水平分區(qū)、垂直分區(qū)等操作方便用戶進行腳本編寫。

圖7Layout功能區(qū)
CAPL應(yīng)用場景:
- 節(jié)點仿真
關(guān)聯(lián)Simulation Setup中的ECU節(jié)點,實現(xiàn)ECU節(jié)點仿真和整車網(wǎng)絡(luò)仿真。

圖8SimulationSetup窗口
- 測試功能
關(guān)聯(lián)Simulation Setup中的Test Module模塊或是Test菜單中的Test Setup,結(jié)合TSL(Test Service Library,測試服務(wù)庫)進行測試功能開發(fā)。

圖9TestSetup窗口
- 分析功能
關(guān)聯(lián)Measurement Setup窗口功能模塊中的Program Node,實現(xiàn)總線過濾、分析功能。

圖10MeasurementSetup窗口
CAPL腳本結(jié)構(gòu):
一個完整的CAPL腳本由三部分組成:變量、各種事件和自定義函數(shù)。

圖11CAPL的三部分
CAPL的事件類型包含三種:總線事件、屬性事件、時間事件。CAPL常用的事件類型如下圖所示。

圖12MeasurementSetup窗口
CAPL常用函數(shù):
下面以CANoe中Easy工程的light.can腳本為例介紹CAPL中的常用函數(shù),該腳本與Panel聯(lián)用實現(xiàn)轉(zhuǎn)向燈仿真。

圖13聲明全局變量
上圖是CAPL中的全局變量聲明,其中 ‘msTimer’為聲明以ms為單位的計時器;‘const int’為聲明int類型的常值變量,該變量的值無法改變;‘int’為聲明int類型的變量,該類型變量有符號,長度為2字節(jié)。

圖14系統(tǒng)事件
‘onstart’是系統(tǒng)事件,測量開始執(zhí)行會觸發(fā)該事件,也就是點擊Start按鈕觸發(fā)。

圖15CAN消息事件
‘onmessage’是CAN消息事件,接收到指定消息時執(zhí)行?!?span style="color:rgb(0,112,192);">onmessageLightState’是對名字為LightState的報文反應(yīng),除直接使用字符串外,還可以使用報文ID指定觸發(fā)報文?!?span style="color:rgb(0,112,192);">onmessage123’是對ID為123(dec)的報文反應(yīng);‘on message0x123’ 是對ID為123(hex)的報文反應(yīng);‘on message*’是對所有的報文反應(yīng);‘on message100-200’是對ID為100-200間的報文反應(yīng)。

圖15系統(tǒng)變量事件
‘onsysvarsysvar’是系統(tǒng)變量事件,指定的系統(tǒng)變量值改變時執(zhí)行。與之相對應(yīng)另一個系統(tǒng)變量事件是‘onsysvar_updatesysvar’,指定的系統(tǒng)變量值更新時執(zhí)行。
‘setTimer(msTimert,longduration)’是設(shè)置定時器函數(shù),他有兩個輸入?yún)?shù),第一個為聲明的定時器變量,第二個是設(shè)定的時間?!甤ancelTimer(msTimert)’是取消定時器函數(shù),入?yún)槎〞r器變量,該函數(shù)的作用為取消設(shè)定的定時器。

圖16時間事件
‘ontimer’為時間事件,定時時間超過時執(zhí)行,它與設(shè)置定時器函數(shù)聯(lián)用。定時器通常應(yīng)用在實現(xiàn)某個任務(wù)循環(huán),在時間事件中寫入一個設(shè)置定時器函數(shù)實現(xiàn)循環(huán)。

‘onkey’為鍵盤事件,被指定的鍵按下時執(zhí)行。該事件常用于腳本調(diào)試。
此外,‘write()’函數(shù)在調(diào)試腳本中也常使用,該函數(shù)基于C語言中的‘printf()’函數(shù),可以將文本消息輸出在write窗口中。
注:圖片來自Vector。
總結(jié):
北匯信息作為Vector中國的合作伙伴,始終專注于汽車電子領(lǐng)域的新技術(shù)和新產(chǎn)品,為整車廠和零部件企業(yè)提供完整的研發(fā)、測試解決方案,為工程師在汽車領(lǐng)域提供“趁手裝備“!
-
CANoe
+關(guān)注
關(guān)注
4文章
73瀏覽量
9120
發(fā)布評論請先 登錄
單片機C語言編程寶典大全,初學(xué)必備【強推下載!】
gitee 支持的編程語言有哪些
Triton編譯器支持的編程語言
如何快速入門HAL庫編程 HAL庫與裸機編程的比較
編程語言的誤區(qū)與常見問題
MCU編程語言和開發(fā)環(huán)境介紹
TCSH shell 編程入門
C語言與其他編程語言的比較
FPGA編程語言的入門教程
plc編程語言編程相關(guān)技巧有哪些
TMS320LF240x DSP的C語言和匯編代碼快速入門

評論