999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python的CAN網絡數據庫管理分析

2023-09-19 03:31:26藍啟亮吳光耀
汽車實用技術 2023年17期
關鍵詞:數據庫

藍啟亮,吳光耀,王 帥,陳 聰

基于Python的CAN網絡數據庫管理分析

藍啟亮,吳光耀,王 帥,陳 聰

(比亞迪汽車工業有限公司 產品規劃及汽車新技術研究院,廣東 深圳 518118)

為高效管理車輛系統控制器局域網(CAN)網絡數據,基于對CAN網絡數據結構的研究及車載嵌入式軟件開發測試經驗的積累,提出一種基于Python的CAN網絡數據庫管理平臺的方法,實現多種格式CAN網絡數據庫文件的導入、數據編輯、數據自動校驗、數據自動對比和CAN網絡數據庫文件輸出,解決了當前主流CAN網絡數據庫管理工具編輯效率低、人工校驗和比對數據易出錯的缺陷,有效提高CAN網絡開發及CAN網絡各個節點控制器軟件開發的效率。

CAN網絡數據庫;數據抓取;Python

控制器局域網(Controller Area Network, CAN)網絡數據庫文件定義了CAN網絡中各個控制器節點報文信號信息,是CAN總線網絡通訊的密碼本[1-2]。在實際的車型研發項目中,CAN網絡數據庫隨著車型項目的推進逐步完善和迭代,各個控制器的數據收發模塊必須嚴格遵循正確定義的CAN網絡數據庫進行開發,方可保證項目的安全推進[3]。

當前CAN網絡數據庫的管理一般以Excel表格管理*.xlsx格式文本的形式或者Vecotor公司開發的CANdb++工具管理*.dbc格式文本的形式進行CAN數據定義和編輯[4-5]。隨著汽車電動化、智能化的發展,CAN總線數據越來越多,當CAN網絡數據庫文件進行變更時,各個控制器軟件開發工程師需要使用Excel或者CANdb++工具手動逐個篩選、檢查和比對CAN總線數據然后再對嵌入式軟件CAN通訊模塊中的C代碼進行逐一修改,如此逐個手動修改CAN報文信號重復低效的勞動方式特別容易出錯且出錯后不便于定位查找問題。

對于采用CAN通訊的汽車嵌入式軟件開發過程而言,軟件運行時環境(Run Time Environment, RTE)層CAN通訊數據交互定義方法固定,完全可以從嵌入式軟件RTE層抓取控制器中實際定義的CAN網絡數據,與系統輸入的CAN網絡數據統一實現同平臺工具管理:通過正則匹配的方式可以從嵌入式運行時環境RTE層C代碼或其他類文本格式的CAN網絡數據庫文件中獲取CAN網絡數據庫信息,利用統一的用戶圖形界面(Graphical User Interface, GUI)把不同版本的CAN網絡數據顯示在一個界面內,軟件開發人員只需要通過操作控件即可實現不同版本CAN網絡數據的導入、編輯、校驗和對比,操作便捷高效,開發人員可以從低效重復的工作中解脫出來,把更多精力放到應用層策略開發中。

1 CAN總線與CAN總線數據庫

1.1 CAN總線

CAN是由博世公司開發的一個汽車計算機控制系統和嵌入式工業控制局域網的國際通用總線協議[6-7]。CAN總線是一種基于消息的廣播式的串行通信總線協議,屬于多主控的總線系統。為實現CAN報文的發送與接收,各個控制器在RTE層軟件需要實現CAN總線數據的打包、解包、發送和接收等功能[8]。

1.2 CAN總線數據庫

DBC(Data Base CAN)文件是Vecor公司開發的用來描述單一CAN網絡配置信息的一種特定格式文件,通過CANdb++數據庫管理工具進行編輯管理,內容包含CAN總線上各個控制器節點信息、報文信息和信號信息,它可以被專業CAN測試工具識別,用來監測與分析CAN網絡上的報文數據,也可以用來模擬仿真某個CAN節點,是總線開發的重要輸出物,是軟件開發和軟件測試的重要參考。其主要內容包含但不限于如下:

