国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Python的汽車CAN總線報文格式轉(zhuǎn)換系統(tǒng)的設計與實現(xiàn)

2021-07-05 05:04劉淞銘馬洪彥王貴山佟新禹張成慶王家雁
汽車電器 2021年6期
關鍵詞:報文總線界面

劉淞銘,馬洪彥,王貴山,佟新禹,張成慶,王家雁

(東風汽車股份有限公司商品研發(fā)院,湖北 武漢 430000)

1 引言

近年來,汽車電子系統(tǒng)的功能越來越強大,其電子控制單元(Electronic control unit,ECU)越來越多,各ECU之間的信息交換主要依賴于車載網(wǎng)絡技術,而控制器局域網(wǎng)絡(Controller area network,CAN)總線作為車載網(wǎng)絡系統(tǒng)的重要組成部分,在汽車電子系統(tǒng)的網(wǎng)絡通信與控制中得到廣泛應用[1-2]。

在汽車行業(yè)中,CAN總線報文的分析貫穿于汽車電子系統(tǒng)開發(fā)的全過程,從前期的系統(tǒng)開發(fā),到中期的系統(tǒng)標定,再到后期的系統(tǒng)維護,都依賴于CAN總線報文的分析,CAN總線報文是汽車開發(fā)、調(diào)試、維護過程中分析解決問題的“第一手數(shù)據(jù)”。然而,目前市面上的CAN總線報文采集與錄制工具種類繁多,不同工具錄制的報文格式往往不同,具體體現(xiàn)在報文文件類型不同或報文信息排列方式不同,因此,報文文件往往只能通過錄制報文時所采用的上位機工具或其同一公司的分析工具進行解析。在實際開發(fā)過程中,開發(fā)人員經(jīng)常要解析不同公司錄制的報文,如主機廠解析供應商錄制的報文,如果沒有相應的報文解析工具,報文分析過程將會異常繁瑣甚至無法進行。

現(xiàn)目前,應用比較廣泛的CAN總線報文格式轉(zhuǎn)換工具為德國PEAK-System公司提供的PEAK-Converter軟件,此軟件實現(xiàn)了部分報文格式的轉(zhuǎn)換,但此軟件只支持目前國際上應用比較廣泛的報文格式,對于國內(nèi)開發(fā)的CAN卡錄制的報文格式以及一些小眾的報文格式則無法提供很好的支持。一些國內(nèi)的CAN卡廠家也開發(fā)了面向自家產(chǎn)品的報文格式轉(zhuǎn)換工具,但其一般只支持自家產(chǎn)品錄制報文的格式轉(zhuǎn)換,且大多并未得到廣泛的應用。綜上所述,現(xiàn)目前國內(nèi)亟須開發(fā)一種低成本、通用性強、二次開發(fā)方便的CAN總線報文格式轉(zhuǎn)換系統(tǒng)。

本文旨在開發(fā)一種CAN總線報文格式轉(zhuǎn)換系統(tǒng),實現(xiàn)CAN總線報文文件格式轉(zhuǎn)換的功能,進而解決汽車電子系統(tǒng)開發(fā)過程中因CAN總線報文文件格式的多樣性給報文分析帶來的諸多困難,提高開發(fā)效率。

2 系統(tǒng)架構(gòu)

本系統(tǒng)面向的報文錄制軟件為目前現(xiàn)場應用比較廣泛的CAN Test和ECAN Tools軟件,具體包括5種格式的報文:由CAN Test錄制的*.txt格式報文、*.csv格式報文以及由ECAN Tools錄制的*.txt格式報文、*.csv格式報文、*.can格式報文。

本系統(tǒng)面向的報文分析軟件為德國Vector公司開發(fā)的CAN open environment(CANoe)軟件,即將上述5種格式的報文轉(zhuǎn)換為CANoe軟件能夠直接解析的*.asc格式報文。

本系統(tǒng)基于Python語言實現(xiàn)CAN總線報文格式轉(zhuǎn)換功能,從整體架構(gòu)上分為3個層次:工具層、應用層和人機交互層,如圖1所示。

圖1 系統(tǒng)整體架構(gòu)圖

