1 ZigBee協議棧與無線傳感網絡的技術要點
無線傳感網絡(Wireless Sensor Networks, WSN)是一種技術集成度高,涉及多種前沿科學技術的信息采集變換,組網傳送,融合處理,反饋調節的多信息綜合采集與組網應用系統。在當前的國際信息產業界和技術研究領域里都受到廣泛關注。無線傳感網絡由多個靜止或移動的傳感器以自組織和多跳的方式構成的無線網絡,以協作地感知、采集、處理和傳輸網絡覆蓋地理區域內被感知對象的信息,并最終把這些信息發送給網絡所有者。無線傳感絡并不需要較高的帶寬,但是需要較低的傳輸延時和極低的功率消耗并且可以使用戶擁有較長的電池壽命和較多的器件陣列。而ZigBee的出現正好解決了這一問題,ZigBee有著高通信效率、低復雜度、低功耗、低速率、低成本、高安全性以及全數字化等諸多優點。這些優點使得ZigBee與無線傳感網絡完美的結合在一起。以下將對ZigBee協議棧加以說明。
ZigBee協議棧結構由一些層構成,每個層都有一套特定的服務方法(協議)和上一層連接。數據實體(data entity)提供數據的傳輸服務,而管理實體(management entity)提供所有的服務類型。每個層的服務實體通過服務接入點(SAP ,service access point)和上一層相接,每個SAP提供大量服務方法來完成相應的操作。ZigBee協議?;跇藴实腛SI七層模型,但只是在相關范圍來定義一些相應層來完成特定的任務。IEEE802.15.4-2003標準定義了下面的兩個層:物理層(PHY層)和媒介層(MAC層)。ZigBee聯盟在此基礎上建立了網絡層(NWK層)以及應用層(APL層)的框架(framework)。APL層又包括應用支持子層(APS ,application support sub-layer),ZigBee的設備對象(ZDO ,zigbee device object)以及制造商定義的應用對象。ZigBee技術的整體協議架構如下圖1所示。
IEEE802.15.4標準定義了物理層(PHY層)和媒介層(MAC層)。物理層是協議的最底層,承擔著與外界直接作用的任務,它采用擴頻通信調制方式,由圖1可以看到這里定義了兩個頻率的物理層,這兩個頻率段分別為868/915MHz和2.4GHz。MAC層負責設備間無線數據鏈路的建立、維護和結束,確認模式的數據傳送和接收,可選時隙,實現低延遲傳輸,支持各種網絡拓撲結構,網絡中每個設備為16位地址尋址。它可完成對無線物理信道的接入過程管理,包括以下幾方面:網絡協調器(coordinator)產生網絡信標、網絡中設備與網絡信標同步、完成PAN的入網和脫離網絡過程、網絡安全控制、利用CSMA-CA機制進行信道接入控制、處理和維持GTS(Guaranteed Time Slot)機制、在兩個對等的MAC實體間提供可靠的鏈路連接。
ZigBee又在以上兩層的基礎上提出了網絡層和應用層。網絡層主要負責建立新的網絡、處理節點的進入和離開網絡、根據網絡類型設置節點的協議堆棧、使網絡協調器對節點分配地址、保證節點之間的同步、提供網絡的路由。網絡層確保MAC子層的正確操作,并為應用層提供合適的服務接口。為了給應用層提供合適的接口,網絡層用數據服務和管理服務這兩個服務實體來提供必需的功能。網絡層數據實體(NLDE)通過相關的服務接入點(SAP)來提供數據傳輸服務,即NLDE.SAP;網絡層管理實體(NLME)通過相關的服務接入點(SAP)來提供管理服務,即NLME.SAP。NLME利用NLDE來完成一些管理任務和維護管理對象的數據庫,通常稱作網絡信息庫(Network Information Base,NIB)。應用層主要根據具體應用由用戶開發。它維持器件的功能屬性,發現該器件工作空間中其他器件的工作,并根據服務和需求在多個器件之間進行通信。應用層由應用支持子層(APS )、設備對象(ZDO,包括ZDO管理平臺)以及制造商定義的應用設備對象組成。APS子層的作用包括維護綁定表(綁定表的作用是基于兩個設備的服務和需要把它們綁定在一起)、在綁定設備間傳輸信息。ZDO的作用包括在網絡中定義一個設備的作用(如定義設備為協調者或為路由器或為終端設備)、發現網絡中的設備并確定它們能提供何種服務、起始或回應綁定需求以及在網絡設備中建立一個安全的連接。
2.2 TCP/IP協議與互聯網絡通信方式
對于互聯網而言,其傳輸控制與因特網互聯規則也就是TCP/IP協議是Internet最基本的協議。它由網絡層的IP協議和傳輸層的TCP協議組成,此協議采用了四層的層級結構,每一層都呼叫它的下一層所提供的網絡來完成自己的需求??梢赃@樣說,TCP負責發現傳輸的問題,一旦發現有問題就會要求重新傳輸,直到所有的數據安全正確的傳輸到目的地,而IP是給了因特網的每一臺電腦規定了一個地址。
TCP/IP協議由鏈路層、網絡層、傳輸層以及應用層這四層組成。對于此協議的熟知程度,具體的每層協議的功能在這里將不進行詳細的說明。而網關作為在傳輸層以上工作的,為了深入的了解此文所提出來的網關接入模式,在此將對傳輸層以上進行一些分析說明。傳輸層提供應用程序之間的通信。其功能包括:格式化信息流和提供可靠傳輸,為實現后者,傳輸層協議規定接收端必須發回確認,并且假如分組丟失,必須重新發送,從而提供可靠的數據傳輸。而傳輸層的協議主要是:TCP和UDP協議。在本文所提出的的網絡傳輸由于速率因素,我們在此采用TCP傳輸。在TCP傳輸過程中,數據從應用層到傳輸層,數據的報頭是TCP報頭,然后下到網絡層,數據在之前的TCP報頭前在加上IP報頭,IP報頭中有目標IP和源IP,然后到數據鏈路層后又在上層的數據中加上首部和尾部,然后經過物理層傳輸到目的地,經過路由器分析目標IP然后查找路由表在進行轉發,來到目標計算機然后從物理層開始解封裝,然后一層一層向上傳輸。而在此文中所涉及到的傳輸過程,就從應用層到傳輸層,數據帶有TCP報頭就進入網關進行協議的轉換,解封裝后從新封裝從而傳到ZigBee的應用層。
3 無線傳感網絡接入互聯網絡的網關模式分析
本文所提出的無線傳感網絡接入Internet網的網關接入模式的基本構架如圖2所示。
在此基本結構模式中,我們主要對數據從ZigBee進入網關以及數據從網關到互聯網進行分析。在此,數據由ZigBee進入網關采用串行傳輸的通信方式。ZigBee各個節點把收集的數據送到協調器,在經由協調器交給應用層,應用層通過調用串口API發到網關。網關將Internet發送來的數據進行解封裝通過串口交給協調器,協調器再將數據封裝,加上ZigBee的短地址發送出去。這樣就實現了從ZigBee到網關的雙向數據傳輸。網關到互聯網的傳輸在此文中采用了以太網口傳輸,客戶端與服務器模式的網絡通信結構,并用Windows Socket網絡編程實現,這樣就完成了從網關到互聯網的數據傳輸。因此,在這里我們通過此網關把基于ZigBee的無線傳感網絡與互聯網連接起來,從而使得可以通過互聯網時時控制物理世界,可以根據我們的需要對所有的節點進行控制及管理。
3.1 ZigBee模塊與互聯網關的通信模式
對于星形的ZigBee網絡拓撲結構,所有的節點都跟協調器交互,因此要實現ZigBee網絡與網關的通信,可以通過協調器跟網關通信。在本文中采用了協調器與網關通過串口進行連接。串口通信具有成本低、傳輸質量可靠、全雙工等特點,滿足嵌入式簡化設備的需求,因此網關的ZigBee網絡通信模塊采用串口實現。
在協調器和網關之間我們采用異步串口通信方式,并且雙方采用中斷方式進行數據的發送和接收。由發送端向接收端發送請求是否可以發送數據命令,之后接收端收到請求命令后給發送端返回一個命令數據,發送端根據接收端發回的命令進行判斷是否可以現在就開始傳輸數據。在每一次數據傳輸完畢之后,發送端都要進行新一輪的上述過程進行下一個數據包的傳輸,知道所有的數據傳輸完畢即可。
ZigBee協調器接收到其他節點發來的數據之后,就會產生一個事件,告知應用層,應用層調用相關函數進行接收,該函數返回一個類型的結構體。該結構體包括了源地址、網絡地址、地址類型等相關信息。這樣,在傳輸過程采用中斷方式,當接收到一個字節后就會進入中斷,從而調用接收函數進行所有數據的接收工作。而當網關接收到因特網傳來的數據之后就按照所需數據的格式進行打包,保存在事先設置好的變量里。當檢測到此變量非空的時候,就會跟協調器交互后發送數據。當協調器中的任務檢測到有數據來的時候,就會和協調器交互后以判斷對方是否真的要發送數據,然后就進行數據的接收。這樣就簡單的完成了協調器和網關之間的通信,完成了數據的交換,實現了從ZigBee的無線傳感器網絡到網關的通信。
3.2 物聯網與Internet的網關接入方式
本研究報告主要采用以太網口,客戶端與服務器結構的網絡通信,并把網關作為服務器。采用Windows Socket編程來實現此網絡傳輸。在此我們使用套接字I/O模型的Select模型,這樣有利于對應用程序通過異步方式同時對一個或多個套接字通信加以管理。如圖3所示,描述了Select模型的工作方式。在調用recv()函數接收數據之前,先調用select()函數,如果此時沒有可讀數據,select()函數就先阻塞在這里。當系統有了可讀數據,該函數返回。這個時候應用程序就可以調用recv()函數接收數據了。網絡編程選擇好后就在下面具體分析客戶端與服務器的相連接。
首先要初始化套接字集合,然后將套接字分配給參與操作的套接字集合之后通過調用select函數等待函數的返回,若成功返回后則對每個套接字集合進行檢查,若是宏值為ture則說明此套接字可讀,最后就可以通過Socket API進行數據接收和發送。接下來分析下網關(服務器)上應用流程。Select函數監聽套接字是否在可讀集合中,若存在,則說明客戶端有連接請求,調用accept()函數接受該客戶端的請求,并將新建接受套接字加入服務器套接字集合然后便利服務器套接字集合分別判斷每個套接字是否可讀可寫。若可讀,則調用輸入函數讀入數據,若可寫,則調用輸出函數發送數據。對于客戶端,首先要判斷是否可寫套接字,若是存在就調用connect()函數請求連接,之后檢查每一個套接字的可讀可寫性。若可讀,則調用輸入函數讀入數據,若可寫,則調用輸出函數發送數據。這樣就在服務器客戶端兩端分別完成了數據的傳輸,用此模式的網絡編程實現了網關與PC的有效數據傳輸。也就是實現了網關到Internet的傳輸。通過此網關可以實現ZigBee無線傳感器網絡與因特網的互聯,實現物聯網系統在更廣泛領域里的拓展應用。
4 結束語
隨著物聯網絡技術的發展和在更加廣泛領域里的應用,ZigBee無線傳感網絡及其拓展接入技術變得日益更要。本文針對ZigBee無線傳感網絡接入互聯網的模式進行了分析和研究,并就其方法進行了歸納闡述。無線傳感網絡技術與多傳感器技術及因特網領域相結合,有著十分廣泛的發展和應用前景,將給社會的生產和生活方式帶來空前的改變。這種基于ZigBee的無線傳感網絡與互聯網關接入模式,為無線傳感器網絡的拓展應用方式提供了一種新的選擇,在理論引導和實際應用方面具有重要意義。