基于ARM7的分布式遠(yuǎn)程測(cè)控系統(tǒng)設(shè)計(jì)
1、引言
遠(yuǎn)程測(cè)控廣泛應(yīng)用于設(shè)備數(shù)量大、分布廣的場(chǎng)合,隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的發(fā)展,利用局域網(wǎng)可以很好解決集中管理分散控制的問題。但當(dāng)測(cè)控對(duì)象分布大于幾十公 里,采用局域網(wǎng)組網(wǎng)費(fèi)用高、周期長,是不可行的。利用現(xiàn)有電話網(wǎng)、調(diào)制解調(diào)器和計(jì)算機(jī)組成的測(cè)控系統(tǒng),對(duì)通信速率和實(shí)時(shí)性要求不高的場(chǎng)合,基本可以實(shí)現(xiàn)遠(yuǎn) 程測(cè)控管理功能,且成本低廉、投入使用準(zhǔn)備周期短。
2、系統(tǒng)結(jié)構(gòu)
本系統(tǒng)是為監(jiān)控?zé)o人職守電信機(jī)房環(huán)境設(shè)計(jì)的。系統(tǒng)上位機(jī)采用一臺(tái)微機(jī)作為主控室監(jiān)控主機(jī),下位機(jī)為多臺(tái)分布于各機(jī)房的測(cè)控終端(如圖1)。
圖1 系統(tǒng)結(jié)構(gòu)框圖
分布于各個(gè)機(jī)房的下位機(jī)實(shí)時(shí)監(jiān)控機(jī)房環(huán)境參數(shù),采集存儲(chǔ),上傳數(shù)據(jù);當(dāng)點(diǎn)對(duì)點(diǎn)連接時(shí)可以實(shí)時(shí)查詢當(dāng)前狀態(tài)。為了方便對(duì)下位機(jī)的管理,下位機(jī)需要具有在 線控制功能,通過監(jiān)控中心PC上位機(jī)軟件,修改控制下位機(jī)所有參數(shù)。多臺(tái)下位測(cè)控平臺(tái)通過和上位機(jī)進(jìn)行數(shù)據(jù)傳輸,設(shè)備之間的數(shù)據(jù)交互、故障報(bào)警, 都需要可靠的數(shù)據(jù)傳輸,因此下位機(jī)硬件的可靠性、數(shù)據(jù)通信鏈路層的可靠性至關(guān)重要,數(shù)據(jù)的幀結(jié)構(gòu)、控制接口的軟硬件都需要仔細(xì)設(shè)計(jì)。為了及時(shí)有 效的對(duì)監(jiān)控參數(shù)的報(bào)警,每種監(jiān)測(cè)參數(shù)需要設(shè)置三種嚴(yán)重程度不同的告警門限值,當(dāng)某項(xiàng)實(shí)時(shí)監(jiān)測(cè)參數(shù)超過告警門限值時(shí),下位機(jī)自動(dòng)向監(jiān)控中心報(bào)警,同時(shí)可按優(yōu) 先次序撥出三組不同電話號(hào)碼,通知相關(guān)人員。通信的數(shù)據(jù)幀中采用密碼機(jī)制,只有密碼正確,下位機(jī)才響應(yīng)上位機(jī)的控制,保證了系統(tǒng)的安全性。
3、系統(tǒng)硬件設(shè)計(jì)
下位機(jī)硬件原理框圖如圖2。采用飛利浦公司基于TDMI內(nèi)核32位微處理器,內(nèi)部集成了16K ,并帶有128k字節(jié)嵌人高速存儲(chǔ)器。豐富的片上外圍設(shè)備、非常小的封裝和極低的功耗,無需外接程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器,使其非常適合 小型化的嵌人式領(lǐng)域。系統(tǒng)每次采集的數(shù)據(jù)量較小,采集一次就向上位機(jī)上傳一次是不合適的,為此采用掉電非易失的 存儲(chǔ)采集數(shù)據(jù)。模擬信號(hào)采集通過l0bit串行AID TLC 1543,它的11個(gè)通道可以用來采集機(jī)房設(shè)備的供電電壓、電流、機(jī)房溫度等參數(shù)。量信號(hào)直接從的GPIO ( purpose I/0)讀人,控制信號(hào)則通過SPI串行口輸出到轉(zhuǎn)為并行控制信號(hào)輸出。按鍵音經(jīng)過解碼器得到鍵值,用于報(bào)警電話確認(rèn)。
圖2 系統(tǒng)硬件原理框圖
外置式通過口與處理器連接。有兩個(gè)串口,有16字節(jié)收發(fā)。其中Uart2增加了一個(gè)調(diào)制解調(diào)器 ()接口,具有RTS,CTS,DSR,DCD,DTR,RI標(biāo)準(zhǔn)接口的握手信號(hào)。Modem和實(shí)現(xiàn)雙向通信至少需要三條 信一線:TXD,RXD和SGND。這樣連接由于沒有握手信號(hào),只能保證單個(gè)字節(jié)傳輸?shù)目煽?,?duì)于大量數(shù)據(jù)的傳輸可能導(dǎo)致數(shù)據(jù)丟失,雖然可以采用軟件處 理,但會(huì)占用CPU的時(shí)間,降低CPU使用效率。所以采用Uart2經(jīng)過8路電平變換芯片與Modem連接,這樣就具有完整的RS- 232C的控制聯(lián)絡(luò)信號(hào)線,保證了大數(shù)據(jù)量傳輸時(shí)的可靠性。
4、數(shù)據(jù)幀編碼方法
數(shù)據(jù)幀編碼的原則是盡量減小數(shù)據(jù)傳輸過程中的誤碼率,兼顧傳輸效率、加密等方面。本系統(tǒng)的數(shù)據(jù)幀結(jié)構(gòu)如圖3。
圖3 數(shù)據(jù)幀結(jié)構(gòu)
數(shù)據(jù)幀的第1,2個(gè)字節(jié)(包頭)和最后一個(gè)字節(jié)(包尾)采用特定的起始碼和結(jié)束碼,如AAH,55H,B5H等,可以有效的抑制各種雜亂信息。數(shù)據(jù)接收方 可以把接受到的數(shù)據(jù)放到一個(gè)緩沖器中,當(dāng)接收到有效的包頭才開始一個(gè)數(shù)據(jù)幀的接收,否則,認(rèn)為是干擾或是誤碼丟棄不處理。數(shù)據(jù)幀開始接收后,根據(jù) 數(shù)據(jù)長度,能正確接收結(jié)束碼,才當(dāng)作一個(gè)有效的數(shù)據(jù)幀,否則,丟棄重新開始等待起始碼。起始碼后面是一位或多位的密碼,可以根據(jù)實(shí)際的需要而定,增加數(shù)據(jù) 傳輸?shù)谋C苄浴?/P>
數(shù)據(jù)的傳輸常會(huì)出現(xiàn)連續(xù)置為0的字節(jié),這種零電平在傳輸過程中,非常容易受到干擾變成數(shù)據(jù)。因此數(shù)據(jù)采用余3編碼方式。對(duì)數(shù)據(jù)幀的每個(gè)字節(jié)都采用奇偶效驗(yàn),并計(jì)算所有的數(shù)據(jù)字節(jié)累加和、異或和,放在數(shù)據(jù)幀中供接受方效驗(yàn)。
5、Modem的控制和AT指令集
目前市場(chǎng)常見的Modem都支持AT指令集,即所有的命令行都是由前綴“AT”構(gòu)成,它是Attention的縮寫,其基本格式為:AT命令[參數(shù)]命令 [參數(shù)]……結(jié)束符。結(jié)束符是一個(gè)單字符,其值存在寄存器S3中,默認(rèn)為回車符。在一個(gè)命令行中可以包含多個(gè)命令,但不要超過Modem的命令緩沖器所能 容納的字符數(shù),一般為40個(gè)字符。Modem會(huì)自動(dòng)從AT兩個(gè)字符中檢測(cè)出波特率、字長、奇偶效驗(yàn),故Modem無需設(shè)置這些參數(shù)。
Modem的工作狀態(tài)可以分為命令狀態(tài)和在線狀態(tài)。在命令狀態(tài)下接收并執(zhí)行AT指令,當(dāng)建立通信鏈路后進(jìn)人在線狀態(tài),這時(shí)Modem不再對(duì)發(fā)給它的數(shù)據(jù)解 釋,而是直接發(fā)給遠(yuǎn)端的接收系統(tǒng)。在線狀態(tài)下,如果接收到狀態(tài)轉(zhuǎn)化序列十十十”,則轉(zhuǎn)人在線命令狀態(tài)。詳細(xì)的AT指令集的介紹見。
6、系統(tǒng)軟件設(shè)計(jì)
微處理器工作頻率可以達(dá)到,有3級(jí)流水線,大多數(shù)指令可以單周期完成,片上帶有128KB 程序存儲(chǔ)器和16KB ,它的性能和存儲(chǔ)空間,使嵌入操作系統(tǒng)的應(yīng)用成為可能。目前市場(chǎng)上的大型商業(yè)嵌人式操作系統(tǒng)已經(jīng)十分成熟,但價(jià)格昂貴。采用源碼公開的免費(fèi)軟件是 一種好的選擇。uClinux功能強(qiáng)大,運(yùn)行穩(wěn)定,但代碼和需要的RAM過于龐大。uC/OS-II則簡單實(shí)用,內(nèi)核可剪裁到只有3K左右。本系統(tǒng)的軟件 基于uC/OS-II嵌入式操作系統(tǒng)是一個(gè)理想的選擇。
uC/OS-II是一個(gè)源代碼完全公開、可移植、可固化、可剪裁的搶占式實(shí)時(shí)多任務(wù)操作系統(tǒng)。最多可以同時(shí)執(zhí)行64個(gè)優(yōu)先級(jí)不同的任務(wù),任務(wù)之間的通信和同步是通過信號(hào)量(Semaphore)、郵箱(Mailbox)或隊(duì)列(Queue)來完成的。信號(hào)量用來保護(hù)特定的共享資源,或同步其它任務(wù)。郵箱和隊(duì)列都是用來在任 務(wù)間發(fā)送消息,只不過前者只能發(fā)一條信息,后者可以發(fā)送多條。uC/OS-II需要一個(gè)系統(tǒng)時(shí)鐘( Tick),用于實(shí)現(xiàn)時(shí)間延時(shí)和超時(shí)確認(rèn)。時(shí)鐘節(jié)拍越高,系統(tǒng)時(shí)間精度越高,但系統(tǒng)的額外開銷越大。詳細(xì)介紹見文獻(xiàn)。
在uC/OS-II操作系統(tǒng)的管理下,本系統(tǒng)分為4個(gè)任務(wù):
任務(wù)1:采集存儲(chǔ)數(shù)據(jù),按照上位機(jī)所設(shè)置的采集頻率,采集存儲(chǔ)各個(gè)監(jiān)測(cè)參數(shù)。
任務(wù)2:數(shù)據(jù)幀處理,對(duì)串口接受到的數(shù)據(jù)進(jìn)行解釋。接受到效驗(yàn)正確的數(shù)據(jù)幀,執(zhí)行相應(yīng)的操作,如處理上位機(jī)的控制信息、設(shè)置系統(tǒng)參數(shù)、發(fā)送信號(hào)量給任務(wù)和發(fā)送正確接受的應(yīng)答幀等。
任務(wù)3:報(bào)警任務(wù),實(shí)時(shí)監(jiān)測(cè)各個(gè)參數(shù),發(fā)現(xiàn)異常立即向上位機(jī)報(bào)警,同時(shí)撥打報(bào)警電話。
任務(wù)4:自動(dòng)上傳數(shù)據(jù),當(dāng)采集到一定量數(shù)據(jù),主動(dòng)上傳到上位機(jī)。
在多任務(wù)系統(tǒng)中,通過時(shí)鐘中斷的周期性任務(wù),在確定的時(shí)間執(zhí)行一次,其它時(shí)間都處在休眠狀態(tài)。若它在各任務(wù)中處于最高優(yōu)先級(jí),就能夠保證該任務(wù)嚴(yán)格的時(shí)間 有效性。任務(wù)1就是此類任務(wù),所以放在最高優(yōu)先級(jí)。每隔確定的時(shí)間運(yùn)行一次,即采集存儲(chǔ)一次數(shù)據(jù),其它時(shí)間處于休眠狀態(tài)。
任務(wù)3和任務(wù)4在和上位機(jī)通信的過程中,都需要數(shù)據(jù)幀處理任務(wù)給它們解釋上位機(jī)發(fā)來的數(shù)據(jù),所以任務(wù)2作為第二優(yōu)先級(jí)。當(dāng)串口中斷接受到上位機(jī)發(fā)來的數(shù) 據(jù),放到的隊(duì)列中,同時(shí)發(fā)信號(hào)量給任務(wù)2,任務(wù)1不在執(zhí)行時(shí),任務(wù)2立即變?yōu)楫?dāng)前運(yùn)行任務(wù),處理串口接受到的數(shù)據(jù),其它時(shí)間處于等待狀態(tài)。
自動(dòng)上傳數(shù)據(jù)對(duì)實(shí)時(shí)性要求不高,所以放在最低優(yōu)先級(jí)。報(bào)警任務(wù)放在第三優(yōu)先級(jí),這樣可以保證在發(fā)生異常時(shí),能及時(shí)的向上位機(jī)和有關(guān)人員報(bào)警。
多任務(wù)系統(tǒng)中,就要考慮對(duì)共享資源的保護(hù),同一時(shí)間內(nèi),只能有一個(gè)任務(wù)占用此資源。本系統(tǒng)中,串口是四個(gè)任務(wù)都需要占用的資源,來控制Modem或向上位 機(jī)傳送數(shù)據(jù),I2C總線在任務(wù)1和任務(wù)4中要用來讀寫中的監(jiān)測(cè)數(shù)據(jù)。所以建立了兩個(gè)互斥信號(hào)量來保護(hù)串口和I2C總線,當(dāng)任務(wù)需要使用串口或 I2C總線,先申請(qǐng)相應(yīng)共享資源的信號(hào)量,如果信號(hào)已被別的任務(wù)占用,該任務(wù)只得被掛起,直到信號(hào)被當(dāng)前使用者釋放。
這樣安排多個(gè)任務(wù),充分利用了系統(tǒng)資源,保證了整個(gè)系統(tǒng)各任務(wù)協(xié)調(diào)、高效的運(yùn)行和系統(tǒng)的實(shí)時(shí)性。
7、小結(jié)
經(jīng)過實(shí)際運(yùn)行試驗(yàn),本系統(tǒng)運(yùn)行穩(wěn)定可靠。完全開放的UC/OS-II嵌入式操作系統(tǒng)的采用,多任務(wù)的管理提高了開發(fā)效率,縮短了開發(fā)周期,提高了系統(tǒng)性 能。在升級(jí)系統(tǒng)時(shí),只要加入其它任務(wù)到操作系統(tǒng)中,就可以擴(kuò)展功能,程序的可讀性和可維護(hù)性好。以ARM7和uC/OS-11為基礎(chǔ)構(gòu)成的嵌人式系統(tǒng),結(jié) 構(gòu)簡單小巧、成本低廉、實(shí)時(shí)性強(qiáng),特別適用于中小型嵌入式系統(tǒng)的開發(fā)。