工具層是一系列通用方法的集合,按原始報文錄制工具分類,定義了報文處理過程中的通用方法,供應用層中的報文類繼承。應用層是報文屬性與非通用方法的集合,按報文格式分類,分別定義了不同格式報文具有的不同屬性及處理不同格式報文過程中用到的個性方法,并繼承了工具層中定義的通用方法,負責實際的報文格式轉(zhuǎn)換過程。目標格式報文類定義了目標報文的屬性,并提供了生成及儲存目標格式報文的方法。同時,目標格式報文類提供了與原始報文類之間的通用化接口,只需在二次開發(fā)接口中添加相應的屬性和方法,便可實現(xiàn)系統(tǒng)的功能拓展。人機交互層提供了用戶的操作界面以及系統(tǒng)狀態(tài)的指示界面,是用戶與系統(tǒng)之間溝通的橋梁。

本系統(tǒng)主要由3個功能模塊組成,分別為:人機交互、數(shù)據(jù)處理、目標格式報文生成。系統(tǒng)整體流程如圖2所示。人機交互主要包括原始報文路徑的選擇、目標報文路徑的選擇、原始報文錄制工具的選擇、原始報文錄制格式的選擇、系統(tǒng)工作狀態(tài)的提示等,并實現(xiàn)將原始報文中包含的信息和數(shù)據(jù)傳遞給系統(tǒng)應用層的功能。數(shù)據(jù)處理包括數(shù)據(jù)的提取、Time轉(zhuǎn)換、Channel轉(zhuǎn)換、ID轉(zhuǎn)換、Dir轉(zhuǎn)換、Message轉(zhuǎn)換等,實現(xiàn)將原始報文中的信息和數(shù)據(jù)按一定的規(guī)則存儲在原始報文對象的屬性中,并通過通用化接口將這些屬性傳遞給目標格式報文對象。目標格式報文生成包括數(shù)據(jù)重組、數(shù)據(jù)寫入、目標格式報文文件生成等,實現(xiàn)將接收到的報文對象屬性按一定的規(guī)則重組為CANoe能夠直接解析的格式,并生成新的報文文件。

圖2 系統(tǒng)整體流程圖

3 系統(tǒng)功能

Python是一種面向?qū)ο蟮?、交互式的、解釋型的計算機編程語言,具有實用性強、功能全面、性能高的特點,擁有豐富的標準庫和第三方庫[3]。本系統(tǒng)基于Python3平臺,通過面向?qū)ο箝_發(fā)方式進行軟件開發(fā)。

3.1 人機交互功能

本系統(tǒng)的人機交互功能基于Qt的Python庫——PySide2實現(xiàn),PySide2提供了Python與Qt之間的接口,通過調(diào)用PySide2中的API,便可以快速完成GUI應用程序的創(chuàng)建。

系統(tǒng)主界面包括:原始報文路徑和目標報文路徑的選擇和顯示、原始報文錄制工具和格式的選擇、開始轉(zhuǎn)換按鈕。對于原始報文路徑和目標報文路徑的選擇和顯示,通過QPushButton類和QLineEdit類創(chuàng)建對象push_button_om(原始報文選擇按鈕)、line_edit_om(原始報文路徑顯示框)、push_button_tm(目標報文選擇按鈕)、line_edit_tm(目標報文路徑顯示框),通過QFileDialog類中的getOpenFileName方法和getSaveFileName方法實現(xiàn)文件的選擇和文件路徑的獲取,并將返回的文件路徑分別傳遞到UI界面的報文路徑顯示框和系統(tǒng)的應用層中。對于原始報文錄制工具和格式的選擇通過QComboBox類創(chuàng)建對象combo_box_tool(工具選擇框)和combo_box_format(格式選擇框),并通過currentText方法獲取用戶當前選項并傳遞到系統(tǒng)的應用層中。系統(tǒng)主界面效果如圖3a所示。

狀態(tài)提示界面包括轉(zhuǎn)換進度條界面和轉(zhuǎn)換完成提示界面。其中轉(zhuǎn)換進度條界面通過QProgressBar類創(chuàng)建進度條對象并調(diào)用相關方法來實現(xiàn),轉(zhuǎn)換進度條界面和轉(zhuǎn)換完成提示界面如圖3b、圖3c所示。

圖3 人機交互界面效果展示

