黃召軍,張雍容,萬書芹,虞致國,魏 斌,陳子逢
(中國電子科技集團公司第58研究所,江蘇 無錫,214035)
ZigBee技術是一種低速、低功耗、自組網的無線通信技術,該特性特別適合于那些數據通信量不大的數據采集系統,如環境監測系統[1]。因此近年來全國物聯網技術飛速發展,ZigBee技術也被越來越多地應用到環境監測系統中。但是,ZigBee技術有其致命的缺點,即只能用于短距離傳輸。本文針對ZigBee技術的這一缺點,采用ZigBee技術結合以太網技術的方法,設計了基于ZigBee和以太網的遠程環境監測系統,它可以將傳感器采集的數據通過ZigBee網絡發送給網關,網關通過以太網將數據發送到遠程監控中心,用戶在千里之外就可以監控和采集到其所要監測的環境參數。該系統充分結合了ZigBee技術和以太網技術的優點,使環境監測系統實現了遠程傳輸的目的。
基于ZigBee和以太網的遠程環境監測系統由ZigBee采集網絡、網關和遠程監控中心三部分組成,系統結構如圖1所示。
(1)ZigBee采集網絡:ZigBee采集網絡有兩個功能:一是負責采集傳感器數據,二是負責傳輸數據,即將環境監測系統中的傳感器采集的數據通過ZigBee網絡發送給網關。
(2)網關:網關負責實現ZigBee和以太網之間的通信,即要實現協議轉化,將ZigBee協議數據轉化成以太網協議數據和將以太網協議數據轉化成ZigBee協議數據。
(3)遠程監控中心:遠程監控中心負責配置環境監測系統中傳感器的采集參數、ZigBee網絡參數等,存儲并處理采集到的傳感器數據。

圖1 系統結構圖
ZigBee采集網絡主要由ZigBee網絡節點組成,根據ZigBee協議規定,它主要分為三種節點:協調器節點、路由器節點和終端節點[1]。每個網絡中僅有一個協調器節點,協調器節點負責組織和管理整個網絡,允許其他節點加入網絡。路由器節點負責多跳路由,允許其他設備加入網絡和協助終端節點通信。終端節點沒有維持網絡結構的責任,它只需要負責通信,因此,它可以進入休眠狀態,可以采用電池供電。路由器和終端節點上均連接有傳感器,它們也稱為傳感器節點,只是路由器不僅負責采集傳感器值,還負責路由其他節點的數據。
ZigBee采集網絡要正常工作,僅靠ZigBee自組網是不行的,組網只是搭建了一個數據傳輸的通道,但通過通道的數據如何被識別和處理則是需要制定一個規則的,即定義數據包格式。節點在接收到數據包后,可以識別該數據包類型,并做相應的處理。ZigBee采集網絡的數據包主要分為三種:節點自身信息、配置命令、傳感器采集數據。
節點自身信息是各個節點在成功加入網絡后,將自己的相關信息如節點類型(路由器節點、終端節點),MAC地址和網絡地址發送給協調器,通過協調器轉發給監控中心,監控中心將接收到的每個節點的信息都存入到相關的數據庫中,在監控中心要配置每個采集節點的參數時,這些信息是非常有用的。節點自身信息數據包的格式如圖2所示,各個部分的意義如下:
(1)DATA:標志頭,表示該數據包類型為數據,即ZigBee各節點發送給協調器的數據。
(2)數據長度:表示整個數據包所占的字節數,該值在協調器提取該數據包時非常有用。
(3)數據類型:表示該數據包的類型,每種類型的數據包都有唯一一個值來表示其類型。
(4)節點類型:表示本節點的類型,即本節點是終端節點還是路由器節點,每個節點的類型是在設計該節點時由設計者指定的。
(5)MAC地址:本節點的MAC地址,MAC地址如同以太網的IP地址一樣,要確保網絡中每個節點的MAC地址的唯一性。
(6)短地址:短地址也叫網絡地址,節點在加入網絡后,網絡會按照一定的算法給該節點分配一個網絡地址,同一個網絡中每個節點的網絡地址也是唯一的。

圖2 節點自身信息數據包格式
配置命令主要由監控中心發出,在ZigBee組網成功后,監控中心發出的配置命令通過協調器發送給ZigBee采集網絡中各節點,各采集節點接收到配置命令后,配置自身參數。配置的參數包括:節點發射功率、選擇采集節點中工作的傳感器、傳感器采集頻率設置、傳感器采集使能、終端節點休眠時間配置、休眠使能、啟動傳感器采集命令。ZigBee采集網絡只有先配置了這些參數后才能正常啟動。配置命令的數據包格式如圖3所示,各個部分的意義如下:
(1)COMD:標志頭,表示該數據包類型為配置命令,即監控中心通過協調器發送給ZigBee各節點的配置采集節點參數的命令。
(2)命令長度:表示整個數據包所占的字節數,該值在ZigBee各節點提取該數據包時非常有用。
(3)命令類型:該值用于表示該命令是用于配置何種參數,網絡中需要通過配置命令配置的參數主要有:節點發射功率,選擇采集節點中工作的傳感器,傳感器采集頻率設置,傳感器采集使能,終端節點休眠時間配置,休眠使能,啟動傳感器采集命令。每一個參數值都對應一個唯一的值,表示一種命令。
(4)數據:用于配合各個配置命令,如配置傳感器采集頻率,配置選擇傳感器,配置發射功率,配置休眠時間,該空間可用于放置采集頻率值、所選擇的傳感器地址、發射功率值、休眠時間值。

