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

?

一種基于python 統(tǒng)計(jì)整車(chē)故障的系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

2023-06-28 19:05:24金旅全勇黃真楊希胡天妹
關(guān)鍵詞:報(bào)文矩陣

金旅 全勇 黃真 楊希 胡天妹

摘要:由于系統(tǒng)功能開(kāi)發(fā)所需,同時(shí)也為了方便排查故障,各系統(tǒng)通常在CAN 總線上定義各種故障信號(hào),用于告訴技術(shù)人員影響其正常工作的故障原因。當(dāng)前判斷整車(chē)故障的主要方式有:開(kāi)發(fā)診斷儀讀取故障碼、分析遠(yuǎn)程監(jiān)控系統(tǒng)上傳到監(jiān)控平臺(tái)的數(shù)據(jù)以及錄制報(bào)文并逐一分析故障。這3種方式在開(kāi)發(fā)階段和測(cè)試階段都有一定的局限性。本文基于python 編程設(shè)計(jì)工程,結(jié)合整車(chē)DBC 矩陣分析整車(chē)BLF 報(bào)文后,自動(dòng)化統(tǒng)計(jì)報(bào)文內(nèi)整車(chē)所有故障,讓技術(shù)人員快速知道整車(chē)報(bào)文內(nèi)的所有故障信號(hào),從而提高問(wèn)題排查效率。

關(guān)鍵詞:python ;BLF 報(bào)文;DBC 矩陣;故障統(tǒng)計(jì)

中圖分類號(hào):TP277 文獻(xiàn)標(biāo)識(shí)碼:A

0 引言

純電動(dòng)汽車(chē)各系統(tǒng)故障一般包括:與其他系統(tǒng)通信丟失、供電電源欠壓或過(guò)壓、高壓互鎖故障、絕緣故障、過(guò)溫、過(guò)流、各系統(tǒng)檢測(cè)其他系統(tǒng)的故障以及各系統(tǒng)自身特有的故障等。當(dāng)整車(chē)發(fā)生故障時(shí),如車(chē)輛無(wú)法起動(dòng)上高壓,技術(shù)人員需要知道整車(chē)各系統(tǒng)具體報(bào)的故障,從而判斷故障源和故障原因。目前獲取或監(jiān)控整車(chē)故障常用的方法如下。

(1)診斷儀讀取。該方法只能對(duì)整車(chē)出現(xiàn)的故障做一個(gè)基礎(chǔ)的故障判斷[1],在設(shè)計(jì)開(kāi)發(fā)階段該方法局限性較大,主要體現(xiàn)在:①在診斷儀上體現(xiàn)的故障不全,很多故障并沒(méi)有做診斷;②一般不體現(xiàn)故障發(fā)生時(shí)間以及故障發(fā)生次數(shù)。

(2)利用CANoe 等分析軟件觀察。但CANoe 等軟件一般沒(méi)有統(tǒng)計(jì)整車(chē)故障的功能,由于整車(chē)的故障信號(hào)特別多,逐一觀察這些信號(hào)的方法效率低。

(3)開(kāi)發(fā)遠(yuǎn)程監(jiān)控系統(tǒng)監(jiān)控。將采集到的整車(chē)故障上傳到數(shù)據(jù)平臺(tái),通過(guò)數(shù)據(jù)平臺(tái)監(jiān)控。該方法無(wú)論是在設(shè)計(jì)開(kāi)發(fā)階段還是量產(chǎn)后的局限性也比較大,主要體現(xiàn)在:①遠(yuǎn)程監(jiān)控系統(tǒng)采集頻率一般是秒級(jí)[2],采集頻率越高則相對(duì)成本就會(huì)越高;而某個(gè)系統(tǒng)故障導(dǎo)致相關(guān)系統(tǒng)報(bào)故障的時(shí)間一般是毫秒級(jí),因此通過(guò)數(shù)據(jù)平臺(tái)的數(shù)據(jù)很難確定各系統(tǒng)報(bào)故障的先后順序;②各主機(jī)廠基于需求、成本等考慮,遠(yuǎn)程監(jiān)控系統(tǒng)采集的故障信號(hào)個(gè)數(shù)有限,很多故障沒(méi)有上傳,從而導(dǎo)致無(wú)法分析故障原因。

