基于無(wú)線(xiàn)傳感網(wǎng)絡(luò )的智能機房環(huán)境監控系統的設計與實(shí)現
4.2 無(wú)線(xiàn)傳感網(wǎng)軟件平臺搭建
操作系統是通過(guò)調度各項任務(wù)來(lái)使整個(gè)系統協(xié)調的運作起來(lái)的。對不同類(lèi)型設備的處理作為一個(gè)任務(wù),把新建的任務(wù)添加到系統中,操作系統便會(huì )把新任務(wù)與協(xié)議棧融合到一起,使系統具備新的功能,即完成了無(wú)線(xiàn)傳感器網(wǎng)絡(luò )軟件平臺的搭建。
1)建立任務(wù):任務(wù)初始化函數的建立
任務(wù)初始化函數要做兩件事,首先是為任務(wù)獲取系統分配的任務(wù)ID,最后是初始化運行任務(wù)所需的硬件資源及變量。
任務(wù)初始化函數的格式為:
XXX_Init(unsigned char task_id)
{
XXX_TaskID=task_id;
初始化任務(wù)運行所需的硬件資源及變量。
}
其中“XXX”表示任務(wù)的名稱(chēng)。“XXX_TaskID”是用戶(hù)自己定義的變量,用于存儲任務(wù)的ID號。
2)建立任務(wù):任務(wù)事件處理函數的建立
對模塊的各種外部變化操作系統以事件的方式來(lái)處理,不同的宏定義代表不同事件,比如:KEY_CHANGE為按鍵事件;ZD0_STATE_CHANGE為網(wǎng)絡(luò )狀態(tài)變化事件;AF_INCOMING_MSG CMD表示接收到其他節點(diǎn)發(fā)送來(lái)的數據,該事件為無(wú)線(xiàn)處理的重要事件。
任務(wù)事件處理函數原型為:uint16 Sample_ProcessEvent(uint8 task_id,uint16 events);形參task_id為任務(wù)ID號,events為事件代號。
3)添加任務(wù)
所有的任務(wù)添加都是在應用層App/OSAL_SampleApp.c中通過(guò)osalTaskAdd()函數添加一個(gè)OSAL任務(wù),函數原型為:
void osalTask Add(const pTaskInitFn pfninit,
const pTaskEventHandlerFn pfnEventProcessor,
const byte taskPriority)
參數1:pfnInit(指向任務(wù)初始化函數的指針);
參數2:pfnEventProcessor(指向任務(wù)事件處理函數的指針);
參數3:taskPrioritv(任務(wù)優(yōu)先級)。
4.3 ZigBee網(wǎng)絡(luò )通訊設置與組網(wǎng)
4.3.1 網(wǎng)絡(luò )通訊設置
在Tools/f8wConfig.cfg配置文件中定義了工程相關(guān)的網(wǎng)絡(luò )通訊設置。其中比較重要的是ZigBee通信相關(guān)的信道通道的設置和PAN ID的設置。用戶(hù)可以通過(guò)更改該文件中的相關(guān)宏定義,來(lái)控制ZigBee網(wǎng)絡(luò )的通道和PAN ID,以此來(lái)解決多個(gè)ZigBee網(wǎng)絡(luò )的沖突問(wèn)題。信道是數據在物理層傳輸時(shí)使用的通道:PIN ID為ZigBee網(wǎng)絡(luò )的標識符,用來(lái)區別不同的網(wǎng)絡(luò )。
除此之外在啟動(dòng)網(wǎng)絡(luò )前還需要修改模塊的物理地址。在ZigBee網(wǎng)絡(luò )中,無(wú)論是協(xié)調器還是路由器或終端節點(diǎn),每個(gè)模塊都有自己唯一的64位物理地址。物理地址的修改有兩種方式,一種是通過(guò)Zmain/Zmain.c中的zmain_ext_addr()函數設置;另一種是使用Chipeon Flash Programmer軟件。默認地址0xff ff ff ff ff ff ff ff為無(wú)效的,除此之外都是有效的,且保證在網(wǎng)絡(luò )中的唯一性即可。
4.3.2 網(wǎng)絡(luò )組建
1)協(xié)調器格式化網(wǎng)絡(luò )
協(xié)調器將掃描DEFAULT_CHANLIST指定的通道,最后在其中之一上形成網(wǎng)絡(luò )。如果ZDAPP_CONFIG_PAN_ID被定義為0xFFFF,那么協(xié)調器將根據自身的IEEE地址建立一個(gè)隨機的PAN ID。如果ZDAPP_CONFIG_PAN_ID沒(méi)有被定義為0xFFFF,那么協(xié)調器建立網(wǎng)絡(luò )的PAN ID將由ZDAPP_CONFIG _PAN_ID指定,通常這個(gè)值介于0~0x3FFF。
2)路由器和終端設備加入網(wǎng)絡(luò )
路由器和終端設備啟動(dòng)后,將掃描DEFAULT_CHANLIST指定的頻道。如果ZDAPP_CONFIG_PAN_ID沒(méi)有被定義為0xFFFF,則路由器或終端將強制加入ZDAPP_CONFIG_PAN_ID定義的網(wǎng)絡(luò )。反之隨機加入網(wǎng)絡(luò )。
4.4 數據傳輸
系統中涉及的數據傳輸方式有兩種:無(wú)線(xiàn)收發(fā)和串口收發(fā)。其中節點(diǎn)向協(xié)調器發(fā)送采集信息、協(xié)調器向控制節點(diǎn)發(fā)送控制信息是通過(guò)無(wú)線(xiàn)收發(fā)實(shí)現的;協(xié)調器將采集信息傳送給網(wǎng)關(guān)、網(wǎng)關(guān)向協(xié)調器發(fā)送控制命令是通過(guò)串口收發(fā)實(shí)現的。
4.4.1 無(wú)線(xiàn)數據收發(fā)
1)無(wú)線(xiàn)發(fā)送 系統中采用短地址方式發(fā)送數據,數據以幀格式傳輸。在發(fā)送前按照協(xié)議規定的幀形式構建數據幀,然后調用無(wú)線(xiàn)發(fā)送函數。函數原型為:uint8 SendData(uint8*buf,uint16 addr,uint8 Leng);buf為發(fā)送數據指針;addr為目的地址;Leng發(fā)送數據長(cháng)度。
2)無(wú)線(xiàn)接收 對于無(wú)線(xiàn)接收并沒(méi)有像發(fā)送一樣單獨的處理函數,而是在任務(wù)處理函數中通過(guò)處理無(wú)線(xiàn)接收數據事件來(lái)完成處理的,具體函數如下:

