羅洪波
(柳州職業技術學院機電工程系,廣西 柳州 545006)
汽車發動機一般集成了電子控制系統[1](engine electronic control system,EECS),EECS內置了轉速測量傳感器(如曲軸轉角與轉速霍爾傳感器)。電控系統通過內置傳感器測量得到的發動機轉速信號來控制發動機的燃油噴射,使發動機工作在最佳工況。電控系統的核心是電控單元(electronic control unit,ECU),其作用是完成各種傳感器輸入信號的采集和調理,并根據發動機管理控制算法進行運算,輸出控制信號給執行部件。ECU中的動力總成控制模塊(powertrain control module,PCM)在汽車正常運轉時會將轉速信號通過傳感器記錄下來,并將其存儲到特定的存儲單元中,這樣汽車車載網絡的其他電子控制單元就可以方便地通過特定的通信協議獲取該速度信號。同理,外部診斷設備或掃描工具也可以通過特定接口與ECU進行通信獲得該轉速信號。
由于汽車內部有多種不同類型的設備電子控制系統,為了實現各系統之間以及內部系統和外部設備之間的通信,相應的汽車網絡通信協議相繼被制定。按照通信速度,協議大致可以分為三類[2],即A類、B類、C類。A類協議主要面向低速設備(10 kbit/s以下),B類協議主要面向中速設備(100 kbit/s以下),C類協議主要面向高速設備(10 Mbit/s以下)。
汽車發動機故障診斷采用的通信協議屬于B類協議[3],常用的協議有 ISO 9141、ISO 14230、SAE J1850 PWM、SAE J1850 VPM和CAN。其中,ISO 14230可以看作是ISO 9141的改進,主要被歐州和大多數亞洲汽車生產廠商所采納。SAE J1850 PWM主要被美國福特公司所采用[4];而SAE J1850 VPM主要被美國通用公司所采用。CAN是一種新的高速通信協議[5],通信實現較為簡便,有較大的發展前景,但是其目前在國內汽車發動機中覆蓋率還不高。
ISO 14230協議是ISO為開發有效的道路用車診斷系統而制定的,通稱為KWP2000[5]。目前,該協議己廣泛用于電控發動機的故障診斷工具開發。KWP2000主要用于電控系統的在線故障診斷,它因傳輸快捷可靠、便于實現、對軟硬件的要求不高的優點而被各發動機制造商廣泛地應用于電控發動機的故障診斷、實時監控和匹配標定系統的開發。
KWP2000串行通信協議在啟動通信后,會返回2 B信息來指示系統所支持的報文格式,這2 B信息被稱為關鍵詞。它依據開放性系統互連(open system interaction,OSI)基本參考模型[6],但只定義 OSI參考模型的物理層、數據鏈路層和應用層這3個子層。
1.2.1 物理層
KWP2000物理層遵循ISO 9141-2中物理層的規定[6],可以提供12 V或24 V電壓。它規定車輛可采用汽車診斷連接頭中的單通信數據線(僅有K線)或雙通信數據線(K線和L線)方式連接至外圍診斷工具。K線為雙向數據線,用于通信和初始化,采用一根信號線完成半雙工異步通信;L線為單向數據線,僅用于初始化,在除初始化以外的其他時間里總是處于邏輯“1”的空閑狀態。KWP物理層的信號電平和容差范圍如圖1所示。

圖1 信號電平和容差范圍示意圖Fig.1 Signal level and the tolerance range
ISO 9141-2規范使用標準的不歸零編碼(nonreturn-to-zero,NRZ)作為傳輸格式,當總線處于邏輯“1”狀態時,圖1中的信號電平保持為高電平,不會出現回零負跳變。當總線處于邏輯“1”狀態時必須滿足輸出電平不低于電源電壓UB的80%,輸入電平不低于UB的70%;邏輯“0”狀態時必須滿足輸出電平不高于UB的20%,輸入電平不低于UB的30%。
當ECU處于邏輯“1”狀態時,其K線和地之間存在一個相對地的電阻,其阻值約為50 kΩ;當ECU處于邏輯“0”狀態時,其K線和地之間也存在一個相對地的電阻,其阻值不超過110 Ω。外部設備若與ECU通信,總線需設置阻值為510 Ω的上拉電阻,安放在外圍診斷設備或測量設備內部。
1.2.2 數據鏈路層
①傳輸字節格式
數據傳送時每字節低位在前,每個字節由起始位、8位數據位、停止位組成,沒有奇偶校驗位,通信波特率為 10.4 kbit/s。
②數據幀格式
KWP2000協議的消息由消息頭、數據字節和校驗和這3部分組成,其結構如圖2所示。
圖2中,Fmt代表幀頭,Tgt代表ECU的物理地址或功能地址,Src代表診斷測量設備的物理地址,Len代表數據字節長度,Datai代表傳輸的數據,Sid代表服務標志符,CS代表累加求和校驗值[6],上標1表示該字節是由返回關鍵字決定的可選字節,上標2表示該部分字節長度是可由幀頭Fmt或數據字節長度Len設定。
③定時間參數的約定
數據報和數據字節之間有著嚴格的定時參數約定[6],數據流的一般定時參數約定如圖3所示。

