范志宏
(上海工業自動化儀表研究院有限公司)
目前,在施工工地地下空間數據采集系統中,數據傳輸多采用無線網絡,其中,采用ZigBee無線網絡比較多,但在某些特別苛刻的應用環境中,尤其是地下施工空間中,ZigBee的表現并不理想,主要體現在數據采集同步問題上。本文采用時間同步的方法和全路由方式解決網絡連通和低功耗問題,使網絡在發揮最大連通性的同時保持低功耗性能。
ZigBee基于TI提供的Z-Stack、API接口和OSAL實時操作系統,結合編寫應用程序,采用時間同步和全路由的方法克服如功耗高、可靠性低以及網絡整體性差等缺點。遠程服務器通過GPRS網絡訪問網關,網關負責將相關數據通過GPRS返送至服務器,為保證網關與服務器間的通訊可靠,其間附加對等層協議。網關在解析服務器發來的數據后,轉發給相應節點。網關的時間系統為整個傳感器網絡的時間中心,整個傳感器網絡的時間從網關向下擴散。網關的時間可通過串口UART1更改。路由器節點收到網關發來的消息后,設置相應動作。兩節點間通過請求回饋機制協商處理數據轉發和時間同步問題,完成所有工作后進入休眠狀態。同步完成后,網絡拓撲中下層向上層請求時間同步幀,時間向下傳播至少一層,之后節點進行采集、打包和存儲,并在時間同步后及時進行發送。一般同步時間間隔小于任務時間間隔。
1)Z-Stack協議棧
Z-Stack協議棧是TI公司提供的一個強大完整的ZigBee解決方案,在相關幾個層調用Z-Stack提供的各種API即可滿足應用要求,大大簡化了開發難度,縮短了開發周期。ZigBee無線網絡共分為五層,包括物理層(PHY)、介質訪問控制層(MAC)、網絡層(NWK)、應用程序支持子層(APS)和應用層(APL)。IEEE 802.15.4僅僅定義了物理層(PHY)和介質訪問控制層(MAC)的數據傳輸規范,而ZigBee協議定義了網絡層(NWK)、應用程序支持子層(APS)及應用層(APL)的數據傳輸規范。
2)應用程序
①網關節點的主要功能是建立和維護網絡,在對采集節點的數據進行處理后發送給GPRS模塊,將GPRS模塊轉發的數據處理后發送給相應節點,并存儲發送失敗數據;②路由器節點的主要功能是完成數據的采集、處理、存儲和發送,在完成任務后進入休眠狀態。路由節點將以DS1302讀取的時間為粗略時間,以CC2530的內部定時器提供的時間為精確時間,由此,兩個時間通過高低地址路由節點間的同步信號幀得到同步。喚醒時間可在1~65 535s內選擇設定,并根據具體節點間DS1302的時間誤差確定,路由節點的轉發由路由節點互相協商,發送失敗或轉發失敗的數據寫入存儲器中等待下一次發送。
在單總線上要想對單點進行測溫,需要從單總線上有針對性地取出一個點,可使用匹配ROM[55H]命令,但匹配前還需得知每個點的光刻ROM,因此,需要采用搜索二叉樹的算法取出每個溫度傳感器的ROM。由于接在單總線上的傳感器數目并非固定不變,需要采用Search_Rom()函數構成Confirm_ROM()函數,以確保傳感器搜索正確,得到ROM后發送匹配ROM[55H],匹配成功后通過暫存器[BEH]讀出寄存器值,其中,前兩字節即為溫度寄存器值,乘以分辨率便可得到溫度值。
DS1302采用簡潔的三線接口,讀時鐘時,先寫入寄存器地址,再讀出寄存器。寫時鐘時先關閉寫保護,再暫停時鐘,然后寫入時間打開寫保護。每個節點都采用DS1302芯片作為實時時鐘芯片,但每一個時鐘芯片的具體硬件條件不同,也沒有兩個節點處于完全相同溫度的情況,所以任意兩個節點的時間都不可能完全相同[1]。
為使每個節點在同一時間被喚醒,且誤差在可接受的范圍內,通常采用毫秒校準的方法。因DS1302的時間只提供秒,因此,毫秒由CC2530內部定時器提供。在同步時間到前讀DS1302轉為1000次每秒以上,直到秒從“59”跳轉為“00”,此時該DS1302的毫秒時間為0,由上層提供的時間同步幀校準毫秒位,其功耗和時間精度成負相關。
時間同步幀分為秒同步幀和毫秒同步幀,秒同步幀的凈荷包括時、分、秒,由上層路由節點采樣并適當估算代碼時間。毫秒同步幀凈荷只包括毫秒,并考慮到其節間的延遲。CC2530讀取時鐘模塊獲取粗略時間,在粗略時間上加入毫秒修正便可得到該節點的精確時間。所有時間均從網關開始,低地址服從高地址時間校準信號3。如果存在節點未得到同步的情況,未得到同步信號的節點將以2n毫秒(n為同步失敗次數)為遞增時間左右增加工作時間直到時間同步。時間同步流程如圖1所示。

圖1 時間同步流程
W25Q16采用SPI串行數據接口,既滿足了引腳少、傳輸速率高的要求,又滿足了可靠性高、功耗低的要求。通過CC2530的IO口模擬SPI時序與之相互交換數據。W25Q16由每頁256字節,共8192頁組成。每頁的256字節用一次頁編程指令即可完成,前10頁用來存儲目錄。每次取數據時先從目錄按照類型和時間查詢地址,再從相應地址取出數據。當節點通訊失敗時將數據寫入存儲器,之后進入休眠狀態[2]。
為實現高可靠性、低成本、高穩定性和低功耗的傳感器網絡,采用以CC2530為主體,外圍以低功耗器件輔助的系統。以網關為時間中心傳遞時間參數的思想使時間設置和時間維護極為方便。以CC2530定時器的精確時間作為同步標準既解決了因時鐘精度不高帶來的同步性差等一系列問題,也解決了因安裝高精度時鐘模塊帶來的成本問題和功耗問題。既然傳感器網絡在某些苛刻的環境中需要保持位置不變,并且持續工作很長時間,路由器就沒有持續供電的必要,因此,產生了路由器休眠的方案。