如何理解CAN通信矩陣

如何理解CAN通信矩陣的圖1


如何理解CAN通信矩陣的圖2

如何理解CAN通信矩陣的圖3
作者:心機之花
來源:  汽車ECU開發(fā)

什么是CAN通信矩陣

CAN通信矩陣(CAN Communication Matrix)通常由整車廠完成定義,車輛網(wǎng)絡中的各個節(jié)點需要遵循該通訊矩陣才能完成信息的交互和共享。

我們知道CAN總線是一種通信形式,ISO 11898協(xié)議僅僅規(guī)定了數(shù)據(jù)鏈路層和物理層,也就是說傳什么ID、傳什么數(shù)據(jù)是沒有定義的,這留給了大家很多遐想空間。對于乘用車來說,滿足UDS和尾氣排放協(xié)議之后,還剩余了絕大部分的ID段。這些ID段由主機廠自主來進行分配,分配好之后會形成一個.xls格式的表格。有了CAN通信矩陣,開發(fā)人員就知道他設計的零部件應該接收什么ID的數(shù)據(jù),需要發(fā)出什么ID的數(shù)據(jù)。


如何閱讀CAN通信矩陣

下面我們詳細介紹下怎么閱讀一份通信矩陣。

如何理解CAN通信矩陣的圖4


信號名稱:一般是以發(fā)送節(jié)點的名字開頭,“_”后面是具體指代的內容。如BMS_GeneralStatus。

信號長度:該信號的長度,單位是bit,位。

精度/偏移量:描述信號值如何轉變成信號物理值。比如精度是2,偏移量是5,那么信號的真實物理值 = 信號值 * 2 + 5。

物理值范圍:經過物理值轉換后的最大最小值。


如何理解CAN通信矩陣的圖5

其他的一些矩陣中還會有這樣的表述。

起始字節(jié):起始位所在的字節(jié)序號。Byte0-Byte7。

起始位:信號LSB(least significant bit)所在的位置。通常這個位置是按照下面這個圖來說明的。


如何理解CAN通信矩陣的圖6

CAN矩陣的核心圖


信號類型:Boolean 還是 Unsigned。

以上是CAN數(shù)據(jù)矩陣的基本內容。可以看出來,如何通過起始字節(jié)、起始位、數(shù)據(jù)長度,將數(shù)據(jù)矩陣中的內容對應到這64個小格子中是理解CAN數(shù)據(jù)矩陣的關鍵。


如何填格子

我們可以用Vector的CAN db++打開ZLG送的j1939.dbc文件。我們在Signals和Layout面板中看到,對于EEC1這個Message來說,它有8個Signal,填充時是從右向左填充的,比方說EngStarterMode這個信號,初始是第48位,長度是4,它的LSB自然就應該在Byte6的第48個位,之后向左填充,MSB是第51位。大家自行填充一下。


如何理解CAN通信矩陣的圖7

j1939.dbc

如何理解CAN通信矩陣的圖8

j1939.dbc矩陣中的EEC1信號


下面說下EngSpeed這個奇葩信號,它跨行了,即跨字節(jié)了,這就產生了先后的問題。

注意我們填格子的方式分為Intel和Motorola兩種。如果你的Signals都沒有跨字節(jié)的問題,那么Intel和Motorola格式出來的效果是一樣的。當然這不可能,你無法確保不跨字節(jié)。

Intel格式也即小端,MSB存放在高字節(jié)單元,反映到矩陣圖中就是以起始位為原點,自上而下填充。


如何理解CAN通信矩陣的圖9

Intel格式,MSB在LSB下面


Motorola格式也即大端,MSB存放在低字節(jié)單元,反映到矩陣圖中就是以起始位為原點,自下而上填充。


如何理解CAN通信矩陣的圖10

Motorola格式,MSB在LSB上面

如何理解CAN通信矩陣的圖11

New_Signal_5自下而上填充,Motorola


具體采用哪種格式,聽主機廠的,這個無絕對,兩種格式都需要理解。但從經驗上來看以Motorola格式為主。我們回看下EngSpeed這個信號,起始位是24bit,先填充Byte3,之后向下填充Byte4,MSB在39bit上。因此是Intel格式。


如何理解CAN通信矩陣的圖12

EEC1中的EngSpeed是Intel格式,Byte3是低有效,Byte4是高有效


名詞解釋:什么是信號的高位?什么是信號的低位?什么是信號的起始位?

信號的高位(most significant bit),即最能表達信號特性的因子。比如轉速2000rpm,0x7D0,即011111010000b。最左側的位,數(shù)量級最大,牽一發(fā)動全身,即高位。

信號的低位(least significant bit),即最不能表達信號特性的因子。剛才轉速中,最右側的0,即低位。就好像老板說給你每個月漲薪5元,你毫不在乎。

信號的起始位其實就是信號的最低位。主機廠在定義整車CAN總線通信矩陣時,每一個信號都從其最低位開始填寫。


報文封裝原則

1.同一個報文的所有信號須由同一個節(jié)點提供。

2.同一個報文所有信號的發(fā)送時機盡可能相同。

3.小于或等于8位的信號,不應跨越字節(jié)邊界。


如何理解CAN通信矩陣的圖13

不大于8位,不應跨越字節(jié)邊界

4.小于或等于16位的信號,不應跨越字邊界。

5.信號從每個字節(jié)的起始位開始排列。

如何理解CAN通信矩陣的圖14

要從每個字節(jié)的起始位開始排列

6.信號排列應當緊湊。

如何理解CAN通信矩陣的圖15


車載電源通訊錄


如何理解CAN通信矩陣的圖16

如何理解CAN通信矩陣的圖17

免責聲明】文章為作者獨立觀點,不代表旺材汽車電子立場。如因作品內容、版權等存在問題,請于本文刊發(fā)30日內聯(lián)系旺材汽車電子進行刪除或洽談版權使用事宜。

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP