ker矩阵是什么意思_如何理解CAN通信矩阵
什么是CAN通信矩陣
CAN通信矩陣(CAN Communication Matrix)通常由整車(chē)廠(chǎng)完成定義,車(chē)輛網(wǎng)絡(luò)中的各個(gè)節(jié)點(diǎn)需要遵循該通訊矩陣才能完成信息的交互和共享。
我們知道CAN總線(xiàn)是一種通信形式,ISO 11898協(xié)議僅僅規(guī)定了數(shù)據(jù)鏈路層和物理層,也就是說(shuō)傳什么ID、傳什么數(shù)據(jù)是沒(méi)有定義的,這留給了大家很多遐想空間。對(duì)于乘用車(chē)來(lái)說(shuō),滿(mǎn)足UDS和尾氣排放協(xié)議之后,還剩余了絕大部分的ID段。這些ID段由主機(jī)廠(chǎng)自主來(lái)進(jìn)行分配,分配好之后會(huì)形成一個(gè).xls格式的表格。有了CAN通信矩陣,開(kāi)發(fā)人員就知道他設(shè)計(jì)的零部件應(yīng)該接收什么ID的數(shù)據(jù),需要發(fā)出什么ID的數(shù)據(jù)。
如何閱讀CAN通信矩陣
下面我們?cè)敿?xì)介紹下怎么閱讀一份通信矩陣。
信號(hào)名稱(chēng):一般是以發(fā)送節(jié)點(diǎn)的名字開(kāi)頭,“_”后面是具體指代的內(nèi)容。如BMS_GeneralStatus。
信號(hào)長(zhǎng)度:該信號(hào)的長(zhǎng)度,單位是bit,位。
精度/偏移量:描述信號(hào)值如何轉(zhuǎn)變成信號(hào)物理值。比如精度是2,偏移量是5,那么信號(hào)的真實(shí)物理值 = 信號(hào)值 * 2 + 5。
物理值范圍:經(jīng)過(guò)物理值轉(zhuǎn)換后的最大最小值。
其他的一些矩陣中還會(huì)有這樣的表述。
起始字節(jié):起始位所在的字節(jié)序號(hào)。Byte0-Byte7。
起始位:信號(hào)LSB(least significant bit)所在的位置。通常這個(gè)位置是按照下面這個(gè)圖來(lái)說(shuō)明的。
CAN矩陣的核心圖信號(hào)類(lèi)型:Boolean 還是 Unsigned。
以上是CAN數(shù)據(jù)矩陣的基本內(nèi)容??梢钥闯鰜?lái),如何通過(guò)起始字節(jié)、起始位、數(shù)據(jù)長(zhǎng)度,將數(shù)據(jù)矩陣中的內(nèi)容對(duì)應(yīng)到這64個(gè)小格子中是理解CAN數(shù)據(jù)矩陣的關(guān)鍵。
如何填格子
我們可以用Vector的CAN db++打開(kāi)ZLG送的j1939.dbc文件。我們?cè)赟ignals和Layout面板中看到,對(duì)于EEC1這個(gè)Message來(lái)說(shuō),它有8個(gè)Signal,填充時(shí)是從右向左填充的,比方說(shuō)EngStarterMode這個(gè)信號(hào),初始是第48位,長(zhǎng)度是4,它的LSB自然就應(yīng)該在Byte6的第48個(gè)位,之后向左填充,MSB是第51位。大家自行填充一下。
j1939.dbcj1939.dbc矩陣中的EEC1信號(hào)下面說(shuō)下EngSpeed這個(gè)奇葩信號(hào),它跨行了,即跨字節(jié)了,這就產(chǎn)生了先后的問(wèn)題。
注意我們填格子的方式分為Intel和Motorola兩種。如果你的Signals都沒(méi)有跨字節(jié)的問(wèn)題,那么Intel和Motorola格式出來(lái)的效果是一樣的。當(dāng)然這不可能,你無(wú)法確保不跨字節(jié)。
Intel格式也即小端,MSB存放在高字節(jié)單元,反映到矩陣圖中就是以起始位為原點(diǎn),自上而下填充。
Intel格式,MSB在LSB下面Motorola格式也即大端,MSB存放在低字節(jié)單元,反映到矩陣圖中就是以起始位為原點(diǎn),自下而上填充。
Motorola格式,MSB在LSB上面New_Signal_5自下而上填充,Motorola具體采用哪種格式,聽(tīng)主機(jī)廠(chǎng)的,這個(gè)無(wú)絕對(duì),兩種格式都需要理解。但從經(jīng)驗(yàn)上來(lái)看以Motorola格式為主。我們回看下EngSpeed這個(gè)信號(hào),起始位是24bit,先填充Byte3,之后向下填充Byte4,MSB在39bit上。因此是Intel格式。
EEC1中的EngSpeed是Intel格式,Byte3是低有效,Byte4是高有效名詞解釋:什么是信號(hào)的高位?什么是信號(hào)的低位?什么是信號(hào)的起始位?
信號(hào)的高位(most significant bit),即最能表達(dá)信號(hào)特性的因子。比如轉(zhuǎn)速2000rpm,0x7D0,即011111010000b。最左側(cè)的位,數(shù)量級(jí)最大,牽一發(fā)動(dòng)全身,即高位。
信號(hào)的低位(least significant bit),即最不能表達(dá)信號(hào)特性的因子。剛才轉(zhuǎn)速中,最右側(cè)的0,即低位。就好像老板說(shuō)給你每個(gè)月漲薪5元,你毫不在乎。
信號(hào)的起始位其實(shí)就是信號(hào)的最低位。主機(jī)廠(chǎng)在定義整車(chē)CAN總線(xiàn)通信矩陣時(shí),每一個(gè)信號(hào)都從其最低位開(kāi)始填寫(xiě)。
報(bào)文封裝原則(恒潤(rùn))
1.同一個(gè)報(bào)文的所有信號(hào)須由同一個(gè)節(jié)點(diǎn)提供。
2.同一個(gè)報(bào)文所有信號(hào)的發(fā)送時(shí)機(jī)盡可能相同。
3.小于或等于8位的信號(hào),不應(yīng)跨越字節(jié)邊界。
不大于8位,不應(yīng)跨越字節(jié)邊界4.小于或等于16位的信號(hào),不應(yīng)跨越字邊界。
5.信號(hào)從每個(gè)字節(jié)的起始位開(kāi)始排列。
要從每個(gè)字節(jié)的起始位開(kāi)始排列6.信號(hào)排列應(yīng)當(dāng)緊湊。
碼字不易,轉(zhuǎn)載請(qǐng)注明出處,感謝。
參考資料:
1.汽車(chē)CAN總線(xiàn)通信矩陣設(shè)計(jì) - 圖文 - 百度文庫(kù)(恒潤(rùn))
2.如何進(jìn)行汽車(chē) CAN 總線(xiàn)開(kāi)發(fā)?(柏老師)
3.CAN總線(xiàn)信號(hào)的編碼格式-Intel與Motorola的區(qū)別 - 圖文 - 百度文庫(kù)
4.https://www.cnblogs.com/yao-zhang/p/10220665.html
總結(jié)
以上是生活随笔為你收集整理的ker矩阵是什么意思_如何理解CAN通信矩阵的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【分层实验框架】阿里妈妈大规模在线分层实
- 下一篇: WebDav的几种应用方法