中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. "); //-->

        博客專(zhuān)欄

        EEPW首頁(yè) > 博客 > 如何通過(guò)DBC文件看懂CAN通信矩陣

        如何通過(guò)DBC文件看懂CAN通信矩陣

        發(fā)布人:美男子玩編程 時(shí)間:2024-08-21 來(lái)源:工程師 發(fā)布文章

        實(shí)現(xiàn)汽車(chē)CAN通信開(kāi)發(fā),必不可少要用到DBC文件和CAN通信矩陣。


        CAN通信矩陣是指用于描述 CAN 網(wǎng)絡(luò)中各個(gè)節(jié)點(diǎn)之間通信關(guān)系的表格或矩陣。它通常記錄了每個(gè)節(jié)點(diǎn)能夠發(fā)送和接收的消息標(biāo)識(shí)符(ID)以及與其他節(jié)點(diǎn)之間的通信權(quán)限。


        圖片


        通信矩陣在 CAN 網(wǎng)絡(luò)中具有重要作用:

        • 通信權(quán)限管理:通過(guò)通信矩陣可以清晰地了解每個(gè)節(jié)點(diǎn)之間的通信權(quán)限,包括哪些節(jié)點(diǎn)可以向哪些節(jié)點(diǎn)發(fā)送消息,以及哪些節(jié)點(diǎn)可以接收來(lái)自哪些節(jié)點(diǎn)的消息。這有助于確保網(wǎng)絡(luò)中的數(shù)據(jù)傳輸是有序和安全的。

        • 網(wǎng)絡(luò)配置和管理:通信矩陣可以用于配置和管理 CAN 網(wǎng)絡(luò)的通信規(guī)則。通過(guò)調(diào)整矩陣中的條目,可以靈活地修改節(jié)點(diǎn)之間的通信關(guān)系,以滿足不同的通信需求和網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。

        • 故障診斷:在出現(xiàn)通信故障或異常情況時(shí),通信矩陣可以作為診斷工具,幫助定位問(wèn)題。通過(guò)比較實(shí)際通信情況和預(yù)期的通信矩陣,可以找出通信錯(cuò)誤的根本原因,并進(jìn)行相應(yīng)的修復(fù)。


        DBC(DataBase Container)文件是用于描述CAN總線網(wǎng)絡(luò)中消息和信號(hào)的一種格式,是一種數(shù)據(jù)庫(kù)文件,通常由CAN網(wǎng)絡(luò)中的通信和信號(hào)定義組成,可用于配置和管理CAN總線上的通信協(xié)議。


        下載CANdb++軟件可以打開(kāi)DBC文件。


        鏈接:https://www.vector.com/int/en/products/products-a-z/software/candb/#c104632

        圖片


        以下是一個(gè)DBC文件示例:


        圖片


        以下是 DBC 文件的主要組成部分:


        消息定義:描述了在CAN總線上發(fā)送和接收的消息,包括消息的ID、周期、發(fā)送節(jié)點(diǎn)等信息。每個(gè)消息定義通常包含了一條或多條信號(hào)定義。


        圖片

        • 控制器名稱(chēng) :控制器ECU名稱(chēng)

        • 報(bào)文名稱(chēng) :每個(gè)報(bào)文消息規(guī)定的名字

        • 報(bào)文ID :唯一標(biāo)識(shí)報(bào)文的ID號(hào),一般規(guī)定ID范圍為0x00 - 0x7FF

        • 報(bào)文發(fā)送類(lèi)型 :分為周期報(bào)文,事件報(bào)文,周期事件報(bào)文,使能周期發(fā)送

        • 報(bào)文周期 :周期報(bào)文的發(fā)送周期值

        • 長(zhǎng)度  :報(bào)文字節(jié)長(zhǎng)度


        信號(hào)定義:描述了消息中傳輸?shù)臄?shù)據(jù),如信號(hào)的名稱(chēng)、起始位、長(zhǎng)度、單位、因子、偏移量等。信號(hào)定義用于將物理數(shù)據(jù)映射到CAN消息的數(shù)據(jù)域中。


        圖片

        • 信號(hào)名稱(chēng):信號(hào)英文名稱(chēng),一般命名:ECUName_MessgeName,ECUName為發(fā)送節(jié)點(diǎn)的名字簡(jiǎn)寫(xiě),MessgeName為具體的報(bào)文名稱(chēng)

        • 信號(hào)描述:信號(hào)中文名稱(chēng)描述

        • 信號(hào)類(lèi)型:信號(hào)的數(shù)據(jù)類(lèi)型,比如布爾類(lèi)型Boolean,無(wú)符號(hào) Unsigned,有符號(hào)Signed

        • 信號(hào)長(zhǎng)度:信號(hào)的長(zhǎng)度,即占多少個(gè)bit 位的長(zhǎng)度

        • 字節(jié)次序 :規(guī)定信號(hào)的大小端位置和布局layout,有Motorola格式和Intel格式

        • 起始字節(jié)位置:起始位所在的字節(jié)序號(hào)

        • 起始位位置:信號(hào)起始位所在的bit位置編號(hào)

        • 精度/偏移量:描述信號(hào)值如何轉(zhuǎn)變成信號(hào)物理值,計(jì)算公式:真實(shí)物理值 = 信號(hào)值 * 精度 + 偏移量

        • Range范圍 :信號(hào)數(shù)值的范圍

        • 信號(hào)單位 :信號(hào)數(shù)值的單位,比如可為:m ,km

        • 信號(hào)值描述:信號(hào)數(shù)值含義

        • 初始值:信號(hào)默認(rèn)的初始值

        • 無(wú)效值 :信號(hào)無(wú)任何含義的無(wú)效值狀態(tài)

        • 備注:信號(hào)備注內(nèi)容


        打開(kāi)DBC文件后,我們主要關(guān)注:Tx Messages和Rx Messages,這里面是CAN發(fā)送和接收的信息。


        圖片


        寫(xiě)程序時(shí)候,最容易搞錯(cuò)的就是起始位和信號(hào)長(zhǎng)度,如果發(fā)送或者接收的信號(hào)沒(méi)有對(duì)齊,數(shù)據(jù)解析就會(huì)存在問(wèn)題。


        圖片


        可以使用CANdb++軟件打開(kāi)Layout,通過(guò)可視化的方式看清楚報(bào)文的字節(jié)排序,例如以下0X342報(bào)文的字節(jié)排序:


        圖片


        以一個(gè)8byte的報(bào)文為例,8byte即為64個(gè)bit位,會(huì)將每一個(gè)bit位編號(hào)為0 - 63,信號(hào)起始位數(shù)值即為起始位位置所在的編號(hào)值,信號(hào)長(zhǎng)度表示從起始位開(kāi)始,連續(xù)占用的bit位長(zhǎng)度。


        圖片


        根據(jù)具體的布局安排,以及數(shù)據(jù)的大小端規(guī)定,DBC中CAN字節(jié)排序有兩種格式:Motorola格式和Intel格式。


        Intel格式:也稱(chēng)為小端序。在Intel格式中,數(shù)據(jù)的低位字節(jié)存儲(chǔ)在低地址,高位字節(jié)存儲(chǔ)在高地址。與Motorola格式相反,數(shù)據(jù)的最低有效字節(jié)存儲(chǔ)在地址最低的位置,而最高有效字節(jié)存儲(chǔ)在地址最高的位置。大多數(shù)個(gè)人計(jì)算機(jī)和x86架構(gòu)的處理器都使用小端序。


        Intel格式規(guī)定的布局安排規(guī)定示例如下,起始位位置規(guī)定了位于64bit(編號(hào)0-63)具體的那個(gè)位置,如下示例起始位置為12;信號(hào)長(zhǎng)度規(guī)定了從起始位編號(hào)位置開(kāi)始,連續(xù)占用的bit位長(zhǎng)度,如下示例信號(hào)長(zhǎng)度為12。


        圖片


        Motorola格式:也稱(chēng)為大端序。在Motorola格式中,數(shù)據(jù)的高位字節(jié)存儲(chǔ)在低地址,低位字節(jié)存儲(chǔ)在高地址。這意味著數(shù)據(jù)的最高有效字節(jié)存儲(chǔ)在地址最低的位置,而最低有效字節(jié)存儲(chǔ)在地址最高的位置。這種格式通常用于一些嵌入式系統(tǒng)和網(wǎng)絡(luò)協(xié)議中。起始位表示信號(hào)的大小端規(guī)定不同,又可以分成 Motorola MSB格式 和 Motorola LSB格式。


        Motorola MSB格式布局示例如下,起始位位置表示的是大端位置。


        圖片


        Motorola LSB格式布局示例如下,起始位位置表示的是小端位置。


        圖片


        使用Intel格式設(shè)置續(xù)航里程998KM, 它的信號(hào)值在整條報(bào)文中為3E、60、00、00、00、00、00、00,在DBC文件中設(shè)置如下:


        圖片


        信號(hào)以低字節(jié)低位起始,此處占了12bit,以第一字節(jié)的低bit 0位算起,計(jì)12個(gè)bit總長(zhǎng)度,信號(hào)是非連續(xù)的(發(fā)送的字節(jié)序體現(xiàn)出的信號(hào)值非連續(xù),但是bit位是由低到高連續(xù)的)。 


        使用Motorola格式設(shè)置續(xù)航里程998KM, 它的信號(hào)值在整條報(bào)文中為3E、60、00、00、00、00、00、00,在DBC文件中設(shè)置如下:


        圖片


        信號(hào)以高字節(jié)低位起始,此處占了12bit,以第二字節(jié)的低bit 12位算起,計(jì)12個(gè)bit總長(zhǎng)度,信號(hào)是連續(xù)的(此處連續(xù)針對(duì)低字節(jié)在前的字節(jié)發(fā)送序,參看LSB與MSB)。 


        報(bào)文發(fā)送類(lèi)型可分為:周期,事件,周期事件,使能周期。


        圖片


        • 周期 :報(bào)文按照固定的周期發(fā)送,例如周期為100ms,則每隔100ms發(fā)送一幀報(bào)文。

        • 事件 :當(dāng)事件觸發(fā)后,發(fā)送出數(shù)據(jù)報(bào)文,一般規(guī)定連續(xù)發(fā)送3幀,間隔20ms。

        • 周期事件 :周期和事件的結(jié)合,報(bào)文以周期時(shí)間發(fā)送每幀報(bào)文,當(dāng)某個(gè)事件信號(hào)觸發(fā)后,按照事件的形式立馬發(fā)送出來(lái),之后恢復(fù)到固定周期發(fā)送。

        • 使能周期 :報(bào)文以周期時(shí)間發(fā)送每幀報(bào)文,當(dāng)某個(gè)事件觸發(fā)后并且達(dá)到下一個(gè)發(fā)送周期時(shí),這個(gè)時(shí)刻按照事件發(fā)送,一般規(guī)定連續(xù)發(fā)送3幀,間隔20ms。


        周期事件報(bào)文中的事件信號(hào),在實(shí)際應(yīng)用中,有事件保持和事件不保持兩種。


        • 事件保持 :觸發(fā)信號(hào)發(fā)送后,信號(hào)一直保持之前的狀態(tài)。

        • 事件不保持 :觸發(fā)信號(hào)發(fā)送后,信號(hào)恢復(fù)到默認(rèn)值狀態(tài)。


        有些報(bào)文規(guī)定了兩個(gè)特殊的信號(hào):RollingCounter信號(hào) 和 CheckSum信號(hào),為CAN報(bào)文添加安全加密屬性,保護(hù)CAN報(bào)文信號(hào)數(shù)據(jù)。


        圖片


        • RollingCounter信號(hào) :滾動(dòng)計(jì)數(shù)值,例如示例信號(hào)從0 - 15,循環(huán)滾動(dòng),每發(fā)送一幀報(bào)文,該信號(hào)值累加1。

        • CheckSum信號(hào) :檢驗(yàn)值,基于某種校驗(yàn)算法,將報(bào)文數(shù)據(jù)進(jìn)行加密處理,加密算法一般使用的是CRC算法。


        參考資料:

        1、https://www.cnblogs.com/yao-zhang/p/10220665.html

        2、https://blog.csdn.net/PlutoZuo/article/details/133043032

        3、https://blog.csdn.net/CJohn1994/article/details/124105213

        4、https://blog.csdn.net/wteruiycbqqvwt/article/details/102929488

        5、https://mp.weixin.qq.com/s/5x0-JqTKx6Uv_3yz9p4K0g


        *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



        關(guān)鍵詞: CAN 通信矩陣

        技術(shù)專(zhuān)區(qū)

        關(guān)閉