李曉杰
(煙臺汽車工程職業學院 車輛運用工程系,煙臺 265500)
目前汽車技術行業發展速度越來越快,針對客觀因素和主觀因素的影響,其可靠性、安全性也隨駕駛里程的增加而急速下降,汽車故障的維修問題難度也越來越大。目前,對汽車故障診斷的方法較為繁多,例如萬用表診斷、人工檢查、示波器診斷等[1]。隨著汽車電子診斷技術的發展與應用,電控系統變得越來越復雜,ECU被廣泛采用,所以本文在此基礎上面向嵌入式系統對汽車故障進行診斷。
嵌入式系統一般在特定的應用中進行使用,功耗低、集成度高、體積小,能夠把所需完成的任務直接集成到芯片中。嵌入式系統主要把計算機技術、電子技術、半導體技術等結合在一起,不斷創新知識集成系統。一定要精心設計嵌入式系統的硬件與軟件系統,盡量在最小的面積上實現更多的性能,軟件一般會固化在存儲器芯片或者單片機本身中。嵌入式系統自身并不具備自主開發的能力,一定要與計算機系統相連接才能進行開發與更改。
本文設計的診斷儀主要目的是為了節約診斷的成本和人力資源,從而提高診斷效率,所以應該滿足以下幾種特性:1)通用性;2)便攜性;3)易用性;4)擴展性。為了充分體現出診斷儀的所有特性,本次設計核心處理器選擇ARM嵌入式微處理器,該處理器具有低電壓、低功耗與低集成度的優點,通過OBD-Ⅱ系統對診斷儀硬件進行設計,Linux作為軟件設計提供了穩定性較高的工作環境。綜上所述,將該診斷儀系統分為3個模塊,協議轉換接口電路作為前端,無線傳輸電路作為后端來發送故障信息到遠端。由S3C2410X作為CPU核心芯片主控CPU完成接受到的數據的處理、擴展按鍵、顯示、實現人機交互,從而給出如下所示的總體框圖如圖1所示。

圖1 故障診斷儀總體框圖
在對電路接口進行設計時,需要完成以下數據鏈路層操作:網絡中信號格式的轉換 、報文的拆解幀 以及對差錯的控制。
所以選擇TL718芯片作為協議轉換芯片進行接口單元設計,主要作用是實現數據鏈路層的各種工作。TL718芯片是一款專用協議轉換芯片,能夠支持多種通信協議并且可以對通信協議進行自動匹配,與此同時,需要添加外圍電路,TL718芯片的使用對環境沒有具體要求,工作命令包括內部命令與OBD命令。當發送以16進制數開頭的ASCII碼的指令時,TL718會認為是OBD命令,會將成對的ASCII碼16進制數轉換成單個字節向汽車電腦數據總線發送。在命令發送之后,如果能夠接收到信息而且地質吻合,那么 TL718會通過RS232把數據發送到遠端。反之忽略該信息。在等待時間結束之前沒有收到匹配地址數據,TL71 8將發送“NO DATA”指令,反之則復位時間,繼續等待到等待時間溢出為止[2]。TL718的接口電路圖如圖2所示。

圖2 TL718接口電路圖
TL718的芯片內部會集成CAN控制器, 需要在外部搭配一個CAN收發器來完成對CAN報文的收發。CAN總線是由兩個或兩個以上的CAN節點并聯在一起的通信網絡,具有抗電磁干擾性強、高位速率通信距離遠、檢測通信錯誤的特點[4]。在汽車電子、自動控制中有很強的應用。本文選用MCP2551芯片作為CAN收發器,該芯片具有高速差分收發、可設置三種工作模式、熱關斷等優點,但存在靜態電流大的不足[3]。CAN收發器引腳功能說明如表1所示。

表1 MCP2551引腳說明
3.3.1 存儲器
嵌入式系統的存儲器大致可以分為SDRAM與FLASH兩種:1)SDRAM存儲器,在嵌入式系統中經常用作內存,其優點是單位空間存儲容量大且價格低廉;2)FLASH存儲器,是一種可電擦寫存儲器,在掉電時信息不會丟失,通過內部嵌入算法對芯片進行操作,其優點在于低功耗、容量大、擦寫速度快。
3.3.2 按鍵模塊
該診斷儀設計了4個按鍵功能:k1表示讀取故障代碼 、k2表示查詢汽車基本信息 、k3表示清除OBD-II故障代碼、k4表示發送診斷儀中信息到遠端計算機。按鍵驅動的流程圖如圖3所示。

