陶曾杰,桂 馨,王 舟,龍 林,李 格
(湖南信息學院 電子科學與工程學院,長沙410151)
隨著汽車電子的廣泛應用,汽車網(wǎng)絡化進程的加快。電子控制單元(ECU)控制的組件數(shù)量正在增加,這些電子控制系統(tǒng)的增加極大地改善了現(xiàn)代車輛的動力、經(jīng)濟性和舒適性。然而,在改善車輛的性能和智能的同時,其復雜的控制系統(tǒng)使得診斷車輛故障越來越困難,降低了車輛的可靠性并增加了維修難度。傳統(tǒng)維護無法解決時域、時間和效率等各方面的問題[1]。CAN 網(wǎng)絡以其良好的性能、獨特的設計、高速的通信速率、靈活的通信方式,在車載網(wǎng)絡領域得到了廣泛的應用。與此同時,基于CAN 總線的汽車故障診斷技術蓬勃發(fā)展,其智能化和網(wǎng)絡程度的突出優(yōu)勢,使CAN 總線早已被一些著名的汽車制造廠商應用于汽車診斷、控制和通信中[2]。根據(jù)目前社會大勢所需,本文設計了一套基于CAN 總線的汽車診斷系統(tǒng)。人們可以實時掌握車輛信息,解決傳統(tǒng)診斷方式帶來的不便,并且滿足人們在安全度、舒適度、便捷性和成本低、少污染等方面的要求,對于汽車的維修和保養(yǎng)將起到重大意義。
本項目是針對所有車型CAN 網(wǎng)絡平臺而設計的故障診斷系統(tǒng)。由微控制器(STM32F103C8T6)、ECU、上位機、CAN 通信模塊、液晶顯示模塊、按鍵系統(tǒng)、存儲模塊和其他外圍模塊等構(gòu)成了本系統(tǒng)的硬件組成部分。各個控制模塊之間的信息通過CAN 進行連接與交互。ECU 作為節(jié)點搭建在汽車診斷系統(tǒng)中,其內(nèi)部存有自診斷模塊。當汽車發(fā)生故障時,采用診斷設備進行診斷。在診斷的過程中,根據(jù)通信協(xié)議實現(xiàn)診斷設備與ECU 之間的通信。診斷設備首先需要發(fā)出診斷請求,該請求包含一個ID 為服務的請求信息,網(wǎng)關識別該服務請求信息后,傳遞給整個CAN 網(wǎng)絡的ECU 節(jié)點。當ECU 自診斷系統(tǒng)中的某個控制器節(jié)點接收該信息后,對該請求進行處理,并返回服務器響應,與汽車診斷系統(tǒng)建立通信聯(lián)接。診斷系統(tǒng)讀取到響應的診斷信息后,在后臺監(jiān)控系統(tǒng)上位機中完成物理數(shù)值與總線數(shù)值之間的轉(zhuǎn)換,結(jié)果以物理數(shù)值或圖形曲線的形式輸出,呈現(xiàn)在液晶顯示屏上[3]。系統(tǒng)總體框圖如圖1所示。
圖1 系統(tǒng)總體框圖Fig.1 Block diagram of system
采用STM32F103C8T6 作為主控芯片構(gòu)成本系統(tǒng)的微型處理器。STM32 是基于超低耗的ARM Cortex-M 內(nèi)核,工作溫度在-40 ℃~85 ℃之間,工作頻率最高可達72 MHz,工作電壓為2 V~3.6 V。擁有多達11 個定時器,13 個通信接口、USB 接口、CAN、內(nèi)置多達512 KB 的嵌入式Flash[4]。使用STM32F103C8T6作為主控芯片構(gòu)建高性能的CAN 總線通信系統(tǒng),能夠達到速度更快、更具安全性的要求。
STM32 通過一路SPI 驅(qū)動Flash 從而控制Flash 的讀寫。并且能夠存儲聲音、文本、數(shù)據(jù)等。外部Flash 采用W25Q128FB 芯片,該芯片支持SPI 接口,以及更高性能的DUAL/QUAD SPI。25 系列的靈活性和性能比一般的串行Flash 設備要高,該芯片容量為128 Mbit/16 Mbyte,時鐘頻率小于133 MHz,供電范圍為2.7 V~3.6 V,工作溫度在-40 ℃~+85 ℃之間,價格便宜,通用性強。硬件電路如圖2所示。
圖2 Flash 存儲模塊電路Fig.2 Flash memory module circuit
本設計中,采用TFT 液晶顯示屏作為液晶顯示模塊,該顯示屏支持SPI 接口通信,尺寸為2.8 寸,供電電壓為3.2 V,最大工作電流為60 mA,分辨率達到240×320,該顯示屏亮度好、顏色鮮艷、使用方便靈活、功耗低、壽命長[5]。STM32F103C8T6 通過I/O口與TFT 液晶顯示模塊相連,實現(xiàn)數(shù)據(jù)通信。單片機的FSMC_D1~FSMC_D15 端口分別與顯示屏的DB1~DB5 端口相連作為數(shù)據(jù)通信口,STM32F103C8T6其他相應端口連接芯片的RET、RD、WR、RS 和CS端,實現(xiàn)復位、讀寫、指令數(shù)據(jù)切換、片選等功能,接口電路如圖3所示。
圖3 液晶顯示模塊接口電路Fig.3 Interface circuit of LCD module circuit
發(fā)動機出現(xiàn)故障時,顯示屏會顯示故障燈標志并且發(fā)出警報信號。報警電路通常采用無源蜂鳴器作為主器件。由于無源蜂鳴器是流控器件,要使蜂鳴器的響度大,只能設定在規(guī)定范圍內(nèi)流進的電流值大。同時電路上的TTL 電平驅(qū)動不了蜂鳴器,為了確保流經(jīng)蜂鳴器的電流要足夠大,必須要利用三極管的放大能力使電流放大。該電路設計所用的三極管是S8050 NPN 型三極管,128 倍放大值更加容易實現(xiàn)飽和度。并且電路中使用1 kΩ 電阻R23作為限流電阻來預防三極管燒壞。報警電路如圖4所示。
圖4 報警電路Fig.4 Alarm circuit
CAN 總線的硬件電路主要是完成CAN 通信控制器與微處理器之間和CAN 收發(fā)器與物理總線之間的信息通信[6]。在該電路中,MCU 采用功能強大、性能好、存儲空間大的STM32F103C8T6 作為CAN總線收發(fā)模塊,主要用于對MCU 自帶的CAN 控制器串口的初始化,控制CAN 控制器執(zhí)行通信任務,實現(xiàn)數(shù)據(jù)的接收和發(fā)送,以及實現(xiàn)CAN 總線的數(shù)據(jù)協(xié)議與PC 的數(shù)據(jù)交換[7]。
CAN 控制器采用STM32F103C8T6 自帶的bx Can,該CAN 控制器的波特率最高可達1 Mbps,支持時間觸發(fā)通信。CAN 控制器能夠?qū)崿F(xiàn)CAN 總線的協(xié)議底層以及數(shù)據(jù)鏈路層所有功能,是CAN 總線接口電路的關鍵器件。CAN 控制器從微處理器中接收數(shù)據(jù),處理數(shù)據(jù)并將其傳遞給CAN 收發(fā)器。同時實現(xiàn)微處理器與上位機之間的數(shù)據(jù)通信。
CAN 收發(fā)器采用TJA1050,TJA1050 是CAN 高速收發(fā)器,它具有速率高、低功耗、安全性高、抗干擾能力強等特點[6]。TJA1050 主要用來連接CAN 控制器和物理總線,發(fā)送節(jié)點通過TXD 引腳發(fā)送數(shù)據(jù),RXD 引腳監(jiān)視總線狀態(tài)。TJA1050 的RXD 和TXD 引腳與CAN 控制器的信號接收端RX 和發(fā)送端TX 相連,實現(xiàn)多路CAN 采集功能,CAN 接口電路如圖5所示。
圖5 CAN 接口電路Fig.5 CAN interface circuit
遠程服務器端采用JAVA 技術開發(fā),綜合運用消息隊列、線程、Socket 等相關技術來實現(xiàn)。遠程服務器端對車載終端和遠程故障診斷客戶端進行監(jiān)控。車載終端上傳的數(shù)據(jù),通過處理打包成含有頭部信息(頭部信息:含有車型的基本信息和客戶信息)的數(shù)據(jù)包,用戶可以將數(shù)據(jù)包上傳至服務器,同時由專門線程負責數(shù)據(jù)的存儲;再將客戶上傳數(shù)據(jù)通過大數(shù)據(jù)進行對比分析,將分析的結(jié)果提供對外接口供Web 端調(diào)用,呈現(xiàn)在遠程診斷客戶端上。主流程如圖6所示。
監(jiān)控平臺主要由上位機實現(xiàn)后臺監(jiān)控,液晶顯示屏進行顯示。按鍵模塊通過藍牙連接診斷接頭實現(xiàn)診斷系統(tǒng)的操作。
(1)選擇車型列表,車型主要有寶馬、路虎、捷豹、奔馳等。
(2)選擇添加系統(tǒng),系統(tǒng)主要有發(fā)動機系統(tǒng)、冷卻系統(tǒng)、懸掛系統(tǒng)、轉(zhuǎn)向系統(tǒng)等。
(3)選擇功能列表:數(shù)據(jù)流信息、故障碼信息、清除故障碼、版本信息。
(4)監(jiān)視動態(tài)數(shù)據(jù)流,數(shù)據(jù)流是發(fā)動機運轉(zhuǎn)時的各項參數(shù)值,如車輛的位置、開車的速度、油耗等行程情況。
圖6 主流程Fig.6 Main flow chart
(5)可以查看發(fā)動機轉(zhuǎn)速和冷卻液溫度波形,并且可以自行設置發(fā)動機轉(zhuǎn)速和冷卻液溫度。
(6)數(shù)據(jù)流可以以文件的形式儲存和記錄,便于查看。
(7)當發(fā)動機出現(xiàn)故障時,顯示屏會顯示故障燈標志并且發(fā)出警報。
(8)讀取故障碼信息和清除故障碼。
(9)可以自行查詢故障碼的記錄,更清楚的了解車輛具體的故障信息。
液晶顯示模塊和按鍵模塊的配合使用能實現(xiàn)操作系統(tǒng)的人機相互,用戶可根據(jù)自己的選擇與要求,通過按鍵進行液晶屏界面的操作。
(1)進入診斷頁面,如圖7所示。
圖7 診斷頁面Fig.7 Diagnostic page
(2)選擇車型列表,如圖8所示。
圖8 車型列表Fig.8 List of vehicle types
(3)選擇系統(tǒng)列表,如圖9所示。
圖9 系統(tǒng)列表Fig.9 System list
(4)選擇功能列表,如圖10所示。
圖10 功能列表Fig.10 Feature list
(5)查看數(shù)據(jù)流信息,如圖11所示。
圖11 數(shù)據(jù)流信息Fig.11 Data flow information
(6)檢測故障碼信息并清除故障碼,如圖12所示。
圖12 故障碼信息Fig.12 Trouble code information
本文介紹CAN 總線的基本工作原理、技術特點及在汽車上的應用。設計了基于CAN 總線的汽車控制系統(tǒng),開發(fā)了汽車診斷系統(tǒng)的軟件,實行了軟件功能的調(diào)試,并完成了該系統(tǒng)硬件電路的設計。通過測試,液晶顯示模塊和按鍵模塊能實現(xiàn)對該診斷系統(tǒng)的顯示和操作,能夠顯示汽車運行的狀態(tài)數(shù)據(jù)與故障信息,選擇車型、系統(tǒng)、功能等列表,查看和調(diào)節(jié)發(fā)動機轉(zhuǎn)速、溫度冷卻液以及讀取和清除故障碼。該系統(tǒng)具有結(jié)構(gòu)緊密、置信度高、功能完善和成本低等優(yōu)點,能夠較好地滿足汽車診斷系統(tǒng)的工作要求。