用S3C2410實(shí)現(xiàn)鐵路數(shù)據(jù)實(shí)時采集系統(tǒng)
摘 要 本文闡述了一種基于ARM處理器的高性能遠(yuǎn)程監(jiān)控系統(tǒng)的組成、工作原理及其實(shí)現(xiàn)方法。該系統(tǒng)利用高性能處理器和移動通信網(wǎng)絡(luò)構(gòu)建具有實(shí)時數(shù)據(jù)處理能力、可提供遠(yuǎn)端信息查詢和告警服務(wù)的平臺。 關(guān)鍵詞 ARM,嵌入式,監(jiān)控 1 引 言 隨著列車全面提速以及鐵路部門客貨運(yùn)輸量不斷增大,鐵路線路負(fù)荷不斷加重,鐵路安全問題日益突出。目前鐵道檢測部門主要采用鐵軌檢查車檢測鐵軌質(zhì)量,但是由于鐵軌檢查車價格昂貴,各機(jī)務(wù)段配備的數(shù)量有限,不能滿足鐵路檢測部門對鐵軌質(zhì)量數(shù)據(jù)連續(xù)檢測和積累的要求。因此鐵道檢測部門迫切需要一種可靠性高,實(shí)時性強(qiáng)的小型智能系統(tǒng)作為鐵軌檢查車的補(bǔ)充。針對這種情況,本文設(shè)計(jì)了一種新型鐵路線路質(zhì)量遠(yuǎn)程實(shí)時監(jiān)測系統(tǒng)。本系統(tǒng)綜合利用移動通信和嵌入式系統(tǒng)設(shè)計(jì)等技術(shù),實(shí)現(xiàn)了鐵軌數(shù)據(jù)的實(shí)時采集、分析、傳輸,以及自動評估和報(bào)警。 ARM技術(shù)是嵌入式系統(tǒng)方面的主流技術(shù)。目前市場上ARM芯片速度可達(dá)幾百兆,以此為主控芯片可在硬件上實(shí)現(xiàn)高速、高精度且具有一定處理能力的數(shù)據(jù)采集處理通信系統(tǒng)。本系統(tǒng)采用的Samsung公司的S3C2410處理器,結(jié)合Windows CE操作系統(tǒng)來實(shí)現(xiàn)其功能。S3C2410處理器是一款低價、低功耗、高性能的16/32位系統(tǒng)微處理器,在嵌入式應(yīng)用領(lǐng)域有著良好的表現(xiàn)。 S3C2410具有豐富的接口資源,能夠滿足本系統(tǒng)的設(shè)計(jì)需求。Windows CE操作系統(tǒng)是專門為掌上型電腦設(shè)計(jì)的電腦環(huán)境,它將便攜式技術(shù)和現(xiàn)有的Windows技術(shù)相結(jié)合,并提供了豐富的驅(qū)動資源。本系統(tǒng)在設(shè)計(jì)中采用了 CMDA模塊和USB接口。原始數(shù)據(jù)可通過USB接口取出,進(jìn)一步進(jìn)行事后處理。本系統(tǒng)通過CDMA模塊連接無線網(wǎng)絡(luò),將處理完畢的數(shù)據(jù)實(shí)時地送到客戶端,以實(shí)現(xiàn)特定信息查詢和告警功能。 2 系統(tǒng)工作原理 系統(tǒng)分為ARM處理器模塊、協(xié)處理器FPGA模塊、A/D模塊、傳感器模塊和外部通信模塊5部分,基本結(jié)構(gòu)如圖1所示。ARM處理器和現(xiàn)場可編程門陣列(FPGA)共同組成監(jiān)控系統(tǒng)的核心處理單元。傳感器模塊采集的模擬信號經(jīng)A/D模塊量化后,存入FPGA生成的FIFO中;ARM處理器通過FPGA產(chǎn)生的中斷信號來讀取FIFO中的數(shù)據(jù);數(shù)據(jù)處理完畢后ARM處理器通過FGPA控制CDMA模塊建立TCP/IP連接,連接一旦建立則通過無線網(wǎng)絡(luò)將數(shù)據(jù)傳回客戶端。
2.3 A/D模塊 [/b] A/D轉(zhuǎn)換芯片采用TI公司的ADS8364芯片,它具有以下性能: 6個獨(dú)立數(shù)據(jù)輸出通道; 模擬信號差分輸入; 6個獨(dú)立的16位ADC; 采樣頻率最高為250 MHz; 采樣精度到最后兩位,且抗噪性能好。 通過FPGA內(nèi)產(chǎn)生的采樣時鐘信號控制A/D模塊的采樣頻率。FPGA輸出寬度為一個時鐘周期的低電平脈沖到/HOLD_X引腳,A/D轉(zhuǎn)換開始,經(jīng) 16.5個時鐘周期后A/D轉(zhuǎn)換完成。A/D模塊根據(jù)FPGA內(nèi)產(chǎn)生的讀信號和通道選擇信號選擇相應(yīng)的FIFO存儲數(shù)據(jù)。 [b]2.4 傳感器模塊 [/b] 傳感器模塊可以根據(jù)所須采集的數(shù)據(jù)來選擇。本系統(tǒng)主要運(yùn)用于火車機(jī)車車體震動測量,所以采用3個使用ADXL105高精度單軸加速度傳感器芯片制作的加速度測量模塊。測量模塊分別安置于車體底部的垂直方向和水平方向,用于測量車體在X、Y、Z方向上的加速度。測量數(shù)據(jù)以差分信號的形式輸入到精密放大器中, 經(jīng)比較放大后直接送到A/D模塊中。 2.5 外部通信模塊 外部通信模塊由兩部分組成: 485通信模塊和CDMA模塊。 485通信接口采用的是MAXIM公司的MAX1490芯片。這是一款完全隔離的485數(shù)據(jù)接口芯片,單工工作方式,傳輸波特率最大可達(dá)2.5 Mbps。其輸出引腳直接與ARM處理器的串口2(UART2)相連;ARM處理器通過串口2讀取時間和坐標(biāo)等相關(guān)數(shù)據(jù)的廣播信息。ARM處理器串口 0(UART0)與AnyData DTGS800 CDMA模塊相連;監(jiān)測數(shù)據(jù)經(jīng)預(yù)處理后通過CDMA模塊發(fā)送到地面服務(wù)器。 3 軟件設(shè)計(jì) 軟件設(shè)計(jì)主要使用Embedded Visual C++語言和VHDL語言。VHDL語言用于編寫FPGA程序;ARM處理器的調(diào)試則使用C語言。 系統(tǒng)開始工作后ARM處理器和FPGA協(xié)處理器中的FIFO開始初始化。經(jīng)A/D轉(zhuǎn)換后的數(shù)據(jù)存入3個數(shù)據(jù)輸出通道對應(yīng)的FIFO中。FIFO中的數(shù)據(jù)容量達(dá)到一定限度即產(chǎn)生中斷,ARM處理器中的主程序產(chǎn)生中斷等待線程;一旦中斷產(chǎn)生則進(jìn)入中斷服務(wù)程序,讀取數(shù)據(jù)。數(shù)據(jù)經(jīng)檢測程序進(jìn)行預(yù)處理后通過 CDMA模塊發(fā)送出去。
圖3 系統(tǒng)工作流程圖 3.1 系統(tǒng)的同步處理 因?yàn)锳/D模塊與FPGA協(xié)處理器上電即開始工作而ARM處理器完成系統(tǒng)加載,端口初始化大概需要10 s左右的時間。在這個過程中FIFO中存儲的數(shù)據(jù)已經(jīng)被寫滿。如果ARM處理器在程序加載完成后直接使用這部分?jǐn)?shù)據(jù)則會產(chǎn)生檢測結(jié)果與廣播信息不匹配的問題。為防止系統(tǒng)因各模塊工作時序混亂而出現(xiàn)的數(shù)據(jù)檢測錯誤的情況。在ARM完成Windows CE系統(tǒng)加載并進(jìn)入檢測主程序后產(chǎn)生一個清零信號用于清除3個FIFO中的數(shù)據(jù)。實(shí)現(xiàn)系統(tǒng)的同步工作。 3.2 中斷的產(chǎn)生及處理 在本系統(tǒng)中如果對A/D轉(zhuǎn)換數(shù)據(jù)采用實(shí)時讀取的方式,則必然導(dǎo)致ARM處理器工作效率較低,所以在電路設(shè)計(jì)時采用了中斷方式。A/D模塊輸出數(shù)據(jù)以循環(huán)方式分別寫入3個FIFO中。一旦FIFO中可使用數(shù)據(jù)容量減小到一定限度則產(chǎn)生中斷,ARM處理器進(jìn)入中斷服務(wù)程序并讀取FIFO中的數(shù)據(jù)。 [b]3.3 列車廣播信息讀取 [/b] 火車機(jī)車廣播信息通過監(jiān)控設(shè)備不斷地發(fā)送廣播信息。信息傳輸以標(biāo)準(zhǔn)的RS485傳輸協(xié)議進(jìn)行,通信波特率為9600 bps,采用10位異步通信方式:1位起始位+8位數(shù)據(jù)位+1位停止位。每組數(shù)據(jù)包由17字節(jié)數(shù)據(jù)組成,包括月日時分秒、時速、公里標(biāo)、交路號和車次。數(shù)據(jù)格式為:起始位+數(shù)據(jù)位+停止位+BCC校驗(yàn)。其中:起始位為1字節(jié),固定為0x02;數(shù)據(jù)位為14字節(jié);停止位為1字節(jié),固定為0x03;BBC校驗(yàn)為1字節(jié),是前面15字節(jié)的“異或”校驗(yàn)。 軟件實(shí)現(xiàn):接收廣播信息程序的實(shí)現(xiàn)主要是利用了Windows的消息機(jī)制。首先初始化S3C2410芯片的UART2口,包括設(shè)置波特率為9600 bps,配置端口,并將端口與事件綁定。然后啟動線程不斷偵聽端口。如果有數(shù)據(jù)輸入則會產(chǎn)生讀取事件,此時線程讀取一個字節(jié)的數(shù)據(jù),并由串口將數(shù)據(jù)發(fā)送至主線程。最后,主線程通過相應(yīng)函數(shù)接收數(shù)據(jù),數(shù)據(jù)接收完畢則對數(shù)據(jù)進(jìn)行長度檢測和異或校驗(yàn)。如果檢驗(yàn)通過則將數(shù)據(jù)轉(zhuǎn)存入二級緩存(一級緩存繼續(xù)存放數(shù)據(jù)),并通知上級模塊讀出數(shù)據(jù);然后清空二級緩存,等待下次數(shù)據(jù)進(jìn)入。廣播信息讀取程序界面見圖4。 3.4 加速度數(shù)據(jù)獲取 數(shù)據(jù)采集是通過應(yīng)用程序與驅(qū)動程序的交互來完成的。實(shí)現(xiàn)交互的方式有很多,例如可以利用callback函數(shù)(回調(diào)函數(shù))或?qū)⒑瘮?shù)應(yīng)用程序中的數(shù)據(jù)處理函數(shù)指針傳給驅(qū)動,以及使用SETEVENT等來實(shí)現(xiàn)。考慮到軟件的升級,本系統(tǒng)采用的是SETEVENT方法。Windows CE系統(tǒng)與PC上的系統(tǒng)存在很大差異。一旦系統(tǒng)的某些模塊有所改動,必須重新編譯Windows CE系統(tǒng)和燒寫FLASH,工作量較大。使用SETEVENT的方法可在不改動驅(qū)動的情況下對應(yīng)用程序進(jìn)行調(diào)試,從而避免了反復(fù)燒寫FLASH。 軟件設(shè)計(jì)思路:數(shù)據(jù)采集軟件啟動后必須對FIFO中數(shù)據(jù)進(jìn)行復(fù)位。因?yàn)閺腤indows CE系統(tǒng)啟動到數(shù)據(jù)采集軟件開始工作需要15 s,但 A/D模塊及FIFO模塊在系統(tǒng)上電后即開始工作,因此如果使用這部分?jǐn)?shù)據(jù)就會造成數(shù)據(jù)與列車廣播信息的不匹配。驅(qū)動程序在響應(yīng)中斷后通過 SETEVENT機(jī)制通知應(yīng)用程序,此時數(shù)據(jù)讀取控制權(quán)就完全交給了頂層用戶。用戶可以根據(jù)自己的需要來控制數(shù)據(jù)的讀取及處理。數(shù)據(jù)采集程序界面見圖5。 4 結(jié)束語 本文所研制的系統(tǒng)綜合利用了移動通信和嵌入式系統(tǒng)設(shè)計(jì)等技術(shù),與傳統(tǒng)檢測設(shè)備相比,大大提高了線路監(jiān)測的實(shí)時性及系統(tǒng)性。同時,該系統(tǒng)注重監(jiān)測數(shù)據(jù)處理和檢測方法的研究,并在實(shí)際系統(tǒng)中加以應(yīng)用。 本系統(tǒng)在設(shè)計(jì)時充分考慮了電路的靈活性和通用性,可根據(jù)不同的功能要求編寫相應(yīng)的VHDL語言程序。系統(tǒng)所使用的Windows CE操作系統(tǒng)可以任意裁剪,這對于功能的轉(zhuǎn)換很有幫助。本系統(tǒng)已研制完畢,現(xiàn)處于現(xiàn)場實(shí)驗(yàn)階段。[!--empirenews.page--]