1)節點(Node):定義在CAN總線上的所有接收方或發送方,節點名唯一;

2)報文(Message):報文是CAN網絡中交換與傳輸的數據單元,即接收方或發送方一次性要交流的數據塊。在DBC文件中,報文含有報文ID(MsgID)、數據長度(Dlc)、發送周期(Cyctime)等信息;

3)信號(Signal):信號是報文數據段的基本單元,在DBC中主要參數包含信號名(Signal)、起始位(Startbit)、信號長度(Length)、因子系數(Factor)、偏移量(Offset)等信息[9-10]。

DBC文件僅能表達單一的CAN總線數據,且當報文幀數據長度超過8個字節時無法通過CANdb++進行編輯[11-12]。在實際工程項目中,對于多路CAN網絡數據的管理和含有多幀總線數據的數據庫管理通常以自定義的Excel表格進行數據管理,由于Excel的局限性,無法通過Excel自動對比兩份不同的CAN總線數據的差異。

不論DBC文件格式的CAN網絡數據庫文件或者Excel文件格式的CAN網絡數據庫文件抑或是RTE層代碼中開發的CAN網絡數據,其實質都是一個或多個儲存了CAN網絡通信規則的文本文件,其中的字符包含了關鍵的節點、報文和信號三大部分的信息,且這些信息都是按照固定的規則進行組織。本文通過對不同格式的CAN網絡數據庫文件規則的分析,基于Python開發了一個DbcManager網絡數據庫管理平臺,快速識別并抓取不同格式的CAN網絡數據庫文件信息,通過SQLite數據庫和PyQt實現對CAN網絡數據庫文件數據的增刪查改等數據管理;開發數據校驗算法實現CAN報文信號數據的基本校驗;開發數據比對算法實現同格式版本不同CAN網絡數據庫變更的比對和不同格式版本不同CAN網絡數據庫變更的比對,有效提高嵌入式軟件開發效率,減少人工錯誤的引入。

2 基于Python的DbcManager網絡數據庫設計

為了解決CANdb++或Excel管理CAN網絡數據編輯效率低、不能校驗、無法對版本進行比對等難題,本文基于Python開發了一個運行于Windows操作系統上的DbcManager網絡數據庫管理平臺,集成CAN網絡數據讀取、編輯、校驗、比對、輸出等五項主要功能,所有的功能集中顯示在一個GUI界面中,其功能架構如圖1所示。

圖1 CAN網絡數據庫管理平臺

1)CAN網絡數據讀取:支持從嵌入式軟件RTE層代碼中抓取CAN總線數據、讀取標準dbc格式CAN總線數據和導入Excel格式總線數據共三種方式。

2)CAN網絡數據編輯:對數據的整理和結構化處理后顯示在GUI中,通過檢索算法和數據的樹結構方法實現數據的便捷查詢和編輯。

3)CAN網絡數據校驗:對CAN網絡數據信息按照Channel/Msg/Signal數據的基本規則進行數據檢查,輸出校驗分析報告。

4)CAN網絡數據比對:支持不同版本的CAN網絡數據的比對,輸出比對分析報告。

5)CAN網絡數據庫文件導出:CAN網絡數據讀取的反向操作。

2.1 CAN網絡數據庫管理平臺的GUI界面開發

CAN網絡數據庫管理平臺的GUI界面由菜單欄、工具欄、數據欄和狀態欄組成,如圖2所示。

菜單欄:負責完成導入數據的功能,導入的格式包括*.xlsx格式的Excel網絡數據庫文件、*.dbc格式的DBC網絡數據庫文件和嵌入式軟件的路徑。

工具欄:負責完成對數據的編輯功能,可以插入數據、修改數據、刪除數據、篩選數據、保存數據以及檢查CAN網絡數據庫等。

