1. 程式人生 > >CANoe 入門 Step by step系列(一)基礎應用

CANoe 入門 Step by step系列(一)基礎應用

CANoe是Vector公司的針對汽車電子行業的匯流排分析工具,現在我用CANoe7.6版本進行介紹,其他版本功能基本差不多。

硬體我使用的是CAN case XL.

1,CANoe軟體的安裝很簡單,先裝驅動,再裝軟體。安裝完成,插上USB,連線硬體,這樣在控制面板中,Vector Hardware 進行檢視

image

通過檢視資訊可知,CANcaseXL中的兩個piggy,一個是251(高速CAN),一個是7269(LIN),另外常用的還有1054(低速CAN,或稱容錯CAN),因為CANcaseXL中只能支援兩路通訊,這樣piggy可以自由組合

2,硬體連線正常,開啟CANoe軟體

File->New Configuration 可以選擇新建工程的模版,我們這裡選擇CAN_500kBaud.tcn,這樣新建了波特率為500K CAN工程,可以File->Save Configuration,進行儲存

3,接下來就要使用CAN db++ Editor工具對匯流排網路節點,訊息,訊號,進行定義了。

點選工具欄的這個圖示  tmp5B ,或 開始選單中找這個工具啟動

啟動後,File->Create Database,選擇CANTemplate.dbc,選擇目錄及檔名,進行儲存

tmp5F

右鍵 Network nodes->New ,進行網路節點的定義,這裡只需要填寫Name即可,例如:Node_A

然後新增Node_B,完成後如下圖,這樣在Network nodes目錄下面添加出來兩個節點

tmp66

節點新增完成後,下一步新增CAN訊息,右鍵Messages->New,這是需要定義名稱,ID,DLC等資訊,如下:

tmp6F

然後在Transmitters頁面,點選Add按鈕,新增Node_A為傳送節點,意思就是說,此訊息是從Node_A節點發送出來的

tmp6A

其實還有一種方法就是,此時暫時不定義傳送節點,然後直接以拖曳的方式拖曳到傳送節點上,功能上是一樣的

有了訊息,訊息裡攜帶的東西自然是訊號咯,那麼我們開始建立一個訊號

右鍵Signals->New,填寫如下資訊

tmp8C

訊號當然要放到訊息中咯,切換到Messages頁面,Add 我們剛剛建立的Message_A,當然和上面一樣,採用拖曳的方式從Signal到Message中建立關聯也是可以的。

tmp88

上面資訊中Intel模式和Motorola格式的區別如下:

tmp8A

用0和1來表示開關訊號狀態似乎還不是很直觀,我們可以使用on和off來表示就好了,於是View->Value Tables,右鍵空白處->New,鍵入如下資訊:

tmp8E    tmp8F

定義好了之後,還需要跟訊號進行關聯。右鍵需要關聯的訊號->Edit Signal,Value Table 中關聯剛才建立的那個Value Talbe項

tmp94

這樣一個訊號就完成了,另外還需要加一個類似的訊號,可以點選Signal根目錄,在右邊選擇Signal複製,及貼上,然後雙擊複製好的Signal後,進行一些編輯,然後用上面方法關聯Message即可快速建立第二個訊號了,是不是很方便

繼續新增第三個訊號,Indicator_A,跟上面一樣,但是我這個訊號想放在Message的第二個位元組的位置,怎麼辦?

其實很簡單,有兩種方法:第一種,右鍵已經關聯好的,即在Message目錄下的訊號,Edit mapped signal,在彈出的對話方塊中的Startbit中填8,這樣就這個訊號就跑到該訊息的第二個位元組中了。第二種方法,右鍵該訊息->Edit Message,在Layout頁面中,拖動訊號的色塊進行移動

tmp99

tmp9A

tmp9C

以上Message_A訊息及訊息下所定義已經定義完成

tmp9E

如法炮製另外一個訊息Message_B,完成後如下圖。

tmpA1

下面建立環境變數,右鍵Environment variables

tmpAF   tmpB7

陸續把其他環境變數加好,Indicator的Access屬性為Write哦,加完如下:

tmpB8

資料庫的定義這款基本上就OK了。儲存後關閉CANdb++ Editor,回到CANoe主程式中。

請在Configuration->Options->Configuration Settings->Channel Usage 設定使用的通訊通道,因為這個只需要1路CAN,其他都設定為0就可以。

點這個選項頁面tmpB9可出現Simulate Setup 介面

tmpBB

右鍵Databases->Add,把剛剛建立好的dbc給載入進來,之後再連線上右鍵->Insert Network Node

image

結果如下:

tmpBC

右鍵這個ECU模組->Configuration,在Network Node 選擇Node_A,完成,然後新增Node_B

tmpBD

完成後如下圖,這樣dbc與CANoe的關聯就好了。

tmpBE

4,介面設計

網路及相應的關係設定好之後,應該設計介面了,一個良好的介面可以直觀的顯示及控制各種訊號。

介面設計工具有兩種:一種是Panel Designer,新的介面設計工具,另外一種是Panel Editor是老的介面設計工具,無論採用何種工具設計的介面,都可以和CANoe很好的相容,沒有問題。下面我們先用第一種介面設計工具來完成介面的設計

點選工具欄的這個圖示tmpE或File->Open Panel Designer,開啟介面編輯器,介面如下:

tmp11

儲存一下該介面,起名為Panel_A,一個空的介面上可以放置右上邊若干元件。放置好之後,選中介面上的元件的時候,右下側回顯示當前選中的元件的屬性,可以更改相應的大小位置等,但最重要的是Symbol屬性,這裡要說一下,每個介面元件也都需要與CANoe關聯,否則單純的介面是沒有任何意義的,關聯主要是訊號和環境變數,在Symbol屬性的Symbol Filter屬性中可以進行選擇,我們這裡關聯的是環境變數,所以選擇Environment Variable,然後再點選上面的Symbol屬性,然後在彈出的頁面中選擇相應關聯的變數

tmp1F

完成後可以按同樣的方法設計Panel_B,也可以Save As 的方法快速建立同樣的Panel但是與環境變數的關聯和介面的文字需要進行微調。這樣兩個Panel都已完成。也已經建立了與CANoe之間的關聯。

5,CAPL程式設計

所有的前期準備工作和組裝工作都已完成,現在需要編寫程式使整個系統有機的執行起來。回到CANoe的Simulation Setup介面,然後點選Node_A模組的,像鉛筆一樣的圖示tmp22,填寫程式名稱,這裡Node_A,然後開啟程式設計介面,完成以下程式。然後完成Node_B程式。小技巧:如果背不出具體的訊息名稱,訊號名稱或環境變數,可以右鍵程式空白處,你會得到意外的驚喜,試試看。

tmp3D

tmp3F

OK大功告成

6,執行

現在點選工具欄tmp40,執行程式。注意:tmp41這裡表示實際的網路,所有的訊息是傳送到物理的網路上的,如果只是驗證程式,設定成這樣就可以了tmp43

完整執行結果如下:

tmp44

就是這樣,一步一步的,我們完成了第一個完整的CANoe應用工程,雖然這只是入門第一步,但整個CANoe的開發流程基本涵蓋,如果能跑出上面的執行結果,依然能夠給我們很多的驚喜。我們需要這樣的驚喜,因為這是我們繼續前行的動力。