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