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

?

車輛控制器故障診斷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2020-07-27 16:11趙立超吳長水
軟件工程 2020年7期
關(guān)鍵詞:上位機(jī)故障診斷

趙立超 吳長水

摘? 要:故障診斷系統(tǒng)是汽車上各類控制器的重要組成部分,本文基于ISO 14229(UDS-統(tǒng)一診斷服務(wù))和ISO 15765(DoCAN)兩種協(xié)議設(shè)計(jì)了一套基于CAN(Controller Area Network,控制器局域網(wǎng)絡(luò))總線的故障診斷系統(tǒng)。主芯片為XC2785的發(fā)動(dòng)機(jī)ECU作為試驗(yàn)平臺(tái),并開發(fā)與之配合使用的上位機(jī),最后進(jìn)行測試,結(jié)果表明,可以實(shí)現(xiàn)CAN報(bào)文的發(fā)送及接收,診斷符合UDS的診斷流程,上位機(jī)操作簡單,可以快速讀取故障碼,以及清除故障碼,滿足設(shè)計(jì)需求。

關(guān)鍵詞:UDS;故障診斷;CAN;上位機(jī)

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

Abstract: Fault diagnosis system is an important part of all kinds of controllers in automobile. This paper designs a fault diagnosis system based on CAN (Controller Area Network) communication, on the basis of ISO 14229 (UDS-Unified Diagnosis Service) and ISO 15765 (DoCAN). The main chip, the XC2785 engine ECU, is used as the test platform, and the upper computer is developed to use with it. The test results show that CAN message can be sent and received, the diagnosis is in line with the UDS diagnosis process, the upper computer is simple to operate, and the fault code can be quickly read and cleared, so as to meet the designing requirement.

Keywords: UDS; fault diagnosis; CAN; upper computer

1? ?引言(Introduction)

隨著汽車電氣化的快速發(fā)展,汽車上的電氣設(shè)備不斷增加,如果沒有診斷功能和安全保護(hù)機(jī)制,在發(fā)生故障的時(shí)候是十分危險(xiǎn)的。目前,基于CAN總線的車輛故障診斷系統(tǒng)是車輛安全機(jī)制的重要要求,應(yīng)用最廣泛的故障診斷協(xié)議是UDS協(xié)議。UDS由ISO-14229系列標(biāo)準(zhǔn)定義[1]。所以開發(fā)基于UDS協(xié)議的故障診斷系統(tǒng)是很有必要的,對提高汽車故障診斷的準(zhǔn)確性、可靠性、安全性具有重要的價(jià)值和意義[2]。

本文按照UDS協(xié)議的要求,在主芯片為英飛凌的XC2785的發(fā)動(dòng)機(jī)控制器上,開發(fā)出一套故障診斷的程序,并在Visual Studio上開發(fā)與之配套的上位機(jī),對其進(jìn)行測試,可以實(shí)現(xiàn)基于UDS協(xié)議的CAN報(bào)文接收和故障碼的讀取和清除功能,滿足故障故障診斷的要求。

2? 故障診斷系統(tǒng)總體架構(gòu)設(shè)計(jì)(Overall architecture

design of fault diagnosis system)

在汽車中,診斷儀器對車輛系統(tǒng)的檢測稱之為診斷[3]。診斷分為在線模式和離線模式,在線模式指汽車儀表對汽車實(shí)時(shí)數(shù)據(jù)的一個(gè)顯示,離線模式指的是用一個(gè)外接設(shè)備,通過汽車的OBD接口,進(jìn)行一個(gè)診斷的通信,從而掌握汽車的故障信息和一些實(shí)時(shí)的數(shù)據(jù),對生產(chǎn)和售后提供一些便利,節(jié)約時(shí)間和成本。本文研究的是離線模式。

目前,國內(nèi)外對診斷系統(tǒng)的研究主要基于故障診斷儀和基于PC平臺(tái)的故障診斷方案[4]。本文采用的是基于PC平臺(tái)的方案。如圖1所示,右邊為主芯片為英飛凌XC2785的六缸發(fā)動(dòng)機(jī)控制器,通過周立功的CAN卡連接至PC機(jī),通過PC上開發(fā)的上位機(jī)來對發(fā)動(dòng)機(jī)控制器進(jìn)行診斷。

3? 故障診斷系統(tǒng)設(shè)計(jì)(Design of fault diagnosis system)

3.1? ?UDS命令解析