綜合以上3 點(diǎn),在分析整車(chē)故障原因時(shí),對(duì)分析人員綜合能力要求較高。本文介紹一種基于python,根據(jù)整車(chē)BLF 報(bào)文統(tǒng)計(jì)整車(chē)故障的編程設(shè)計(jì)與實(shí)現(xiàn),能夠讓分析人員快速、明確知道整車(chē)各系統(tǒng)所報(bào)的故障,減少其推測(cè)與驗(yàn)證故障原因的時(shí)間,從而提高問(wèn)題排查效率。

1 引出故障信號(hào)列表

整車(chē)實(shí)時(shí)故障排查一般從源控制器、傳輸線路和目標(biāo)控制器三大方面去排查[3]。本文通過(guò)獲取整車(chē)報(bào)文內(nèi)各系統(tǒng)報(bào)出故障的設(shè)計(jì)與實(shí)現(xiàn),該結(jié)果用于輔助確認(rèn)導(dǎo)致故障發(fā)生的源控制器。

獲取整車(chē)報(bào)文內(nèi)各系統(tǒng)報(bào)的故障信息,首先需要知道各系統(tǒng)有哪些ID 包含有故障信號(hào),以及每一個(gè)故障信號(hào)定義是故障的信號(hào)值有哪些。將這些信息整理后得到整車(chē)故障信號(hào)列表,即整車(chē)DBC 內(nèi)各系統(tǒng)定義為故障的ID、信號(hào)名稱以及信號(hào)名稱對(duì)應(yīng)定義為故障的信號(hào)值列表(圖1)。然后通過(guò)整車(chē)故障信號(hào)列表的ID 可以篩選出BLF 報(bào)文中定義有故障信號(hào)的報(bào)文幀,再通過(guò)故障信號(hào)名稱及該信號(hào)名稱定義為故障的信號(hào)值列表判斷整車(chē)是否有故障。本設(shè)計(jì)將整車(chē)的故障信號(hào)列表導(dǎo)出為T(mén)XT 文檔,而不是直接將其寫(xiě)在python 編程代碼中。這主要考慮當(dāng)車(chē)型變更導(dǎo)致DBC發(fā)生變更,或者不同車(chē)型之間整車(chē)DBC 定義差異大,表現(xiàn)出定義為故障的信號(hào)ID 不同,定義為故障的信號(hào)名稱不同,同一個(gè)故障信號(hào)定義為故障的值列表不同,或者新增故障信號(hào)等導(dǎo)致不__同車(chē)型需要不同的整車(chē)故障信號(hào)列表時(shí),不需要修改代碼,僅需要根據(jù)變更點(diǎn)變更TXT 文檔即可。這樣可以通過(guò)不同TXT 文檔的導(dǎo)入從而實(shí)現(xiàn)同一個(gè)工程可以適用不同的車(chē)型,讓工程簡(jiǎn)單化。

2 導(dǎo)出整車(chē)故障信號(hào)列表

本設(shè)計(jì)選擇python 的編程設(shè)計(jì)環(huán)境,它具有豐富和強(qiáng)大的庫(kù),常被稱為膠水語(yǔ)言,能夠把用其他語(yǔ)言制作的各種模塊很輕松地連接在一起,是一門(mén)更易學(xué)、更嚴(yán)謹(jǐn)?shù)某绦蛟O(shè)計(jì)語(yǔ)言[4]。純電動(dòng)汽車(chē)各電子控制單元之間需要進(jìn)行大量的數(shù)據(jù)交換,而通信線路信息承載力是有上限的,如若把日益增多的電子控制單元全部掛載在同一條線路上,就很容易出現(xiàn)總線負(fù)荷過(guò)大,導(dǎo)致系統(tǒng)實(shí)時(shí)響應(yīng)速度下降[5]。因此主機(jī)廠在研發(fā)設(shè)計(jì)過(guò)程中,會(huì)先設(shè)計(jì)出整車(chē)網(wǎng)絡(luò)架構(gòu),并依據(jù)此架構(gòu)及ECU 之間的功能交互設(shè)計(jì)網(wǎng)絡(luò)總線數(shù)據(jù)庫(kù)文件[6],即DBC 文件。整車(chē)各系統(tǒng)定義的故障信號(hào)信息包含在其中。通過(guò)整車(chē)DBC 導(dǎo)出整車(chē)故障信號(hào)列表的主要設(shè)計(jì)步驟如下。

