基于R8C的汽車OBD通用故障診斷儀設(shè)計(jì)
車載診斷系統(tǒng)(On-Board Diagnostics,OBD)具有識(shí)別可能存在故障的區(qū)域的功能,并以故障代碼的方式將該信息儲(chǔ)存在ECU(電子控制單元)的存儲(chǔ)器內(nèi),通過OBD的故障診斷儀可以將存儲(chǔ)于車內(nèi)ECU的故障代碼及相關(guān)信息讀取出來,以方便車輛管理和維修使用。OBD系統(tǒng)最初是為了控制日益嚴(yán)重的汽車污染問題而提出的,起源于1982年CARB制定的排放法規(guī),隨后在1996年實(shí)施新的OBD Ⅱ要求。歐共體在2001年也要求歐洲各國汽車制造商生產(chǎn)的轎車都相應(yīng)配置歐洲電控汽車微機(jī)故障診斷系統(tǒng)(European On-board Diagnosis System,EOBD)。在我國,2005年4月國家環(huán)境保護(hù)總局和國家質(zhì)量監(jiān)督檢驗(yàn)檢疫總局聯(lián)合頒布了GB18352.3-2005((輕型車輛污染物排放限值及測量方法(中國Ⅲ、Ⅳ階段)》,簡稱“國Ⅲ、Ⅳ”。根據(jù)國Ⅲ要求,2008年7月1日起第一類汽油車(座位總數(shù)不超過6座,且最大總質(zhì)量不超過2 500 kg的M1類車輛)要求裝有OBD系統(tǒng),在用車符合性檢查同步執(zhí)行。
本文根據(jù)GB18352.3對OBD系統(tǒng)及故障診斷裝置的要求,在充分研究ISO和SAE有關(guān)的OBD標(biāo)準(zhǔn)及通信協(xié)議的基礎(chǔ)上,設(shè)計(jì)了一種基于瑞薩公司的R8C微控制器——R5F21237的汽車OBD通用故障診斷儀。該診斷儀可兼容所有GB18352.3規(guī)定的通信協(xié)議,可以診斷ISO 15031-5所規(guī)定的所有診斷服務(wù),并具有成本低和攜帶方便的特點(diǎn)。
1 汽車OBD通用故障診斷儀的要求
根據(jù)GB18352.3的要求,與車輛OBD系統(tǒng)通信的外部診斷設(shè)備必須符合ISO 15031-4“道路車輛——車輛與排放相關(guān)的外部診斷設(shè)備之間的通信第3部分:外部故障診斷設(shè)備的要求”的有關(guān)要求。這些要求主要包括了統(tǒng)一診斷連接器,兼容的通信協(xié)議,標(biāo)準(zhǔn)的故障代碼和診斷服務(wù)范圍四個(gè)方面。
1.1 診斷連接器
OBD通用故障診斷儀與車輛之間的連接器使用統(tǒng)一的診斷連接器,其引腳配置定義如圖1所示,其中沒有定義的引腳可以保留給診斷儀以后擴(kuò)展使用。
1.2 通信協(xié)議
OBD通用故障診斷儀與車輛之間的通信系統(tǒng)可以使用的通信協(xié)議有ISO 9141,SAE J1850 41,6 Kb/sPWM(脈寬調(diào)制),SAEJ1850 10,4 Kb/s VPW(可變脈寬),ISO 14230(KW 2000),ISO 15765-4(CAN),SAE J1939-73(CAN)。根據(jù)SAE J1978或ISO15031-5要求,任何車輛只允許使用一種通信協(xié)議,為了兼容各種車型的OBD系統(tǒng),汽車通用故障診斷儀必須支持以上所有協(xié)議。
1.3 診斷服務(wù)范圍
汽車通用故障診斷儀診斷內(nèi)容包括九個(gè)服務(wù)模式,詳細(xì)內(nèi)容如下:
讀取當(dāng)前動(dòng)力系統(tǒng)診斷數(shù)據(jù) 目的是獲得排放相關(guān)的數(shù)據(jù)值,包括模擬輸入、輸出,數(shù)字輸入、輸出和系統(tǒng)狀態(tài)信息。
讀取系統(tǒng)凍結(jié)幀 目的是收集動(dòng)力系統(tǒng)排放相關(guān)的凍結(jié)幀以及制造商的特殊需要的其他系統(tǒng)凍結(jié)幀。讀取故障診斷代碼 汽車通用故障診斷儀獲得車輛各系統(tǒng)的常規(guī)故障診斷代碼。
清除/重置排放相關(guān)的診斷信息 汽車通用故障診斷儀提供清除車輛各ECUs故障診斷信息的一種方法。這些故障診斷信息包括:診斷故障代碼的數(shù)量、診斷故障代碼、凍結(jié)幀數(shù)據(jù)的故障代碼、凍結(jié)幀數(shù)據(jù)、系統(tǒng)監(jiān)控測試的狀態(tài)、車載監(jiān)控測試結(jié)果、MIL激活時(shí)行駛的里程、DTC清除后預(yù)熱的次數(shù)、DTC清除后的里程、MIL激活時(shí)發(fā)動(dòng)機(jī)運(yùn)轉(zhuǎn)的時(shí)間、診斷故障代碼清除后的時(shí)間以及其他制造商定義的其他記錄信息。
讀取氧傳感器監(jiān)控測試結(jié)果 汽車通用故障診斷儀獲得車載氧傳感器監(jiān)控測試結(jié)果。
讀取車載的特殊監(jiān)控系統(tǒng)的監(jiān)控測試結(jié)果 汽車通用故障診斷儀獲得特殊部件/系統(tǒng)的非連續(xù)監(jiān)控的車載診斷監(jiān)控測試結(jié)果。例如催化器的監(jiān)控和蒸發(fā)監(jiān)控系統(tǒng)等。
讀取在當(dāng)前或最近的駕駛期間探測到的與排放相關(guān)的診斷故障代碼 汽車通用故障診斷儀獲得在當(dāng)前或最近的駕駛期間探測到診斷故障代碼。目的是幫助技術(shù)服務(wù)人員在車輛維修后,或清除診斷信息之后,通過單個(gè)駕駛周期獲得測試維修的效果。
讀取隨車系統(tǒng)、測試或部件的控制 目的是允許汽車通用故障診斷儀能夠控制隨車系統(tǒng)、測試或部件的操作。
讀取車輛信息 汽車通用故障診斷儀可以請求說明車輛的車輛信息,比如車輛身份識(shí)別碼和校準(zhǔn)ID等。
1.4 診斷故障代碼(DTCs_Diagnostic Trouble Code)的顯示
通用故障診斷儀讀取的OBD診斷故障代碼由兩字節(jié)組成,在顯示時(shí)要按照1個(gè)字母+1位十進(jìn)制數(shù)字+3位十六進(jìn)制數(shù)字的標(biāo)準(zhǔn)顯示方式顯示。讀取的兩字節(jié)數(shù)據(jù)到標(biāo)準(zhǔn)顯示方式的轉(zhuǎn)換關(guān)系如圖2所示。DTCs按照開頭的字母一共分為四類,其中B表示車身類DTCs,C表示底盤類DTCs,P表示動(dòng)力類DTCs,U表示網(wǎng)絡(luò)類DTCs。
2 汽車通用故障診斷儀的設(shè)計(jì)
2.1 系統(tǒng)的硬件設(shè)計(jì)
本設(shè)計(jì)的硬件部分主要分為四個(gè)模塊,硬件結(jié)構(gòu)圖如圖3所示。
單片機(jī)模塊是整個(gè)硬件系統(tǒng)的核心部分,包括了一塊瑞薩R8C系列的單片機(jī)R5F21237JPF和一些外圍電路,承擔(dān)著運(yùn)算和處理信號(hào)的任務(wù)。這個(gè)模塊與鍵盤模塊、液晶顯示模塊以及通信模塊分別連接,與這三個(gè)模塊進(jìn)行信息交互。
R5F21237JPF屬于瑞薩公司的R8C/Tiny系列的微控制器,本設(shè)計(jì)使用了R5F21237JPF的2個(gè)8位多功能定時(shí)器進(jìn)行系統(tǒng)的時(shí)序控制;使用2個(gè)串口驅(qū)動(dòng)MC33390和ST-L9637,及使用其CAN控制器驅(qū)動(dòng)TJA1050進(jìn)行通信;使用了11個(gè)輸入/輸出端口連接鍵盤模塊;2 KB RAM及64 KB的程序閃存編寫嵌入式程序,使用并口2與LCD進(jìn)行通信。
液晶顯示屏采用了COMJ4×8C,這是一種128×64的圖形點(diǎn)陣液晶屏,可顯示8×4個(gè)(16×16點(diǎn)陣)漢字,也可完成圖形、字符的顯示;它內(nèi)部有顯示數(shù)據(jù)鎖存器,還具有簡單的操作指令。這個(gè)模塊的主要功能是顯示功能菜單、故障名稱等內(nèi)容。
鍵盤模塊核心是3×8的小鍵盤陣列,3列與8行分別通過11個(gè)引腳與單片機(jī)連接,鍵盤按鍵包括10個(gè)數(shù)字鍵、換頁鍵、換行鍵、確定和取消鍵等。通信模塊是診斷儀與車輛ECU通信的接口,主要由ST-L9637,MC33390和TJA1050組成,其中ST-L9637實(shí)現(xiàn)ISO 9141,ISO 14230(KW 2000)協(xié)議;MC33390實(shí)現(xiàn)SAE J1850 41,6 Kb/s PWM,SAEJ1850 10,4 Kb/s VPW協(xié)議;TJA1050實(shí)現(xiàn)ISO 15765-4(CAN),SAE J1939-73(CAN)協(xié)議。車輛ECU就是通過這些芯片與單片機(jī)進(jìn)行連接的,這部分電路略為復(fù)雜,作用也非常重要,是診斷儀能夠滿足ISO15031及SAEJ1978要求所有通信協(xié)議的關(guān)鍵。
2.2 軟件設(shè)計(jì)
本設(shè)計(jì)的軟件結(jié)構(gòu)圖如圖4所示。
(1)啟動(dòng)診斷儀
當(dāng)故障診斷接通車輛診斷接口后,將車輛點(diǎn)火鑰匙置于ON位置,車輛對診斷儀進(jìn)行供電。診斷儀上電后在R5F21237JPF控制下開始設(shè)置診斷儀的各項(xiàng)初始參數(shù)。
(2)確認(rèn)診斷協(xié)議
故障診斷儀初始化結(jié)束后開始向車輛診斷接口發(fā)送協(xié)議確認(rèn)數(shù)據(jù)。故障診斷儀向符合《SAE J1962車輛故障診斷接口》標(biāo)準(zhǔn)的連接器的各診斷協(xié)議(包括ISO9141,ISO 14230(KW 2000),SAE J1850 41,6 Kb/sPWM,SAE J1850 10,4 Kb/s VPW,ISO 157654,SAE J193973)的引腳逐次發(fā)送協(xié)議確認(rèn)命令。如果在某確認(rèn)中接收到正確的應(yīng)答,則確認(rèn)通信使用該協(xié)議;如果發(fā)送某種協(xié)議的確認(rèn)命令沒有應(yīng)答或應(yīng)答為無,則故障診斷儀發(fā)送下一個(gè)協(xié)議的確認(rèn)命令;如果連續(xù)5次循環(huán)發(fā)送各協(xié)議的確認(rèn)命令后依然沒有得到正確應(yīng)答,故障診斷儀發(fā)出錯(cuò)誤警告。
(3)鍵盤掃描
本設(shè)計(jì)中鍵盤掃描采用的是定時(shí)掃描的方式,每50 ms掃描一次鍵盤,若檢測到有鍵按下,則計(jì)算操作是顯示操作還是選擇診斷的服務(wù)類型的操作。
(4)診斷服務(wù)
如果通過鍵盤掃描程序確認(rèn)故障診斷儀要求進(jìn)行的服務(wù)模式,則發(fā)送該服務(wù)的請求并讀取相應(yīng)的響應(yīng)信息。診斷服務(wù)在本設(shè)計(jì)中起著至關(guān)重要的作用,它實(shí)現(xiàn)了診斷儀和ECU之間的信息交互。
(5)顯示內(nèi)容
顯示模塊包含了所有跟液晶顯示有關(guān)的子程序,顯示菜單,顯示故障內(nèi)容以及顯示警告信息等。通過按鍵操作,選擇顯示菜單是用于選中診斷儀的操作服務(wù)以及選中顯示內(nèi)容;顯示故障內(nèi)容時(shí)若超過一頁,可以通過“上一頁”、“下一頁”鍵來翻頁,按“取消”鍵則返回上一級(jí)目錄;警告信息顯示是在確認(rèn)通信協(xié)議失敗或進(jìn)行診斷服務(wù)失敗時(shí)顯示相應(yīng)的警告信息,警告信息在發(fā)生操作失敗時(shí)自動(dòng)顯示。
3 結(jié) 語
本文按照GB18352.3-2005的要求闡述了汽車OBD通用故障診斷的基本要求,介紹了一種基于瑞薩R8C單片機(jī)的汽車通用故障診斷儀相關(guān)硬件和軟件的設(shè)計(jì)方案。該方案的優(yōu)勢在于:可以兼容各種OBD的診斷通信協(xié)議,中文顯示界面,成本低和操作攜帶方便的特點(diǎn)。經(jīng)在哈飛賽豹V、比亞迪F6和雪佛蘭科魯茲等車型上測試證明:該診斷儀工作穩(wěn)定,操作方便,抗干擾能力強(qiáng)。隨著我國OBD的有關(guān)法規(guī)要求的逐步實(shí)施,該診斷儀軟硬件設(shè)計(jì)會(huì)有廣闊的應(yīng)用前景。