UDS共包含六大類26種服務(wù),每種服務(wù)都有自己特有的標(biāo)識(shí)符SID(Service Identifier),UDS其實(shí)是一種定向的通信,是一種交互協(xié)議(Request/Response),即診斷方(PC或診斷儀)給ECU發(fā)送指定的請求數(shù)據(jù),這條數(shù)據(jù)中需要包含SID。ECU對診斷方的響應(yīng)有兩種,一種是肯定的響應(yīng)(Positive Response),回復(fù)[SID+0x40],如請求10,響應(yīng)50;請求22,響應(yīng)62;一種是否定的響應(yīng)(Negative Response),回復(fù)7F+SID+NRC(否定響應(yīng)碼),回復(fù)的是一個(gè)聲明。

本文設(shè)計(jì)的故障診斷系統(tǒng)用到的命令有:診斷會(huì)話控制(0x10),安全訪問(0x27),讀取故障碼信息(0x19),清除故障碼(0x14)。有的命令還會(huì)有一系列子服務(wù)。

3.2? ?故障診斷流程設(shè)計(jì)

首先,當(dāng)發(fā)動(dòng)機(jī)控制器發(fā)生故障的時(shí)候,會(huì)將對應(yīng)的故障碼儲(chǔ)存在Flash中[5]。如圖2所示,當(dāng)我們通過CAN線連接至我們的PC時(shí),首先發(fā)送的是診斷會(huì)話控制命令(0x10),每一個(gè)會(huì)話當(dāng)中可能會(huì)支持的服務(wù)是不同的,為了做這一個(gè)區(qū)別,我們在每個(gè)子服務(wù)中定義不同的范圍,首先ECU上電進(jìn)入的是一個(gè)默認(rèn)會(huì)話;當(dāng)我們確認(rèn)會(huì)話狀態(tài)后,會(huì)進(jìn)入安全訪問功能(0x27),由上位機(jī)向ECU請求種子(seed),ECU接收到診斷命令后,根據(jù)當(dāng)前所處的診斷模式,發(fā)送相應(yīng)的seed給上位機(jī),上位機(jī)接收到seed后,通過特定的算法計(jì)算出key,然后通過安全訪問(0x27 0x03)命令向ECU發(fā)送key,如果key能夠與ECU計(jì)算出的key匹配,那么上位機(jī)就獲得了進(jìn)入該模式的權(quán)限,如果發(fā)生錯(cuò)誤,則返回否定相應(yīng)(0x7F)。

接下來開始進(jìn)行診斷,這里我們用到的主要是兩條命令,(0x19讀取DTC信息)和(0x14清除診斷信息)。0x19這條命令主要用來查詢故障信息,0x14這個(gè)服務(wù)用于清除故障碼,3個(gè)ff代表清除所有DTC。如圖2所示,首先發(fā)送0x19服務(wù)的命令,去讀取故障碼,如果存在故障碼,上位機(jī)顯示出來,如果不存在故障碼,上位機(jī)提示無故障后結(jié)束;如果存在故障碼,上位機(jī)顯示出來,然后決定是否清除故障碼,如果要清除故障碼,發(fā)送0x14命令,在命令中調(diào)用清除故障信息的功能函數(shù),清除故障成功結(jié)束,如果不清除故障碼則等待上位機(jī)的下條命令。

3.3? ?故障診斷軟件設(shè)計(jì)

本文的故障診斷系統(tǒng)是基于CAN網(wǎng)絡(luò)的,在CAN的中斷函數(shù)調(diào)用UDS的函數(shù)uds_handler(M0.ubData,8),UDS的每條服務(wù)中需要發(fā)送數(shù)據(jù)時(shí)調(diào)用CAN的發(fā)送函數(shù)CAN_vTransmit()。

在uds_handler函數(shù)中有UDS中使用到的服務(wù)的實(shí)現(xiàn),如圖3所示,首先判斷CAN幀的字節(jié)數(shù)是否在2—8,一幀CAN報(bào)文最多有8個(gè)字節(jié),而UDS中最少也要有2個(gè)字節(jié),所以不再這個(gè)范圍內(nèi)的字節(jié)數(shù)即為錯(cuò)誤。然后通過CAN報(bào)文的第一個(gè)字節(jié)來判斷CAN幀的類型,在ISO 15765中定義的四種幀的類型,分別為:單幀(SF)、首幀(FF)、連續(xù)幀(CF)、流控制幀(FC)[6]。判斷出CAN幀的類型后,CAN報(bào)文的第二個(gè)字節(jié)代表的是UDS的不同服務(wù)。在不同服務(wù)的case中實(shí)現(xiàn)該服務(wù)的功能,然后通過udsSend()函數(shù)發(fā)送正響應(yīng),如果出錯(cuò)則返回錯(cuò)誤信息,通過communUDS_NRC_Send(communUDS_ServiceID, 0xNRC)函數(shù)發(fā)送。

