羅洪波
(柳州職業(yè)技術(shù)學(xué)院機(jī)電工程系,廣西 柳州 545006)
汽車發(fā)動(dòng)機(jī)一般集成了電子控制系統(tǒng)[1](engine electronic control system,EECS),EECS內(nèi)置了轉(zhuǎn)速測(cè)量傳感器(如曲軸轉(zhuǎn)角與轉(zhuǎn)速霍爾傳感器)。電控系統(tǒng)通過內(nèi)置傳感器測(cè)量得到的發(fā)動(dòng)機(jī)轉(zhuǎn)速信號(hào)來控制發(fā)動(dòng)機(jī)的燃油噴射,使發(fā)動(dòng)機(jī)工作在最佳工況。電控系統(tǒng)的核心是電控單元(electronic control unit,ECU),其作用是完成各種傳感器輸入信號(hào)的采集和調(diào)理,并根據(jù)發(fā)動(dòng)機(jī)管理控制算法進(jìn)行運(yùn)算,輸出控制信號(hào)給執(zhí)行部件。ECU中的動(dòng)力總成控制模塊(powertrain control module,PCM)在汽車正常運(yùn)轉(zhuǎn)時(shí)會(huì)將轉(zhuǎn)速信號(hào)通過傳感器記錄下來,并將其存儲(chǔ)到特定的存儲(chǔ)單元中,這樣汽車車載網(wǎng)絡(luò)的其他電子控制單元就可以方便地通過特定的通信協(xié)議獲取該速度信號(hào)。同理,外部診斷設(shè)備或掃描工具也可以通過特定接口與ECU進(jìn)行通信獲得該轉(zhuǎn)速信號(hào)。
由于汽車內(nèi)部有多種不同類型的設(shè)備電子控制系統(tǒng),為了實(shí)現(xiàn)各系統(tǒng)之間以及內(nèi)部系統(tǒng)和外部設(shè)備之間的通信,相應(yīng)的汽車網(wǎng)絡(luò)通信協(xié)議相繼被制定。按照通信速度,協(xié)議大致可以分為三類[2],即A類、B類、C類。A類協(xié)議主要面向低速設(shè)備(10 kbit/s以下),B類協(xié)議主要面向中速設(shè)備(100 kbit/s以下),C類協(xié)議主要面向高速設(shè)備(10 Mbit/s以下)。
汽車發(fā)動(dòng)機(jī)故障診斷采用的通信協(xié)議屬于B類協(xié)議[3],常用的協(xié)議有 ISO 9141、ISO 14230、SAE J1850 PWM、SAE J1850 VPM和CAN。其中,ISO 14230可以看作是ISO 9141的改進(jìn),主要被歐州和大多數(shù)亞洲汽車生產(chǎn)廠商所采納。SAE J1850 PWM主要被美國(guó)福特公司所采用[4];而SAE J1850 VPM主要被美國(guó)通用公司所采用。CAN是一種新的高速通信協(xié)議[5],通信實(shí)現(xiàn)較為簡(jiǎn)便,有較大的發(fā)展前景,但是其目前在國(guó)內(nèi)汽車發(fā)動(dòng)機(jī)中覆蓋率還不高。
ISO 14230協(xié)議是ISO為開發(fā)有效的道路用車診斷系統(tǒng)而制定的,通稱為KWP2000[5]。目前,該協(xié)議己廣泛用于電控發(fā)動(dòng)機(jī)的故障診斷工具開發(fā)。KWP2000主要用于電控系統(tǒng)的在線故障診斷,它因傳輸快捷可靠、便于實(shí)現(xiàn)、對(duì)軟硬件的要求不高的優(yōu)點(diǎn)而被各發(fā)動(dòng)機(jī)制造商廣泛地應(yīng)用于電控發(fā)動(dòng)機(jī)的故障診斷、實(shí)時(shí)監(jiān)控和匹配標(biāo)定系統(tǒng)的開發(fā)。
KWP2000串行通信協(xié)議在啟動(dòng)通信后,會(huì)返回2 B信息來指示系統(tǒng)所支持的報(bào)文格式,這2 B信息被稱為關(guān)鍵詞。它依據(jù)開放性系統(tǒng)互連(open system interaction,OSI)基本參考模型[6],但只定義 OSI參考模型的物理層、數(shù)據(jù)鏈路層和應(yīng)用層這3個(gè)子層。
1.2.1 物理層
KWP2000物理層遵循ISO 9141-2中物理層的規(guī)定[6],可以提供12 V或24 V電壓。它規(guī)定車輛可采用汽車診斷連接頭中的單通信數(shù)據(jù)線(僅有K線)或雙通信數(shù)據(jù)線(K線和L線)方式連接至外圍診斷工具。K線為雙向數(shù)據(jù)線,用于通信和初始化,采用一根信號(hào)線完成半雙工異步通信;L線為單向數(shù)據(jù)線,僅用于初始化,在除初始化以外的其他時(shí)間里總是處于邏輯“1”的空閑狀態(tài)。KWP物理層的信號(hào)電平和容差范圍如圖1所示。
圖1 信號(hào)電平和容差范圍示意圖Fig.1 Signal level and the tolerance range
ISO 9141-2規(guī)范使用標(biāo)準(zhǔn)的不歸零編碼(nonreturn-to-zero,NRZ)作為傳輸格式,當(dāng)總線處于邏輯“1”狀態(tài)時(shí),圖1中的信號(hào)電平保持為高電平,不會(huì)出現(xiàn)回零負(fù)跳變。當(dāng)總線處于邏輯“1”狀態(tài)時(shí)必須滿足輸出電平不低于電源電壓UB的80%,輸入電平不低于UB的70%;邏輯“0”狀態(tài)時(shí)必須滿足輸出電平不高于UB的20%,輸入電平不低于UB的30%。
當(dāng)ECU處于邏輯“1”狀態(tài)時(shí),其K線和地之間存在一個(gè)相對(duì)地的電阻,其阻值約為50 kΩ;當(dāng)ECU處于邏輯“0”狀態(tài)時(shí),其K線和地之間也存在一個(gè)相對(duì)地的電阻,其阻值不超過110 Ω。外部設(shè)備若與ECU通信,總線需設(shè)置阻值為510 Ω的上拉電阻,安放在外圍診斷設(shè)備或測(cè)量設(shè)備內(nèi)部。
1.2.2 數(shù)據(jù)鏈路層
①傳輸字節(jié)格式
數(shù)據(jù)傳送時(shí)每字節(jié)低位在前,每個(gè)字節(jié)由起始位、8位數(shù)據(jù)位、停止位組成,沒有奇偶校驗(yàn)位,通信波特率為 10.4 kbit/s。
②數(shù)據(jù)幀格式
KWP2000協(xié)議的消息由消息頭、數(shù)據(jù)字節(jié)和校驗(yàn)和這3部分組成,其結(jié)構(gòu)如圖2所示。
圖2中,F(xiàn)mt代表幀頭,Tgt代表ECU的物理地址或功能地址,Src代表診斷測(cè)量設(shè)備的物理地址,Len代表數(shù)據(jù)字節(jié)長(zhǎng)度,Datai代表傳輸?shù)臄?shù)據(jù),Sid代表服務(wù)標(biāo)志符,CS代表累加求和校驗(yàn)值[6],上標(biāo)1表示該字節(jié)是由返回關(guān)鍵字決定的可選字節(jié),上標(biāo)2表示該部分字節(jié)長(zhǎng)度是可由幀頭Fmt或數(shù)據(jù)字節(jié)長(zhǎng)度Len設(shè)定。
③定時(shí)間參數(shù)的約定
數(shù)據(jù)報(bào)和數(shù)據(jù)字節(jié)之間有著嚴(yán)格的定時(shí)參數(shù)約定[6],數(shù)據(jù)流的一般定時(shí)參數(shù)約定如圖3所示。
圖3 一般定時(shí)參數(shù)約定示意圖Fig.3 General timing parameters
圖3中,P1代表響應(yīng)幀字節(jié)間的定時(shí)參數(shù),P2代表請(qǐng)求幀與響應(yīng)幀間的定時(shí)參數(shù),P3代表響應(yīng)幀與請(qǐng)求幀間的定時(shí)參數(shù),P4代表請(qǐng)求幀字節(jié)間的定時(shí)參數(shù)。
④ECU的激活方式
ECU有快速激活和5 Baud激活兩種激活方式。由于5 Baud激活需要延時(shí)2 s以上,速度較慢,因此,一般采用快速激活方式,具體如圖4所示。
圖4 快速激活方式定時(shí)示意圖Fig.4 Timing of fast activation method
1.2.3 應(yīng)用層
應(yīng)用層主要是規(guī)定掃描工具以何種數(shù)據(jù)報(bào)格式請(qǐng)求通信服務(wù)[7],同時(shí) ECU以何種報(bào)文格式響應(yīng)。KWP2000協(xié)議中,不同通信服務(wù)功能通過數(shù)據(jù)幀中第一字節(jié)的服務(wù)標(biāo)志符Sid來表示。通信服務(wù)主要分為兩大模塊:通信模塊和診斷模塊。通信模塊包括通信管理、數(shù)據(jù)傳送、上傳/下載這3個(gè)功能。通信管理在數(shù)據(jù)鏈路層已作說明,數(shù)據(jù)傳送服務(wù)功能單元主要用來讀取數(shù)據(jù)記錄,訪問存儲(chǔ)器。常用的通信服務(wù)請(qǐng)求及響應(yīng)消息定義如表1所示。
表1 常用通信服務(wù)標(biāo)志符Tab.1 Common identifier of communication services
發(fā)動(dòng)機(jī)測(cè)速系統(tǒng)根據(jù)功能需求,主要分為電源模塊、顯示模塊、通信接口模塊、指示模塊、按鍵模塊、單片機(jī)最小系統(tǒng)模塊和ISP編程模塊,其具體實(shí)現(xiàn)框圖如圖5所示。
圖5 發(fā)動(dòng)機(jī)測(cè)速系統(tǒng)框圖Fig.5 Block diagram of engine speed measuring system
簡(jiǎn)易汽車發(fā)動(dòng)機(jī)測(cè)速系統(tǒng)需要具備的特點(diǎn)是體積小、成本低、測(cè)速方便、易于擴(kuò)展。因此,選用低成本51單片機(jī)作為測(cè)速系統(tǒng)的控制核心。MCS-51系列在我國(guó)使用廣泛且能夠兼容的外圍芯片較多,其典型產(chǎn)品 AT89S52單片機(jī)具有較高的性能價(jià)格比[8]。AT89S52采用CMOS工藝制作,是80C51的增強(qiáng)型并且指令完全兼容。由于發(fā)動(dòng)機(jī)ECU總線接口采用的電平形式為特定的K線電平,而單片機(jī)支持的電平形式為TTL電平,為了與ECU電平兼容,需要設(shè)計(jì)相應(yīng)的通信接口模塊進(jìn)行電平轉(zhuǎn)換和通信方式轉(zhuǎn)換。發(fā)動(dòng)機(jī)轉(zhuǎn)速測(cè)量值采用高亮度數(shù)碼管來顯示,并以相應(yīng)的指示燈進(jìn)行電源上電指示和通信狀態(tài)輔助指示。由于測(cè)速系統(tǒng)功耗很低,因此可以通過總線接口中的電源線從汽車蓄電池竊電,汽車蓄電池電壓一般為12 V,而單片機(jī)的工作電壓為5 V,可以通過12 V/5 V的直流電源適配模塊實(shí)現(xiàn)電壓變換。為了實(shí)現(xiàn)在應(yīng)用中不拔插單片機(jī)就能實(shí)現(xiàn)程序的下載,系統(tǒng)編程接口采用在系統(tǒng)中編程(in system programming,ISP)方式來實(shí)現(xiàn)。
K線有與單片機(jī)通信的專用接口芯片[8],如MC33290、L9637、MC33190。由于專用芯片購(gòu)買比較困難,價(jià)格也比較高,因此需自行設(shè)計(jì)通信接口模塊來實(shí)現(xiàn)電平變換。通信接口模塊的主要功能是通過4個(gè)NPN型三極管實(shí)現(xiàn)K線電平和單片機(jī)TTL電平的轉(zhuǎn)換[9],具體實(shí)現(xiàn)電路如圖6所示。
圖6 通信接口模塊電路圖Fig.6 Circuit of the communication interface module
由于K線在數(shù)據(jù)鏈路層上的通信數(shù)據(jù)格式(1位起始位、8位數(shù)據(jù)位、1位停止位)和51單片機(jī)串行通信接口的數(shù)據(jù)格式完全兼容,因此單片機(jī)串行通信接口可采用AT89S52的UART串行通信接口實(shí)現(xiàn)。
通信模塊是測(cè)速系統(tǒng)中最關(guān)鍵的一個(gè)模塊。通信模塊需要完成通信初始化、ECU喚醒、開始通信幀發(fā)送、數(shù)據(jù)傳輸通信幀發(fā)送、停止通信幀發(fā)送、響應(yīng)幀接收和轉(zhuǎn)速計(jì)算以及相應(yīng)的錯(cuò)誤處理和通信指示功能。
通信初始化主要是對(duì)串口進(jìn)行一些通信設(shè)置工作和一些現(xiàn)場(chǎng)保護(hù)工作。通信初始化首先需進(jìn)行串口波特率的設(shè)置,根據(jù)通信鏈路數(shù)據(jù)格式的需求,串口工作方式選擇為方式1(10位異步收發(fā)),波特率采用由定時(shí)器1 控制方式[10],波特率為10.4 kbit/s,單片機(jī)晶振fosc為6 MHz。同時(shí),將電源控制寄存器PCON最高位SMOD置1,使得波特率增倍。串口波特率產(chǎn)生方式設(shè)置為工作模式2(自動(dòng)重裝入8位計(jì)數(shù)值),定時(shí)器1計(jì)數(shù)值X可以通過下式計(jì)算得到:
式中:M為SMOD;fosc為晶振頻率;B為串口所設(shè)置的波特率。
串行通信接口必須能工作在普通I/O口模式和串行通信接口模式兩種接口模式。激活模式要求串口通信接口中的TXD必須設(shè)置為I/O模式,通過直接對(duì)I/O的操作,輸出激活時(shí)序(快速激活方式或5 Baud激活方式),然后將串行口配置為異步通信模式,等待接收??焖偌せ罘绞讲捎孟妊訒r(shí)300 ms并從TXD輸出高電平,然后輸出25 ms低電平,再輸出25 ms高電平,延時(shí)采用軟件精確延時(shí)的方式。5 Baud激活采用延時(shí)的方式,以每隔200 ms發(fā)送一個(gè)位的方式發(fā)送功能數(shù)據(jù)33H,具體做法是按 200 ms延時(shí),依次發(fā)送0110011001H。
終止通信數(shù)據(jù)幀的服務(wù)標(biāo)志符Sid=82H,則終止通信數(shù)據(jù)幀為C133 F18267。如果能正確終止通信,則發(fā)出正響應(yīng)幀,其格式為81 F1 ECUid C2 CS;否則,返回負(fù)響應(yīng)幀,其格式為83 F1 ECUid 7F ERRcode 82 CS。整個(gè)通信中斷程序流程圖如圖7所示。
圖7 通信服務(wù)程序框圖Fig.7 Block diagram of the communication service routine
開始通信數(shù)據(jù)幀的服務(wù)標(biāo)志符Sid=81H,采用3 B的頭數(shù)據(jù)幀,地址方式為功能地址,開始通信數(shù)據(jù)幀(采用十六進(jìn)制)為C133 F18166。若ECU已經(jīng)成功激活且開始通信命令正確,ECU則會(huì)發(fā)出正響應(yīng)幀,其格式為81 F1 ECUid C1 KeyWord(2 B)CS,其中ECUid為ECU物理地址,KeyWod為通信參數(shù)關(guān)鍵字,CS為累加校驗(yàn)和。如果開始通信命令錯(cuò)誤或ECU正忙,則發(fā)出負(fù)響應(yīng)幀,其格式為 83 F1 ECUid 7F ERRcode 81 CS,其中ERRCode為錯(cuò)誤類型代碼。
在怠速狀態(tài)下,數(shù)據(jù)通信采用輸入輸出方式測(cè)量發(fā)動(dòng)機(jī)轉(zhuǎn)速,服務(wù)標(biāo)志符Sid=30H,則通信數(shù)據(jù)幀為C333 F13032014A。如果通信正常,ECU發(fā)出正響應(yīng)幀,其格式為84 F1 ECUid 703201 SpeedCode CS,其中SpeedCode代表發(fā)動(dòng)機(jī)轉(zhuǎn)速字節(jié)碼;若發(fā)送命令錯(cuò)誤或ECU正忙,則發(fā)出負(fù)響應(yīng)幀,其格式為83 F1 ECUid 7F 30 ERRcode CS。轉(zhuǎn)速n的計(jì)算公式為:
式中:S為將SpeedCode轉(zhuǎn)換為十進(jìn)制對(duì)應(yīng)的數(shù)值。
測(cè)速系統(tǒng)的調(diào)試與驗(yàn)證通過對(duì)汽車發(fā)動(dòng)機(jī)怠速狀態(tài)下最優(yōu)怠速轉(zhuǎn)速進(jìn)行測(cè)量和調(diào)整實(shí)現(xiàn)。亞歐系汽車提供的汽車故障診斷測(cè)試接口OBD-II,一般都通過K線和KWP2000通信協(xié)議進(jìn)行汽車發(fā)動(dòng)機(jī)及其他部件的故障檢測(cè)。將發(fā)動(dòng)機(jī)測(cè)速系統(tǒng)通過K線連接發(fā)動(dòng)機(jī)ECU,并通過ODB-Ⅱ中的蓄電池電源給測(cè)速系統(tǒng)供電。測(cè)速系統(tǒng)插上診斷測(cè)試接口后,測(cè)速系統(tǒng)發(fā)出激活時(shí)序和開始通信命令,發(fā)動(dòng)機(jī)ECU發(fā)出正響應(yīng),返回通信關(guān)鍵字;測(cè)速系統(tǒng)根據(jù)關(guān)鍵字完成通信系統(tǒng)參數(shù)設(shè)定,同時(shí)點(diǎn)亮綠色通信指示燈,表明系統(tǒng)已經(jīng)連接上發(fā)動(dòng)機(jī)ECU。發(fā)動(dòng)機(jī)ECU和測(cè)速系統(tǒng)建立通信之后,則啟動(dòng)汽車發(fā)動(dòng)機(jī),并將其調(diào)整到怠速狀態(tài),此時(shí)數(shù)碼管立即顯示怠速狀態(tài)下的轉(zhuǎn)速,并通過手動(dòng)調(diào)整風(fēng)門開度的大小和怠速供油量等方式來調(diào)整怠速轉(zhuǎn)速高低,直到調(diào)整到發(fā)動(dòng)機(jī)不抖動(dòng)時(shí)的最低轉(zhuǎn)速。此時(shí)的轉(zhuǎn)速為最佳怠速轉(zhuǎn)速。如果通信傳輸故障或ECU發(fā)出負(fù)響應(yīng),則通信故障指示紅燈亮;如果通信過程中沒有數(shù)據(jù)響應(yīng),則數(shù)碼管全顯示0,綠燈和紅燈都不亮。
系統(tǒng)可以通過特定的接口與汽車ECU進(jìn)行通信,可以方便地進(jìn)行汽車故障診斷,實(shí)時(shí)地監(jiān)測(cè)汽車的工作狀況如測(cè)量發(fā)動(dòng)機(jī)的轉(zhuǎn)速,并可以通過特定的命令幀來控制汽車發(fā)動(dòng)機(jī)的運(yùn)轉(zhuǎn)如調(diào)整怠速狀態(tài)下發(fā)動(dòng)機(jī)轉(zhuǎn)速等。
由于時(shí)間限制,本系統(tǒng)只能測(cè)量轉(zhuǎn)速,且只支持KWP2000協(xié)議,測(cè)速方式也只支持怠速狀態(tài)。后續(xù)工作還可以通過程序發(fā)送其他類型的請(qǐng)求幀,進(jìn)而支持多種方式測(cè)取轉(zhuǎn)速;同時(shí)可以對(duì)系統(tǒng)加以改進(jìn),使其不僅能測(cè)速,還能進(jìn)行轉(zhuǎn)速控制。為了提高系統(tǒng)的通用性,還可以設(shè)計(jì)多通信接口方式,使其支持OBDII所有的診斷通信協(xié)議。顯示裝置若采用LCD液晶屏顯示方式來實(shí)現(xiàn),還可以完成故障碼的顯示,從而為汽車故障診斷提供強(qiáng)有力的依據(jù)。
[1]胡思德.汽車車載網(wǎng)絡(luò)技術(shù)詳解[M].北京:機(jī)械工業(yè)出版社,2006:21-63.
[2]過錫雋.KWP2000診斷通信模塊的開發(fā)[J].江南大學(xué)學(xué)報(bào):自然科學(xué)版,2007(6):543-586.
[3]林元新,楊明付,董加鳳.KWP2000通信協(xié)議與讀碼器工作原理[J].汽車電器,2008(1):321-326.
[4]蘇榮艷.基于SAE J1850通信協(xié)議的汽車發(fā)動(dòng)機(jī)故障診斷與測(cè)試[D].上海:上海交通大學(xué),2005.
[5]余剛.基于CAN總線的車身網(wǎng)絡(luò)實(shí)驗(yàn)平臺(tái)設(shè)計(jì)研究[D].廣州:廣東工業(yè)大學(xué),2010.
[6]International Organization for Standardization.ISO 142301999 Road vehicles diagnostic systems keyword protocol 2000[S].Switzerland:ISO Copyright Office,2000.
[7]International Organization for Standardization.ISO 150312004 Road Vehicles Communication between vehicle and external equipment for emissionsrelated diagnostics[S].Switzerland:ISO Copyright Office,2004.
[8]俞衛(wèi)芳.汽車電控系統(tǒng)通信模塊的研制[D].南京:江蘇大學(xué),2005.
[9]秦曾煌.電工學(xué)下冊(cè)(電子技術(shù))[M].北京:高等教育出版社,1999:103-108.
[10]李朝青.單片機(jī)原理及接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,2005:37-62.