數據欄:數據欄中包含網絡(Channel)、報文(Msg)和信號(Sig)的具體信息。

狀態欄:顯示當前GUI界面中導入的數據來源以及當前數據欄中網絡(Channel)、報文(Msg)和信號(Sig)的數量。

圖2 GUI界面

2.2 CAN網絡數據庫的導入

為了滿足*.xlsx、*.dbc和嵌入式軟件RTE層代碼路徑三種不同格式的CAN網絡數據庫導入,基于正則匹配開發不同的算法抓取不同格式的CAN網絡數據庫文件中的CAN網絡數據庫信息,再通過統一定義的*.json文件整理抓取到的數據,最后將*.json數據插入到數據庫中,由用戶操作GUI界面與數據庫進行交互并將所需數據顯示在GUI界面上,如圖3所示。

圖3 導入數據的方式

抓取C文件格式的CAN網絡數據庫數據和抓取*.dbc格式的CAN網絡數據庫數據的方式原理基本一致,本質上都是將文本文件讀取到內存中,然后采用特定的正則匹配方法獲得所需數據。抓取*.xlsx格式的CAN網絡數據庫數據的方式也類似,唯一的區別是加載的數據來源于表格,通過openpyxl庫可以定位到所需的sheet和cell完成數據的逐個讀取并整理到*.json數據結構中。

統一的*.json數據結構不僅需要映射完整的CAN網絡數據庫字段以適配不同格式的CAN網絡數據庫數據,并且考慮到CAN網絡數據庫數據之間有明顯的內在層次和邏輯,通過多表外鍵級聯的形式實現CAN網絡數據庫網絡、報文和信號的關聯,將*.json文件分為Channel.json、Msg.json和Signal.json三個文件對CAN網絡數據庫數據進行本地化的臨時存儲,每個json文件由若干個數據字典組成,每個字典對應的關鍵字如表1所示。

表1 *.json數據字段定義

序號Channel.json數據字段Msg.json數據字段Signal.json數據字段 1ChannelnameMsgnameSigname 2Cantypebl2_ChannelMsgID 3 MsgIDMulti_ID 4 Dec_MsgIDStartbit 5 DLCLength 6 Rx_or_TxByte_Order 7 CyctimeValuetype 8 Factor 9 Offset 10 Min 11 Max 12 Unit 13 Receiver 14 Startvalue 15 Comment 16 Valuetable 17 Start_Pos 18 End_Pos

2.3 CAN網絡數據庫數據管理的實現

SQLite數據庫是一個輕量級的開源數據庫系統,以其單一的磁盤文件形式、零配置的使用前提和簡單易用的特性廣泛應用在桌面應用程序的數據管理項目中。在本文的CAN網絡數據庫管理平臺同樣采用SQLite數據庫對CAN網絡數據庫數據進行管控,自主開發了一系列的應用程序編程接口(Application Programming Interface, API)函數,便捷地實現*.json數據的批量導入以及與GUI界面控件的數據交互,實現數據的增刪查改,在GUI界面上顯示用戶需求的CAN網絡數據庫數據。

為了將*.json數據文件中的字典數據集高效地導入SQLite數據庫,開發了*.json矩陣數據批量插入到SQLite表中的算法,其運作方式如圖4所示。首先確認*.json數據文件是否存在,若存在則讀取*.json數據至內存,然后以*.json文件名在SQLite中創建對應文件名的數據表,以字典關鍵字為創建數據表的列標題,若*.json中的字典數據完整有效,則向SQLite發送插入數據的SQL指令,完成數據插入工作。

圖4 數據庫的創建

與*.json數據文件對應,SQLite數據庫中使用三個數據表分別存儲Channel、Msg和Signal的各個屬性信息,如圖5所示。

圖5 CAN網絡數據庫SQLite數據庫

2.4 CAN網絡數據校驗

為了避免CAN網絡數據庫源文件自身存在的信息錯誤或使用CAN網絡數據庫管理平臺編輯CAN網絡數據時引入的信息錯誤,開發了校驗算法對CAN網絡數據的一些屬性進行必要的檢查,校驗項目如表2所示。