(1) 想要獲取整車(chē)DBC 文件的內(nèi)容, 需要先將其導(dǎo)入python 中,將其解析后獲取想要的內(nèi)容。通過(guò)python 自帶函數(shù)cantools.db.load_file() 加載整車(chē)DBC。

(2)加載整車(chē)的DBC 結(jié)果,再利用python 自帶函數(shù)self.get_message_by_name() 獲取每個(gè)節(jié)點(diǎn)的定義信息( 即節(jié)點(diǎn)ID)。然后利用print 函數(shù)打印出每個(gè)節(jié)點(diǎn)ID、信號(hào)名稱、信號(hào)值及信號(hào)值定義(圖2)。

(3)由于各系統(tǒng)設(shè)計(jì)人員定義故障名稱習(xí)慣不同,很難自動(dòng)識(shí)別故障定義,因此為了確保無(wú)誤的同時(shí)減少設(shè)計(jì)復(fù)雜度,需要人工對(duì)打印出來(lái)的結(jié)果進(jìn)行篩選。將篩選結(jié)果整理到TXT 文檔中,從而得到整車(chē)故障信號(hào)列表。

3 對(duì)整車(chē)故障信號(hào)列表再處理

整車(chē)報(bào)文按ID 以時(shí)間順序排列,如果直接用整車(chē)故障信號(hào)列表逐一判斷是否有故障,那么每一幀報(bào)文都需要遍歷一次整車(chē)故障信號(hào)列表。為提高判斷效率,可以將整車(chē)故障信號(hào)列表再處理,得到不重復(fù)的故障ID 列表,這樣僅需要對(duì)每一幀報(bào)文比對(duì)是否屬于故障ID 列表,從而提高統(tǒng)計(jì)效率(圖3)。對(duì)整車(chē)故障信號(hào)列表再處理的目的如下。

(1)對(duì)整車(chē)故障信號(hào)列表內(nèi)的故障ID 去重得到故障ID 列表,如此可以提高篩選BLF 報(bào)文中定義有故障信號(hào)的報(bào)文幀效率。

(2)用故障ID 遍歷整車(chē)故障信號(hào)列表,得到每個(gè)故障ID 對(duì)應(yīng)的信號(hào)列表及每一個(gè)信號(hào)定義是故障的值列表。有了該對(duì)應(yīng)關(guān)系,才知道篩選出的報(bào)文幀需要判斷的信號(hào)列表,以及判斷該信號(hào)列表內(nèi)的每一個(gè)信號(hào)是否有故障。

4 根據(jù)BLF 報(bào)文統(tǒng)計(jì)整車(chē)故障

處理得到故障列表falut_idmsg_list 后,利用其判斷整車(chē)報(bào)文內(nèi)是否有故障的設(shè)計(jì)與實(shí)現(xiàn)。

(1)將BLF 文件處理成列表,這可以通過(guò)python 設(shè)計(jì)好函數(shù)實(shí)現(xiàn),無(wú)需設(shè)計(jì)者單獨(dú)開(kāi)發(fā)。利用python 自帶函數(shù)can.BLFReader() 讀取BLF 文件,得到按時(shí)間排序的報(bào)文幀。需要注意的是,在排查問(wèn)題錄制BLF 報(bào)文時(shí),如果是必現(xiàn)的問(wèn)題,先斷開(kāi)低壓供電蓄電池的連接,等待5 s 待所有系統(tǒng)均休眠后,重新連接低壓蓄電池。此時(shí)各系統(tǒng)已經(jīng)初始化,可以立即開(kāi)始錄報(bào)文。嘗試復(fù)現(xiàn)故障,如此可以得到故障發(fā)生的時(shí)序,避免由于各系統(tǒng)恢復(fù)故障的設(shè)計(jì)不同,得不到原始的各系統(tǒng)各節(jié)點(diǎn)報(bào)故障時(shí)序,從而影響判斷故障源。如果是偶發(fā)的問(wèn)題,盡量嘗試復(fù)現(xiàn),拿到從不報(bào)故障到報(bào)故障的過(guò)程報(bào)文。

(2)考慮報(bào)文內(nèi)可能存在錯(cuò)誤幀,由于錯(cuò)誤幀的報(bào)文長(zhǎng)度一般不同于正常報(bào)文幀,因此可先根據(jù)報(bào)文長(zhǎng)度過(guò)濾掉錯(cuò)誤幀。當(dāng)然,如若還有其他錯(cuò)誤幀,也可以利用其特有的屬性先將其濾掉,以防止程序在運(yùn)行后出現(xiàn)意料之外的bug。