使用時,用戶分別在主窗口選擇“原始報文路徑”、“目標報文路徑”、“錄制工具”及“報文格式”后,點擊“轉(zhuǎn)換”按鈕,系統(tǒng)將開始報文格式轉(zhuǎn)換并彈出轉(zhuǎn)換進度條界面,提示用戶轉(zhuǎn)換進度,轉(zhuǎn)換完成后,系統(tǒng)將彈出轉(zhuǎn)換完成提示界面,提示用戶轉(zhuǎn)換完成。

3.2 數(shù)據(jù)處理功能

3.2.1 原始報文格式分析要實現(xiàn)信息提取的功能,首先要了解原始報文的記錄規(guī)則。本文以ECAN Tools軟件錄制的*.can格式報文為例進行分析,圖4是一段ECANTools_*.can格式的報文范例。

圖4 ECANTools_*.can報文范例

ECAN Tools軟件的用戶手冊中對*.can格式的報文進行了介紹,每條報文中包含的數(shù)據(jù)可以分為5組。第1組表示幀時間間隔,記錄格式為:s.ms.μs;第2組表示此條報文為標準幀還是擴展幀,標準幀為0,擴展幀為1;第3組表示此條報文為數(shù)據(jù)幀還是遠程幀,數(shù)據(jù)幀為0,遠程幀為1;第4組和第5組分別用于記錄幀ID和幀數(shù)據(jù),具體如圖5所示。

圖5 ECANTools_*.can報文格式

3.2.2 模塊功能

數(shù)據(jù)處理功能是本系統(tǒng)的核心功能。此模塊的代碼主要包括通用方法類和原始報文類,通用方法類為原始報文類提供一系列方法,原始報文類則執(zhí)行具體任務。數(shù)據(jù)處理功能的實現(xiàn)主要分為兩個部分:第1部分,系統(tǒng)分別將原始報文以參數(shù)的形式逐條傳遞給原始報文類,原始報文類分別為每條原始報文創(chuàng)建一個通用化報文對象,通用化報文對象調(diào)用原始報文類中的方法將原始報文中的信息提取出來并轉(zhuǎn)換為通用化的格式(符合目標格式報文類通用化接口規(guī)定的格式)存儲在對象的屬性中;第2部分,系統(tǒng)分別將通用化報文對象以參數(shù)形式逐條傳入目標格式報文類,提供給目標格式報文生成模塊使用。數(shù)據(jù)處理模塊的工作流程如圖6所示。

圖6 數(shù)據(jù)處理流程圖

3.3 目標格式報文生成功能

3.3.1 目標報文格式分析

CANoe軟件的說明文檔《CAN_LOG_TRIGGER_ASC_Format》中規(guī)定了*.asc格式報文的記錄方式。文件的開頭需要聲明報文記錄的開始時間、信息記錄方式和時間戳格式,文檔中規(guī)定信息記錄方式可以為十六進制(“base hex”)或十進制(“base dec”),時間戳可以為絕對時間戳(“timestamps absolute”)或相對時間戳(“timestamps relative”)。本文選用十六進制和絕對時間戳的記錄方式。

文檔中規(guī)定的報文記錄的內(nèi)容包括:時間、通道序號、報文ID、報文傳輸方向、信息長度、信息、特殊消息標志,具體如圖7所示。

圖7 *.asc報文格式

報文文件以“End TriggerBlock”結(jié)束,因此,完成數(shù)據(jù)錄入后,需要在文件結(jié)尾輸入“End TriggerBlock”,表示記錄結(jié)束。

3.3.2 模塊功能

此模塊的功能主要包括數(shù)據(jù)重組、數(shù)據(jù)寫入、文件生成。系統(tǒng)將數(shù)據(jù)處理模塊創(chuàng)建的通用化報文對象以參數(shù)形式傳遞給目標格式報文類,目標格式報文類創(chuàng)建目標報文對象接收通用化報文對象中包含的數(shù)據(jù),并按照規(guī)定的格式進行組合,組合完成后,系統(tǒng)將重組后的數(shù)據(jù)寫入文件中。本模塊的部分實現(xiàn)代碼請詳見附錄1。

3.4 多線程工作模式

上述功能如果均在系統(tǒng)主線程中執(zhí)行,會導致本系統(tǒng)無法同時進行多個報文格式轉(zhuǎn)換任務,此外,在報文格式轉(zhuǎn)換任務進行的過程中,系統(tǒng)的主界面也將無法操作。為了進一步優(yōu)化系統(tǒng)性能,實現(xiàn)多任務同時處理的功能,本系統(tǒng)采用多線程工作模式。

