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