(3)篩選出來(lái)的報(bào)文幀,判斷其ID 是否屬于falut_idmsg_list 內(nèi)的ID。如果是,則進(jìn)行下一步;如果不是則將其過(guò)濾,繼續(xù)判斷下一幀報(bào)文的ID。

(4)比對(duì)falut_idmsg_list 內(nèi)具體的信號(hào)名稱列表,利用python 編程設(shè)計(jì)函數(shù),計(jì)算出每一個(gè)信號(hào)的值,判斷是否為定義故障的值。如果是,則記錄到故障日志列表。編程設(shè)計(jì)說(shuō)明如下:①利用can.BLFReader() 讀取BLF 報(bào)文的log,但該函數(shù)并沒(méi)有具體可以讀取數(shù)據(jù)域的參數(shù),需要編程設(shè)計(jì)獲取log 內(nèi)8 字節(jié)的數(shù)據(jù)域;②編程設(shè)計(jì)通過(guò)信號(hào)ID 及信號(hào)名稱獲取信號(hào)長(zhǎng)度、起始位、精度和偏移量,這4 個(gè)參數(shù)都可以通過(guò)python 自帶函數(shù)庫(kù)獲??;③編程實(shí)現(xiàn)根據(jù)4 個(gè)參數(shù)解析數(shù)據(jù)域,得到信號(hào)值。

(5) 根據(jù)故障日志, 打印統(tǒng)計(jì)的整車(chē)故障結(jié)果, 利用Tkinter 設(shè)計(jì)GUI 界面。

5 系統(tǒng)設(shè)計(jì)

5.1 主流程圖設(shè)計(jì)

統(tǒng)計(jì)整車(chē)故障的系統(tǒng)主流程圖如圖4 所示??梢钥闯觯趐ython 統(tǒng)計(jì)整車(chē)故障的系統(tǒng)設(shè)計(jì)流程如下:①整車(chē)故障信號(hào)列表導(dǎo)出;②利用python 對(duì)整車(chē)故障信號(hào)列表進(jìn)行再處理;③對(duì)BLF 文件讀取、過(guò)濾,遍歷故障信號(hào)并確認(rèn)故障信號(hào)值是否觸發(fā);④記錄整車(chē)故障日志列表;⑤統(tǒng)計(jì)整車(chē)故障通過(guò)界面展示、打印故障日志到TXT 文檔。

5.2 系統(tǒng)驗(yàn)證

系統(tǒng)設(shè)計(jì)完成后運(yùn)行如下。

(1)將BLF 文件地址、整車(chē)DBC 地址和故障信號(hào)列表地址通過(guò)界面?zhèn)鬟f到python 編程設(shè)計(jì)的底層,填寫(xiě)完成后點(diǎn)擊開(kāi)始統(tǒng)計(jì)。

(2)統(tǒng)計(jì)完成后,在界面左下方可以清晰看出發(fā)生故障的通道、節(jié)點(diǎn)名稱、故障信號(hào)名稱以及整個(gè)報(bào)文期間發(fā)生的故障累計(jì)幀數(shù)。這不僅可以幫助技術(shù)人員快速定位故障原因,還可以發(fā)現(xiàn)一些對(duì)實(shí)車(chē)影響不大的故障。這些故障通常不易發(fā)現(xiàn),但它們的存在始終存在一定的隱患,如果在設(shè)計(jì)開(kāi)發(fā)階段發(fā)現(xiàn)并及時(shí)解決掉,可以避免問(wèn)題流入市場(chǎng),影響主機(jī)廠的品牌口碑。

(3)本設(shè)計(jì)還開(kāi)發(fā)了獲取整車(chē)故障信息過(guò)程中主要步驟的用時(shí),并通過(guò)界面展示。其目的是為了知道程序各階段的運(yùn)行用時(shí),以供開(kāi)發(fā)者優(yōu)化程序的方向,提高統(tǒng)計(jì)效率。如若需要提升獲取故障日志列表的效率,在此建議考慮多線程設(shè)計(jì)開(kāi)發(fā)的思路。

