CANoe 入門 Step by step系列(一)基礎應用
CANoe是Vector公司的針對汽車電子行業的匯流排分析工具,現在我用CANoe7.6版本進行介紹,其他版本功能基本差不多。
硬體我使用的是CAN case XL.
1,CANoe軟體的安裝很簡單,先裝驅動,再裝軟體。安裝完成,插上USB,連線硬體,這樣在控制面板中,Vector Hardware 進行檢視
通過檢視資訊可知,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工具對匯流排網路節點,訊息,訊號,進行定義了。
啟動後,File->Create Database,選擇CANTemplate.dbc,選擇目錄及檔名,進行儲存
右鍵 Network nodes->New ,進行網路節點的定義,這裡只需要填寫Name即可,例如:Node_A
然後新增Node_B,完成後如下圖,這樣在Network nodes目錄下面添加出來兩個節點
節點新增完成後,下一步新增CAN訊息,右鍵Messages->New,這是需要定義名稱,ID,DLC等資訊,如下:
然後在Transmitters頁面,點選Add按鈕,新增Node_A為傳送節點,意思就是說,此訊息是從Node_A節點發送出來的
其實還有一種方法就是,此時暫時不定義傳送節點,然後直接以拖曳的方式拖曳到傳送節點上,功能上是一樣的
有了訊息,訊息裡攜帶的東西自然是訊號咯,那麼我們開始建立一個訊號
右鍵Signals->New,填寫如下資訊
訊號當然要放到訊息中咯,切換到Messages頁面,Add 我們剛剛建立的Message_A,當然和上面一樣,採用拖曳的方式從Signal到Message中建立關聯也是可以的。
上面資訊中Intel模式和Motorola格式的區別如下:
用0和1來表示開關訊號狀態似乎還不是很直觀,我們可以使用on和off來表示就好了,於是View->Value Tables,右鍵空白處->New,鍵入如下資訊:
定義好了之後,還需要跟訊號進行關聯。右鍵需要關聯的訊號->Edit Signal,Value Table 中關聯剛才建立的那個Value Talbe項
這樣一個訊號就完成了,另外還需要加一個類似的訊號,可以點選Signal根目錄,在右邊選擇Signal複製,及貼上,然後雙擊複製好的Signal後,進行一些編輯,然後用上面方法關聯Message即可快速建立第二個訊號了,是不是很方便
繼續新增第三個訊號,Indicator_A,跟上面一樣,但是我這個訊號想放在Message的第二個位元組的位置,怎麼辦?
其實很簡單,有兩種方法:第一種,右鍵已經關聯好的,即在Message目錄下的訊號,Edit mapped signal,在彈出的對話方塊中的Startbit中填8,這樣就這個訊號就跑到該訊息的第二個位元組中了。第二種方法,右鍵該訊息->Edit Message,在Layout頁面中,拖動訊號的色塊進行移動
以上Message_A訊息及訊息下所定義已經定義完成
如法炮製另外一個訊息Message_B,完成後如下圖。
下面建立環境變數,右鍵Environment variables
陸續把其他環境變數加好,Indicator的Access屬性為Write哦,加完如下:
資料庫的定義這款基本上就OK了。儲存後關閉CANdb++ Editor,回到CANoe主程式中。
請在Configuration->Options->Configuration Settings->Channel Usage 設定使用的通訊通道,因為這個只需要1路CAN,其他都設定為0就可以。
右鍵Databases->Add,把剛剛建立好的dbc給載入進來,之後再連線上右鍵->Insert Network Node
結果如下:
右鍵這個ECU模組->Configuration,在Network Node 選擇Node_A,完成,然後新增Node_B
完成後如下圖,這樣dbc與CANoe的關聯就好了。
4,介面設計
網路及相應的關係設定好之後,應該設計介面了,一個良好的介面可以直觀的顯示及控制各種訊號。
介面設計工具有兩種:一種是Panel Designer,新的介面設計工具,另外一種是Panel Editor是老的介面設計工具,無論採用何種工具設計的介面,都可以和CANoe很好的相容,沒有問題。下面我們先用第一種介面設計工具來完成介面的設計
點選工具欄的這個圖示或File->Open Panel Designer,開啟介面編輯器,介面如下:
儲存一下該介面,起名為Panel_A,一個空的介面上可以放置右上邊若干元件。放置好之後,選中介面上的元件的時候,右下側回顯示當前選中的元件的屬性,可以更改相應的大小位置等,但最重要的是Symbol屬性,這裡要說一下,每個介面元件也都需要與CANoe關聯,否則單純的介面是沒有任何意義的,關聯主要是訊號和環境變數,在Symbol屬性的Symbol Filter屬性中可以進行選擇,我們這裡關聯的是環境變數,所以選擇Environment Variable,然後再點選上面的Symbol屬性,然後在彈出的頁面中選擇相應關聯的變數
完成後可以按同樣的方法設計Panel_B,也可以Save As 的方法快速建立同樣的Panel但是與環境變數的關聯和介面的文字需要進行微調。這樣兩個Panel都已完成。也已經建立了與CANoe之間的關聯。
5,CAPL程式設計
所有的前期準備工作和組裝工作都已完成,現在需要編寫程式使整個系統有機的執行起來。回到CANoe的Simulation Setup介面,然後點選Node_A模組的,像鉛筆一樣的圖示,填寫程式名稱,這裡Node_A,然後開啟程式設計介面,完成以下程式。然後完成Node_B程式。小技巧:如果背不出具體的訊息名稱,訊號名稱或環境變數,可以右鍵程式空白處,你會得到意外的驚喜,試試看。
OK大功告成
6,執行
現在點選工具欄,執行程式。注意:這裡表示實際的網路,所有的訊息是傳送到物理的網路上的,如果只是驗證程式,設定成這樣就可以了
完整執行結果如下:
就是這樣,一步一步的,我們完成了第一個完整的CANoe應用工程,雖然這只是入門第一步,但整個CANoe的開發流程基本涵蓋,如果能跑出上面的執行結果,依然能夠給我們很多的驚喜。我們需要這樣的驚喜,因為這是我們繼續前行的動力。