基于ZigBee技術(shù)的無(wú)線(xiàn)點(diǎn)餐系統設計
3 網(wǎng)絡(luò )節點(diǎn)軟件的設計
3.1 網(wǎng)絡(luò )節點(diǎn)程序
ZigBee網(wǎng)絡(luò )支持三種網(wǎng)絡(luò )結構,即星狀、樹(shù)狀和網(wǎng)狀。節點(diǎn)設計基于通用性及便于開(kāi)發(fā)的考慮,移植了TI公司的Z-Stack協(xié)議棧,其主要特點(diǎn)就是兼容性,支持IEEE 802.15.4標準的CC2430片上系統解決方案。ZigBee網(wǎng)絡(luò )中有三種設備,分別是協(xié)調器、路由器及終端設備。協(xié)調器負責啟動(dòng)一個(gè)網(wǎng)絡(luò ),在一個(gè)ZigBee網(wǎng)絡(luò )中有且只有一個(gè)協(xié)調器設備。本系統選用了一個(gè)協(xié)調器和多個(gè)終端設備,對協(xié)議棧進(jìn)行了相應的修改和增減以適應硬件電路的實(shí)際需求,組成簡(jiǎn)單的星形網(wǎng)絡(luò )。
Z-Stack是基于操作系統的思想來(lái)構建的,采用事件輪循機制,整個(gè)協(xié)議棧用C語(yǔ)言編寫(xiě)。當各層初始化之后,系統進(jìn)入低功耗模式,當事件發(fā)生時(shí),喚醒系統,開(kāi)始進(jìn)入中斷處理事件,結束后繼續進(jìn)入低功耗模式。如果同時(shí)有幾個(gè)事件發(fā)生,判斷優(yōu)先級,逐次處理事件。這種軟件構架可以極大地降級系統的功耗。整個(gè)Z-Stack的主要工作流程,大致分為系統啟動(dòng)、驅動(dòng)初始化、OSAL初始化與啟動(dòng)和進(jìn)入任務(wù)輪循幾個(gè)階段。
系統流程如圖4所示。
當硬件初始化完成后,打開(kāi)中斷,執行osal_star_system()函數開(kāi)始運行OSAL系統。該任務(wù)調度函數按照優(yōu)先級檢測各個(gè)任務(wù)是否就緒。如果存在就緒的任務(wù)則調用tasksArr()中相對應的任務(wù)處理函數去處理該事件,直到執行完所有就緒的任務(wù)。如果任務(wù)列表中沒(méi)有就緒的任務(wù),則可以使處理器進(jìn)入睡眠狀態(tài)實(shí)現低功耗。OSAL任務(wù)調度流程如圖5所示。
ZigBee網(wǎng)絡(luò )的形成是通過(guò)ZDApp_Init這個(gè)任務(wù)實(shí)現的。zDApp_Init任務(wù)中調用了函數ZDAPP_Net-workInit,如果是協(xié)調器就建立網(wǎng)絡(luò ),確定PANID與頻道選擇,打開(kāi)全局中斷之后進(jìn)入監聽(tīng)狀態(tài),監測網(wǎng)絡(luò )中有無(wú)ZigBee信號,如果有節點(diǎn)申請加入網(wǎng)絡(luò ),協(xié)調器給節點(diǎn)分配網(wǎng)絡(luò )地址。對于終端設備,完成初始化之后,發(fā)送申請加入網(wǎng)絡(luò )信號,等待協(xié)調器響應。成功加入網(wǎng)絡(luò )后,進(jìn)入休眠狀態(tài)等待喚醒。網(wǎng)絡(luò )啟動(dòng)程序流程如圖6所示。
評論