表2 自動校驗內容

序號內容對象 1info_loss_checkChannel/Msg/Sig 2value_error_checkSig 3bit_repeat_checkMsg/Sig

info_loss_check:分別將Channel/Msg/Sig中不可或缺的CAN網絡數據信息進行簡單的非空校驗,當信息缺失時記錄在報告中。

value_error_check:僅對info_loss_check校驗數據完整的Sig數據對象進行校驗:

1)依據Signame字段中涵蓋的信號起、止位與Startbit字段和Length字段進行校驗,Signame字段描述的起/止位應該與Startbit和Length描述的字節位一致;

2)依據Signame字段中涵蓋的信號起/止位和Startvalue字段、Min字段、Max字段、Valuetype字段、Offset字段、Factor字段進行校驗,計算的物理最值應該Min字段和Max字段范圍內,Startvalue也不能超過該范圍。

bit_repeat_check:對隸屬于每一個Msg的Sig對象進行bit位重復定義校驗,每一個bit位只能被一個Sig信號定義。

校驗不通過的數據在GUI中會標注為紅色,在GUI中的狀態欄會顯示錯誤數據的個數以及錯誤數據所在的Tablewidget。通過工具欄的上一個錯誤按鈕控件或下一個錯誤按鈕控件,可以在數據欄中快速跳轉到錯誤數據行,用戶需要對錯誤信息進行修改并保存數據后,才可以進行CAN網絡數據庫文件的生成。

2.5 CAN網絡數據比對

CAN網絡數據庫文件定義了整個車型CAN總線上交互的各個節點報文信號的信息,是車輛嵌入式軟件開發與測試的密碼本。然而在實際車型項目的研發過程中,CAN網絡數據會隨著車型項目開發進展不斷地完善與變更,各個控制器嵌入式軟件CAN通訊模塊代碼也需要隨之做出對應變更修改。對嵌入式軟件開發人員而言,明確每次輸入的CAN網絡數據庫文件的變更內容以及CAN網絡數據庫文件與當前嵌入式軟件CAN通訊模塊代碼中的CAN網絡數據的差異,是極其繁瑣而又十分重要的內容。

DbcManager支持DBC格式導入、Excel格式導入和嵌入式軟件RTE層代碼中抓取共三種方式獲得CAN網絡數據,導入DbcManager的CAN網絡數據經過結構化整理后以*.db3存儲在SQLite數據庫中。對兩個不同的CAN網絡數據庫比對流程如圖6所示。

圖6 CAN網絡數據庫比對流程

選取兩個待比對的CAN網絡SQLite數據庫A.db3和CAN網絡SQLite數據庫B.db3,分別從中反向導出json格式數據文件Channel.json、Msg.json、Sig.json。

分別遍歷兩份Channel.json、Msg.json、Sig. json中的每一個數據對象獲得兩份CAN網絡數據的差異信息,差異信息內容包含內容增加item_ added、內容刪除item_removed和內容變更values_ changed,依據差異信息自動生成比對報告。

2.6 CAN網絡數據庫文件導出

CAN網絡數據庫文件導出即導入CAN網絡數據的反向操作。在CAN網絡數據庫管理平臺GUI的菜單欄可以選擇*.xlsx格式、*.dbc格式和*.db3格式進行CAN網絡數據庫文件的輸出。為了避免輸出的CAN網絡數據庫文件存在低級的數據錯誤,在生成CAN網絡數據庫文件之前會自動調用校驗程序對數據庫中的CAN網絡數據庫數據進行檢查校驗,若不存在錯誤則生成指定格式的CAN網絡數據庫文件,否則提示“對錯誤信息進行修改后再執行該操作”。

3 項目應用

本文基于Python開發的DbcManager是一個運行于Windows環境的圖形用戶界面可執行程序,可以便捷地加載不同格式的CAN網絡數據庫文件進行編輯、校驗和不同CAN網絡數據庫之間的數據比對。下面以一個實際工程應用進行詳細說明。

