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