4? ?故障碼設(shè)計(jì)(Design of fault code)

DTC(Diagnostic Trouble Code)是診斷故障的一個(gè)縮寫,如果系統(tǒng)檢測到一個(gè)故障,它將儲(chǔ)存為一個(gè)DTC[7]。UDS協(xié)議中3個(gè)字節(jié)的長度作為一個(gè)DTC。一般來說,我們會(huì)使用ISO 15031-6中的規(guī)范,前兩個(gè)字節(jié)代表一個(gè)根DTC,最后一個(gè)字節(jié)DTC狀態(tài)位。

故障碼有四類,分別為P、C、B、U,P是動(dòng)力系統(tǒng)(Powertrain),C是底盤(Chassis),B是車身(Body),U是通信系統(tǒng)(Network)。由于是在發(fā)動(dòng)機(jī)控制器上開發(fā)的,所以選擇動(dòng)力系統(tǒng)。人為的設(shè)置兩個(gè)故障碼,用于測試故障診斷系統(tǒng)。如下表1所示,選擇進(jìn)氣溫度傳感器來進(jìn)行測試,因?yàn)樾盘?hào)電纜上只可能存在大約0.25 V到4.75 V之間的電壓,0V和5V預(yù)留用于故障檢測[8]。使用電位器模擬進(jìn)氣溫度傳感器信號(hào),當(dāng)轉(zhuǎn)動(dòng)電位器到達(dá)0V或5V時(shí),故障診斷系統(tǒng)應(yīng)該檢測到。

5? ?上位機(jī)設(shè)計(jì)(Upper computer design)

上位機(jī)是在Visual Studio中開發(fā)的。上位機(jī)設(shè)計(jì)分為兩個(gè)部分,報(bào)文顯示區(qū)域和診斷區(qū)域。如圖4所示。

報(bào)文顯示區(qū)域負(fù)責(zé)的部分為CAN通道的打開,診斷會(huì)話的選擇,安全訪問,單條CAN報(bào)文的測試;診斷區(qū)域負(fù)責(zé)故障碼的讀取和清除,以及狀態(tài)流的顯示,狀態(tài)流即此時(shí)發(fā)動(dòng)機(jī)的信息,例如轉(zhuǎn)速,冷卻液溫度等。在每個(gè)顯示區(qū)域都有一個(gè)對應(yīng)的Clear按鈕用于清除數(shù)據(jù)。

6? ?功能測試(Functional test)

將建好的工程通過編譯器燒寫進(jìn)6缸發(fā)動(dòng)機(jī)控制器中,按照圖1的方式將電腦和6缸發(fā)動(dòng)機(jī)控制器連接好。如圖5所示,為測試的部分顯示結(jié)果。首先通過CANopen按鈕打開CAN通道,再進(jìn)行各個(gè)功能的測試。

對報(bào)文信息進(jìn)行分析,一幀CAN報(bào)文是8個(gè)字節(jié),上位機(jī)發(fā)送的字節(jié)中多余的字節(jié)用cc補(bǔ)齊,接受的字節(jié)中多余的字節(jié)用aa補(bǔ)齊,cc和aa可以根據(jù)需要來自定義。首先上位機(jī)發(fā)送的第一條命令是診斷會(huì)話控制,用于進(jìn)入合適的模式,如下表2所示,發(fā)送的字節(jié)中,根據(jù)UDS協(xié)議中的相關(guān)定義,02表示單幀,占2個(gè)數(shù)據(jù)字節(jié),10表示診斷會(huì)話服務(wù),01表示編程會(huì)話中的子服務(wù);接受的數(shù)據(jù)中,02代表的與發(fā)送中的字節(jié)含義相同,50表示10服務(wù)的肯定響應(yīng)(SID+0x40),01表示編程會(huì)話中的子服務(wù)。