圖3 按鍵驅動的流程圖
首先初始化,再等待按鍵,然后進入中斷處理,等待延時,判斷是否處于按下狀態,最后確認按鍵事件發生。鍵盤鍵值功能如表2:

表2 鍵盤鍵值功能表
3.3.3串行接口
UART(通用異步收發器)被廣泛應用到串行數據傳輸中。串行通信一般采用異步通信來完成串行通信功能。串口只需要RXD、TXD和GND即可。本文使用MAX3232進行RS232C信號和S3C410X系統的TTL電路信號的電平轉換。串口電平轉換電路如圖4所示。

圖4 串口電平轉換電路
本文采用GPRS(通用無線分組業務)進行遠程無線傳輸技術,該技術能夠實現數據的遠程傳輸, GPRS具有高效、成本低的優點,而且覆蓋范圍廣,即在有手機信號的地方都可以使用GPRS,在小數量的數據傳輸中有很廣泛的應用[5]。
嵌入式系統是一種以應用為中心的計算機系統, 具有靈活性強、可靠性高、成本低、體積小、易移植性、低功耗等特點。嵌入式Linux系統軟件被劃分為四層:引導加載程序、內核、文件系統、用戶應用程序。嵌入式操作系統主要對智能芯片進行操作并且可以對各種部件的裝置進行統一調控。嵌入式軟件的開發,通常選用宿主機(PC機)和目標機將開發環境和目標運行環境分離。本文在宿主機上運行的交叉開發軟件是基于ARM920T的S3C2410X的ARM交叉編譯器[6]。
嵌入式Linux的移植主要分為Bootloader、Linux內核以及文件系統的移植三種。1)Bootloader具備初始化處理器、初始化必要硬件、設置處理器的寄存器以及內存、從特定位置把操作系統和文件系統調入內存的功能。在啟動模式的第一個階段完成硬件設備初始化;第二階段會對硬件設備進行初始化并且對內存進行診斷,將文件系統從FLASH讀到RAM中、為內核進行參數設置、調用內核文件運行五項任務。2)Linux內核移植具有成本低、開發前景好、容易獲得開發工具的優點,其移植過程分為四步:Linux源代碼的獲取、Linux內核源代碼的修改、內核生成內核映像文件的交叉編譯、內核映像到目標平臺的燒寫。3)文件系統是操作系統用于明確磁盤或分區上文件組織的方法 ,在構建時一定要注意文件系統類型和內容的選擇。
通過驅動軟件來對設備的行為進行控制,設備驅動是硬件與內核之間的橋梁,所以需要對程序設計工作進行簡化。Linux操作系統下的設備分為塊設備、字符設備、網絡接口三種類型。程序的驅動需要對設備進行初始化與釋放,將數據進行讀取并且傳送到相應硬件,對錯誤進行診斷并且處理。Linux驅動程序主要被換分為自動配置和初始化子程序、對I/O請求的子程序進行服務以及中斷服務子程三部分[7]。一般Linux驅動程序主要用來中斷處理以及系統調用。
關于汽車故障診斷儀軟件的設計主要包括設計應用程序以及硬件驅動。當診斷儀通電之后,進行裝置初始化,判斷用戶的等待按鍵,當接收到用戶按鍵之后,執行相應的命令。診斷儀開機之后會連接OBD-Ⅱ,通過while(1)等待按鍵, 一旦檢測到按鍵, 程序會向總線發起初始化命令,通過中斷號來確定用戶所按下的鍵,最后輸入相應代碼執行。診斷儀工作流程圖如圖5所示:

圖5 診斷儀工作流程圖
本文對國內外汽車故障診斷的研發現狀進行分析,在汽車故障診斷儀設計過程中引進當前比較熱門的嵌入式技術,設計了一種基于嵌入式Linux汽車故障診斷儀。在未來的社會發展過程中,嵌入式系統會被廣泛應用到多個領域,小到掌上數字產品,大到汽車、航天飛機。
本文完成了如下幾項工作:
(1)根據課題背景,提出了故障診斷儀的設計方案;
(2)結合設計方案,對核心處理器進行選擇并對外圍電路進行擴展,完成了故障診斷儀的硬件電路設計。
(3)對故障診斷儀的軟硬件進行了仿真調試。
在汽車制造領域中汽車故障診斷是一個熱門課題,本文從協議轉換、控制處理、遠程傳輸三個模塊對故障診斷儀進行設計,并綜合遠程通訊技術嵌入式Linux開發環境,設計實現了便攜式故障診斷儀,對于提升汽車故障診斷與維修領域具有促進作用。