基于ARM7的分布式遠程測控系統(tǒng)設計
數(shù)據(jù)的傳輸常會出現(xiàn)連續(xù)置為0的字節(jié),這種零電平在傳輸過程中,非常容易受到干擾變成其他數(shù)據(jù)。因此數(shù)據(jù)采用余3編碼方式。對數(shù)據(jù)幀的每個字節(jié)都采用奇偶效驗,并計算所有的數(shù)據(jù)字節(jié)累加和、異或和,放在數(shù)據(jù)幀中供接受方效驗。
5、Modem的控制和AT指令集
目前市場常見的Modem都支持AT指令集,即所有的命令行都是由前綴“AT”構成,它是Attention的縮寫,其基本格式為:AT命令[參數(shù)]命令 [參數(shù)]……結束符。結束符是一個單字符,其值存在寄存器S3中,默認為回車符。在一個命令行中可以包含多個命令,但不要超過Modem的命令緩沖器所能 容納的字符數(shù),一般為40個字符。Modem會自動從AT兩個字符中檢測出波特率、字長、奇偶效驗,故Modem無需設置這些參數(shù)。
Modem的工作狀態(tài)可以分為命令狀態(tài)和在線狀態(tài)。在命令狀態(tài)下接收并執(zhí)行AT指令,當建立通信鏈路后進人在線狀態(tài),這時Modem不再對發(fā)給它的數(shù)據(jù)解 釋,而是直接發(fā)給遠端的接收系統(tǒng)。在線狀態(tài)下,如果接收到狀態(tài)轉化序列十十十”,則轉人在線命令狀態(tài)。詳細的AT指令集的介紹見。
6、系統(tǒng)軟件設計
LPC2132 微處理器工作頻率可以達到60MHz,有3級流水線,大多數(shù)指令可以單周期完成,片上帶有128KB FLASH程序存儲器和16KB SRAM,它的性能和存儲空間,使嵌入操作系統(tǒng)的應用成為可能。目前市場上的大型商業(yè)嵌人式操作系統(tǒng)已經(jīng)十分成熟,但價格昂貴。采用源碼公開的免費軟件是 一種好的選擇。uClinux功能強大,運行穩(wěn)定,但代碼和需要的RAM過于龐大。uC/OS-II則簡單實用,內核可剪裁到只有3K左右。本系統(tǒng)的軟件 基于uC/OS-II嵌入式操作系統(tǒng)是一個理想的選擇。
uC/OS-II是一個源代碼完全公開、可移植、可固化、可剪裁的搶占式實時多任務操作系統(tǒng)。最多可以同時執(zhí)行64個優(yōu)先級不同的任務,任務之間的通信和同步是通過信號量(Semaphore)、郵箱(Mailbox)或隊列(Queue)來完成的。信號量用來保護特定的共享資源,或同步其它任務。郵箱和隊列都是用來在任 務間發(fā)送消息,只不過前者只能發(fā)一條信息,后者可以發(fā)送多條。uC/OS-II需要一個系統(tǒng)時鐘(Clock Tick),用于實現(xiàn)時間延時和超時確認。時鐘節(jié)拍越高,系統(tǒng)時間精度越高,但系統(tǒng)的額外開銷越大。詳細介紹見文獻。
在uC/OS-II操作系統(tǒng)的管理下,本系統(tǒng)分為4個任務:
任務1:定時采集存儲數(shù)據(jù),按照上位機所設置的采集頻率,定時采集存儲各個監(jiān)測參數(shù)。
任務2:數(shù)據(jù)幀處理,對串口接受到的數(shù)據(jù)進行解釋。接受到效驗正確的數(shù)據(jù)幀,執(zhí)行相應的操作,如處理上位機的控制信息、設置系統(tǒng)參數(shù)、發(fā)送信號量給其他任務和發(fā)送正確接受的應答幀等。
任務3:報警任務,實時監(jiān)測各個參數(shù),發(fā)現(xiàn)異常立即向上位機報警,同時撥打報警電話。
任務4:自動上傳數(shù)據(jù),當采集到一定量數(shù)據(jù),主動上傳到上位機。
在多任務系統(tǒng)中,通過時鐘中斷的周期性任務,在確定的時間執(zhí)行一次,其它時間都處在休眠狀態(tài)。若它在各任務中處于最高優(yōu)先級,就能夠保證該任務嚴格的時間 有效性。任務1就是此類任務,所以放在最高優(yōu)先級。每隔確定的時間運行一次,即采集存儲一次數(shù)據(jù),其它時間處于休眠狀態(tài)。
任務3和任務4在和上位機通信的過程中,都需要數(shù)據(jù)幀處理任務給它們解釋上位機發(fā)來的數(shù)據(jù),所以任務2作為第二優(yōu)先級。當串口中斷接受到上位機發(fā)來的數(shù) 據(jù),放到FIFO的隊列中,同時發(fā)信號量給任務2,任務1不在執(zhí)行時,任務2立即變?yōu)楫斍斑\行任務,處理串口接受到的數(shù)據(jù),其它時間處于等待狀態(tài)。
自動上傳數(shù)據(jù)對實時性要求不高,所以放在最低優(yōu)先級。報警任務放在第三優(yōu)先級,這樣可以保證在發(fā)生異常時,能及時的向上位機和有關人員報警。
多任務系統(tǒng)中,就要考慮對共享資源的保護,同一時間內,只能有一個任務占用此資源。本系統(tǒng)中,串口是四個任務都需要占用的資源,來控制Modem或向上位 機傳送數(shù)據(jù),I2C總線在任務1和任務4中要用來讀寫EEPROM中的監(jiān)測數(shù)據(jù)。所以建立了兩個互斥信號量來保護串口和I2C總線,當任務需要使用串口或 I2C總線,先申請相應共享資源的信號量,如果信號已被別的任務占用,該任務只得被掛起,直到信號被當前使用者釋放。
這樣安排多個任務,充分利用了系統(tǒng)資源,保證了整個系統(tǒng)各任務協(xié)調、高效的運行和系統(tǒng)的實時性。
7、小結
經(jīng)過實際運行試驗,本系統(tǒng)運行穩(wěn)定可靠。完全開放的UC/OS-II嵌入式操作系統(tǒng)的采用,多任務的管理提高了開發(fā)效率,縮短了開發(fā)周期,提高了系統(tǒng)性 能。在升級系統(tǒng)時,只要加入其它任務到操作系統(tǒng)中,就可以擴展功能,程序的可讀性和可維護性好。以ARM7和uC/OS-11為基礎構成的嵌人式系統(tǒng),結 構簡單小巧、成本低廉、實時性強,特別適用于中小型嵌入式系統(tǒng)的開發(fā)。
評論