使用DbcManager導入某項目系統工程師提供的DBC文件進行校驗,自動生成校驗報告;再使用DbcManager讀取某控制器嵌入式軟件代碼中的CAN網絡數據和該DBC文件CAN網絡數據進行比對,自動生成比對報告。

導入的DBC文件CAN網絡數據如表3所示,包含4個DBC文件,共126個報文信息和1 220個信號信息。DbcManager校驗后生成的測試結果顯示共有43個信息存在數據值不正確,共3個報文信號存在Bit位重復定義,如圖7所示。

表 3 DbcManager校驗功能基本信息確認

測試人員測試項目數據來源基本信息 DbcManagerCAN網絡數據校驗D:/總線網絡協議.dbcChannel:4Msg:126Signal:1 220

在DbcManager中選擇兩份CAN網絡數據庫進行數據比對,基本信息如表4所示。點擊開始比對按鈕后,將分別遍歷兩份數據庫中Channel、Msg和Sig中各個字段的差異,自動生成的部分測試報告如圖8所示。

表4 DbcManager比對功能基本信息確認

測試人員測試項目數據來源A數據來源B DbcManagerCAN網絡數據比對D:/總線網絡協議.dbcD:/Project/BSW

圖8 DbcManager比對結果

4 總結

本文研究了一種基于Python的DbcManager CAN網絡數據庫管理平臺,通過構建不同算法適配不同格式的CAN網絡數據庫信息導入,通過SQLite數據庫完成對CAN網絡數據信息的統一管理,開發桌面用戶端集成數據抓取、數據編輯、數據校驗以及CAN網絡數據庫文件的生成等功能。實踐表明,DbcManager人機界面友好易于使用,多種方式篩選CAN網絡數據庫數據,編輯數據方便快捷;自動校驗數據,自動比對數據,減少人為操作,降低出錯風險,極大地提高了工作效率,對CAN網絡的開發和CAN網絡各個節點控制器軟件的開發有高效的輔助作用。

[1] 陳穎,鐘成,李興華,等.自適應的車內CAN總線安全機制[J].信息安全研究,2019,5(12):1076-1088.

[2] 胡志云.基于CAN總線在車輛中的應用[J].山西電子技術,2020(1):59-60,64.

[3] 馬建輝,胡代榮,郭坤.一種汽車CAN總線網關的報文接收和發送方法[J].現代電子技術,2018,41(11):5- 7,12.

[4] 方遒,姜瑜濤,張曉先,等.汽車電子基礎軟件標準體系研究[J].信息技術與標準化,2011(8):30-33,38.

[5] 江永聰.基于DBC的汽車CAN報文遠程采集與分析系統設計[J].電子技術與軟件工程,2014(14):203-204.

[6] 陳琪晟.基于DSP的CAN總線通信程序[J].鐵路通信信號工程技術,2015,12(2):43-48.

[7] 王永輝.CANoe在整車系統開發測試中的應用[J].汽車實用技術,2019,44(16):85-87.

[8] 惲海,曹瑩.2011年CAN總線車身控制系統需求與行業發展分析[J].汽車工業研究, 2012(6):33-37.

[9] 何曄.CAN總線報文丟失故障及其判定方法[J].科技視界,2015(33):126.

[10] 江永聰.基于DBC的汽車CAN報文遠程采集與分析系統設計[J].電子技術與軟件工程,2014(14):203-204.

[11] International Organization for Standardization.Diag- nostics on Controller Area Networks (CAN) Part2: Network Layer Services:ISO 15765-2:2004[S].Genève: ISO,2004.

[12] Vector Informatik GmbH.User Manual Function Ver- son1.1[EB/OL].(2012-10-05)[2022-11-16].https://cdn. vector.com/cms/content/products/vtsystem/Docs/VT_System_Manual_VT7820_EN.pdf.

