亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于正則表達式與多叉樹的DBC網(wǎng)絡(luò)協(xié)議解析方法

        2022-09-14 08:37:10楊亞聯(lián)
        重慶大學學報 2022年8期
        關(guān)鍵詞:網(wǎng)絡(luò)協(xié)議數(shù)據(jù)管理報文

        孫 漢,楊亞聯(lián),周 林,張 昕

        (1. 重慶大學 a. 機械與運載工程學院; b. 機械傳動國家重點實驗室, 重慶 400044;2. 金康賽力斯新能源汽車設(shè)計院,重慶 401120;3. 江鈴重型汽車有限公司,太原 030032)

        CAN網(wǎng)絡(luò)在發(fā)展的過程中衍生出了多種應用層協(xié)議,包括CANopen、J1939、DeviceNet,目前分別由美國ODVA協(xié)會、SAE協(xié)會和歐洲CiA協(xié)會管理。其中CANopen協(xié)議的核心內(nèi)容是對象字典,它是一個有序的對象組,定義一個設(shè)備的所有信息[1],并記錄在EDS或DCF電子文檔中,但是對于那些有很多對象,特別是很多數(shù)組的設(shè)備,EDS文檔將會變得很大,對嵌入式系統(tǒng)的存儲器是一個挑戰(zhàn);J1939協(xié)議主要適用那些以柴油為動力的卡車、公共汽車以及非陸地的交通工具;DeviceNet協(xié)議更多是應用在工業(yè)設(shè)備上。在之前的研究中,也有采用XML作為CAN網(wǎng)絡(luò)協(xié)議的描述文件[2],這種方法是將協(xié)議內(nèi)容錄入到XML文件中,利用了XML格式解析的方便性,但是并沒有根本解決工作量大且錄入容易出錯的問題。

        DBC數(shù)據(jù)文件由德國Vector公司發(fā)布,它是一種汽車CAN網(wǎng)絡(luò)協(xié)議描述文件,里面大量的字符映射了各邏輯節(jié)點信息及相互之間的通信規(guī)則。相較于Excel、Word版的CAN協(xié)議描述文件,DBC文件格式結(jié)構(gòu)清楚、設(shè)計方便,已經(jīng)成為CAN通信行業(yè)的標準,被CANoe、Matlab、Labview、INCA等軟件和平臺廣泛采用。

        基于DBC文件可以進一步開發(fā)出CAN網(wǎng)絡(luò)仿真工具軟件,用來監(jiān)視和分析CAN網(wǎng)絡(luò)中所有邏輯節(jié)點的參數(shù)和狀態(tài)[3]。CANoe是具有代表性的工具軟件之一,它需要借助DBC數(shù)據(jù)文件來對CAN網(wǎng)絡(luò)上的報文幀進行解析[4]?;贑ANoe平臺,DBC文件被應用到很多具體的場景中:車身控制器局域網(wǎng)絡(luò)仿真[5]、基于CAN的故障診斷系統(tǒng)[6-7]、汽車動力總成的試驗臺架測試[8]、汽車電子ECU控制器開發(fā),還被應用于Simulink和CANoe聯(lián)合仿真[9]以對混合動力汽車的通信和控制策略進行驗證[10-13],同時在整車ECU和網(wǎng)關(guān)等軟硬件的開發(fā)和測試[14]中也得到了應用。

        基于CAN網(wǎng)絡(luò)數(shù)據(jù)管理的需要,并針對上述CAN網(wǎng)絡(luò)協(xié)議描述方式存在的弊端,筆者基于DBC文件規(guī)范,設(shè)計了協(xié)議解析的正則表達式,根據(jù)CAN網(wǎng)絡(luò)協(xié)議信息的結(jié)構(gòu)關(guān)系,利用多叉樹對該網(wǎng)絡(luò)協(xié)議進行表征,針對Intel和Motorola不同格式下的協(xié)議解析問題,提出了報文數(shù)據(jù)場的信號色塊表示方法和起始位轉(zhuǎn)換公式,并基于C#語言設(shè)計和開發(fā)了DBC數(shù)據(jù)管理軟件,將CAN網(wǎng)絡(luò)協(xié)議描述為一個dbc格式的文件。實車試驗表明:所設(shè)計開發(fā)的DBC數(shù)據(jù)管理軟件實現(xiàn)了CAN網(wǎng)絡(luò)的協(xié)議解析、結(jié)構(gòu)表征和數(shù)據(jù)管理,進一步驗證了所提出DBC解析方法的有效性。

        1 DBC文件規(guī)范

        1.1 結(jié)構(gòu)信息

        圖中以“BU_”開頭的行定義了節(jié)點信息,包括Engine、Display、Light 3個節(jié)點;以“BO_”開頭的行定義了報文信息,包括EngineState、LightState2條報文;每條報文下又定義了所包含的信號信息,以“SG_”開頭,例如,EngineState報文下定義了EngineSpeed和OnOff 2條信號。

        圖1 DBC示例文件局部結(jié)構(gòu)Fig. 1 Part of a DBC sample file

        1.2 屬性信息

        BO_ MessageId(10進制數(shù)表示) MessageName: MessageSize Transmitter為報文的格式模板,依據(jù)該模板,圖中BO_ 100 EngineState: 3 Engine就可以解析成一條由Engine節(jié)點發(fā)送,數(shù)據(jù)域長度為3字節(jié),ID為100(0x64),名字為EngineState的報文。同樣,信號按照該規(guī)范對其屬性進行了描述。

        因此依據(jù)上述DBC文件規(guī)范可以通過適當?shù)慕馕龇椒ㄗ層嬎銠C快速對CAN協(xié)議進行解析。

        2 DBC文件的正則表達式解析

        DBC文件含有“@”“(”“)”“|”“[”“]”、空格等多種字符信息,并且內(nèi)容信息不固定,不存在通用的解析技術(shù),需要進行專門的解析方法設(shè)計??紤]到正則表達式在字符串信息匹配方面的方便性,基于DBC文件規(guī)范,設(shè)計了DBC文件中CAN協(xié)議節(jié)點Node、報文Message、信號Signal對應的正則表達式,分別為regex1、regex2、regex3。

        Regex regex3 = new Regex("SG_\s*(\w+\s*\w*)\s*:\s*(\d+)\|(\d+)@([10])([+-])\s*\((-*\d*\.*\d*),(-*\d*\.*\d*)\)\s*\[(-*\d*\.*\d*)\|(-*\d*\.*\d*)\]\s*"(.*)[?"]\s+([\w+,*]+)$")。

        利用regex1、regex2、regex3對DBC文件中每行信息進行匹配,判斷該行信息描述的是節(jié)點、報文還是信號等,利用字符分割技術(shù)獲取其中描述的具體屬性值,從而創(chuàng)建CAN網(wǎng)絡(luò)中對應的節(jié)點、報文、信號等實例對象,并建立起各對象之間的結(jié)構(gòu)關(guān)系。為了方便計算機對CAN網(wǎng)絡(luò)進行描述,通過多叉樹[15]對其進行結(jié)構(gòu)表征,最終得到如圖2所示的多叉樹結(jié)構(gòu)模型。

        圖2 多叉樹結(jié)構(gòu)模型圖Fig. 2 Diagram of multi-tree structure model

        該模型描述了一個完整的CAN網(wǎng)絡(luò)工程,其中包括若干個節(jié)點(Node1、Node2、Node3等),每個節(jié)點可以發(fā)送若干報文,每條報文由若干信號組成。

        3 DBC數(shù)據(jù)管理軟件開發(fā)

        DBC數(shù)據(jù)管理軟件的目的是對CAN網(wǎng)絡(luò)進行管理,并將CAN網(wǎng)絡(luò)協(xié)議以DBC數(shù)據(jù)管理文件的形式輸出。通過可視化窗體設(shè)計和交互式操作可以直觀地對DBC文件進行創(chuàng)建、修改和編輯。考慮到C#運行在.NET框架之下,開發(fā)出來的程序可以直接在Windows系統(tǒng)下使用,因此基于C#語言進行DBC數(shù)據(jù)管理軟件的開發(fā)。

        3.1 主界面和功能的開發(fā)

        窗體DBCViewer作為主界面(圖3),左側(cè)的TreeView樹控件展示了CAN網(wǎng)絡(luò)的結(jié)構(gòu)關(guān)系,通過如下代碼為TreeView添加了點擊和拖拽事件監(jiān)聽的響應函數(shù):

        this.dbcTreeView.ItemDrag += new ItemDragEventHandler(this.DbcTreeView_ItemDrag);

        this.dbcTreeView.NodeMouseClick += new TreeNodeMouseClickEventHandler(this.DbcTreeView_NodeMouseClick);

        this.dbcTreeView.DragDrop += new DragEventHandler(this.DbcTreeView_DragDrop);

        this.dbcTreeView.DragEnter += new DragEventHandler(this.DbcTreeView_DragEnter)。

        圖3 主功能界面Fig. 3 Main function interface

        TreeView的拖拽事件用于建立CAN網(wǎng)絡(luò)的結(jié)構(gòu)關(guān)系,具體分為圖中①②③3種情況:

        ① Signals樹節(jié)點下的信號拖拽到Messages樹節(jié)點下的報文中,確定該報文下的信號;

        ② Messages樹節(jié)點下的報文拖拽到TxMessages樹節(jié)點下,確定該報文的發(fā)送節(jié)點;

        ③ Signals樹節(jié)點下的信號拖拽到對應Node的RxSignals樹節(jié)點下,確定該信號的接收節(jié)點。

        3.2 編輯功能開發(fā)

        通過SignalWindow、MessageWindow、NodeWindow窗體實現(xiàn)Signal、Message、Node對象的創(chuàng)建和修改。圖4通過設(shè)置標簽的BackColor形成連續(xù)色塊來模擬連續(xù)的信號占位,當左側(cè)表格中信號的起始位變化時,根據(jù)Intel和Motorola的格式,整個數(shù)據(jù)場將自動調(diào)整色塊布局。具體的調(diào)整程序如圖5所示。

        圖4 報文數(shù)據(jù)場的信號布局界面Fig. 4 Signal layout interface of the message data field

        圖5 報文數(shù)據(jù)場的色塊布局調(diào)整程序Fig. 5 Color block layout adjustment program of the message data field

        通過上述程序和取余算法,實現(xiàn)了報文數(shù)據(jù)場的色塊布局調(diào)整,保證不同信號使用不同的顏色標記,相鄰信號之間不會干擾。

        3.3 Motorola格式下的起始位轉(zhuǎn)換

        DBC文件中信號矩陣的編碼格式分為Intel和Motorola兩種。一般情況下,將CAN報文抽象成8×8的數(shù)據(jù)場(圖6),每行表示一個字節(jié)的8個位,從右到左依次是bit0,bit1,…,bit7,左邊代表高位;從上到下依次是byte0,byte1…byte7,下邊代表高字節(jié)。根據(jù)CAN報文的發(fā)送規(guī)則,通常情況下,先發(fā)送低位字節(jié)LSB,后發(fā)送高位字節(jié)MSB;而單個字節(jié)則是先傳輸高位msb,后傳輸?shù)臀籰sb。如圖6所示,左邊采用Intel編碼格式,右邊采用Motorola編碼格式,通過比較和分析總結(jié)出:

        圖6 跨字節(jié)時Intel和Motorola格式的布局對比Fig. 6 Comparison of the layouts of Intel and Motorola formats when crossing bytes

        1)數(shù)據(jù)場中,單個信號的起始位均為最低位(即lsb);

        2)數(shù)據(jù)場中,單個信號的水平填充方向均是從右至左(即lsb至msb的方向);

        3)數(shù)據(jù)場中,當跨字節(jié)時,Intel是自上而下填充,Motorola是自下而上填充;

        4)Motorola格式下,DBC文件中信號的起始位與數(shù)據(jù)場中的起始位不同,是數(shù)據(jù)場中信號的最高位msb,即大端方式,因此在對DBC文件進行解析和保存時須進行起始位轉(zhuǎn)換。

        在進行程序的開發(fā)過程中,針對Motorola格式進行特殊處理,其中解析DBC文件時按照式(1)計算,保存DBC文件時按照式(2)計算。式(1)(2)中“/”表示取商運算符,“%”表示取余運算符,length表示信號的長度,lsb表示信號的最低位,等于數(shù)據(jù)場中的起始位,msb表示信號的最高位,等于文件中的起始位。

        (1)

        (2)

        在Intel格式下,DBC文件中信號的起始位就代表信號的最低位,即小端方式,故不存在轉(zhuǎn)換的問題。

        3.4 DBC文件輸出

        以裝車發(fā)動機的CAN通信矩陣為例,將汽車CAN網(wǎng)絡(luò)協(xié)議描述為一個具體的DBC文件。如圖7(a)所示,共創(chuàng)建了HCU_EMS、EMS 2個節(jié)點,EMS_205、EMS_245、EMS_255、EMS_265、EMS_275、EMS_355 6條報文,71個信號。通過TreeView樹節(jié)點拖拽,將Node、Message、Signal之間關(guān)聯(lián)起來。以EMS_255報文為例,該報文中添加了EMS_RollingCount_id255、EMS_EngineIntakeAirTemp等16個信號,在MessageWindow窗體的布局中,調(diào)整每個信號的起始位來對報文數(shù)據(jù)場中的信號進行布局排列,調(diào)整之后的信號顏色塊分布情況如圖7(b)所示。

        圖7 DBC文件制定Fig. 7 DBC file production

        通過上述Node、Message、Signal的創(chuàng)建和關(guān)聯(lián)操作之后,后臺程序?qū)⑦@些信息自動同步到CAN網(wǎng)絡(luò)的多叉樹結(jié)構(gòu)中。當點擊“文件”-“保存”后,程序依據(jù)多叉樹的廣度搜索算法和深度搜索算法對多叉樹結(jié)構(gòu)進行遍歷,按照DBC文件規(guī)范將CAN網(wǎng)絡(luò)協(xié)議信息寫入到can_engine.dbc文件(圖7(c))。

        4 實車試驗

        為驗證DBC協(xié)議解析方法的有效性,首先對DBC數(shù)據(jù)管理軟件輸出的can_engine.dbc文件信息進行驗證:1)將文件信息與軟件解析界面信息進行比較,相當于圖7(c)與圖7(a)、7(b)中的信息進行比較,發(fā)現(xiàn)DBC協(xié)議屬性信息和結(jié)構(gòu)信息均一致,并且Intel和Motorola格式下的起始位實現(xiàn)了正確轉(zhuǎn)換;2)根據(jù)裝車發(fā)動機的CAN通信矩陣,利用CANoe輸出can_engine_canoe.dbc文件,并與can_engine.dbc文件比對,節(jié)點、報文、信號等信息均一致。初步表明了所提出的正則表達式解析、多叉樹結(jié)構(gòu)表征、報文數(shù)據(jù)場信號色塊表示方法和不同格式下起始位轉(zhuǎn)換公式的正確性。

        然后將can_engine.dbc在某乘用車上進行了實車試驗,同時基于can_engine_canoe.dbc進行對比,通過汽車CAN總線上報文采集和解析結(jié)果對比進一步驗證。實車CAN網(wǎng)絡(luò)自帶報文信息,而且報文數(shù)據(jù)和種類較多,與仿真環(huán)境相比提供了更可靠準確的報文來源。

        將USBCAN-Ⅱ C和Vector硬件設(shè)備同時連接到汽車OBD接口,電腦打開對應設(shè)備的軟件,配置好通道和參數(shù)。在試驗環(huán)境準備好之后,駕駛車輛在重慶大學A區(qū)校園內(nèi)(圖8)行駛,副駕駛進行汽車CAN報文的采集工作(圖9)。根據(jù)采集到的數(shù)據(jù)報文ID(圖10,此處為USBCAN-Ⅱ C設(shè)備采集到的部分數(shù)據(jù)截圖)發(fā)現(xiàn),除了發(fā)動機的CAN報文外,還包括其他節(jié)點發(fā)送的報文ID。

        圖8 汽車駕駛路段Fig. 8 Car driving section

        圖9 汽車CAN報文采集Fig. 9 Car CAN message collection

        圖10 采集到的報文數(shù)據(jù)Fig. 10 Collected message data

        最后通過can_engine.dbc文件對采集的報文進行解析,其中發(fā)動機轉(zhuǎn)速位于ID為0x255的報文下,采用Motorola編碼格式,起始位為24,長度為16,F(xiàn)actor因子為0.25,Offset偏移量為0;車速信號位于ID為0x265的報文下,采用Motorola編碼格式,起始位為16,長度為13,F(xiàn)actor因子為0.05625,Offset偏移量為0。另外也通過can_engine_canoe.dbc文件對Vector硬件設(shè)備采集到的數(shù)據(jù)進行解析。rpm、v為本文所開發(fā)軟件生成can_engine.dbc文件解析后的轉(zhuǎn)速和車速;rpm′、v′為采用CANoe工具軟件生成的can_engine_canoe.dbc文件解析后的轉(zhuǎn)速和車速,對全試驗過程結(jié)果分別求取方差,結(jié)果如下:

        (3)

        (4)

        計算結(jié)果均為0,說明兩種方式解析后的車速和發(fā)動機轉(zhuǎn)速真實值是一致的;兩種方式解析之后對應的曲線如圖11和12所示。試驗結(jié)果證明了本軟件所制定的DBC文件能夠正確解析汽車CAN報文。

        XML的解析方式首先將DBC格式的協(xié)議文件人工轉(zhuǎn)換為XML格式的文件,然后計算機通過XML格式來識別和解析CAN網(wǎng)絡(luò)協(xié)議。本研究中利用正則表達式來直接解析原DBC文件協(xié)議,利用多叉樹的結(jié)構(gòu)表征DBC協(xié)議,通過減少操作步驟,顯著提高了DBC數(shù)據(jù)管理的效率,并且上述的試驗結(jié)果證明了所提出方法的有效性。

        圖11 解析后的發(fā)動機轉(zhuǎn)速曲線對比Fig. 11 Analyzed engine speed curve comparison

        圖12 解析后的車速曲線對比Fig. 12 Analyzed vehicle speed curve comparison

        5 結(jié) 論

        1)通過分析DBC文件規(guī)范,總結(jié)出Intel、Motorola編碼格式下CAN報文的布局規(guī)律并推導出Motorola格式下起始位轉(zhuǎn)換公式,進一步設(shè)計和開發(fā)出DBC數(shù)據(jù)管理軟件;該軟件能夠以可視化窗口的交互方式創(chuàng)建和修改DBC文件。

        2)通過正則表達式的設(shè)計實現(xiàn)了對已有DBC文件的解析,提出的CAN網(wǎng)絡(luò)多叉樹結(jié)構(gòu)模型能夠?qū)AN網(wǎng)絡(luò)信息進行統(tǒng)一管理。

        3)通過實車試驗,所開發(fā)軟件根據(jù)汽車CAN通信矩陣制定出來的DBC文件與CANoe生成的DBC文件進行汽車CAN報文的對比試驗解析,兩者結(jié)果一致,驗證了所開發(fā)軟件的實用性。

        猜你喜歡
        網(wǎng)絡(luò)協(xié)議數(shù)據(jù)管理報文
        計算機網(wǎng)絡(luò)理論下的傳播研究結(jié)構(gòu)模型:Communication一詞的兩種翻譯
        基于J1939 協(xié)議多包報文的時序研究及應用
        汽車電器(2022年9期)2022-11-07 02:16:24
        企業(yè)級BOM數(shù)據(jù)管理概要
        定制化汽車制造的數(shù)據(jù)管理分析
        海洋環(huán)境數(shù)據(jù)管理優(yōu)化與實踐
        CTCS-2級報文數(shù)據(jù)管理需求分析和實現(xiàn)
        淺析反駁類報文要點
        中國外匯(2019年11期)2019-08-27 02:06:30
        一種藍牙多跳網(wǎng)絡(luò)協(xié)議的設(shè)計與研究
        電子制作(2018年17期)2018-09-28 01:56:52
        基于DPI技術(shù)的語音視頻流量監(jiān)控系統(tǒng)設(shè)計與實現(xiàn)
        ATS與列車通信報文分析
        日韩av在线不卡观看| 欧美午夜精品一区二区三区电影| 国产精品久久久久久久成人午夜| 国产精品va在线观看一| 日本在线一区二区免费| 亚洲av色香蕉一区二区三区 | 熟女免费视频一区二区| 成年性生交大片免费看| 精品久久亚洲中文无码| 亚洲精品成人国产av| 亚洲人妻御姐中文字幕| 久久国产劲爆∧v内射-百度| 色偷偷久久一区二区三区| 精品综合久久久久久8888| 亚洲女同精品一区二区久久| 日韩大片高清播放器大全| 久久精品人人做人人爽电影蜜月| 久久久久久久国产精品电影| 亚洲av色香蕉一区二区三区潮| 亚洲成av人在线观看网址| 欧美性猛交xxxx乱大交丰满| 2021最新久久久视精品爱| 国产av一卡二卡日韩av| 国产精品爽爽v在线观看无码| 欧美日韩人妻| 国语对白三级在线观看| 国产在线观看免费视频软件| 少妇装睡让我滑了进去| 国产chinese在线视频| 久久国产精品免费专区| 97日日碰曰曰摸日日澡| h国产视频| 美腿丝袜中文字幕在线观看| 久久成人国产精品一区二区| 精品人妻一区二区三区四区| 欧美手机在线视频| 国产无套一区二区三区久久| 美女把尿囗扒开让男人添| 亚洲一级无码片一区二区三区| 国产精品日本一区二区三区在线| 国产成人精品久久亚洲高清不卡|