金 純,任 濤,王 曉
(1.重慶郵電大學通信與信息工程學院,重慶 400065;2.重慶廣播電視集團(總臺),重慶 400015)
伴隨著ZigBee技術在無線傳感器網絡的廣泛應用和TD-SCDMA在我國的蓬勃發展,控制中心如何利用TD-SCDMA網絡對ZigBee構成的網絡進行遠程管理,控制感測環境中的各種傳感器裝置,逐漸成為該領域的一個重要課題。由于ZigBee和TD-SCDMA的協議不同,以至于數據在這兩個網絡之間無法進行透明傳輸。因此,設計了ZigBee/TDSCDMA網關用于解決上述問題,使得ZigBee節點采集的數據能夠通過TD-SCDMA網絡遠程及時地發送出去,同時監控中心也可以向ZigBee節點發送控制命令。
網關是建立在傳輸層以上的協議轉換器,通常連接兩個或多個不同的網絡,每接收一種協議的數據包,利用用戶編寫的應用程序,在轉發之前,將該數據包轉換成另一種協議的格式,設計的網關協議模型如圖1所示[1]。
該網關采用ARM處理器作為網關的主系統,CC2430以ZigBee協議為基礎,在網關與ZigBee路由節點和終端節點之間接收數據通信,TD-SCDMA模塊用于將ZigBee節點的數據發送到控制中心以及從控制中心接收命令,系統硬件的總體結構如圖2所示[2]。


如圖所示,ZigBee/TD-SCDMA網關由若干硬件單元構成。ARM處理器是ZigBee/TD-SCDMA網關的控制核心,ARM處理器(LPC2214)與ZigBee模塊(CC2430)通過串口相連,如圖3所示[3],ZigBee模塊通過射頻接口與天線相連,天線用于收發無線信號。RAM 通過地址數據總線與ARM處理器相連,Flash通過地址數據總線與ARM處理器相連,用于存儲數據信息。ARM處理器的另一端通過串口與TD-SCDMA模塊相連,同時,TD-SCDMA模塊連接TD-SCDMA天線,用于收發無線信號。ZigBee模塊與ZigBee節點通過無線方式通信;TD-SCDMA模塊與TD-SCDMA網絡通過無線方式通信。

圖3 CC2430與LPC2214關鍵引腳連接圖(截圖)
如圖3所示,ZigBee模塊與LPC2214通過串口進行數據的傳輸,其中ZigBee模塊與LPC2214通過RXD和TXD兩個引腳進行連接,由于LPC2214沒有RTS和CTS兩個引腳,所以在進行數據傳輸之前,要通過AT指令將ZigBee模塊設置成無流控的形式,然后就可以進行數據的傳輸。
圖2中,在網關內部,當沒有ZigBee節點接入時,TD-SCDMA模塊與服務器斷開連接;當有ZigBee節點需要接入時,網關先建立ZigBee節點與ZigBee模塊之間的連接,再建立TD-SCDMA模塊與TD-SCDMA服務器之間的連接。
ZigBee模塊建立連接時,ZigBee節點先通過ZAO查詢網關的服務信息,再通過ZDO發出連接要求,APS負責上層應用程式物件與下層網絡層的協調,NWK負責找尋并維護節點間的繞徑路線并傳送封裝包到目標節點[4]。TD-SCDMA模塊建立連接時,通過AT指令控制連接TD-SCDMA網絡(包括PHY層、MAC 層、RLC 層、PDCP層等),之后通過PPP協議與服務器進行連接,獲取IP地址等參數。
網關中的ZigBee模塊可以是兩種設備類型,協調器或路由器。在該網關中,ZigBee模塊設計為協調器。網關將提取ZigBee節點發送過來的有效數據,將其使用TCP/IP封裝后再通過TD-SCDMA模塊發送到終端客戶;同時,網關也將提取終端客戶發送過來的通過TCP/IP協議封裝的有效數據,將這些有效數據封裝到ZigBee協議中,然后通過 ZigBee模塊發送給 ZigBee節點。
網關實現TCP/IP協議客戶端及服務端兩種角色。做客戶端使用時,網關會利用TCP/IP協議主動連接預先定義的終端客戶的IP地址及端口號,完成Socket連接;作為服務端使用時,網關將通過TD-SCDMA模塊申請到的IP地址注冊到動態域名中,并且會在某個預定義的端口上進行Socket監聽,這樣,終端客戶就可以通過動態域名知道網關的IP地址,并且連接到網關預定義的端口上,完成Socket連接。在客戶端或服務端的Socket連接完成之后,就可以在這個Socket與ZigBee協議之間轉發數據了。
ZigBee/TD-SCDMA網關的軟件設計主要包括兩個方面:CC2430和ARM處理器,下面詳細地介紹CC2430和ARM處理器的軟件設計。
CC2430的軟件設計主要依據于z-stack,它分別由ZigBee協議棧、ZigBee應用、硬件支持包組成。
CC2430在充當接收和發送器的時候,它只負責對數據進行接收和發送,而不對數據進行任何的處理。在網關中,CC2430充當協調器,主要負責將ZigBee節點的數據轉發到ARM處理器中,同時CC2430還要建立網絡和維護網絡。在對CC2430進行軟件設計的過程中,首先對硬件部分進行初始化,然后建立PAN標識符,廣播地址ID等,并且協調器會保持對網絡節點的監控狀態,當協調器接收到信號的時候,首先判斷這個信號是否來自于一個新節點,如果是一個新節點,并且要加入到網絡中,協調器會分配一個16位短地址到這個新節點中;如果不是,協調器就會將這個數據包(信號)通過UART引腳直接傳到ARM處理器中。協調器的流程圖如圖4所示[5]。