圖3 一般定時參數約定示意圖Fig.3 General timing parameters
圖3中,P1代表響應幀字節間的定時參數,P2代表請求幀與響應幀間的定時參數,P3代表響應幀與請求幀間的定時參數,P4代表請求幀字節間的定時參數。
④ECU的激活方式
ECU有快速激活和5 Baud激活兩種激活方式。由于5 Baud激活需要延時2 s以上,速度較慢,因此,一般采用快速激活方式,具體如圖4所示。

圖4 快速激活方式定時示意圖Fig.4 Timing of fast activation method
1.2.3 應用層
應用層主要是規定掃描工具以何種數據報格式請求通信服務[7],同時 ECU以何種報文格式響應。KWP2000協議中,不同通信服務功能通過數據幀中第一字節的服務標志符Sid來表示。通信服務主要分為兩大模塊:通信模塊和診斷模塊。通信模塊包括通信管理、數據傳送、上傳/下載這3個功能。通信管理在數據鏈路層已作說明,數據傳送服務功能單元主要用來讀取數據記錄,訪問存儲器。常用的通信服務請求及響應消息定義如表1所示。

表1 常用通信服務標志符Tab.1 Common identifier of communication services
發動機測速系統根據功能需求,主要分為電源模塊、顯示模塊、通信接口模塊、指示模塊、按鍵模塊、單片機最小系統模塊和ISP編程模塊,其具體實現框圖如圖5所示。

圖5 發動機測速系統框圖Fig.5 Block diagram of engine speed measuring system
簡易汽車發動機測速系統需要具備的特點是體積小、成本低、測速方便、易于擴展。因此,選用低成本51單片機作為測速系統的控制核心。MCS-51系列在我國使用廣泛且能夠兼容的外圍芯片較多,其典型產品 AT89S52單片機具有較高的性能價格比[8]。AT89S52采用CMOS工藝制作,是80C51的增強型并且指令完全兼容。由于發動機ECU總線接口采用的電平形式為特定的K線電平,而單片機支持的電平形式為TTL電平,為了與ECU電平兼容,需要設計相應的通信接口模塊進行電平轉換和通信方式轉換。發動機轉速測量值采用高亮度數碼管來顯示,并以相應的指示燈進行電源上電指示和通信狀態輔助指示。由于測速系統功耗很低,因此可以通過總線接口中的電源線從汽車蓄電池竊電,汽車蓄電池電壓一般為12 V,而單片機的工作電壓為5 V,可以通過12 V/5 V的直流電源適配模塊實現電壓變換。為了實現在應用中不拔插單片機就能實現程序的下載,系統編程接口采用在系統中編程(in system programming,ISP)方式來實現。
K線有與單片機通信的專用接口芯片[8],如MC33290、L9637、MC33190。由于專用芯片購買比較困難,價格也比較高,因此需自行設計通信接口模塊來實現電平變換。通信接口模塊的主要功能是通過4個NPN型三極管實現K線電平和單片機TTL電平的轉換[9],具體實現電路如圖6所示。

圖6 通信接口模塊電路圖Fig.6 Circuit of the communication interface module
由于K線在數據鏈路層上的通信數據格式(1位起始位、8位數據位、1位停止位)和51單片機串行通信接口的數據格式完全兼容,因此單片機串行通信接口可采用AT89S52的UART串行通信接口實現。
通信模塊是測速系統中最關鍵的一個模塊。通信模塊需要完成通信初始化、ECU喚醒、開始通信幀發送、數據傳輸通信幀發送、停止通信幀發送、響應幀接收和轉速計算以及相應的錯誤處理和通信指示功能。
通信初始化主要是對串口進行一些通信設置工作和一些現場保護工作。通信初始化首先需進行串口波特率的設置,根據通信鏈路數據格式的需求,串口工作方式選擇為方式1(10位異步收發),波特率采用由定時器1 控制方式[10],波特率為10.4 kbit/s,單片機晶振fosc為6 MHz。同時,將電源控制寄存器PCON最高位SMOD置1,使得波特率增倍。串口波特率產生方式設置為工作模式2(自動重裝入8位計數值),定時器1計數值X可以通過下式計算得到:

