喬美昀,王 印
(上汽通用五菱汽車(chē)股份有限公司,廣西 柳州 545007)
現(xiàn)代汽車(chē)已進(jìn)入一個(gè)電子化武裝的時(shí)代,汽車(chē)除了作為傳統(tǒng)的交通工具之功能外,更多地成為一個(gè)人們休閑和娛樂(lè)的空間,有著第二家庭的美譽(yù)。越來(lái)越多的電子設(shè)備裝備于汽車(chē),使得診斷系統(tǒng)越來(lái)越復(fù)雜。隨著微機(jī)技術(shù)、可視化開(kāi)發(fā)應(yīng)用軟件的不斷發(fā)展,汽車(chē)診斷也逐步走向信息化。而串行通信正是是實(shí)現(xiàn)計(jì)算機(jī)和外部設(shè)備(單片機(jī)、PLC等)數(shù)據(jù)交換的一個(gè)簡(jiǎn)捷又實(shí)用的方法。本文介紹了串行通訊的重要意義以及汽車(chē)故障診斷儀、ECU和計(jì)算機(jī)三者之間通訊的基本原理:多個(gè)電子控制單元(ECU),用于接收從安裝在車(chē)內(nèi)的各種傳感器傳出的感知信號(hào),并依據(jù)汽車(chē)各裝置的有無(wú)異常情況,產(chǎn)生與其對(duì)應(yīng)的診斷代碼;VCI盒即故障診斷儀,通過(guò)上述電子控制單元接收與診斷對(duì)象項(xiàng)目相對(duì)應(yīng)的故障代碼,并傳送到PC機(jī)上;PC機(jī)診斷軟件,用于分析和處理接收到的故障代碼,并把故障的詳細(xì)說(shuō)明和應(yīng)對(duì)措施等信息傳送到VCI盒至汽車(chē)終端。
不同的獨(dú)立系統(tǒng)經(jīng)由線路相互交換數(shù)據(jù),即為通訊。通訊的目的就是數(shù)據(jù)交換。在電噴技術(shù)中,ECU電子控制單元起著關(guān)鍵性的核心作用,各種機(jī)械傳感器的工作參數(shù),都是沿著線路傳輸?shù)紼CU中然后被保存起來(lái),或者是作進(jìn)一步的處理。而這種傳輸遵循著特定的協(xié)議,對(duì)于這種協(xié)議的獲取,可通過(guò)采用串行通信口到個(gè)人PC機(jī)上實(shí)現(xiàn)。要采集到ECU中的故障信息流數(shù)據(jù),就有必要使用串行通信口進(jìn)行數(shù)據(jù)流的采集,通過(guò)信號(hào)的轉(zhuǎn)換,從而實(shí)現(xiàn)數(shù)據(jù)形式的轉(zhuǎn)換。在汽車(chē)電腦ECU中的電壓為0~12V,而通用PC的標(biāo)準(zhǔn)電壓為0~5V,因此要進(jìn)行相應(yīng)的電平轉(zhuǎn)換,以此來(lái)使用RS-232-C標(biāo)準(zhǔn),RS-232-C的標(biāo)準(zhǔn)電壓為3~15V,因此電平間的轉(zhuǎn)換是不可避免的。出于ECU中的數(shù)據(jù)流通過(guò)標(biāo)準(zhǔn)的OBDII標(biāo)準(zhǔn)接口,將數(shù)據(jù)流通過(guò)RS-232-C傳輸?shù)皆\斷盒上,通過(guò)電路板硬件的轉(zhuǎn)換,將信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)的形式,再通過(guò)RS-232-C傳入到通用PC上,即診斷儀在PC機(jī)上實(shí)現(xiàn)相應(yīng)的處理。
1.1 串口初始化
串口初始化通過(guò)串口常規(guī)、串口事件控制、串口流控制、串口超時(shí)空置和串口監(jiān)控控制共5個(gè)部分來(lái)實(shí)現(xiàn)。汽車(chē)故障診斷中,根據(jù)讀取ECU內(nèi)部不同的信息,設(shè)定不同的數(shù)組進(jìn)行接收,在初始化中,通過(guò)串口初始化功能函數(shù)來(lái)實(shí)現(xiàn)整個(gè)過(guò)程。
串口初始化流程圖見(jiàn)圖1,串口初始化窗口設(shè)計(jì)見(jiàn)圖2。
圖1 串口初始化流程圖
圖2 串口初始化界面
1.2 通訊初始化與串口的自動(dòng)連接設(shè)置
ISO9141-2、ISO14230(kwp2000)kw1281協(xié)議要求,在通訊前進(jìn)行總線初始化激活總線后,才能與ECU建立通訊,ISO9141kw1281只用低速的初始化模式,ISO14230用高速和低速兩種模式。專(zhuān)業(yè)診斷芯片自動(dòng)進(jìn)行總線初始化,它是在接收到第一個(gè)OBD命令時(shí)才開(kāi)始初始化。一旦總線完成了初始化過(guò)程,就可與車(chē)輛進(jìn)行數(shù)據(jù)通訊,但I(xiàn)SO9141、ISO14230、kw1281要求,在一定的時(shí)間內(nèi),數(shù)據(jù)總線上必須至少進(jìn)行一次通訊,如果5s或更長(zhǎng)時(shí)間沒(méi)有通訊,ECU將會(huì)退出診斷模式。必須重新進(jìn)行初始化后才能通訊。
專(zhuān)業(yè)診斷芯片在初始化完成建立連接后,如果檢測(cè)到它與ECU已超過(guò)設(shè)定的時(shí)間沒(méi)有通訊,專(zhuān)業(yè)診斷芯片將自動(dòng)為你發(fā)送一數(shù)據(jù)包到總線上,以保持連接。
為方便維修技術(shù)人員的診斷工作,本系統(tǒng)通過(guò)上位機(jī)程序設(shè)置實(shí)現(xiàn)了串口的自動(dòng)連接設(shè)置,完成了串口的初始化。打開(kāi)端口,對(duì)緩沖區(qū)進(jìn)行清空并讀取數(shù)據(jù),驗(yàn)證回執(zhí)命令是否正確,如果正確則端口連接成功,否則需延時(shí)重新連接。串口通訊自動(dòng)連接流程圖如圖3所示。
圖3 串口通訊連接
1.3 串口通訊故障診斷設(shè)計(jì)原理
單片機(jī)與計(jì)算機(jī)之間采用RS232C標(biāo)準(zhǔn)進(jìn)行點(diǎn)對(duì)點(diǎn)的通信連接,它們之間的通信采用“8位、無(wú)奇偶、波特率為38400bps”的方式。計(jì)算機(jī)作為上位機(jī),定時(shí)對(duì)作為下位機(jī)的VCI盒“點(diǎn)名”,無(wú)“應(yīng)答”就說(shuō)明串口通信發(fā)生故障。
具體的方案:在程序運(yùn)行過(guò)程中,計(jì)算機(jī)定時(shí)向VCI盒發(fā)一個(gè)控制代碼,當(dāng)VCI盒接收到該代碼后,根據(jù)通信協(xié)議向計(jì)算機(jī)回傳一個(gè)代碼(該代碼通過(guò)程序產(chǎn)生)。計(jì)算機(jī)在一定時(shí)間內(nèi)接收到VCI盒發(fā)送來(lái)的代碼,并與驅(qū)動(dòng)程序識(shí)別代碼比較,如2個(gè)識(shí)別代碼相符,計(jì)算機(jī)驅(qū)動(dòng)程序正常運(yùn)行。若計(jì)算機(jī)在一定時(shí)內(nèi)沒(méi)有收到識(shí)別代碼,或收到的識(shí)別代碼與驅(qū)動(dòng)程序識(shí)別代碼不相符,計(jì)算機(jī)屏幕會(huì)出現(xiàn)消息框“請(qǐng)檢查通信線路”。
計(jì)算機(jī)故障診斷通訊過(guò)程,是通過(guò)2個(gè)定時(shí)器控件(Timer)完成的。當(dāng)一事件產(chǎn)生時(shí),發(fā)送能使信號(hào)進(jìn)入“指令識(shí)別子程序”的控制代碼中。當(dāng)接收到數(shù)據(jù)后,回送一個(gè)“識(shí)別碼”。計(jì)算機(jī)若在指定的時(shí)間內(nèi)接收到正確的“識(shí)別碼”程序,則正常運(yùn)行;若在其時(shí)間內(nèi)沒(méi)接收到正確的“識(shí)別碼”,此時(shí)通信中斷。通訊過(guò)程中,當(dāng)VCI盒接收到從計(jì)算機(jī)傳送的指令后,將進(jìn)行處理,轉(zhuǎn)換成協(xié)議的正確形式再傳送給ECU。ECU接收到指令后,與自己內(nèi)部的指令進(jìn)行比較,如正確,則將數(shù)據(jù)返回到診斷盒,經(jīng)VCI盒處理,再發(fā)送到計(jì)算機(jī)上(如圖4所示)。
圖4 通訊中信號(hào)的傳遞
2.1 數(shù)據(jù)的發(fā)送與接收
當(dāng)系統(tǒng)初始化完成后,開(kāi)始故障診斷通訊,本系統(tǒng)利用RS-232通訊模式,通訊在數(shù)據(jù)的發(fā)送和接收過(guò)程中實(shí)現(xiàn),圖5、圖6為數(shù)據(jù)發(fā)送和接收的流程圖。
2.2 數(shù)據(jù)處理
在故障診斷數(shù)據(jù)處理的理論分析方面,研究了粗糙集理論及基于粗糙集理論的決策系統(tǒng)約減方法,構(gòu)建了最優(yōu)決策系統(tǒng),簡(jiǎn)化了診斷結(jié)構(gòu),提高了診斷效率。該系統(tǒng)集各種數(shù)據(jù)處理功能于一身,包括階次分析結(jié)果及各種時(shí)頻信號(hào)特征值的存儲(chǔ)及讀取、診斷過(guò)程中所需各種ECU模塊參數(shù)的設(shè)置、階次分析各種參數(shù)的輸入與讀取、通過(guò)圖形顯示直觀明了地分析數(shù)據(jù)、修改及擬定診斷結(jié)果中對(duì)應(yīng)的故障類(lèi)型、生成故障報(bào)表及對(duì)診斷結(jié)果進(jìn)行實(shí)時(shí)查詢(xún)等功能。在診斷通訊過(guò)程中,數(shù)據(jù)接收的過(guò)程,是一個(gè)數(shù)據(jù)處理的過(guò)程,根據(jù)ECU所對(duì)應(yīng)的相應(yīng)的協(xié)議,對(duì)其所接收到的數(shù)據(jù)作相應(yīng)的處理。如圖7所示。
圖5 數(shù)據(jù)發(fā)送流程圖
圖6 接收命令流程
串口通訊的連接,是整個(gè)汽車(chē)故障診斷通訊的基礎(chǔ),串口通訊對(duì)整個(gè)診斷系統(tǒng)的工作性能,甚至是整個(gè)機(jī)車(chē)的工作性能,都有著重要的影響。模塊化的構(gòu)架理念,在整個(gè)通訊過(guò)程中具有重要的影響意義。本文利用串口通訊的強(qiáng)大功能,采用VB6.0程序編寫(xiě),實(shí)現(xiàn)了汽車(chē)ECU模塊與診斷盒及計(jì)算機(jī)之間的通訊。
[1]范逸之,陳立元.VisualBasic與RS232串行通信控制[M].北京:清華大學(xué)出版社,2002.
圖7 數(shù)據(jù)處理流程圖
[2]劉 暢,江道輝.利用SPComm控件實(shí)現(xiàn)PC機(jī)與單片機(jī)串口通訊[J].微計(jì)算機(jī)信息,2005,(12):89-91.