CANoe簡易教程3
CANoe簡易教程3 來源:http://lzzrhvn.cn/
配置仿真設(shè)置
打開View下的Simulation Setup,在窗口右側(cè)的Databases上點(diǎn)擊右鍵,Add...
選擇database\candb.dbc
。如果看不到,在空白處右鍵,勾選System View。作為驗(yàn)證,打開View > Symbol Explorer
,在Symbol Explorer窗口中可以看到數(shù)據(jù)庫中的信號、消息、環(huán)境變量等等。
在紅線上點(diǎn)擊右鍵Insert Network Node
,于是出現(xiàn)了一個ECU。在其上右鍵 Configuration...,將其Title更改為Meter,Network Node選擇candb::METER
。
同樣的步驟我們再新建一個Node,名字為ECM,Network Node為candb::ECM
。
這樣,我們在仿真設(shè)置窗口的工作就已經(jīng)完成了。不過,兩個節(jié)點(diǎn)都還沒有腦子,也就是節(jié)點(diǎn)說明(Node Specification),所以他們現(xiàn)在什么都不會做。
為ECU添加節(jié)點(diǎn)說明
所謂的節(jié)點(diǎn)說明,起始就是一段程序,可以使用CAPL或者.NET編寫,這里我們使用CAPL。
點(diǎn)擊ECM ECU上的鉛筆按鈕,它表示“編輯或新建這個ECU的節(jié)點(diǎn)說明文件”。現(xiàn)在還沒有,所以CANoe為我們新建一個。將其保存在node文件夾中,命名為ecm.can
。接下來程序打開了Vector CAPL Browser工具。
CAPL Browser是一個代碼編輯器,我們將代碼更改為下面的樣子:
includes { // 在這里使用 #include ,可以include的文件為.can和.cin // 一般不用include任何東西}variables { // 在這塊中聲明和初始化全局變量 message EngineState msg; // message 定義數(shù)據(jù)庫中的消息,為其指定程序中的名字 msTimer myTimer; // msTimer 是"毫秒定時器" float speed = 0;}on start { // CANoe仿真開始時,會運(yùn)行一次這段程序 write("Hello, world!"); // 輸出到write窗口 setTimer(myTimer, 100); // 定時器將在100ms后觸發(fā)}on timer myTimer { // 定時器觸發(fā)時,運(yùn)行一次這段程序 speed += 0.1; msg.Speed.phys = speed; output(msg); setTimer(this, 100); // 定時器將在100毫秒后再次觸發(fā)}
參考注釋看看這段程序,或者先不管它。
使用Compiler > Compile
,或者工具欄中的Compile
,或者快捷鍵F9
來編譯。如果一切順利,就會在Output看到Successfully compiled
字樣。保存后關(guān)閉CAPL Browser。
RUN!
添加了代碼之后,CANoe可以開始工作了。在工具欄上選擇Simulated bus
,然后使用Start > Start
開始CANoe仿真。
在Measurement Setup
窗口,雙擊Graphics打開Graphics窗口。右鍵Add Signals...
,選擇EngineState下的Speed。隨著時間的流逝,我們就能看到速度的變化了。不過,既然是仿真,我們想要自己控制一下發(fā)動機(jī)轉(zhuǎn)速數(shù)據(jù)。這時就得用到Panel了。
Panel的使用
打開Tools > Panel Designer
,窗口右側(cè)上方有我們可以使用的控件。找到Track Bar
,拖動到中間。在右側(cè)下方更改其屬性:
Tick Frequency: 0.1 Large Change: 0.5 Small Change: 0.1
然后點(diǎn)擊Attach Environment Variable
鏈接,選擇env_speed
,這樣控件的值就和環(huán)境變量的值綁定在了一起。沒有別的需要做的,以ecm.xvp
為名將這個面板保存在panel
文件夾中,關(guān)閉Panel Designer回到CANoe。
接下來點(diǎn)擊ECM ECU的鉛筆,將程序修改成這樣:
includes {}variables { message EngineState msg; msTimer myTimer;}on start { write("Hello, world!"); setTimer(myTimer, 100);}on timer myTimer { msg.Speed.phys = @env_speed; // 注意,這次EngineState中Speed的值等于環(huán)境變量env_speed的值 output(msg); setTimer(this, 100);}
再次開始CANoe仿真,使用View > ecm打開我們剛剛設(shè)計的面板。拖動Track Bar,這時Graphics中Speed曲線應(yīng)該隨著你的控制變化了。簡單來說,我們使用面板來控制環(huán)境變量,節(jié)點(diǎn)程序從讀取環(huán)境變量,將其寫入消息中發(fā)送出去。
教程第三部分到此,我們已經(jīng)運(yùn)行起來了簡單的CANoe仿真。接下來就應(yīng)該自學(xué)CAPL語法了,官方有一本“Programming With CAPL”值得一看,并且在網(wǎng)上很容易搜索到。
相關(guān)資訊
- 樓宇建筑照明燈具種類及特性
- 消防應(yīng)急照明和疏散指示系統(tǒng)IEC的定義及組成
- 關(guān)于備用照明與安全照明規(guī)定總匯及標(biāo)準(zhǔn)要求
- WL-LON-DRL0610照明繼電器模塊WL-LON-WG02網(wǎng)關(guān)
- BMW照明穩(wěn)壓調(diào)控裝置技術(shù)說明 BWM/TE-30
- ATC9000M-II多回路天文控制器
最新產(chǎn)品
智能照明監(jiān)控管理系統(tǒng) 智慧路燈監(jiān)控終端
智能路燈控制器 GPRS經(jīng)緯度天文鐘
智能路燈監(jiān)控終端 電纜防盜監(jiān)測 電流電壓讀取
ZigBee 無線智能路燈解決方案 無線單燈控制器
同類文章排行
- 巨川電氣--智能照明控制系統(tǒng)場景應(yīng)用
- 巨川電氣智能照明開關(guān)模塊安裝與接線圖
- 智能照明控制器的接線圖
- 巨川電氣城市道路照明自控管理系統(tǒng)效益分析
- 智能照明模塊配電箱安裝接線圖圖
- 巨川電氣-KNX總線智能照明控制系統(tǒng)技術(shù)要求
- 巨川電氣--智能照明疏散系統(tǒng)型號選型
- 巨川電氣教你智能照明控制系統(tǒng)如何接線圖
- 巨川電氣-CAN總線與RS485總線系統(tǒng)通訊性能比較
- 消防應(yīng)急照明和疏散指示系統(tǒng)解決方案