其中AF_INCOMING_MSG_CMD為無(wú)線(xiàn)接收事件宏定義,SampleApp_MessageMSGCB()函數則為具體接收事件的處理函數。
4.4.2 串口數據收發(fā)
系統中所用的串口為無(wú)線(xiàn)芯片CC2430自帶資源,通過(guò)自定義串口收發(fā)函數來(lái)使用該資源,從而實(shí)現網(wǎng)關(guān)與協(xié)調器節點(diǎn)數據傳輸。
串口發(fā)送函數原型為:
void UartTX_Send_String(char*Data,int len);
串口接收函數原型為:
char UartRX_Receive_Char(void);
5 結束語(yǔ)
隨著(zhù)物聯(lián)網(wǎng)概念的普及,基于ZigBee的無(wú)線(xiàn)傳感器網(wǎng)絡(luò )技術(shù)得到越來(lái)越廣泛的應用。文中將ZigBee網(wǎng)絡(luò )技術(shù)應用于機房環(huán)境監控系統中,介紹了系統總體架構,無(wú)線(xiàn)傳感器網(wǎng)絡(luò )部分的軟、硬件設計及實(shí)現過(guò)程,重點(diǎn)介紹了無(wú)線(xiàn)網(wǎng)絡(luò )的構建與數據傳輸。整個(gè)系統能實(shí)時(shí)、準確地測量并顯示機房內各點(diǎn)的數據信息,使管理者能夠及時(shí)了解機器工作環(huán)境,從而及時(shí)、有效地采取措施。如果更換采集節點(diǎn)的傳感器,該監控系統可以應用于不同的場(chǎng)合,可見(jiàn)無(wú)線(xiàn)傳感器網(wǎng)絡(luò )技術(shù)具有廣闊的應用前景。本文引用地址:http://dyxdggzs.com/article/160069.htm
波段開(kāi)關(guān)相關(guān)文章:波段開(kāi)關(guān)原理
電流變送器相關(guān)文章:電流變送器原理
評論