Analysis of CAN Network Database Management Based on Python

LAN Qiliang, WU Guangyao, WANG Shuai, CHEN Cong

( Product Planning and Automotive New Technology Research Institute, BYD Automobile Industry Company Limited, Shenzhen 518118, China )

In order to efficiently manage the controller area network(CAN) data of vehicle system, based on the research of CAN network data structure and the accumulation of experience in the development and testing of on-board embedded software, a method of CAN network database management platform based on Python is proposed to realize the import, data editing, data automatic verification, data automatic comparison and CAN network database file output of various formats. It solves the defects of low editing efficiency of the current mainstream CAN network database management tools and the error prone to manual verification and comparison of data, and effectively improves the efficiency of CAN network development and CAN network node controller software development.

CAN network database; Data capture;Python

U469.7

A

1671-7988(2023)17-42-07

10.16638/j.cnki.1671-7988.2023.017.008

藍啟亮(1993-),男,碩士,研究方向為嵌入式軟件開發與測試,E-mail:lamnas@126.com。

猜你喜歡
數據庫
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
兩種新的非確定數據庫上的Top-K查詢
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
數據庫
財經(2015年3期)2015-06-09 17:41:31
數據庫
財經(2014年21期)2014-08-18 01:50:18
數據庫
財經(2014年6期)2014-03-12 08:28:19
數據庫
財經(2013年6期)2013-04-29 17:59:30
主站蜘蛛池模板: 国产99在线| 欧美激情视频在线观看一区| 青草视频免费在线观看| 成人看片欧美一区二区| 一级毛片a女人刺激视频免费| 亚洲精品老司机| 亚洲日韩国产精品综合在线观看| 国产人前露出系列视频| 中文无码影院| 真实国产乱子伦高清| 伊人久热这里只有精品视频99| 毛片免费在线视频| 色妞永久免费视频| 亚洲欧美成人综合| 欧美性精品不卡在线观看| 午夜视频www| 毛片最新网址| V一区无码内射国产| 亚洲91精品视频| 国产毛片不卡| 国产农村妇女精品一二区| 日本高清有码人妻| 无码一区二区三区视频在线播放| 中文字幕av无码不卡免费| 看av免费毛片手机播放| 国产精品久久久久久搜索| 亚洲床戏一区| 尤物亚洲最大AV无码网站| 91九色国产porny| 四虎亚洲精品| 亚洲一级色| 丁香六月激情综合| 国产欧美日韩另类精彩视频| 午夜福利无码一区二区| 国产97区一区二区三区无码| 久久福利片| 日韩国产黄色网站| 亚洲黄色成人| 亚洲国产成人麻豆精品| 亚洲av色吊丝无码| 日韩欧美综合在线制服| 日本亚洲欧美在线| 一本大道香蕉中文日本不卡高清二区| 亚洲色欲色欲www网| 88av在线| 日韩欧美国产精品| 国产精品毛片一区视频播| 亚洲国产系列| 国产理论一区| www.亚洲色图.com| 国产精品自在拍首页视频8| 欧美日韩成人| 青青国产视频| 国产美女无遮挡免费视频| 99视频精品在线观看| 国禁国产you女视频网站| 自慰网址在线观看| 日本高清免费一本在线观看| 亚洲天堂.com| 91色国产在线| 激情五月婷婷综合网| 一级毛片免费观看不卡视频| 手机在线看片不卡中文字幕| 成年看免费观看视频拍拍| 国产va在线观看免费| 亚洲一级毛片在线播放| 91精品免费久久久| 中文字幕一区二区人妻电影| 精品无码视频在线观看| 国产成人1024精品| 午夜福利网址| 在线免费观看AV| 国产精品免费电影| 亚洲大尺码专区影院| 国产剧情国内精品原创| 国产成人精品亚洲日本对白优播| 免费xxxxx在线观看网站| 欧美、日韩、国产综合一区| 91久草视频| 欧美激情首页| 欧美成人综合在线| 无码'专区第一页|