本功能通過Python3的標準庫threading實現(xiàn)。本系統(tǒng)的人機交互模塊在系統(tǒng)主線程中執(zhí)行,系統(tǒng)中的數(shù)據(jù)處理模塊和目標格式報文生成模塊則封裝到子線程調(diào)用函數(shù)中,當用戶發(fā)起“轉(zhuǎn)換”指令后,系統(tǒng)將為此任務創(chuàng)建一個子線程,并在子線程中執(zhí)行數(shù)據(jù)處理和目標格式報文生成的工作。系統(tǒng)會為每項“轉(zhuǎn)換”任務分別創(chuàng)建一個子線程,并在任務結(jié)束后關閉對應的子線程。

4 實驗測試

4.1 實驗搭建

本文中報文采集的硬件工具為:德國Vector公司的VN1630A和國產(chǎn)的CAN總線分析儀USBCAN-ⅡC,報文錄制的軟件工具為:CANoe 11.0 SP3、CAN Test 2.70、ECAN Tools 5.99,報文分析軟件工具為:CANoe 11.0 SP3。IDE環(huán)境為PyCharm。報文采集硬件工具如圖8所示,其中圖8a為VN1630A,圖8b為USBCAN-ⅡC。

圖8 報文采集硬件工具

4.2 實驗結(jié)果分析

將USBCAN-Ⅱ C與Vector VN1630A同時接入某新能源純電動汽車的同一路CAN總線中,分別通過CAN Test2.70、ECAN Tools 5.99軟件錄制CANTest_*.txt、CANTest_*.csv、 ECANTools_*.txt、ECANTools_*.csv、ECANTools_*.can格式的報文作為原始報文,通過CANoe 11.0 SP3軟件錄制*.asc格式的報文作為參照報文,分別通過本文中開發(fā)的系統(tǒng)將上述5種格式的原始報文轉(zhuǎn)換為*.asc格式,并將轉(zhuǎn)換完成后的報文與參照報文分別導入CANoe 11.0 SP3軟件中進行數(shù)據(jù)分析,由于汽車CAN總線報文中包含大量的信息,本文選取整車絕緣電阻值作為分析對象,具體分析結(jié)果如圖9所示,其中每組圖像上部分為參照報文的分析圖像,下部分為本系統(tǒng)轉(zhuǎn)換得到的報文的分析圖像,兩者在時間軸上的偏差為報文錄制開始時間不同步導致。

圖9 測試數(shù)據(jù)分析圖像

通過對以上5組數(shù)據(jù)的對比分析可知,本系統(tǒng)能夠?qū)⑸鲜?種格式的報文轉(zhuǎn)換為*.asc格式的報文供CANoe軟件進行分析,本系統(tǒng)對CAN Test和ECAN Tools這兩款軟件錄制的報文均具有較好的兼容性,且轉(zhuǎn)換過程不會導致信息丟失或改變,符合設計要求。

5 結(jié)語

本文利用Python語言實現(xiàn)了一種汽車CAN總線報文格式轉(zhuǎn)換系統(tǒng),本系統(tǒng)具有性價比高、通用性強的特點,并針對小眾報文格式提供了靈活的二次開發(fā)接口,增強了系統(tǒng)的兼容性,同時其多線程工作模式保證了系統(tǒng)的工作效率。經(jīng)實驗測試,本系統(tǒng)能夠高效、準確地實現(xiàn)報文格式的轉(zhuǎn)換功能,給汽車電子電器工程師的開發(fā)工作提供便利。

附錄1

目標格式報文生成模塊部分代碼如下:

猜你喜歡
報文總線界面
基于J1939 協(xié)議多包報文的時序研究及應用
以太網(wǎng)QoS技術研究及實踐
不同截面類型鋼管RPC界面粘結(jié)性能對比研究
避免饑餓的CAN 總線高優(yōu)先級反轉(zhuǎn)算法
關于CAN總線的地鐵屏蔽門控制思路論述
基于報文類型的限速值動態(tài)調(diào)整
國企黨委前置研究的“四個界面”
界面成立自媒體聯(lián)盟深挖原生內(nèi)容創(chuàng)造力
Q&A熱線
PCI9030及其PCI總線接口電路設計