1 終端功能 本監(jiān)控終端除了具有傳統(tǒng)的記錄儀所擁有的事故分析功能外,還能在汽車駕駛員超速行駛時發(fā)出超速報警聲,以提醒駕駛員減速行駛,并詳細記錄車輛每次的開車時間、行駛里程、行駛時間、最高車速,以及每次最高車速的持續(xù)時間,方便交通管理部門根據(jù)所記錄的有關數(shù)據(jù)對車輛進行有效的管理;同時,該設備可實現(xiàn)多種信息處理,顯示汽車狀況,進行自我診斷,對車速、發(fā)動機轉(zhuǎn)速、水溫、油壓、剎車氣壓、輪胎壓力和蓄電池電壓等一系列參數(shù)進行有效監(jiān)控;通過控制發(fā)光二極管、液晶顯示、蜂鳴器等報警手段,為司乘人員提供直接的汽車狀況信息并發(fā)出各種超限情況的報警等,可有效防范和化解車輛事故的發(fā)生。另外,終端具有GPRS和GPS模塊,可將各種監(jiān)測數(shù)據(jù)實時傳至公司管理中心,方便了公司車輛的統(tǒng)一調(diào)度和行車監(jiān)測,利于提高公司管理水平。 2 終端功能模塊設計 選用帶有ARM7TDMI-S內(nèi)核的LPC2292微控制器,可實現(xiàn)對車速、轉(zhuǎn)速信號、開關量信號以及水溫、剎車氣壓、輪胎壓力等模擬量信號的采集、處理以及數(shù)據(jù)的實時存儲和顯示,通過串口、USB接口可以實現(xiàn)與PC機之間的數(shù)據(jù)通信,通過 CAN和LIN總線接口可實現(xiàn)與汽車上的CAN或LIN節(jié)點間的數(shù)據(jù)通信。該系統(tǒng)的外圍接口模塊有電源模塊、車速等脈沖信號采集模塊、水溫等模擬信號采集模塊、鍵盤接口模塊、存儲器模塊、GPS定位模塊、GPRS通信模塊、LCD顯示模塊、胎壓監(jiān)測以及通信接口模塊,系統(tǒng)的組成框圖如圖1所示。限于篇幅,本文僅就若干特色功能模塊設計作詳細分析。 2.1 車速、轉(zhuǎn)速信號采集電路設計 現(xiàn)有運輸車輛一般都裝有霍爾式集成傳感器,車速轉(zhuǎn)換成的電壓信號直接送至車速表,信號采集比較方便,具體處理方法是直接從車速表的接線端子取得車速信號。具體接線方式根據(jù)車速表信號輸出電路來確定。信號出車速表端子后送至光耦4N35高速隔離開關,再送至集成運放LM358D前置差分電路,進一步去除干擾并有效放大,由LM358D輸出端(7腳)送至9013進行次級放大,至此車速信號已是占空比為50%的方波信號,并已剔除雜波,可直接送至微控制器定時捕獲端口進行計數(shù),具體電路如圖2所示。經(jīng)反復實驗優(yōu)化,本電路抗干擾能力很強,實車測試時無論低速狀態(tài)或超過110 km/h車速時,均可穩(wěn)定準確地檢測到速度信號。同理,發(fā)動機轉(zhuǎn)速信號亦可采取類似方法進行處理(在此不再贅述)。 2.3 CAN總線接口功能設計 CAN正常工作需要具備CAN控制器以及CAN總線驅(qū)動器。前者實現(xiàn)網(wǎng)絡層次結構中數(shù)據(jù)鏈路層和物理層的功能,后者則提供CAN控制器與物理總線之間的接口以及對CAN總線的差動發(fā)送和接收功能。LPC2292微控制器包含兩個CAN控制器,單個總線上的數(shù)據(jù)傳輸速率高達1 Mbps,具有32位寄存器和RAM訪問功能,帶有全局濾波器和驗收濾波器。本系統(tǒng)采用CTM8251D雙路帶隔離CAN收發(fā)器,至少可連接110個節(jié)點,通過擴展CAN總線接口,使得串行通信方式的選擇更加多樣化。當車內(nèi)儀表也具有CAN總線接口的時候,它們可以直接利用此接口與記錄儀通信。CAN總線接口電路如圖4所示。 CAN通信與一般的串口通信類似,在數(shù)據(jù)通信前先要對CAN總線進行初始化操作,包括CAN控制器的選擇、數(shù)據(jù)寄存器的設置、通信波特率的設置等。初始化完成后,需要設置雙方的通信協(xié)議,建立彼此的連接。只有在同一協(xié)議下工作的雙方才能正確進行數(shù)據(jù)的交換。本系統(tǒng)設置的CAN通信協(xié)議為:無過濾條件、 bypass模式、波特率可以預先設置。 本系統(tǒng)提供的CAN-BUS通信函數(shù)接口如下: ①初始化CAN:int CAN_Init(int cannum,uint32volatile baudset)。 函數(shù)入口參數(shù):cannum為CAN控制器的選擇標志符,為1選擇CAN0控制器,為2選擇CAN1控制器;baudset為波特率,可以預先設置。 函數(shù)出口參數(shù):初始化成功返回0,失敗則返回1。 函數(shù)功能:對CAN控制器進行初始化。 ②CAN總線發(fā)送數(shù)據(jù):int CAN_SendData(int can-num,uint32 volatile frameinfo,uint32 volatile senddatal,uint32 volatile senddata2,uint32 volatile canmode)。 函數(shù)入口參數(shù):cannum同上;frameinfo為幀信息,用于設置幀信息寄存器;senddata1和senddata2分別為要發(fā)送的數(shù)據(jù),用于設置數(shù)據(jù)寄存器A和B;canmode用于設置CAN工作模式。 函數(shù)出口參數(shù):數(shù)據(jù)發(fā)送成功返回0,失敗則返回1。 函數(shù)功能:CAN總線進行數(shù)據(jù)發(fā)送。 ③CAN總線接收數(shù)據(jù):int CAN_RcvData(int can-num。uint32 volatile *pdatal,uint32 volatile *pdata2)。函數(shù)入口參數(shù):cannum同上;pdata1和pdata2為接收數(shù)據(jù)指針。 函數(shù)功能:CAN總線接收數(shù)據(jù),并從數(shù)據(jù)寄存器CANRDA和CANRDB中將數(shù)據(jù)讀進對應的指針中。 2.4 LIN總線接口電路設計 LIN是低成本網(wǎng)絡中的汽車通信協(xié)議標準,可以提高通信質(zhì)量、降低成本,將是在汽車中使用汽車分級網(wǎng)絡的重要因素。LIN總線是一種簡單的單總線系統(tǒng),其軟件協(xié)議棧比較簡單。一個LIN網(wǎng)絡由一個主機節(jié)點和一個以上的從機節(jié)點組成,所有的節(jié)點都包括有從機服務程序,用來發(fā)送和接收數(shù)據(jù),僅有一個節(jié)點包含有主機服務程序。主機程序主要用于發(fā)送同步間隔、同步場和ID場(或命令),以控制和協(xié)調(diào)各個節(jié)點的有序通信。 LPC2292微控制器集成有實現(xiàn)LIN總線節(jié)點的必要硬件,包括UART、捕獲輸入和足夠的定時器,特別是其捕獲輸入功能,為LIN的幀頭識別、幀同步 &波特率測量提供了極大的便利。LIN總線接口電路如圖5所示,主要由LIN物理層接口芯片TJA1020構成,與LPC2292串口2相連,其主要完成MCU通信信號與LIN物理總線信號之間的相互轉(zhuǎn)換,為MCU提供一個與LIN物理總線的接口。 2.5 紅外通用接口模塊 出于用戶統(tǒng)一采集數(shù)據(jù)需求考慮,本系統(tǒng)設計了通用的紅外接口。它能夠支持紅外遙控和數(shù)據(jù)通信,支持IrDA協(xié)議,能夠方便地與各種符合協(xié)議標準的設備進行通信。該模塊由HSDL7001編解碼芯片和HSDL3600紅外收發(fā)芯片組成。 HSDL7001與MCU串口相連,原理框圖如圖6所示。 HSDL7001可驅(qū)動IrDA兼容的收發(fā)器,最高傳輸速率達11 502 kbps,其內(nèi)部有1個SIR編碼器和1個SIR解碼器,支持內(nèi)部(外接3.* MHz晶振)和外部16XCLK輸入兩種模式。當使用內(nèi)部時鐘時,波特率可通過A0、A1和A2進行調(diào)整。 3 終端軟件設計 嵌入式μClinux具有結構小巧、實時性強、穩(wěn)定性高、可定制性強的特點。在網(wǎng)絡通信方面,嵌入式操作系統(tǒng)支持TCP/IP及其他協(xié)議并提供通信協(xié)議動態(tài)掛接技術,以及操作系統(tǒng)內(nèi)部的進程通信應用接口技術。本設計采用穩(wěn)定的2.4版本的內(nèi)核,并對它進行合理的裁減和加載,作為操作平臺。μClinux己對本系統(tǒng)采用的主控器有了很好的支持,但在編譯本系統(tǒng)的內(nèi)核前,需要修改 uclinux/linux-2.4.x/arch/armnommu/config.in文件中關于外部存儲空間的定義,以滿足本系統(tǒng)關于外部 Flash、CH375B和LCD液晶屏等器件的存儲空間的劃分。 3.1 進程管理 μClinux的進程調(diào)度沿用了Linux的傳統(tǒng),系統(tǒng)每隔一定時間掛起進程,同時系統(tǒng)產(chǎn)生快速和周期性的時鐘計時中斷,并通過調(diào)度函數(shù)(定時器處理函數(shù))決定進程何時擁有相應的時間片,然后進行相關進程切換,這通過父進程調(diào)用:fork函數(shù)生成子進程來實現(xiàn)。 本系統(tǒng)中,為每個任務建立數(shù)據(jù)處理子進程,包括:車速、轉(zhuǎn)速等信號采集處理任務、串口定時通信任務、USB數(shù)據(jù)傳輸任務、GPRS數(shù)據(jù)傳輸任務、LCD數(shù)據(jù)顯示更新任務等。子進程采用由μClinux內(nèi)核中的cron組件觸發(fā)任務機制。系統(tǒng)中的crontab文件記錄了終端的定時數(shù)據(jù)處理任務信息(可由系統(tǒng)前臺設定任務執(zhí)行周期),時間一到即可被cron觸發(fā)其相應的子進程。由于采用多進程處理,終端可方便地實現(xiàn)多種信號的實時采集以及數(shù)據(jù)的及時處理、存儲和上送。 3.2 設備驅(qū)動程序編寫 設備驅(qū)動程序是內(nèi)核與硬件之間的唯一接口,也是內(nèi)核代碼的一部分。當硬件設備要與內(nèi)核進行交互時,就會產(chǎn)生一個中斷信號,通過驅(qū)動程序預定義的入口點進入內(nèi)核,入口點將此信號保存在棧中并保存被中斷任務的寄存器的值。內(nèi)核提取保存在棧中的中斷信號,再由內(nèi)核調(diào)用相應的中斷處理程序。應用程序可以像操作普通文件一樣對硬件設備進行操作。 本系統(tǒng)用到LPC22292的4路A/D采樣接口對水溫、剎車氣壓以及發(fā)動機電壓狀態(tài)等參數(shù)進行采集。下面以A/D采樣驅(qū)動程序為例進行分析: ①應用程序只有通過對設備文件的open、close、read/write、ioctl等進行操作才能訪問硬件設備,Linux的擴展文件操作結構 file_operations實現(xiàn)了標準的文件操作到硬件設備操作的映射,每個設備驅(qū)動程序都要實現(xiàn)這個接口所定義的部分或全部函數(shù)。A/D驅(qū)動程序的擴展文件操作結構如下: ②在設備驅(qū)動程序中使用中斷,是提高系統(tǒng)數(shù)據(jù)處理速率的有效手段。有兩項工作要做: 第一,在初始化函數(shù)中的register_chrdev()調(diào)用之后,使用request_irq()函數(shù)安裝中斷處理程序。request_irq()函數(shù)聲明如下: 其中的參數(shù)irq是驅(qū)動程序使用的設備中斷號;handler是中斷服務函數(shù)指針;flags是一個與中斷管理有關的各種選項的字節(jié)掩碼;device在/proc/interrupts中用于顯示中斷的擁有者;dev_id這個指針用于共享的中斷信號線,返回0成功,非0失敗。 A/D驅(qū)動程序安裝如下一個中斷處理程序: 第二,實現(xiàn)這個中斷服務程序,參數(shù)必須與request_irq()登記時要求的一致,且不能有返回值。 ③A/D初始化 結 語 基于ARM核的LPC2292為控制核心的嵌入式車輛行駛監(jiān)控終端,在現(xiàn)有行車記錄儀基礎上增加了若干新功能。它具有以下特點: ①以μClinux系統(tǒng)為數(shù)據(jù)處理平臺,通過多任務進程調(diào)度機制大大提高了系統(tǒng)處理海量數(shù)據(jù)的能力,實時性得到很大提高,對于車速、發(fā)動機轉(zhuǎn)速、剎車氣壓等監(jiān)測頻率要求高的參數(shù)可以精確監(jiān)測,增強了車輛行駛安全性。 ②先進的通信功能。CAN、LIN總線接口使得終端可以與具備通用總線接口的車輛融為一體,作為車輛的內(nèi)置診斷裝置,可全方位獲取車輛參數(shù)。USB接口使得監(jiān)控數(shù)據(jù)可以方便地保存至系統(tǒng)后臺,利于數(shù)據(jù)分析。 ③完善的數(shù)據(jù)上傳與車輛定位跟蹤功能。管理者不僅可以實時了解車輛的位置現(xiàn)狀,而且可以實時監(jiān)控車輛的運行狀態(tài),通過司機與管理者的雙重監(jiān)控,可以有效保證車輛的安全運行,這對于從事高危運輸行業(yè)的車輛具有重要意義。 總之,將高性能的ARM微控制器與嵌入式操作系統(tǒng)運用于車輛行駛監(jiān)控終端中,既能大大提高車輛數(shù)據(jù)采集與分析的效率和準確性,又可實現(xiàn)對車輛多種性能參數(shù)的實時監(jiān)控,是今后車輛遠程實時監(jiān)控技術的發(fā)展趨勢。 |