圖4 協調器接收數據流程圖
協調器在接收與發送數據之前,首先要與ZigBee節點組成ZigBee網絡,以便把ZigBee節點采集的數據匯聚起來,組建網絡是通過zg_aplFormNetwork()函數來完成的,在組成網絡之后,等待其他節點的加入。
網絡組建成之后,就要從ZigBee節點去接收信號,信號分為兩種:一種是要加入網絡的信號,一種是ZigBee節點采集的數據。當協調器監測到信號時,協調器將接收到的原語傳輸到網絡層,網絡層判斷該節點是否為已連接的設備,如果是,則通過串口發送數據,否則,給要加入的設備分配短地址。
ARM處理器是實現ZigBee網絡與TD-SCDMA網絡的透明傳輸的關鍵系統,將ZigBee協議轉換成TD-SCDMA協議,實現數據的遠距離傳輸,同時能夠將TD-SCDMA協議轉換成ZigBee協議,向ZigBee節點發送控制命令。
ARM處理器首先初始化硬件,然后打開中斷和接收數據包,并且對其分析和處理,流程圖如圖5所示[6]。

圖5 ARM處理器處理數據的流程圖
由于打開了中斷,所以處理器在處理數據的過程中有時會發生中斷或異常中斷,在進入中斷程序之前,必須保存當前所有的值,而后在進入到中斷處理程序中,首先處理器會將中斷標志位清零,然后對相關的寄存器進行一系列的設置,當處理完成后返回中斷節點處,繼續運行。
為了改進系統的實時性、增強實時性能和簡化系統的應用程序,移植μC/OS-Ⅱ嵌入式操作系統到LPC2214中,LPC2214的整個軟件模型如圖6所示[7]。

