李波,張建,穆勇勇
西安雙特智能傳動(dòng)有限公司 陜西西安 710119
近年來(lái),汽車(chē)電子系統(tǒng)的功能越來(lái)越強(qiáng)大,其電子控制單元也越來(lái)越多。各個(gè)控制器之間的信息交換主要依靠車(chē)載網(wǎng)絡(luò)技術(shù),而CAN總線作為車(chē)載網(wǎng)絡(luò)系統(tǒng)的重要組成部分,在汽車(chē)電子系統(tǒng)的網(wǎng)絡(luò)通信與控制中得到廣泛應(yīng)用[1,2]。
為了了解安裝自動(dòng)變速器車(chē)輛的運(yùn)行情況,可以通過(guò)采集車(chē)輛實(shí)際運(yùn)行的報(bào)文并解析報(bào)文,分析車(chē)輛運(yùn)行的實(shí)際換擋次數(shù)。如果依靠人工來(lái)統(tǒng)計(jì)龐大的采集數(shù)據(jù),會(huì)消耗大量的時(shí)間并且效率較慢。本文旨在開(kāi)發(fā)一種CAN總線數(shù)據(jù)統(tǒng)計(jì)系統(tǒng),實(shí)現(xiàn)自動(dòng)統(tǒng)計(jì)換擋次數(shù),進(jìn)而解決統(tǒng)計(jì)大量數(shù)據(jù)帶來(lái)的諸多困難,提高效率。
本系統(tǒng)主要由三個(gè)功能模塊組成,分別為:人機(jī)交互、數(shù)據(jù)處理以及目標(biāo)結(jié)果生成。系統(tǒng)整體流程如圖1所示,人機(jī)交互主要包括待處理數(shù)據(jù)路徑和系統(tǒng)工作狀態(tài)的提示;數(shù)據(jù)處理包括數(shù)據(jù)提取和Message轉(zhuǎn)換;目標(biāo)結(jié)果生成包括數(shù)據(jù)重組、數(shù)據(jù)寫(xiě)入和目標(biāo)格式文件生成。

圖1 系統(tǒng)整體流程
Python是一種面向?qū)ο蟮摹⒔换ナ降摹⒔忉屝偷挠?jì)算機(jī)編程語(yǔ)言,具有實(shí)用性強(qiáng)、功能全面、性能高的特點(diǎn),擁有豐富的標(biāo)準(zhǔn)庫(kù)和第三方庫(kù)。本系統(tǒng)基于Python平臺(tái),通過(guò)面向?qū)ο箝_(kāi)發(fā)方式進(jìn)行軟件開(kāi)發(fā)[3]。
用戶將處理數(shù)據(jù)及軟件放到同一個(gè)文件夾里面,雙擊軟件系統(tǒng)開(kāi)始統(tǒng)計(jì)換擋次數(shù)并且彈出轉(zhuǎn)換進(jìn)度條界面,提示用戶轉(zhuǎn)換進(jìn)度,如圖2所示,當(dāng)顯示100%時(shí),提示用戶統(tǒng)計(jì)完成。

圖2 轉(zhuǎn)換進(jìn)度
(1)原始報(bào)文格式分析 如果需要提取信息功能,首先需要了解原始報(bào)文的記錄規(guī)則。現(xiàn)在以周立功CAN線記錄儀采集的“*.asc”格式報(bào)文為例進(jìn)行分析,采集的一段車(chē)輛運(yùn)行報(bào)文,如圖3所示。

圖3 車(chē)輛運(yùn)行報(bào)文
每條報(bào)文中包含的數(shù)據(jù)可以分為七組,分組示例見(jiàn)表1。第1組表示幀時(shí)間間隔;第2組表示此條報(bào)文通道;第3組用于記錄幀的報(bào)文ID;第4組表示報(bào)文傳輸方向;第5組表示符號(hào)d ;第6組表示信息長(zhǎng)度;第7組記錄幀的數(shù)據(jù)。

表1 報(bào)文數(shù)據(jù)分組示例
(2)數(shù)據(jù)處理功能 如圖4所示,該模塊分為兩部分,第一部分將ETC2報(bào)文按照一定的規(guī)則進(jìn)行拆分,其拆分信息按照設(shè)計(jì)的邏輯進(jìn)行計(jì)數(shù)。第二部分將其統(tǒng)計(jì)次數(shù)按照設(shè)定格式儲(chǔ)存為文本格式。數(shù)據(jù)處理功能是核心功能。

圖4 數(shù)據(jù)處理模塊
該模塊主要包括數(shù)據(jù)重組、數(shù)據(jù)寫(xiě)入及文件生成。系統(tǒng)將數(shù)據(jù)處理模塊生成的通用化信息以參數(shù)形式傳遞給目標(biāo)格式數(shù)據(jù)類(lèi),目標(biāo)格式數(shù)據(jù)類(lèi)創(chuàng)建目標(biāo)對(duì)象接收通用化報(bào)文對(duì)象中的數(shù)據(jù),并按照規(guī)定格式進(jìn)行組合,組合完成后,將其重組的數(shù)據(jù)寫(xiě)入文件中。
如圖5所示,本文中報(bào)文采集的硬件工具為周立功車(chē)載CAN-BUS 數(shù)據(jù)記錄儀。車(chē)輛為公司通勤班車(chē),如圖6所示。

圖5 周立功車(chē)載CAN-BUS 數(shù)據(jù)記錄儀

圖6 實(shí)驗(yàn)車(chē)輛
通過(guò)運(yùn)行該腳本會(huì)生成目標(biāo)文件.txt,將其內(nèi)容拷貝到Excel里面得出該工況下車(chē)輛整體換擋次數(shù),如圖7所示。

圖7 該工況下車(chē)輛整體換擋次數(shù)
本文利用Python語(yǔ)言實(shí)現(xiàn)了車(chē)輛換擋次數(shù)統(tǒng)計(jì)的目的,大大減少了人工進(jìn)行統(tǒng)計(jì)的工作量,并且比較靈活,可以進(jìn)行二次開(kāi)發(fā)(提取其他報(bào)文的信息)。經(jīng)試驗(yàn)測(cè)試,本系統(tǒng)能夠有效、準(zhǔn)確地對(duì)其換擋次數(shù)進(jìn)行統(tǒng)計(jì),給數(shù)據(jù)分析人員提供便利。