• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

      2021-07-05 05:04:00劉淞銘馬洪彥王貴山佟新禹張成慶王家雁
      汽車電器 2021年6期
      關(guān)鍵詞:報(bào)文總線工具

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

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

      1 引言

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

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

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

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

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

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

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

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

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

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

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

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

      3 系統(tǒng)功能

      Python是一種面向?qū)ο蟮摹⒔换ナ降?、解釋型的?jì)算機(jī)編程語(yǔ)言,具有實(shí)用性強(qiáng)、功能全面、性能高的特點(diǎn),擁有豐富的標(biāo)準(zhǔn)庫(kù)和第三方庫(kù)[3]。本系統(tǒng)基于Python3平臺(tái),通過面向?qū)ο箝_發(fā)方式進(jìn)行軟件開發(fā)。

      3.1 人機(jī)交互功能

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

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

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

      圖3 人機(jī)交互界面效果展示

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

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

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

      圖4 ECANTools_*.can報(bào)文范例

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

      圖5 ECANTools_*.can報(bào)文格式

      3.2.2 模塊功能

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

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

      3.3 目標(biāo)格式報(bào)文生成功能

      3.3.1 目標(biāo)報(bào)文格式分析

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

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

      圖7 *.asc報(bào)文格式

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

      3.3.2 模塊功能

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

      3.4 多線程工作模式

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

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

      4 實(shí)驗(yàn)測(cè)試

      4.1 實(shí)驗(yàn)搭建

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

      圖8 報(bào)文采集硬件工具

      4.2 實(shí)驗(yàn)結(jié)果分析

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

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

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

      5 結(jié)語(yǔ)

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

      附錄1

      目標(biāo)格式報(bào)文生成模塊部分代碼如下:

      猜你喜歡
      報(bào)文總線工具
      基于J1939 協(xié)議多包報(bào)文的時(shí)序研究及應(yīng)用
      汽車電器(2022年9期)2022-11-07 02:16:24
      波比的工具
      波比的工具
      CTCS-2級(jí)報(bào)文數(shù)據(jù)管理需求分析和實(shí)現(xiàn)
      淺析反駁類報(bào)文要點(diǎn)
      基于PCI Express總線的xHC與FPGA的直接通信
      機(jī)載飛控1553B總線轉(zhuǎn)以太網(wǎng)總線設(shè)計(jì)
      “巧用”工具
      讀者(2017年18期)2017-08-29 21:22:03
      ATS與列車通信報(bào)文分析
      多通道ARINC429總線檢查儀
      临安市| 白城市| 金门县| 昌宁县| 呼图壁县| 泰和县| 澄城县| 陵川县| 台北市| 隆林| 章丘市| 浙江省| 碌曲县| 扎赉特旗| 鹤峰县| 长海县| 长岭县| 孙吴县| 法库县| 萨嘎县| 辽宁省| 东乌珠穆沁旗| 新营市| 安西县| 同江市| 昆山市| 昔阳县| 镇宁| 松溪县| 漾濞| 通州市| 化德县| 沧州市| 昔阳县| 紫云| 信阳市| 东光县| 鲜城| 泸西县| 霸州市| 吉木乃县|