圖3 配置命令數據包格式
傳感器采集數據的信息包是由傳感器采集節點采集到傳感器值后,發送給協調器,通過協調器轉發給監控中心。ZigBee采集網絡啟動后,傳感器采集節點按照配置的采集頻率采集所選擇的傳感器值并發送給協調器。采集節點發送的傳感器采集數據信息包如圖4所示:
(1)DATA:標志頭,表示該數據包類型為數據,即ZigBee各節點發送給協調器的數據。
(2)數據長度:表示整個數據包所占的字節數,該值在協調器提取該數據包時非常有用。
(3)數據類型:表示該數據包的類型,每種類型的數據包都有唯一一個值來表示其類型。
(4)MAC地址:本節點的MAC地址,因為MAC地址如同以太網的IP地址一樣具有唯一性,所以采用MAC地址來標志該傳感器數據包來自何種節點。
(5)數據:采集到的傳感器數據的存儲空間,大小為N個字節,N值的大小由工作的傳感器個數來決定,數據格式為:M*(傳感器地址+傳感器值),M為所選擇的傳感器個數。

圖4 傳感器采集數據數據包格式
uClinux操作系統是Linux系統的一個分支,它是針對沒有MMU管理單元的微控制器而設計的Linux系統。uClinux繼承了標準Linux的優良特性,具有內嵌網絡協議、支持多種文件系統的特點,它帶有一個完整的TCP/IP協議,同時還支持許多其他網絡協議。uClinux對于嵌入式系統來說是一個網絡完備的操作系統,因此,它廣泛應用于嵌入式系統中,例如VPN路由器/防火墻、家用操作終端、協議轉換器、IP電話、工業控制器、Internet攝像機、PDA設備等。
網關節點用于實現ZigBee協議和以太網協議的轉化,在監控中心發送配置命令時,網關負責將以太網協議的數據轉化為ZigBee協議的數據,然后通過ZigBee網絡將配置命令發送給傳感器采集節點。當節點加入網絡后或者采集到數據后,發送數據給協調器,協調器通過網關將ZigBee協議的數據轉化為以太網協議數據,然后通過以太網發送給遠程監控中心。網關節點由Xilinx公司的XC3S500E Spartan-3E FPGA開發板作為硬件平臺,在該平臺上采用uClinux操作系統實現。網關的結構圖如圖5所示。網關通過UART接口與ZigBee采集網絡交換數據,通過以太網接口與遠程監控中心交換數據。

圖5 網關結構
ZigBee采集網絡通過串口與網關交換數據,數據格式與ZigBee采集網絡中的數據格式相同,在此不再復述。而重點描述在以太網中的數據格式。
監控中心通過以太網發送給網關的數據格式如圖6所示,各個數據字段的定義如下:
(1)標志頭:標志頭用STA來表示。
(2)命令長度:為整個數據包的實際長度。
(3)命令類型:表示該命令的類型,與配置命令中相應的命令類型的意義相同。
(4)數據:與配置命令中相應的數據的意義相同。
(5)結束標志:結束標志用END來表示。

圖6 監控中心發送給網關的數據包格式
網關通過以太網發送給遠程監控中心的數據格式如圖7所示,各個數據字段的定義如下:
(1)標志頭:標志頭用STA來表示。
(2)數據長度:為整個數據包的實際長度。之所以稱為數據,是因為網關發送給監控中心的都是節點自身信息或者傳感器采集數據。
(3)數據類型:表示該數據包的類型,目前該數據包的類型只可能有兩種:節點自身信息、傳感器采集數據。
(4)有效數據:與配置命令中相應的數據的意義相同。對于節點自身信息,該部分對應:節點類型+MAC地址+短地址,對于傳感器采集數據,該部分對應:MAC地址+M*(傳感器地址+傳感器數據),M為所選擇的傳感器個數。
(5)結束標志:結束標志用END來表示。

