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