多個(gè)Zigbee監(jiān)測(cè)網(wǎng)絡(luò)遠(yuǎn)程監(jiān)控的實(shí)現(xiàn)
4.2. 與數(shù)據(jù)采集節(jié)點(diǎn)間的數(shù)據(jù)傳遞
本文引用地址:http://m.butianyuan.cn/article/86468.htm網(wǎng)關(guān)節(jié)點(diǎn)作為Zigbee監(jiān)測(cè)網(wǎng)絡(luò)與IP網(wǎng)絡(luò)的連接點(diǎn),除了要與上一層的消息代理進(jìn)行數(shù)據(jù)傳遞,還要與Zigbee監(jiān)測(cè)網(wǎng)絡(luò)中的數(shù)據(jù)采集節(jié)點(diǎn)間進(jìn)行數(shù)據(jù)傳遞,獲得原始的監(jiān)測(cè)數(shù)據(jù)和向數(shù)據(jù)采集節(jié)點(diǎn)傳遞設(shè)置參數(shù)。
4.2.1. 網(wǎng)關(guān)節(jié)點(diǎn)的硬件結(jié)構(gòu)
網(wǎng)關(guān)節(jié)點(diǎn)的硬件結(jié)構(gòu)如圖2所示。主要分成兩大部分:系統(tǒng)運(yùn)行的硬件平臺(tái)和IEEE802.15.4無(wú)線通信模塊。
圖2 網(wǎng)關(guān)節(jié)點(diǎn)的硬件結(jié)構(gòu)
CPU選用AMD的 Au1550。它是一款多功能、高性能、低功耗、高集成度的網(wǎng)絡(luò)安全處理器。
無(wú)線通信模塊采用飛思卡爾的MC13192。它實(shí)現(xiàn)了IEEE802.15.4物理層的數(shù)據(jù)傳輸,可以自動(dòng)完成數(shù)據(jù)的校驗(yàn)和封裝。
Au1550與MC13192通過3線SPI接口、一個(gè)片選線和一個(gè)中斷請(qǐng)求線相連,完成數(shù)據(jù)傳輸和控制。
4.2.2. 網(wǎng)關(guān)節(jié)點(diǎn)的軟件設(shè)計(jì)
圖3 網(wǎng)關(guān)節(jié)點(diǎn)軟件系統(tǒng)的結(jié)構(gòu)
根據(jù)網(wǎng)關(guān)節(jié)點(diǎn)的功能,軟件系統(tǒng)主要完成兩個(gè)功能,一是負(fù)責(zé)網(wǎng)絡(luò)的建立和維護(hù)、匯集監(jiān)測(cè)網(wǎng)絡(luò)中的監(jiān)測(cè)數(shù)據(jù)、向數(shù)據(jù)采集節(jié)點(diǎn)發(fā)送設(shè)置參數(shù)。這一部分為實(shí)時(shí)部分,由內(nèi)核模塊實(shí)現(xiàn),運(yùn)行于內(nèi)核態(tài);二是與遠(yuǎn)程的消息代理之間的消息傳遞、原始監(jiān)測(cè)數(shù)據(jù)的預(yù)處理。這部分為非實(shí)時(shí)部分運(yùn)行于用戶空間。
當(dāng)MC13192接收到IEEE802.15.4物理層的數(shù)據(jù)后,產(chǎn)生中斷請(qǐng)求觸發(fā)數(shù)據(jù)處理任務(wù)讀取,校驗(yàn)正確后寫入FIFO中,用戶空間的應(yīng)用程序則定時(shí)讀取FIFO中的數(shù)據(jù),然后將原始數(shù)據(jù)形成文本格式的消息發(fā)送給消息代理。
當(dāng)用戶空間的應(yīng)用程序收到消息代理發(fā)來(lái)的控制消息后,轉(zhuǎn)換成控制命令字寫入FIFO中,內(nèi)核模塊中FIFO讀取任務(wù)則定時(shí)讀取FIFO的控制命令,形成MAC層的幀格式,通過SPI傳遞給MC13192。
一、Au1550與MC13192間的數(shù)據(jù)傳輸
MC13192與Au1550之間通過SPI進(jìn)行數(shù)據(jù)傳輸。將SPI的通信模式設(shè)為主從方式,Au1550為主機(jī),MC13192為從設(shè)備。數(shù)據(jù)的傳輸完全由主機(jī)Au1550通過片選信號(hào)控制完成。
SPI數(shù)據(jù)幀由幀頭和數(shù)據(jù)組成。幀頭為8位,第一位為讀寫標(biāo)志位,R/W=1表示讀操作(從到主),R/W=0表示寫操作(主到從)。低六位表示MC13192中寄存器的地址。
MC13192設(shè)置成包傳輸模式,它就會(huì)將接收到的主機(jī)數(shù)據(jù)暫存到發(fā)送RAM中,當(dāng)接收完成后再以包的形式發(fā)送出去。同樣,收到IEEE802.15.4數(shù)據(jù)幀后,存儲(chǔ)到接收RAM中,確定數(shù)據(jù)幀的長(zhǎng)度、進(jìn)行校驗(yàn)和和鏈路質(zhì)量的計(jì)算,數(shù)據(jù)校驗(yàn)正確后向主機(jī)發(fā)出中斷請(qǐng)求,請(qǐng)求主機(jī)將數(shù)據(jù)讀走。
二、實(shí)時(shí)任務(wù)與非實(shí)時(shí)應(yīng)用間的數(shù)據(jù)傳輸
實(shí)時(shí)任務(wù)與非實(shí)時(shí)應(yīng)用間采用FIFO進(jìn)行數(shù)據(jù)傳遞。每一個(gè)FIFO都是在一個(gè)方向上傳送數(shù)據(jù)。要實(shí)現(xiàn)實(shí)時(shí)任務(wù)與非實(shí)時(shí)應(yīng)用間的雙向傳輸,需要建立兩個(gè)FIFO。一個(gè)FIFO用于實(shí)時(shí)任務(wù)向非實(shí)時(shí)應(yīng)用發(fā)送原始監(jiān)控?cái)?shù)據(jù),一個(gè)FIFO用于接收非實(shí)時(shí)應(yīng)用的控制命令。
在實(shí)時(shí)任務(wù)一側(cè),不管FIFO狀態(tài)是什么,任何讀寫入操作都是非阻塞的。因此,讀寫后都立即返回。在內(nèi)核模塊中FIFO通過rtf_create()來(lái)創(chuàng)建,rtf_put()向FIFO寫數(shù)據(jù), rtf_get()從FIFO讀數(shù)據(jù)。FIFO的讀過程由一個(gè)周期性的實(shí)時(shí)線程完成。
從應(yīng)用程序一側(cè)來(lái)看,F(xiàn)IFO就像一個(gè)常規(guī)文件。因此,調(diào)用文件打開函數(shù)來(lái)獲得相關(guān)FIFO的指針,獲得指針后通過讀寫函數(shù)實(shí)現(xiàn)對(duì)FIFO的讀寫操作。數(shù)據(jù)的讀操作也由專門的線程用輪詢方式完成,數(shù)據(jù)的發(fā)送操作則直接用函數(shù)調(diào)用方式。
5. 結(jié)束語(yǔ)
本文給出基于中間件技術(shù)的分層體系結(jié)構(gòu),實(shí)現(xiàn)對(duì)多個(gè)Zigbee監(jiān)測(cè)網(wǎng)絡(luò)的集中管理的方法,并給出了數(shù)據(jù)傳遞、網(wǎng)關(guān)節(jié)點(diǎn)等關(guān)鍵技術(shù)的具體實(shí)現(xiàn)。這種方式有效地解決了星型拓?fù)浣Y(jié)構(gòu)Zigbee監(jiān)測(cè)網(wǎng)絡(luò)監(jiān)測(cè)范圍受限的問題。通過增加監(jiān)測(cè)網(wǎng)絡(luò)的個(gè)數(shù)來(lái)擴(kuò)大監(jiān)測(cè)范圍或多點(diǎn)分布式監(jiān)測(cè),而且還不會(huì)影響到管理應(yīng)用。
本文的創(chuàng)新點(diǎn):利用基于中間件技術(shù)的分層體系結(jié)構(gòu),實(shí)現(xiàn)了對(duì)多個(gè)Zigbee監(jiān)測(cè)網(wǎng)絡(luò)的集中管理,有效地解決了星型拓?fù)浣Y(jié)構(gòu)Zigbee監(jiān)測(cè)網(wǎng)絡(luò)監(jiān)測(cè)范圍受限的問題。星形拓?fù)浣Y(jié)構(gòu)具有結(jié)構(gòu)簡(jiǎn)單、易于部署的特點(diǎn),而且節(jié)點(diǎn)間不需要路由,可以有效節(jié)省節(jié)點(diǎn)的能耗。增加監(jiān)測(cè)網(wǎng)絡(luò)的個(gè)數(shù)可以擴(kuò)大監(jiān)測(cè)范圍,但存在對(duì)多個(gè)監(jiān)測(cè)網(wǎng)絡(luò)集中管理的問題?!?/p>
參考文獻(xiàn)
[1] Motorola.MC13192/MC13193 Reference Manual
[2] LAN-MAN Standards Committee of the IEEE Computer Society. Wireless Medium Access Control (MAC) and Physical Layer (PHY) Specifications for Low-Rate Wireless Personal Area Networks (LR-WPANs), IEEE, 2003
[3] IBM.Websphere Using Java,2004.
評(píng)論