圖7 網關發送給遠程監控中心的數據格式
遠程監控中心主要用于控制和配置ZigBee采集網絡,監測和處理各種傳感器節點采集的數據。在系統初始化時,ZigBee采集網絡中協調器首先建立網絡,采集節點加入網絡后,立即發送自身信息給遠程監控中心,監控中心存儲各個采集節點的數據(節點類型、MAC地址、短地址),監控中心開始配置ZigBee采集網絡的參數。配置完畢后,啟動采集系統,各個參考節點將采集到的傳感器數據發送給遠程監控中心,監控中心對數據進行存儲和處理。監控中心只需要一臺PC機,它的監控平臺是我們設計的ZWSN無線數據采集平臺軟件,該軟件采用VB開發,其主要功能結構如圖8所示,描述如下:
(1)socket網絡接口:以太網采用socket協議,采用服務器/客戶機模式,監控中心為服務器端,它配置并連接網關,主要通過選擇網關的IP地址和端口號來實現連接網關[2];
(2)網絡節點配置系統:用于配置ZigBee采集網絡的各個節點的參數,包括節點發射功率,低功耗參數,模擬通道傳感器參數,數字通道傳感器參數等,從而使系統能夠正常工作;我們設計了節點配置數據庫,以便存儲對每個節點的配置參數,在需要時我們可以查詢對每個節點的配置情況;
(3)采集數據存儲系統:對于接收到的傳感器數據,根據地址類型,存儲到數據庫中,并且存儲時添加采集時間到數據庫中,以備以后用戶在需要時對數據進行查詢等操作;
(4)數據查詢系統:主要提供對已采集到的數據進行查詢,由于我們使用的傳感器分為數字傳感器和模擬傳感器,它們被存儲到了不同的數據庫中,所以我們在查詢的時候,也就分為數字傳感器數據查詢和模擬傳感器數據查詢。查詢的條件主要包括:按節點類型,按傳感器值范圍,按傳感器數據采集時間和選擇排序類型等,并且可以按照用戶需求,任意組合這些查詢條件以便快速準確地找到用戶關心的數據。
(5)報表系統:報表的類型分為日報表和月報表,日報表用于對一天的采集數據產生一個報表,月報表用于統計每月的采集數據;該系統主要分為報表生成、報表查看和報表打印三個操作;
(6)實時曲線顯示系統:主要提供對實時數據生成曲線趨勢圖,將實時數據、以曲線的形式顯示出來,從而直觀地觀察所監測環境參數目前的發展趨勢。
(7)幫助文件系統:該系統主要是調出工具使用參考說明書,以供查詢用戶需要了解的信息。
軟件界面如圖9所示,它主要由如下五大部分組成:
(1)命令菜單:命令菜單主要包括發送配置ZigBee采集網絡的各個命令,查詢網絡中各節點的配置參數,查詢采集數據庫中數據,生成報表,查看軟件的幫助信息和退出軟件等功能。
(2)曲線界面操作區:該區有多個命令按鈕,用于對實時曲線顯示區進行操作,包括放大/縮小曲線顯示區、打印曲線顯示區、復制曲線顯示區等等。
(3)實時曲線顯示區:用于實時生成所要顯示的傳感器數據的趨勢線。
(4)添加刪除曲線區:該區域有的命令按鈕用于向實時曲線顯示區添加要顯示的傳感器,或者從實時曲線顯示區中刪除已經存在的傳感器曲線。
(5)狀態欄:主要用于顯示軟件的當前狀態,如軟件工作的當前日期、時間、軟件所屬公司等信息。
(6)網絡節點查詢區:該區用于查詢ZigBee采集網絡中的所有節點,用戶可根據數據類型查詢相應的節點。
基于ZigBee和以太網的遠程環境監測系統在所有部分都設計完畢后,連接系統進行測試。在ZigBee采集網絡組網成功后,配置節點采集30000001工作,配置選擇該節點上連接的三種傳感器數據:溫度、濕度和虛擬的ADC通道0采集的數據。設置采集頻率為5s,系統運行后采集到的傳感器曲線如圖10所示。由圖中我們可以看到,溫度值為25℃,濕度為73,ADC采集值為122。經過測試,系統連續工作三天均未出現任何問題。

圖8 監控中心軟件功能結構
基于ZigBee和以太網的遠程環境監測系統是一種嵌入式傳感器數據采集系統,它結合了ZigBee技術和以太網技術,充分利用了ZigBee技術在數據采集方面的優勢和以太網在長距離傳輸方面的優勢,使該系統解決了一般的傳感器數據采集系統不能實現長距離傳輸或者布線麻煩的問題。該系統主要分成三個部分:ZigBee采集網絡、網關和遠程監控中心,通過對這三個部分的精心設計,優化了部分參數,實現了一個采集系統的全部功能,測試結果表明,本系統工作良好,能夠滿足正常的數據采集需要。

圖9 軟件界面

圖10 軟件界面的測試結果
[1]董亞超.基于ZigBee技術的無線環境監測網絡的開發[D].大連:大連理工大學,2008.
[2]高俊光,趙崇輝,施真芳.基于VB的Winsock控件的原理與應用[J].應用科技,2004,31(3):12.14.