藍啟亮,吳光耀,王 帥,陳 聰
基于Python的CAN網(wǎng)絡數(shù)據(jù)庫管理分析
藍啟亮,吳光耀,王 帥,陳 聰
(比亞迪汽車工業(yè)有限公司 產(chǎn)品規(guī)劃及汽車新技術(shù)研究院,廣東 深圳 518118)
為高效管理車輛系統(tǒng)控制器局域網(wǎng)(CAN)網(wǎng)絡數(shù)據(jù),基于對CAN網(wǎng)絡數(shù)據(jù)結(jié)構(gòu)的研究及車載嵌入式軟件開發(fā)測試經(jīng)驗的積累,提出一種基于Python的CAN網(wǎng)絡數(shù)據(jù)庫管理平臺的方法,實現(xiàn)多種格式CAN網(wǎng)絡數(shù)據(jù)庫文件的導入、數(shù)據(jù)編輯、數(shù)據(jù)自動校驗、數(shù)據(jù)自動對比和CAN網(wǎng)絡數(shù)據(jù)庫文件輸出,解決了當前主流CAN網(wǎng)絡數(shù)據(jù)庫管理工具編輯效率低、人工校驗和比對數(shù)據(jù)易出錯的缺陷,有效提高CAN網(wǎng)絡開發(fā)及CAN網(wǎng)絡各個節(jié)點控制器軟件開發(fā)的效率。
CAN網(wǎng)絡數(shù)據(jù)庫;數(shù)據(jù)抓??;Python
控制器局域網(wǎng)(Controller Area Network, CAN)網(wǎng)絡數(shù)據(jù)庫文件定義了CAN網(wǎng)絡中各個控制器節(jié)點報文信號信息,是CAN總線網(wǎng)絡通訊的密碼本[1-2]。在實際的車型研發(fā)項目中,CAN網(wǎng)絡數(shù)據(jù)庫隨著車型項目的推進逐步完善和迭代,各個控制器的數(shù)據(jù)收發(fā)模塊必須嚴格遵循正確定義的CAN網(wǎng)絡數(shù)據(jù)庫進行開發(fā),方可保證項目的安全推進[3]。
當前CAN網(wǎng)絡數(shù)據(jù)庫的管理一般以Excel表格管理*.xlsx格式文本的形式或者Vecotor公司開發(fā)的CANdb++工具管理*.dbc格式文本的形式進行CAN數(shù)據(jù)定義和編輯[4-5]。隨著汽車電動化、智能化的發(fā)展,CAN總線數(shù)據(jù)越來越多,當CAN網(wǎng)絡數(shù)據(jù)庫文件進行變更時,各個控制器軟件開發(fā)工程師需要使用Excel或者CANdb++工具手動逐個篩選、檢查和比對CAN總線數(shù)據(jù)然后再對嵌入式軟件CAN通訊模塊中的C代碼進行逐一修改,如此逐個手動修改CAN報文信號重復低效的勞動方式特別容易出錯且出錯后不便于定位查找問題。
對于采用CAN通訊的汽車嵌入式軟件開發(fā)過程而言,軟件運行時環(huán)境(Run Time Environment, RTE)層CAN通訊數(shù)據(jù)交互定義方法固定,完全可以從嵌入式軟件RTE層抓取控制器中實際定義的CAN網(wǎng)絡數(shù)據(jù),與系統(tǒng)輸入的CAN網(wǎng)絡數(shù)據(jù)統(tǒng)一實現(xiàn)同平臺工具管理:通過正則匹配的方式可以從嵌入式運行時環(huán)境RTE層C代碼或其他類文本格式的CAN網(wǎng)絡數(shù)據(jù)庫文件中獲取CAN網(wǎng)絡數(shù)據(jù)庫信息,利用統(tǒng)一的用戶圖形界面(Graphical User Interface, GUI)把不同版本的CAN網(wǎng)絡數(shù)據(jù)顯示在一個界面內(nèi),軟件開發(fā)人員只需要通過操作控件即可實現(xiàn)不同版本CAN網(wǎng)絡數(shù)據(jù)的導入、編輯、校驗和對比,操作便捷高效,開發(fā)人員可以從低效重復的工作中解脫出來,把更多精力放到應用層策略開發(fā)中。
CAN是由博世公司開發(fā)的一個汽車計算機控制系統(tǒng)和嵌入式工業(yè)控制局域網(wǎng)的國際通用總線協(xié)議[6-7]。CAN總線是一種基于消息的廣播式的串行通信總線協(xié)議,屬于多主控的總線系統(tǒng)。為實現(xiàn)CAN報文的發(fā)送與接收,各個控制器在RTE層軟件需要實現(xiàn)CAN總線數(shù)據(jù)的打包、解包、發(fā)送和接收等功能[8]。
DBC(Data Base CAN)文件是Vecor公司開發(fā)的用來描述單一CAN網(wǎng)絡配置信息的一種特定格式文件,通過CANdb++數(shù)據(jù)庫管理工具進行編輯管理,內(nèi)容包含CAN總線上各個控制器節(jié)點信息、報文信息和信號信息,它可以被專業(yè)CAN測試工具識別,用來監(jiān)測與分析CAN網(wǎng)絡上的報文數(shù)據(jù),也可以用來模擬仿真某個CAN節(jié)點,是總線開發(fā)的重要輸出物,是軟件開發(fā)和軟件測試的重要參考。其主要內(nèi)容包含但不限于如下:
1)節(jié)點(Node):定義在CAN總線上的所有接收方或發(fā)送方,節(jié)點名唯一;
2)報文(Message):報文是CAN網(wǎng)絡中交換與傳輸?shù)臄?shù)據(jù)單元,即接收方或發(fā)送方一次性要交流的數(shù)據(jù)塊。在DBC文件中,報文含有報文ID(MsgID)、數(shù)據(jù)長度(Dlc)、發(fā)送周期(Cyctime)等信息;
3)信號(Signal):信號是報文數(shù)據(jù)段的基本單元,在DBC中主要參數(shù)包含信號名(Signal)、起始位(Startbit)、信號長度(Length)、因子系數(shù)(Factor)、偏移量(Offset)等信息[9-10]。
DBC文件僅能表達單一的CAN總線數(shù)據(jù),且當報文幀數(shù)據(jù)長度超過8個字節(jié)時無法通過CANdb++進行編輯[11-12]。在實際工程項目中,對于多路CAN網(wǎng)絡數(shù)據(jù)的管理和含有多幀總線數(shù)據(jù)的數(shù)據(jù)庫管理通常以自定義的Excel表格進行數(shù)據(jù)管理,由于Excel的局限性,無法通過Excel自動對比兩份不同的CAN總線數(shù)據(jù)的差異。
不論DBC文件格式的CAN網(wǎng)絡數(shù)據(jù)庫文件或者Excel文件格式的CAN網(wǎng)絡數(shù)據(jù)庫文件抑或是RTE層代碼中開發(fā)的CAN網(wǎng)絡數(shù)據(jù),其實質(zhì)都是一個或多個儲存了CAN網(wǎng)絡通信規(guī)則的文本文件,其中的字符包含了關(guān)鍵的節(jié)點、報文和信號三大部分的信息,且這些信息都是按照固定的規(guī)則進行組織。本文通過對不同格式的CAN網(wǎng)絡數(shù)據(jù)庫文件規(guī)則的分析,基于Python開發(fā)了一個DbcManager網(wǎng)絡數(shù)據(jù)庫管理平臺,快速識別并抓取不同格式的CAN網(wǎng)絡數(shù)據(jù)庫文件信息,通過SQLite數(shù)據(jù)庫和PyQt實現(xiàn)對CAN網(wǎng)絡數(shù)據(jù)庫文件數(shù)據(jù)的增刪查改等數(shù)據(jù)管理;開發(fā)數(shù)據(jù)校驗算法實現(xiàn)CAN報文信號數(shù)據(jù)的基本校驗;開發(fā)數(shù)據(jù)比對算法實現(xiàn)同格式版本不同CAN網(wǎng)絡數(shù)據(jù)庫變更的比對和不同格式版本不同CAN網(wǎng)絡數(shù)據(jù)庫變更的比對,有效提高嵌入式軟件開發(fā)效率,減少人工錯誤的引入。
為了解決CANdb++或Excel管理CAN網(wǎng)絡數(shù)據(jù)編輯效率低、不能校驗、無法對版本進行比對等難題,本文基于Python開發(fā)了一個運行于Windows操作系統(tǒng)上的DbcManager網(wǎng)絡數(shù)據(jù)庫管理平臺,集成CAN網(wǎng)絡數(shù)據(jù)讀取、編輯、校驗、比對、輸出等五項主要功能,所有的功能集中顯示在一個GUI界面中,其功能架構(gòu)如圖1所示。
圖1 CAN網(wǎng)絡數(shù)據(jù)庫管理平臺
1)CAN網(wǎng)絡數(shù)據(jù)讀取:支持從嵌入式軟件RTE層代碼中抓取CAN總線數(shù)據(jù)、讀取標準dbc格式CAN總線數(shù)據(jù)和導入Excel格式總線數(shù)據(jù)共三種方式。
2)CAN網(wǎng)絡數(shù)據(jù)編輯:對數(shù)據(jù)的整理和結(jié)構(gòu)化處理后顯示在GUI中,通過檢索算法和數(shù)據(jù)的樹結(jié)構(gòu)方法實現(xiàn)數(shù)據(jù)的便捷查詢和編輯。
3)CAN網(wǎng)絡數(shù)據(jù)校驗:對CAN網(wǎng)絡數(shù)據(jù)信息按照Channel/Msg/Signal數(shù)據(jù)的基本規(guī)則進行數(shù)據(jù)檢查,輸出校驗分析報告。
4)CAN網(wǎng)絡數(shù)據(jù)比對:支持不同版本的CAN網(wǎng)絡數(shù)據(jù)的比對,輸出比對分析報告。
5)CAN網(wǎng)絡數(shù)據(jù)庫文件導出:CAN網(wǎng)絡數(shù)據(jù)讀取的反向操作。
CAN網(wǎng)絡數(shù)據(jù)庫管理平臺的GUI界面由菜單欄、工具欄、數(shù)據(jù)欄和狀態(tài)欄組成,如圖2所示。
菜單欄:負責完成導入數(shù)據(jù)的功能,導入的格式包括*.xlsx格式的Excel網(wǎng)絡數(shù)據(jù)庫文件、*.dbc格式的DBC網(wǎng)絡數(shù)據(jù)庫文件和嵌入式軟件的路徑。
工具欄:負責完成對數(shù)據(jù)的編輯功能,可以插入數(shù)據(jù)、修改數(shù)據(jù)、刪除數(shù)據(jù)、篩選數(shù)據(jù)、保存數(shù)據(jù)以及檢查CAN網(wǎng)絡數(shù)據(jù)庫等。
數(shù)據(jù)欄:數(shù)據(jù)欄中包含網(wǎng)絡(Channel)、報文(Msg)和信號(Sig)的具體信息。
狀態(tài)欄:顯示當前GUI界面中導入的數(shù)據(jù)來源以及當前數(shù)據(jù)欄中網(wǎng)絡(Channel)、報文(Msg)和信號(Sig)的數(shù)量。
圖2 GUI界面
為了滿足*.xlsx、*.dbc和嵌入式軟件RTE層代碼路徑三種不同格式的CAN網(wǎng)絡數(shù)據(jù)庫導入,基于正則匹配開發(fā)不同的算法抓取不同格式的CAN網(wǎng)絡數(shù)據(jù)庫文件中的CAN網(wǎng)絡數(shù)據(jù)庫信息,再通過統(tǒng)一定義的*.json文件整理抓取到的數(shù)據(jù),最后將*.json數(shù)據(jù)插入到數(shù)據(jù)庫中,由用戶操作GUI界面與數(shù)據(jù)庫進行交互并將所需數(shù)據(jù)顯示在GUI界面上,如圖3所示。
圖3 導入數(shù)據(jù)的方式
抓取C文件格式的CAN網(wǎng)絡數(shù)據(jù)庫數(shù)據(jù)和抓取*.dbc格式的CAN網(wǎng)絡數(shù)據(jù)庫數(shù)據(jù)的方式原理基本一致,本質(zhì)上都是將文本文件讀取到內(nèi)存中,然后采用特定的正則匹配方法獲得所需數(shù)據(jù)。抓取*.xlsx格式的CAN網(wǎng)絡數(shù)據(jù)庫數(shù)據(jù)的方式也類似,唯一的區(qū)別是加載的數(shù)據(jù)來源于表格,通過openpyxl庫可以定位到所需的sheet和cell完成數(shù)據(jù)的逐個讀取并整理到*.json數(shù)據(jù)結(jié)構(gòu)中。
統(tǒng)一的*.json數(shù)據(jù)結(jié)構(gòu)不僅需要映射完整的CAN網(wǎng)絡數(shù)據(jù)庫字段以適配不同格式的CAN網(wǎng)絡數(shù)據(jù)庫數(shù)據(jù),并且考慮到CAN網(wǎng)絡數(shù)據(jù)庫數(shù)據(jù)之間有明顯的內(nèi)在層次和邏輯,通過多表外鍵級聯(lián)的形式實現(xiàn)CAN網(wǎng)絡數(shù)據(jù)庫網(wǎng)絡、報文和信號的關(guān)聯(lián),將*.json文件分為Channel.json、Msg.json和Signal.json三個文件對CAN網(wǎng)絡數(shù)據(jù)庫數(shù)據(jù)進行本地化的臨時存儲,每個json文件由若干個數(shù)據(jù)字典組成,每個字典對應的關(guān)鍵字如表1所示。
表1 *.json數(shù)據(jù)字段定義
序號Channel.json數(shù)據(jù)字段Msg.json數(shù)據(jù)字段Signal.json數(shù)據(jù)字段 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
SQLite數(shù)據(jù)庫是一個輕量級的開源數(shù)據(jù)庫系統(tǒng),以其單一的磁盤文件形式、零配置的使用前提和簡單易用的特性廣泛應用在桌面應用程序的數(shù)據(jù)管理項目中。在本文的CAN網(wǎng)絡數(shù)據(jù)庫管理平臺同樣采用SQLite數(shù)據(jù)庫對CAN網(wǎng)絡數(shù)據(jù)庫數(shù)據(jù)進行管控,自主開發(fā)了一系列的應用程序編程接口(Application Programming Interface, API)函數(shù),便捷地實現(xiàn)*.json數(shù)據(jù)的批量導入以及與GUI界面控件的數(shù)據(jù)交互,實現(xiàn)數(shù)據(jù)的增刪查改,在GUI界面上顯示用戶需求的CAN網(wǎng)絡數(shù)據(jù)庫數(shù)據(jù)。
為了將*.json數(shù)據(jù)文件中的字典數(shù)據(jù)集高效地導入SQLite數(shù)據(jù)庫,開發(fā)了*.json矩陣數(shù)據(jù)批量插入到SQLite表中的算法,其運作方式如圖4所示。首先確認*.json數(shù)據(jù)文件是否存在,若存在則讀取*.json數(shù)據(jù)至內(nèi)存,然后以*.json文件名在SQLite中創(chuàng)建對應文件名的數(shù)據(jù)表,以字典關(guān)鍵字為創(chuàng)建數(shù)據(jù)表的列標題,若*.json中的字典數(shù)據(jù)完整有效,則向SQLite發(fā)送插入數(shù)據(jù)的SQL指令,完成數(shù)據(jù)插入工作。
圖4 數(shù)據(jù)庫的創(chuàng)建
與*.json數(shù)據(jù)文件對應,SQLite數(shù)據(jù)庫中使用三個數(shù)據(jù)表分別存儲Channel、Msg和Signal的各個屬性信息,如圖5所示。
圖5 CAN網(wǎng)絡數(shù)據(jù)庫SQLite數(shù)據(jù)庫
為了避免CAN網(wǎng)絡數(shù)據(jù)庫源文件自身存在的信息錯誤或使用CAN網(wǎng)絡數(shù)據(jù)庫管理平臺編輯CAN網(wǎng)絡數(shù)據(jù)時引入的信息錯誤,開發(fā)了校驗算法對CAN網(wǎng)絡數(shù)據(jù)的一些屬性進行必要的檢查,校驗項目如表2所示。
表2 自動校驗內(nèi)容
序號內(nèi)容對象 1info_loss_checkChannel/Msg/Sig 2value_error_checkSig 3bit_repeat_checkMsg/Sig
info_loss_check:分別將Channel/Msg/Sig中不可或缺的CAN網(wǎng)絡數(shù)據(jù)信息進行簡單的非空校驗,當信息缺失時記錄在報告中。
value_error_check:僅對info_loss_check校驗數(shù)據(jù)完整的Sig數(shù)據(jù)對象進行校驗:
1)依據(jù)Signame字段中涵蓋的信號起、止位與Startbit字段和Length字段進行校驗,Signame字段描述的起/止位應該與Startbit和Length描述的字節(jié)位一致;
2)依據(jù)Signame字段中涵蓋的信號起/止位和Startvalue字段、Min字段、Max字段、Valuetype字段、Offset字段、Factor字段進行校驗,計算的物理最值應該Min字段和Max字段范圍內(nèi),Startvalue也不能超過該范圍。
bit_repeat_check:對隸屬于每一個Msg的Sig對象進行bit位重復定義校驗,每一個bit位只能被一個Sig信號定義。
校驗不通過的數(shù)據(jù)在GUI中會標注為紅色,在GUI中的狀態(tài)欄會顯示錯誤數(shù)據(jù)的個數(shù)以及錯誤數(shù)據(jù)所在的Tablewidget。通過工具欄的上一個錯誤按鈕控件或下一個錯誤按鈕控件,可以在數(shù)據(jù)欄中快速跳轉(zhuǎn)到錯誤數(shù)據(jù)行,用戶需要對錯誤信息進行修改并保存數(shù)據(jù)后,才可以進行CAN網(wǎng)絡數(shù)據(jù)庫文件的生成。
CAN網(wǎng)絡數(shù)據(jù)庫文件定義了整個車型CAN總線上交互的各個節(jié)點報文信號的信息,是車輛嵌入式軟件開發(fā)與測試的密碼本。然而在實際車型項目的研發(fā)過程中,CAN網(wǎng)絡數(shù)據(jù)會隨著車型項目開發(fā)進展不斷地完善與變更,各個控制器嵌入式軟件CAN通訊模塊代碼也需要隨之做出對應變更修改。對嵌入式軟件開發(fā)人員而言,明確每次輸入的CAN網(wǎng)絡數(shù)據(jù)庫文件的變更內(nèi)容以及CAN網(wǎng)絡數(shù)據(jù)庫文件與當前嵌入式軟件CAN通訊模塊代碼中的CAN網(wǎng)絡數(shù)據(jù)的差異,是極其繁瑣而又十分重要的內(nèi)容。
DbcManager支持DBC格式導入、Excel格式導入和嵌入式軟件RTE層代碼中抓取共三種方式獲得CAN網(wǎng)絡數(shù)據(jù),導入DbcManager的CAN網(wǎng)絡數(shù)據(jù)經(jīng)過結(jié)構(gòu)化整理后以*.db3存儲在SQLite數(shù)據(jù)庫中。對兩個不同的CAN網(wǎng)絡數(shù)據(jù)庫比對流程如圖6所示。
圖6 CAN網(wǎng)絡數(shù)據(jù)庫比對流程
選取兩個待比對的CAN網(wǎng)絡SQLite數(shù)據(jù)庫A.db3和CAN網(wǎng)絡SQLite數(shù)據(jù)庫B.db3,分別從中反向?qū)С鰆son格式數(shù)據(jù)文件Channel.json、Msg.json、Sig.json。
分別遍歷兩份Channel.json、Msg.json、Sig. json中的每一個數(shù)據(jù)對象獲得兩份CAN網(wǎng)絡數(shù)據(jù)的差異信息,差異信息內(nèi)容包含內(nèi)容增加item_ added、內(nèi)容刪除item_removed和內(nèi)容變更values_ changed,依據(jù)差異信息自動生成比對報告。
CAN網(wǎng)絡數(shù)據(jù)庫文件導出即導入CAN網(wǎng)絡數(shù)據(jù)的反向操作。在CAN網(wǎng)絡數(shù)據(jù)庫管理平臺GUI的菜單欄可以選擇*.xlsx格式、*.dbc格式和*.db3格式進行CAN網(wǎng)絡數(shù)據(jù)庫文件的輸出。為了避免輸出的CAN網(wǎng)絡數(shù)據(jù)庫文件存在低級的數(shù)據(jù)錯誤,在生成CAN網(wǎng)絡數(shù)據(jù)庫文件之前會自動調(diào)用校驗程序?qū)?shù)據(jù)庫中的CAN網(wǎng)絡數(shù)據(jù)庫數(shù)據(jù)進行檢查校驗,若不存在錯誤則生成指定格式的CAN網(wǎng)絡數(shù)據(jù)庫文件,否則提示“對錯誤信息進行修改后再執(zhí)行該操作”。
本文基于Python開發(fā)的DbcManager是一個運行于Windows環(huán)境的圖形用戶界面可執(zhí)行程序,可以便捷地加載不同格式的CAN網(wǎng)絡數(shù)據(jù)庫文件進行編輯、校驗和不同CAN網(wǎng)絡數(shù)據(jù)庫之間的數(shù)據(jù)比對。下面以一個實際工程應用進行詳細說明。
使用DbcManager導入某項目系統(tǒng)工程師提供的DBC文件進行校驗,自動生成校驗報告;再使用DbcManager讀取某控制器嵌入式軟件代碼中的CAN網(wǎng)絡數(shù)據(jù)和該DBC文件CAN網(wǎng)絡數(shù)據(jù)進行比對,自動生成比對報告。
導入的DBC文件CAN網(wǎng)絡數(shù)據(jù)如表3所示,包含4個DBC文件,共126個報文信息和1 220個信號信息。DbcManager校驗后生成的測試結(jié)果顯示共有43個信息存在數(shù)據(jù)值不正確,共3個報文信號存在Bit位重復定義,如圖7所示。
表 3 DbcManager校驗功能基本信息確認
測試人員測試項目數(shù)據(jù)來源基本信息 DbcManagerCAN網(wǎng)絡數(shù)據(jù)校驗D:/總線網(wǎng)絡協(xié)議.dbcChannel:4Msg:126Signal:1 220
在DbcManager中選擇兩份CAN網(wǎng)絡數(shù)據(jù)庫進行數(shù)據(jù)比對,基本信息如表4所示。點擊開始比對按鈕后,將分別遍歷兩份數(shù)據(jù)庫中Channel、Msg和Sig中各個字段的差異,自動生成的部分測試報告如圖8所示。
表4 DbcManager比對功能基本信息確認
測試人員測試項目數(shù)據(jù)來源A數(shù)據(jù)來源B DbcManagerCAN網(wǎng)絡數(shù)據(jù)比對D:/總線網(wǎng)絡協(xié)議.dbcD:/Project/BSW
圖8 DbcManager比對結(jié)果
本文研究了一種基于Python的DbcManager CAN網(wǎng)絡數(shù)據(jù)庫管理平臺,通過構(gòu)建不同算法適配不同格式的CAN網(wǎng)絡數(shù)據(jù)庫信息導入,通過SQLite數(shù)據(jù)庫完成對CAN網(wǎng)絡數(shù)據(jù)信息的統(tǒng)一管理,開發(fā)桌面用戶端集成數(shù)據(jù)抓取、數(shù)據(jù)編輯、數(shù)據(jù)校驗以及CAN網(wǎng)絡數(shù)據(jù)庫文件的生成等功能。實踐表明,DbcManager人機界面友好易于使用,多種方式篩選CAN網(wǎng)絡數(shù)據(jù)庫數(shù)據(jù),編輯數(shù)據(jù)方便快捷;自動校驗數(shù)據(jù),自動比對數(shù)據(jù),減少人為操作,降低出錯風險,極大地提高了工作效率,對CAN網(wǎng)絡的開發(fā)和CAN網(wǎng)絡各個節(jié)點控制器軟件的開發(fā)有高效的輔助作用。
[1] 陳穎,鐘成,李興華,等.自適應的車內(nèi)CAN總線安全機制[J].信息安全研究,2019,5(12):1076-1088.
[2] 胡志云.基于CAN總線在車輛中的應用[J].山西電子技術(shù),2020(1):59-60,64.
[3] 馬建輝,胡代榮,郭坤.一種汽車CAN總線網(wǎng)關(guān)的報文接收和發(fā)送方法[J].現(xiàn)代電子技術(shù),2018,41(11):5- 7,12.
[4] 方遒,姜瑜濤,張曉先,等.汽車電子基礎軟件標準體系研究[J].信息技術(shù)與標準化,2011(8):30-33,38.
[5] 江永聰.基于DBC的汽車CAN報文遠程采集與分析系統(tǒng)設計[J].電子技術(shù)與軟件工程,2014(14):203-204.
[6] 陳琪晟.基于DSP的CAN總線通信程序[J].鐵路通信信號工程技術(shù),2015,12(2):43-48.
[7] 王永輝.CANoe在整車系統(tǒng)開發(fā)測試中的應用[J].汽車實用技術(shù),2019,44(16):85-87.
[8] 惲海,曹瑩.2011年CAN總線車身控制系統(tǒng)需求與行業(yè)發(fā)展分析[J].汽車工業(yè)研究, 2012(6):33-37.
[9] 何曄.CAN總線報文丟失故障及其判定方法[J].科技視界,2015(33):126.
[10] 江永聰.基于DBC的汽車CAN報文遠程采集與分析系統(tǒng)設計[J].電子技術(shù)與軟件工程,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-),男,碩士,研究方向為嵌入式軟件開發(fā)與測試,E-mail:lamnas@126.com。