1、CANoe工程的新建
打開CANoe軟件,在工具欄的”File”中點擊”New”,雙擊選擇創(chuàng)建的模板 ,再保存創(chuàng)建的cfg工程文件。如下:2、Channel Mapping
每個CAN網絡都有所屬的Channel,稱之為Application Channel,如果在Real BUS的環(huán)境下要映射到相應的硬件接口單元及相應的Transceiver。下圖為網絡上的各個網絡(Comfort和Powertrain),及其網絡中的Can控制器節(jié)點和DBC文件。
通過Hardware-Channel Mapping實現邏輯上通道和物理通道的映射,當你發(fā)現trace上沒有報文時,第一檢查一下你通過DB9的接插件是否插在正確的硬件通道上了。
3、CAN DBC中報文及信號的屬性
CAN通信中物理層中一幀由以下幾個部分組成:- 報文ID
- 報文數據
- 報文長度
Remote frame 將 CAN 報文指定為遠程幀。
Start bit 指定數據的開始位。開始位是從報文數據的開頭計數的最低有效位。開始位必須是 0 到 63 之間的整數。信號的起始位,一般來講,主機廠在定義整車CAN總線通信矩陣時,其每一個信號都從其最低位開始填寫,
Length (bits) 指定信號在報文中占用的位數。長度必須是 1 到 64 之間的整數。Data type 指定信號如何解釋分配的位中的數據。從下列各項中選擇:
-
signed(默認值)
-
unsigned
-
single
-
double
4、信號在報文中的Layout問題
CAN 報文中的比特流有兩方面要注意,第一是字節(jié)序,第二是bit numbering。字節(jié)序也叫大小端,決定如何去解析一系列字節(jié)來組裝成有意義的數據。即小端支持從低字節(jié)向高字節(jié)去排布信號。即大端支持高字節(jié)向低字節(jié)去排布信號。
注意:字節(jié)內的位的重要性(Significant)的順序是一定的,不隨兩種格式的變化而變化。
bit numbering,即報文中支持兩種方式的計數方式:
- 從右向左
這種情況的報文一般是Byte0_bit7的位最先被發(fā)送,然后是bit6,,,最后是Byte7_bit56位被發(fā)送。這種方式在汽車工業(yè)中是最通用的方式,為各大主機廠采用,在Vector的DBC中也按照這種排布方式去布局信號的index。
-從左向右
這種情況的報文一般是Byte0_bit0的位最先被發(fā)送,然后是bit1,,,最后是Byte7_bit63位被發(fā)送。相應地和上述兩種bit numbering對應的就是兩種message的Layout,
1)字節(jié)中的位序為從右到左
2)字節(jié)中的位序為從左到右
通常在DBC中選擇Byte order時,可以選擇以下任一選項:LE:其中字節(jié)順序為 little-endian 格式 (Intel®)。在這種格式中,從開始位(最低有效位)到最高有效位(具有最高位索引)進行計數。例如,如果以 little-endian 格式打包數據的一個字節(jié)0x12(默認其他信號為0),并且開始位為 29,則數據位表類似于下圖(從最低有效位到最高地址計數的 Little-Endian 字節(jié)順序)所示。
則我們接收到的8字節(jié)的Can報文消息為:00 00 20 01 00 00 00 00,字節(jié)2和字節(jié)3的layou如下表所示:
Bytes | 2 | 3 |
---|---|---|
Hex | 0x20 | 0x01 |
Bits | 0100 0010 | 0000 0001 |
BE:其中字節(jié)順序為 big-endian 格式 (Motorola®)。在這種格式中,從開始位(最低有效位)到最高有效位進行計數。例如,如果以 big-endian 格式打包數據的一個字節(jié),并且開始位為 29,則數據位表類似于下圖(從最低有效位到最低地址計數的 Big-Endian 字節(jié)順序)所示。
則我們接收到的8字節(jié)的Can報文消息為:00 01 20 00 00 00 00 00,字節(jié)1和字節(jié)2的layou如下表所示:
Bytes | 1 | 2 |
---|---|---|
Hex | 0x01 | 0x20 |
Bits | 0000 0001 | 0010 0000 |