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
主站蜘蛛池模板: 国产一区成人| 成人国产精品一级毛片天堂| a色毛片免费视频| 国产精品不卡片视频免费观看| 99热这里只有精品2| 久久免费看片| 一区二区午夜| 国产真实乱子伦视频播放| 日韩黄色在线| 国产激情无码一区二区APP| 男人天堂亚洲天堂| 国内精品久久人妻无码大片高| 91精品福利自产拍在线观看| 国产区精品高清在线观看| 久久无码av一区二区三区| 日韩午夜福利在线观看| 秋霞午夜国产精品成人片| 亚欧成人无码AV在线播放| 凹凸国产熟女精品视频| 人人91人人澡人人妻人人爽 | 8090午夜无码专区| 免费观看国产小粉嫩喷水| 国产又爽又黄无遮挡免费观看| 999国产精品永久免费视频精品久久| 久久久成年黄色视频| 国产欧美又粗又猛又爽老| 日韩小视频在线播放| 青青青视频蜜桃一区二区| 免费观看欧美性一级| 成年人国产网站| 日韩欧美色综合| 国产91在线|中文| 久久久国产精品无码专区| 国产视频自拍一区| jizz国产在线| 亚洲无码A视频在线| 国产91透明丝袜美腿在线| 亚洲欧洲日韩综合| 亚洲日韩AV无码一区二区三区人| 午夜精品久久久久久久2023| 99视频在线看| 午夜啪啪网| 国产呦精品一区二区三区下载| 天天操天天噜| 97在线公开视频| 久久五月天综合| 欧美黑人欧美精品刺激| 2021无码专区人妻系列日韩| 看你懂的巨臀中文字幕一区二区 | 热久久这里是精品6免费观看| 国产欧美日韩va| 秋霞午夜国产精品成人片| 亚洲日韩高清在线亚洲专区| 91精品国产综合久久香蕉922| 99热6这里只有精品| 中文字幕一区二区人妻电影| 91网址在线播放| 黄色网址免费在线| 日韩精品中文字幕一区三区| 精品无码日韩国产不卡av| 国产黄在线免费观看| 国产真实乱人视频| 亚洲一区二区黄色| 欧美午夜在线播放| 人妻丰满熟妇av五码区| 国产精品蜜芽在线观看| 国产网友愉拍精品视频| 亚洲三级色| 成人福利一区二区视频在线| 日本欧美一二三区色视频| 国产一级精品毛片基地| 国产成人无码久久久久毛片| 亚洲精品自产拍在线观看APP| 国产91九色在线播放| 欧美劲爆第一页| 亚洲精品男人天堂| 亚洲人成网18禁| 国产久草视频| 欧美中文字幕在线播放| 在线观看视频一区二区| 国产精品19p| 亚洲三级电影在线播放|