安全訪問結(jié)束后,進(jìn)入診斷模式,使用自定義的兩個(gè)故障碼用于測試,P0098表示進(jìn)氣溫度傳感器電路電壓高,P0097表示進(jìn)氣溫度傳感器電路電壓低。如表4所示,前兩組用于請求故障信息,后一組用于清除故障碼。

發(fā)送讀取故障碼的命令,當(dāng)轉(zhuǎn)動(dòng)電位計(jì)使其處于0V時(shí),應(yīng)該讀取到P0097這個(gè)故障碼;當(dāng)電位計(jì)處于5V狀態(tài)時(shí),應(yīng)該讀取到P0098這個(gè)故障碼。然后發(fā)送清除故障碼的命令,三個(gè)ff表示清除所有故障碼。如表4所示,為讀取和清除故障碼的報(bào)文信息,符合UDS協(xié)議中的要求。

7? ?結(jié)論(Conclusion)

本文設(shè)計(jì)的故障診斷系統(tǒng)成功實(shí)現(xiàn)了主芯片為XC2785的發(fā)動(dòng)機(jī)控制器的診斷功能。測試結(jié)果表明,該系統(tǒng)的通信過程與診斷結(jié)果符合ISO 14229和ISO 15765協(xié)議的規(guī)范。上位機(jī)提供簡潔的界面,提供了多種數(shù)據(jù)顯示方式,以及操作方便的診斷功能,為自主開發(fā)ECU診斷系統(tǒng)提供基礎(chǔ)的技術(shù)支持,節(jié)約成本,將故障診斷的過程大大縮短,有良好的實(shí)用性和商業(yè)價(jià)值。

參考文獻(xiàn)(References)

[1] ISO 14229. Road vehicles - Unified Diagnostic Services (UDS)[S]. Switzerland: International Organization for Standardization, 2006.

[2] 沈凱.基于UDS協(xié)議的純電動(dòng)汽車整車控制器故障診斷研究[D].湖北汽車工業(yè)學(xué)院,2017.

[3] 鄒鳳.基于ISO15765協(xié)議的汽車診斷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].中國科學(xué)院大學(xué)(中國科學(xué)院工程管理與信息技術(shù)學(xué)院),2017.

[4] 黃悅鵬.基于CAN總線的UDS診斷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].南京郵電大學(xué),2016.

[5] Liao Y S, Lin Z Y. Design of Bootloader for air-conditioning controller based on CAN bus[J]. Mechanical & Electrical Technology, 2015 (2): 104-106.

[6] ISO 15765. Road vehicles - Diagnostics on Controller Area Networks (CAN)[S].Switzerland:International Organization for Standardization, 2006.

[7] 聶幸福,孟晨興.基于UDS的BootLoader上位機(jī)實(shí)現(xiàn)[J].汽車工業(yè)研究,2018(07):26-29.

[8] 白穩(wěn)峰,汪春華,劉洪飛,等.基于獨(dú)立網(wǎng)關(guān)的UDS服務(wù)設(shè)計(jì)與實(shí)現(xiàn)[J].汽車實(shí)用技術(shù),2019(23):55-58.

作者簡介:

趙立超(1995-),男,碩士生.研究領(lǐng)域:汽車電子控制,輔助駕駛.

吳長水(1978-),男,博士,副教授.研究領(lǐng)域:發(fā)動(dòng)機(jī)電控.

猜你喜歡
上位機(jī)故障診斷
論網(wǎng)絡(luò)通信技術(shù)
基于云的短波發(fā)射機(jī)機(jī)房中央空調(diào)自動(dòng)控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
因果圖定性分析法及其在故障診斷中的應(yīng)用
基于LCD和排列熵的滾動(dòng)軸承故障診斷
基于WPD-HHT的滾動(dòng)軸承故障診斷
高速泵的故障診斷
荃湾区| 金塔县| 阿勒泰市| 维西| 沾益县| 巫溪县| 唐海县| 百色市| 会东县| 喀喇| 庆安县| 雷州市| 兴宁市| 嘉黎县| 永年县| 长治县| 镶黄旗| 阳泉市| 奉贤区| 太湖县| 上饶市| 磴口县| 黔东| 武威市| 延长县| 巧家县| 松滋市| 无锡市| 二手房| 荥阳市| 榆中县| 昆山市| 英德市| 丹凤县| 正镶白旗| 湘阴县| 乐业县| 昭觉县| 凤庆县| 民权县| 邹平县|