CAN signal Layout怎么那么繞?
1、CANoe工程的新建
打開CANoe軟件,在工具欄的”File”中點擊”New”,雙擊選擇創(chuàng)建的模板 ,再保存創(chuàng)建的cfg工程文件。如下:
2、Channel Mapping
每個CAN網(wǎng)絡(luò)都有所屬的Channel,稱之為Application Channel,如果在Real BUS的環(huán)境下要映射到相應(yīng)的硬件接口單元及相應(yīng)的Transceiver。下圖為網(wǎng)絡(luò)上的各個網(wǎng)絡(luò)(Comfort和Powertrain),及其網(wǎng)絡(luò)中的Can控制器節(jié)點和DBC文件。
通過Hardware-Channel Mapping實現(xiàn)邏輯上通道和物理通道的映射,當(dāng)你發(fā)現(xiàn)trace上沒有報文時,第一檢查一下你通過DB9的接插件是否插在正確的硬件通道上了。
3、CAN DBC中報文及信號的屬性
CAN通信中物理層中一幀由以下幾個部分組成:
-
報文ID -
報文數(shù)據(jù) -
報文長度
Identifier type 指定 CAN 報文標(biāo)識符是 Standard 還是 Extended 類型。默認(rèn)值為 Standard。標(biāo)準(zhǔn)標(biāo)識符是 11 位標(biāo)識符,擴(kuò)展標(biāo)識符是 29 位標(biāo)識符。
Remote frame 將 CAN 報文指定為遠(yuǎn)程幀。
Start bit 指定數(shù)據(jù)的開始位。開始位是從報文數(shù)據(jù)的開頭計數(shù)的最低有效位。開始位必須是 0 到 63 之間的整數(shù)。信號的起始位,一般來講,主機(jī)廠在定義整車CAN總線通信矩陣時,其每一個信號都從其最低位開始填寫,
Length (bits) 指定信號在報文中占用的位數(shù)。長度必須是 1 到 64 之間的整數(shù)。Data type 指定信號如何解釋分配的位中的數(shù)據(jù)。從下列各項中選擇:
-
signed(默認(rèn)值)
-
unsigned
-
single
-
double
4、信號在報文中的Layout問題
CAN 報文中的比特流有兩方面要注意,第一是字節(jié)序,第二是bit numbering。字節(jié)序也叫大小端,決定如何去解析一系列字節(jié)來組裝成有意義的數(shù)據(jù)。即小端支持從低字節(jié)向高字節(jié)去排布信號。
即大端支持高字節(jié)向低字節(jié)去排布信號。
注意:字節(jié)內(nèi)的位的重要性(Significant)的順序是一定的,不隨兩種格式的變化而變化。
bit numbering,即報文中支持兩種方式的計數(shù)方式:
-
從右向左
這種情況的報文一般是Byte0_bit7的位最先被發(fā)送,然后是bit6,,,最后是Byte7_bit56位被發(fā)送。這種方式在汽車工業(yè)中是最通用的方式,為各大主機(jī)廠采用,在Vector的DBC中也按照這種排布方式去布局信號的index。
-從左向右
這種情況的報文一般是Byte0_bit0的位最先被發(fā)送,然后是bit1,,,最后是Byte7_bit63位被發(fā)送。相應(yīng)地和上述兩種bit numbering對應(yīng)的就是兩種message的Layout,
1)字節(jié)中的位序為從右到左2)字節(jié)中的位序為從左到右
通常在DBC中選擇Byte order時,可以選擇以下任一選項:LE:其中字節(jié)順序為 little-endian 格式 (Intel?)。在這種格式中,從開始位(最低有效位)到最高有效位(具有最高位索引)進(jìn)行計數(shù)。例如,如果以 little-endian 格式打包數(shù)據(jù)的一個字節(jié)0x12(默認(rèn)其他信號為0),并且開始位為 29,則數(shù)據(jù)位表類似于下圖(從最低有效位到最高地址計數(shù)的 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?)。在這種格式中,從開始位(最低有效位)到最高有效位進(jìn)行計數(shù)。例如,如果以 big-endian 格式打包數(shù)據(jù)的一個字節(jié),并且開始位為 29,則數(shù)據(jù)位表類似于下圖(從最低有效位到最低地址計數(shù)的 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 |
總結(jié):Intel格式編碼:信號的低位(lsb)將被放在低字節(jié)(LSB)的低位。信號的起始位就是低字節(jié)的低位,從低字節(jié)向高字節(jié)去排布信號。Motorola格式編碼 :信號的低位(lsb)將被放在高字節(jié)(MSB)的低位。這樣,信號的起始位就是高字節(jié)的低位,從高字節(jié)向低字節(jié)去排布信號。
AUTOSAR ASILD級別安全軟件模塊的安全機(jī)制介紹
使用AURIX TOM模塊生成交流電機(jī)的PWM驅(qū)動
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!