嵌入式實(shí)現(xiàn)地鐵雜散電流監(jiān)測裝置
1 地鐵雜散電流產(chǎn)生原理
地鐵牽引供電一般為直流供電,而當(dāng)直流大電流沿地面敷設(shè)的軌道流動時,直流電流除了在軌道中流動外,還會從軌道泄漏到大地,在大地中的各種金屬物體上流動,然后再回到電源系統(tǒng)。這部分泄漏出來的電流稱為雜散電流,在地鐵工程中又稱為迷流,如圖0所示。由于雜散電流對埋入地下金屬產(chǎn)生腐蝕作用,就可能使得某些地方的地下金屬在自然腐蝕的同時又受到嚴(yán)重的雜散電流電腐蝕作用,導(dǎo)致地鐵電化腐蝕速度加快。
2 實(shí)驗(yàn)室模擬裝置的設(shè)計
由于地下鐵道的特殊環(huán)境, 理論上和實(shí)際中都難以在現(xiàn)場進(jìn)行實(shí)驗(yàn), 因此這類課題的研究和實(shí)驗(yàn), 多數(shù)情況下往往要在實(shí)驗(yàn)室里進(jìn)行,圖1是自行設(shè)計的一個實(shí)驗(yàn)室模擬地下鐵道雜散電流的產(chǎn)生和對地下金屬腐蝕作用的實(shí)驗(yàn)裝置。
3 數(shù)據(jù)采集系統(tǒng)的設(shè)計
3.1 系統(tǒng)概述
本系統(tǒng)由硬件和軟件兩部分組成。硬件以SST89C51 和8位ADC 芯片AD0809 為核心,具有鍵盤控制和液晶顯示功能,該系統(tǒng)還具有實(shí)時時間顯示和看門狗功能,可以通過RS232接口與外部(微機(jī)) 通信。系統(tǒng)的軟件以實(shí)時嵌入式操作系統(tǒng)ucos2 為基礎(chǔ),采用多任務(wù)機(jī)制,通過任務(wù)調(diào)度和任務(wù)監(jiān)視,系統(tǒng)具有較好的實(shí)時性和安全性。ucosII 是源碼公開的實(shí)時嵌入式操作系統(tǒng),采用優(yōu)先級調(diào)度算法完成任務(wù)間的調(diào)度,并支持搶占式調(diào)度。ucosII 具有可裁減的體系結(jié)構(gòu),并具有內(nèi)存管理、中斷管理和任務(wù)控制塊( TCB) 擴(kuò)展的功能。ucosII 還提供很多系統(tǒng)服務(wù),例如郵箱、消息隊(duì)列、信號量等等。還具有可移植性好,結(jié)構(gòu)簡單等優(yōu)點(diǎn)。
3.2 系統(tǒng)的硬件設(shè)計
系統(tǒng)的硬件組成框圖如圖2 所示。各電阻電壓信號經(jīng)過隔離放大,然后通過線性光耦的隔離后,分別傳送到多路采集A/D轉(zhuǎn)換芯片0809的輸入端進(jìn)行數(shù)據(jù)采集。經(jīng)A/ D轉(zhuǎn)換后的數(shù)字量被單片機(jī)讀入,經(jīng)處理后可,在液晶上顯示出具體數(shù)據(jù)。同時也可以由通信接口讀入微機(jī)進(jìn)行進(jìn)一步的處理和分析。液晶有系統(tǒng)提示和實(shí)時時間顯示,可以通過鍵盤進(jìn)行選擇和控制。
A/ D 轉(zhuǎn)換可采用價格低廉又通用的8位逐次逼近式ADC ,適合數(shù)據(jù)采集,轉(zhuǎn)換時間可達(dá)100 us 。系統(tǒng)外部擴(kuò)展32 kROM 和RAM ,供緩存數(shù)據(jù)和存貯程序。液晶采用日立公司系列產(chǎn)品中的D44780 ,可以顯示16字×2行的字符模組。時間芯片采用的是M48T86 ,具有實(shí)時時間和日歷顯示功能。整個系統(tǒng)采用全地址譯碼法,外部設(shè)備和存儲器統(tǒng)一編址。CPU 訪問外部存貯器的一切指令均可用于對I/O 端口的訪問, 大大增強(qiáng)了CPU 對外設(shè)端口信息的處理能力。
[!--empirenews.page--]
3.3 系統(tǒng)的軟件設(shè)計
3.3.1 傳統(tǒng)的程序流程
一個典型的單片機(jī)數(shù)據(jù)采集系統(tǒng)的程序通常包括輸入/ 輸出控制、數(shù)據(jù)處理和顯示、鍵盤管理等模塊。程序采用循環(huán)方式,流程如圖3所示。
可以看到,傳統(tǒng)的程序是基于單任務(wù)機(jī)制的,各個模塊構(gòu)成一個整體,作為一個任務(wù)運(yùn)行。在實(shí)際應(yīng)用中,這種程序的安全性差,只要一個系統(tǒng)的設(shè)計模塊出了錯誤,整個系統(tǒng)工作就會被打亂,只有利用看門狗進(jìn)行復(fù)位。這對于比較復(fù)雜的系統(tǒng),在實(shí)際運(yùn)行中看門狗就會頻繁地發(fā)生復(fù)位操作。而且由于數(shù)據(jù)采集和鍵盤程序的執(zhí)行頻率可能相差很多,這樣對系統(tǒng)的定時要求就會很高,傳統(tǒng)的程序流程對實(shí)時性就難以很好地滿足。
3.3.2 基于ucosII 的系統(tǒng)程序流程
基于ucosII 的程序流程如圖4所示。程序中,每個模塊對應(yīng)一個任務(wù),彼此之間是并行的,但每個模塊都對應(yīng)著一個不同的優(yōu)先級,由操作系統(tǒng)進(jìn)行調(diào)度運(yùn)行。系統(tǒng)可以通過監(jiān)控模塊對其他模塊的工作進(jìn)行監(jiān)控,從而減少看門狗的復(fù)位次數(shù)。而且通過ucosII 內(nèi)核的任務(wù)調(diào)度,系統(tǒng)的實(shí)時性會提高很多。
[!--empirenews.page--]3. 4 任務(wù)的劃分和構(gòu)成
系統(tǒng)中并行存在的幾個任務(wù)按優(yōu)先級從高到低依次是:顯示任務(wù)、鍵盤管理任務(wù)、輸出任務(wù)、各路數(shù)據(jù)數(shù)據(jù)采集任務(wù)和數(shù)據(jù)處理任務(wù)。系統(tǒng)采用靜態(tài)優(yōu)先級,這樣系統(tǒng)的控制會相對比較簡單。
系統(tǒng)中的每個任務(wù)包括應(yīng)用程序、任務(wù)堆棧以及任務(wù)控制塊( TCB) 三部分。任務(wù)控制塊是一個數(shù)據(jù)結(jié)構(gòu),當(dāng)任務(wù)的CPU 使用權(quán)被剝奪時,ucosII 用它來保存該任務(wù)的狀態(tài)。當(dāng)任務(wù)重新獲得CPU 的使用權(quán)時,任務(wù)控制塊能確保任務(wù)從被中斷的那一點(diǎn)執(zhí)行下去。操作系統(tǒng)可以通過查詢?nèi)蝿?wù)控制塊的內(nèi)容從而對任務(wù)進(jìn)行管理。系統(tǒng)中任務(wù)的狀態(tài)有5 種:休眠態(tài)、就緒態(tài)、運(yùn)行態(tài)、中斷服務(wù)和等待態(tài)。狀態(tài)之間的轉(zhuǎn)換如圖5所示。
休眠態(tài)時任務(wù)駐留在程序空間中,還沒有交給uc/ os2II 管理。當(dāng)任務(wù)一旦建立,就進(jìn)入就緒態(tài)。就緒態(tài)中優(yōu)先級最高的任務(wù)轉(zhuǎn)為運(yùn)行態(tài)。如果系統(tǒng)的運(yùn)行導(dǎo)致就緒態(tài)中的一個任務(wù)優(yōu)先級高于運(yùn)行態(tài)的任務(wù)優(yōu)先級,則系統(tǒng)通過調(diào)度使運(yùn)行態(tài)任務(wù)喪失對CPU 的控制權(quán)轉(zhuǎn)為等待態(tài)或者就緒態(tài),轉(zhuǎn)而運(yùn)行就緒態(tài)中的那個任務(wù)。這樣就實(shí)現(xiàn)了任務(wù)的切換。
每個處于等待態(tài)的任務(wù)都對應(yīng)一個等待時間,時間管理函數(shù)可將等待時間已過的等待態(tài)的任務(wù)轉(zhuǎn)為就緒態(tài),這實(shí)際上也就是時鐘中斷的中斷服務(wù)程序。
3.5 任務(wù)的通信和調(diào)度
本系統(tǒng)中任務(wù)間的通信采用消息隊(duì)列來完成的。消息隊(duì)列是uc/ os2II 中的一種通信機(jī)制,可以使一個任務(wù)或者中斷服務(wù)子程序向另一任務(wù)發(fā)送以指針方式定義的變量。為方便易用,采用消息隊(duì)列,用于數(shù)據(jù)采集任務(wù)、數(shù)據(jù)處理任務(wù)、鍵盤管理任務(wù)、輸出任務(wù)、顯示任務(wù)之間的通信。系統(tǒng)通過隊(duì)列控制塊來管理消息隊(duì)列,每個消息隊(duì)列對應(yīng)一個隊(duì)列控制塊。消息的存取基于優(yōu)先級原則,隊(duì)列控制塊中等待任務(wù)列表內(nèi)優(yōu)先級任務(wù)最高的任務(wù)先從消息隊(duì)列中取消息,系統(tǒng)采用搶占式內(nèi)核,調(diào)度函數(shù)總是保證優(yōu)先級最高的就緒態(tài)任務(wù)轉(zhuǎn)為運(yùn)行態(tài)。當(dāng)就緒態(tài)的任務(wù)搶占CPU 時,系統(tǒng)執(zhí)行一次中斷服務(wù)程序。當(dāng)任務(wù)中的消息發(fā)送完成以及中斷返回時,系統(tǒng)調(diào)用調(diào)度函數(shù),將任務(wù)從等待態(tài)轉(zhuǎn)為就緒態(tài),這樣就緒態(tài)中任務(wù)的最高優(yōu)先級就會發(fā)生變化,進(jìn)而影響到運(yùn)行態(tài)和就緒態(tài)間的任務(wù)切換。在本系統(tǒng)中,正在運(yùn)行的任務(wù)需要通過消息(調(diào)用OSQPEND( ) 函數(shù)) 來等待一個事件的發(fā)生。假如該事件一直沒有出現(xiàn),調(diào)用該函數(shù)的任務(wù)將被置于等待狀態(tài)(優(yōu)先級最低的任務(wù)可不需要等待某個消息) 。此時下一個優(yōu)先級最高的任務(wù)將立即獲得CPU 控制權(quán)。
4 系統(tǒng)的工作過程
本系統(tǒng)采用兩種方式顯示采集電流的大小,循環(huán)顯示和指定顯示,在正常工作情況下,采用循環(huán)顯示方式顯示8路采集電流大小,每采集完一路電壓,就向數(shù)據(jù)處理任務(wù)發(fā)送一條消息,而數(shù)據(jù)處理任務(wù)每處理完一路就向顯示任務(wù)發(fā)送一條消息,由于鍵盤掃描任務(wù)優(yōu)先級比數(shù)據(jù)采集任務(wù)最高,每當(dāng)用戶鍵盤選擇時,就搶斷當(dāng)前采集任務(wù),而去處理用戶需要選擇的那路電壓,并相應(yīng)顯示。當(dāng)采集電流超過一定標(biāo)準(zhǔn)時,系統(tǒng)會報警,以告之監(jiān)測人員,另外本系統(tǒng)還留有串行232接口,用于和微機(jī)通信,以儲存雜散電流的歷史情況。當(dāng)所有任務(wù)運(yùn)行完后,開始下一個周期的運(yùn)行。應(yīng)用程序與uc/ os2II 的內(nèi)核是一起下載到單片機(jī)系統(tǒng)中。成功的移植需要對內(nèi)核程序進(jìn)行一定的修改,主要是修改內(nèi)核中與硬件密切相關(guān)的幾個文件,具體可參考相關(guān)文獻(xiàn).
5 結(jié)束語
本系統(tǒng)經(jīng)調(diào)試,軟硬件工作均正常。實(shí)驗(yàn)證明,本系統(tǒng)較傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)在安全性和實(shí)時性方面都有了很大的提高,完全能夠適應(yīng)復(fù)雜系統(tǒng)的需要。