式中:M為SMOD;fosc為晶振頻率;B為串口所設置的波特率。
串行通信接口必須能工作在普通I/O口模式和串行通信接口模式兩種接口模式。激活模式要求串口通信接口中的TXD必須設置為I/O模式,通過直接對I/O的操作,輸出激活時序(快速激活方式或5 Baud激活方式),然后將串行口配置為異步通信模式,等待接收。快速激活方式采用先延時300 ms并從TXD輸出高電平,然后輸出25 ms低電平,再輸出25 ms高電平,延時采用軟件精確延時的方式。5 Baud激活采用延時的方式,以每隔200 ms發送一個位的方式發送功能數據33H,具體做法是按 200 ms延時,依次發送0110011001H。
終止通信數據幀的服務標志符Sid=82H,則終止通信數據幀為C133 F18267。如果能正確終止通信,則發出正響應幀,其格式為81 F1 ECUid C2 CS;否則,返回負響應幀,其格式為83 F1 ECUid 7F ERRcode 82 CS。整個通信中斷程序流程圖如圖7所示。

圖7 通信服務程序框圖Fig.7 Block diagram of the communication service routine
開始通信數據幀的服務標志符Sid=81H,采用3 B的頭數據幀,地址方式為功能地址,開始通信數據幀(采用十六進制)為C133 F18166。若ECU已經成功激活且開始通信命令正確,ECU則會發出正響應幀,其格式為81 F1 ECUid C1 KeyWord(2 B)CS,其中ECUid為ECU物理地址,KeyWod為通信參數關鍵字,CS為累加校驗和。如果開始通信命令錯誤或ECU正忙,則發出負響應幀,其格式為 83 F1 ECUid 7F ERRcode 81 CS,其中ERRCode為錯誤類型代碼。
在怠速狀態下,數據通信采用輸入輸出方式測量發動機轉速,服務標志符Sid=30H,則通信數據幀為C333 F13032014A。如果通信正常,ECU發出正響應幀,其格式為84 F1 ECUid 703201 SpeedCode CS,其中SpeedCode代表發動機轉速字節碼;若發送命令錯誤或ECU正忙,則發出負響應幀,其格式為83 F1 ECUid 7F 30 ERRcode CS。轉速n的計算公式為:

式中:S為將SpeedCode轉換為十進制對應的數值。
測速系統的調試與驗證通過對汽車發動機怠速狀態下最優怠速轉速進行測量和調整實現。亞歐系汽車提供的汽車故障診斷測試接口OBD-II,一般都通過K線和KWP2000通信協議進行汽車發動機及其他部件的故障檢測。將發動機測速系統通過K線連接發動機ECU,并通過ODB-Ⅱ中的蓄電池電源給測速系統供電。測速系統插上診斷測試接口后,測速系統發出激活時序和開始通信命令,發動機ECU發出正響應,返回通信關鍵字;測速系統根據關鍵字完成通信系統參數設定,同時點亮綠色通信指示燈,表明系統已經連接上發動機ECU。發動機ECU和測速系統建立通信之后,則啟動汽車發動機,并將其調整到怠速狀態,此時數碼管立即顯示怠速狀態下的轉速,并通過手動調整風門開度的大小和怠速供油量等方式來調整怠速轉速高低,直到調整到發動機不抖動時的最低轉速。此時的轉速為最佳怠速轉速。如果通信傳輸故障或ECU發出負響應,則通信故障指示紅燈亮;如果通信過程中沒有數據響應,則數碼管全顯示0,綠燈和紅燈都不亮。
系統可以通過特定的接口與汽車ECU進行通信,可以方便地進行汽車故障診斷,實時地監測汽車的工作狀況如測量發動機的轉速,并可以通過特定的命令幀來控制汽車發動機的運轉如調整怠速狀態下發動機轉速等。
由于時間限制,本系統只能測量轉速,且只支持KWP2000協議,測速方式也只支持怠速狀態。后續工作還可以通過程序發送其他類型的請求幀,進而支持多種方式測取轉速;同時可以對系統加以改進,使其不僅能測速,還能進行轉速控制。為了提高系統的通用性,還可以設計多通信接口方式,使其支持OBDII所有的診斷通信協議。顯示裝置若采用LCD液晶屏顯示方式來實現,還可以完成故障碼的顯示,從而為汽車故障診斷提供強有力的依據。
[1]胡思德.汽車車載網絡技術詳解[M].北京:機械工業出版社,2006:21-63.
[2]過錫雋.KWP2000診斷通信模塊的開發[J].江南大學學報:自然科學版,2007(6):543-586.
[3]林元新,楊明付,董加鳳.KWP2000通信協議與讀碼器工作原理[J].汽車電器,2008(1):321-326.
[4]蘇榮艷.基于SAE J1850通信協議的汽車發動機故障診斷與測試[D].上海:上海交通大學,2005.
[5]余剛.基于CAN總線的車身網絡實驗平臺設計研究[D].廣州:廣東工業大學,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]俞衛芳.汽車電控系統通信模塊的研制[D].南京:江蘇大學,2005.
[9]秦曾煌.電工學下冊(電子技術)[M].北京:高等教育出版社,1999:103-108.
[10]李朝青.單片機原理及接口技術[M].北京:北京航空航天大學出版社,2005:37-62.