(4)在左下角輸入打印故障日志列表的路徑,輸入完成后點(diǎn)擊“打印故障信號(hào)日志”,打開(kāi)界面包含故障發(fā)生時(shí)間、節(jié)點(diǎn)名稱、通道、信號(hào)名稱和故障值(圖5)。按故障發(fā)生時(shí)間先后順序,打印故障日志,可以讓排查人員知道問(wèn)題發(fā)生的先后順序。當(dāng)然也可以利用CANoe 等分析軟件,根據(jù)故障統(tǒng)計(jì)結(jié)果逐一提取具體的故障信號(hào)來(lái)分析。

6 結(jié)束語(yǔ)

本研究通過(guò)python 編程設(shè)計(jì),實(shí)現(xiàn)統(tǒng)計(jì)整車(chē)BLF 報(bào)文內(nèi)的整車(chē)故障,通過(guò)該設(shè)計(jì)可以快速找出整車(chē)CAN 報(bào)文內(nèi)各系統(tǒng)發(fā)出的故障,從而輔助技術(shù)人員排查定位問(wèn)題,同時(shí)也是對(duì)各系統(tǒng)功能的一種加強(qiáng)測(cè)試,可以發(fā)現(xiàn)一些對(duì)實(shí)車(chē)使用影響不大的問(wèn)題。由于各主機(jī)廠DBC 的保密性,該方法主要適用于各主機(jī)廠研發(fā)人員,不適用于售后維修排查。

此外,該方法僅適用輔助分析故障源,快速縮小排查范圍,具體的故障源判斷以及故障解決還需要專業(yè)技術(shù)人員。往往整車(chē)某個(gè)問(wèn)題涉及多個(gè)系統(tǒng),逐一排查各系統(tǒng)很容易造成人力物力的浪費(fèi),同時(shí)也不容易定責(zé)為哪個(gè)系統(tǒng)負(fù)責(zé)人去排查。有了本研究所設(shè)計(jì)的系統(tǒng),可以很好解決這2 個(gè)問(wèn)題。

【參考文獻(xiàn)】

[1] 劉俊. 淺析新能源汽車(chē)維修中電子診斷技術(shù)的應(yīng)用[J]. 汽車(chē)世界,2020(01):121-122.

[2] 李坤. 車(chē)聯(lián)網(wǎng)遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 科技視界,2020(08):125-127.

[3] 李敏, 蔡營(yíng), 岳意娥.CAN 總線報(bào)文通信丟失的故障樹(shù)分析方法淺析[J].汽車(chē)電器,2018(11):74-76.

[4] 翟高粵.基于Python的數(shù)據(jù)分析概述[J].甘肅科技縱橫,2018,47(11):5-7+26.

[5] 郭海宇, 張曉光. 基于快速原型的新能源汽車(chē)網(wǎng)關(guān)控制器開(kāi)發(fā)平臺(tái)設(shè)計(jì)[J]. 現(xiàn)代電子技術(shù),2018,41(19):141-145.

[6] 胡林, 唐嵐, 李亞, 等. 基于CANoe 的車(chē)載網(wǎng)關(guān)系統(tǒng)仿真及分析[J]. 農(nóng)業(yè)裝備與車(chē)輛工程,2020,58(02):35-39.

作者簡(jiǎn)介:

金旅,本科,助理工程師,研究方向?yàn)檎?chē)高壓電性能、功能測(cè)試。

猜你喜歡
報(bào)文矩陣
基于J1939 協(xié)議多包報(bào)文的時(shí)序研究及應(yīng)用
CTCS-2級(jí)報(bào)文數(shù)據(jù)管理需求分析和實(shí)現(xiàn)
淺析反駁類報(bào)文要點(diǎn)
初等行變換與初等列變換并用求逆矩陣
ATS與列車(chē)通信報(bào)文分析
矩陣
南都周刊(2015年1期)2015-09-10 07:22:44
矩陣
南都周刊(2015年3期)2015-09-10 07:22:44
矩陣
南都周刊(2015年4期)2015-09-10 07:22:44
太原市| 沧源| 维西| 泾川县| 永寿县| 武定县| 郑州市| 明星| 盈江县| 浦城县| 曲阳县| 宁晋县| 南澳县| 镇坪县| 龙江县| 从化市| 荔波县| 崇文区| 曲周县| 兴隆县| 邓州市| 怀化市| 嘉禾县| 红河县| 鹤山市| 台山市| 平阳县| 新巴尔虎左旗| 汨罗市| 淮安市| 乌拉特前旗| 梅河口市| 中超| 宜丰县| 土默特左旗| 铜山县| 钦州市| 金堂县| 邯郸县| 靖州| 扎鲁特旗|