圖6 LPC2214軟件模型
LPC2214中的軟件模型主要包括2個任務和串口接收中斷的子程序,這2個主要任務就是zigbeetask()和td-scdmatask(),這兩個任務主要是對接收到的數據進行處理。當串口在中斷的子程序中接收完了所有的數據,根據接收的方向,發送zigbeeqflag或td-scdmaqflag進行激活zigbeetask()或td-scdmatask()任務。
在這里,特別強調一點,當LPC2214串口接收到的數據長度大于LPC2214串口能夠接收到的最大數據長度時,為了便于用中斷方式接收處理,在串口初始化的函數中,應該同時打開接收數據(RDA)中斷和字符超時指示中斷(CTI)。
監控中心與采集中心之間的數據交流是以幀的形式傳輸的。在通信的過程中,為了使雙方能夠對接收到的數據進行及時的傳輸、解析,整個系統要應用確定的幀格式。
在煤礦定位系統中,為了確保數據能夠及時傳輸,網關需要設計通信協議的幀格式,包括采集中心發送的數據幀和監控中心發送的命令幀,但由于數據幀和命令幀的數據長度不同,以及能夠使網關更迅速地處理數據,命令幀和數據幀的幀結構如表1所示[7]。

表1 數據幀和命令幀的幀結構 byte
ZigBee/TD-SCDMA網關主要實現ZigBee網絡與TD-SCDMA網絡的雙向傳輸,下面簡單地介紹從ZigBee往TD-SCDMA的傳輸過程。當ZigBee/TD-SCDMA網關從ZigBee節點中接收到數據時,ZigBee模塊將接收到的數據傳輸到ARM處理器,ARM處理器對接收到的數據進行處理,去掉ZigBee協議棧頭,提取有用的數據載荷,然后加上TD-SCDMA的協議棧頭,具體過程如下:去掉Zig-Bee PHY頭幀→去掉ZigBee MAC頭幀→去掉ZigBee NWK頭幀→添加TCP頭幀→添加TD-SCDMA IP頭幀→添加TD-SCDMA PPP頭幀→添加TD-SCDMA PDCP頭幀→添加TD-SCDMA RLC頭幀→添加TD-SCDMA MAC頭幀→添加TD-SCDMA PHY頭幀。從TD-SCDMA向Zig-Bee傳輸數據的處理過程相反[6],對ZigBee模塊傳送過來的數據處理流程圖如圖7所示。

圖7 對從ZigBee網絡發送的數據處理流程圖
由于從TD-SCDMA網絡發送過來的數據處理的原理與其相反。就不在此敘述。
ZigBee/TD-SCDMA網關內部的分組轉換圖如圖8所示[1]。

圖8 網關內部的分組轉換圖
本論文采用ZigBee模塊和TD-SCDMA模塊為基本的傳輸模塊,以LPC2214為核心設備,設計了無線傳感網絡網關,兼顧了ZigBee短距離無線通信和TD-SCDMA遠距離傳輸的各自優點。ZigBee/TD-SCDMA網關結合兩個網絡來完成數據的遠程傳輸,同時詳細地闡述了網關的硬件和軟件設計,使得網關能夠可靠地運行,能夠將需要傳輸的數據及時地傳送出去。
[1] HU Guozhen.Design and implementation of industrial wireless gateway based on ZigBee communication[C]//Proc.9th International Conference on Electronic Measurement & Instruments.[S.l.]:IEEE Press,2009:684-688.
[2] HE Hongjiang,YUE Zhuqiang,WANG Xiaojie.Design and realization of wireless sensor network gateway based on ZigBee and GPRS[C]//Proc.Second International Conference on Information and Computing Science.Manchester:IEEE Press,2009:196-199.
[3]申冬玲.基于ZigBee的無線通信模塊與串行存儲器接口方法的研究[J].佛山科學技術學院學報,2009,27(4):32-35.
[4] 王銳華,于全.淺析 ZigBee技術[J].電視技術,2004,28(6):33-35.
[5]于洋,張東偉,崔建軍.基于ZigBee技術的井下人員定位系統的設計[J].煤礦機械,2009,30(1):19-21.
[6]劉承龍,凌志浩 .基于AT91SAM260的ZigBee多功能網關設計[J].自動化儀表,2009,30(12):31-33.
[7] HE Zhiye,JIANG Peng.Design of wireless gateway based on ZigBee and GPRS technology[C]//Proc.International conference on computational intelligence and software engineering.Wuhan:IEEE Press,2009:1-4.