摘 要:本文的目的是為了測(cè)試采用ZigBee協(xié)議開發(fā)的設(shè)備或者產(chǎn)品是否符合ZigBee協(xié)議標(biāo)準(zhǔn),從而達(dá)到實(shí)現(xiàn)之間的一致性與互通性。為此,設(shè)計(jì)了一個(gè)ZigBee網(wǎng)絡(luò)測(cè)試與驗(yàn)證平臺(tái),通過對(duì)接入ZigBee網(wǎng)絡(luò)的測(cè)試節(jié)點(diǎn)的屬性數(shù)據(jù)檢測(cè),來完成ZigBee協(xié)議的測(cè)試工作。
關(guān)鍵詞:ZigBee;一致性與互通性;ZigBee協(xié)議;測(cè)試節(jié)點(diǎn)
中圖分類號(hào):TP311.52
2007年,ZigBee聯(lián)盟宣布了認(rèn)證計(jì)劃。為了確保ZigBee[1]產(chǎn)品的可靠性以及在無線組網(wǎng)中工作的穩(wěn)定性,ZigBee聯(lián)盟負(fù)責(zé)實(shí)施、管理了認(rèn)證測(cè)試。每一個(gè)產(chǎn)品都基于公共應(yīng)用規(guī)范,以保證各個(gè)設(shè)備制造商的產(chǎn)品之間的互操作性。目前,全球只有三家實(shí)驗(yàn)室為ZigBee聯(lián)盟指定的完整測(cè)試服務(wù)授權(quán)廠商[2]。國(guó)內(nèi)還沒有一個(gè)廣受認(rèn)可的官方ZigBee測(cè)試規(guī)范。因此,就需要一個(gè)測(cè)試規(guī)范來檢測(cè)ZigBee設(shè)備是否達(dá)到ZigBee協(xié)議標(biāo)準(zhǔn)。
1 系統(tǒng)設(shè)計(jì)
該平臺(tái)是一個(gè)專門用于測(cè)試一個(gè)采用ZigBee協(xié)議標(biāo)準(zhǔn)開發(fā)的ZigBee設(shè)備是否符合ZigBee協(xié)議標(biāo)準(zhǔn),是為了保證ZigBee設(shè)備的一致性、互通性。平臺(tái)由ZigBee測(cè)試節(jié)點(diǎn)、以太網(wǎng)、ZigBee網(wǎng)絡(luò)和PC機(jī)控制端組成。
硬件方面,ZigBee節(jié)點(diǎn)的主要功能是采集和上傳數(shù)據(jù),完成數(shù)據(jù)從ZigBee協(xié)議環(huán)境下到TCP/IP協(xié)議環(huán)境下的轉(zhuǎn)換,并且能在無人看管的條件下長(zhǎng)期運(yùn)行。軟件方面,應(yīng)具備如下功能:準(zhǔn)確地接收節(jié)點(diǎn)上傳的數(shù)據(jù),進(jìn)行實(shí)時(shí)的顯示、存儲(chǔ)并可隨時(shí)查看歷史數(shù)據(jù),通過對(duì)數(shù)據(jù)的修改和反饋,達(dá)到驗(yàn)證ZigBee節(jié)點(diǎn)是否符合ZigBee協(xié)議標(biāo)準(zhǔn)的目的。當(dāng)對(duì)ZigBee測(cè)試節(jié)點(diǎn)進(jìn)行測(cè)試時(shí),測(cè)試節(jié)點(diǎn)能自動(dòng)加入?yún)f(xié)調(diào)器節(jié)點(diǎn)發(fā)起的網(wǎng)絡(luò),將節(jié)點(diǎn)各層屬性數(shù)據(jù)上傳至協(xié)調(diào)器節(jié)點(diǎn),當(dāng)傳輸距離超過一跳傳輸距離時(shí),數(shù)據(jù)以多跳方式傳輸,觸發(fā)協(xié)調(diào)器節(jié)點(diǎn)執(zhí)行數(shù)據(jù)接收程序,該程序模塊通過調(diào)用函數(shù)將接收到的數(shù)據(jù)解析成TCP/IP協(xié)議下的數(shù)據(jù),對(duì)數(shù)據(jù)處理后,使用Socket網(wǎng)絡(luò)編程,將數(shù)據(jù)上傳至計(jì)算機(jī)軟件,軟件調(diào)用合適的函數(shù)對(duì)接收到的數(shù)據(jù)包進(jìn)行解析,將數(shù)據(jù)實(shí)時(shí)的顯示在軟件界面中,采用合適的方法,完成對(duì)該節(jié)點(diǎn)的測(cè)試與驗(yàn)證。該測(cè)試平臺(tái)的系統(tǒng)架構(gòu)圖如圖1所示。
1.1 ZigBee網(wǎng)絡(luò)硬件組成
一個(gè)ZigBee網(wǎng)絡(luò)的硬件組成包含ZigBee協(xié)調(diào)器節(jié)點(diǎn)、路由器節(jié)點(diǎn)以及終端節(jié)點(diǎn)三種,ZigBee網(wǎng)絡(luò)中的設(shè)備分為全功能設(shè)備(FFD)和半功能設(shè)備(RFD)。其中,F(xiàn)FD設(shè)備可提供全部的IEEE 802.15.4的MAC層服務(wù),可充當(dāng)ZigBee網(wǎng)絡(luò)中的任何設(shè)備,因?yàn)镕FD設(shè)備不僅可以發(fā)送和接收數(shù)據(jù),還具備路由轉(zhuǎn)發(fā)數(shù)據(jù)的功能;而RFD設(shè)備只提供部分的IEEE 802.15.4 MAC層服務(wù),因此只能充當(dāng)終端節(jié)點(diǎn),而不能充當(dāng)協(xié)調(diào)器節(jié)點(diǎn)和路由節(jié)點(diǎn),因此它只負(fù)責(zé)將自身的屬性數(shù)據(jù)發(fā)送給協(xié)調(diào)器節(jié)點(diǎn)和路由節(jié)點(diǎn),并不具備數(shù)據(jù)轉(zhuǎn)發(fā)、路由發(fā)現(xiàn)和路由維護(hù)等功能。
整個(gè)節(jié)點(diǎn)硬件電路主要包括射頻模塊、電源模塊、傳感器、嵌入式控制器和時(shí)鐘五個(gè)部分組成。ZigBee網(wǎng)絡(luò)測(cè)試節(jié)點(diǎn)采用了以ATmega128為核心控制模塊,以CC2530芯片為無線收發(fā)模塊的設(shè)計(jì)方法[3],ATmega128與CC2530芯片是通過SPI方式進(jìn)行相互之間的通訊的,ATmega128采用主模式,CC2530采用從模式。電源采用連接式電源。時(shí)鐘電路主要是采用ATmega128晶振來產(chǎn)生同步信號(hào),從而實(shí)現(xiàn)射頻模塊與處理器之間的同步。
在節(jié)點(diǎn)上由ATmega128為主控芯片及其外圍芯片及電路組成的數(shù)據(jù)轉(zhuǎn)換設(shè)備,完成ZigBee協(xié)議數(shù)據(jù)到以太網(wǎng)TCP/IP協(xié)議數(shù)據(jù)的轉(zhuǎn)換。圖2為實(shí)際開發(fā)節(jié)點(diǎn)實(shí)物圖。
1.2 系統(tǒng)軟件設(shè)計(jì)
軟件設(shè)計(jì)方面包括硬件節(jié)點(diǎn)的軟件設(shè)計(jì)和PC機(jī)端的軟件設(shè)計(jì)。
1.2.1 協(xié)調(diào)器軟件設(shè)計(jì)
協(xié)調(diào)器軟件設(shè)計(jì)功能主要為:(1)創(chuàng)建并維護(hù)ZigBee網(wǎng)絡(luò),實(shí)現(xiàn)對(duì)ZigBee網(wǎng)絡(luò)的創(chuàng)建,維護(hù)節(jié)點(diǎn)加入和退出時(shí)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。(2)接收PC機(jī)服務(wù)器端發(fā)送來的控制指令,并將其通過ZigBee網(wǎng)絡(luò)發(fā)送給各路由器節(jié)點(diǎn)和終端節(jié)點(diǎn)。(3)將ZigBee網(wǎng)絡(luò)區(qū)域的節(jié)點(diǎn)的各層屬性數(shù)據(jù)經(jīng)過處理和融合,最后通過ZigBee模塊發(fā)送給PC機(jī)服務(wù)器端。
1.2.2 路由器節(jié)點(diǎn)和終端節(jié)點(diǎn)軟件設(shè)計(jì)
終端節(jié)點(diǎn)的作用是采集數(shù)據(jù),路由器除了采集數(shù)據(jù)以外還負(fù)責(zé)建立數(shù)據(jù)路由,其主要功能如下:(1)通過掃描可用信道尋找可用網(wǎng)絡(luò),如果存在可用網(wǎng)絡(luò),則終端節(jié)點(diǎn)/路由器節(jié)點(diǎn)就開始請(qǐng)求加入到網(wǎng)絡(luò)中,當(dāng)成功加入網(wǎng)絡(luò)后,終端節(jié)點(diǎn)/路由器節(jié)點(diǎn)便開始向目標(biāo)服務(wù)器發(fā)送自身的各層屬性數(shù)據(jù)。(2)采用中斷方式,接收由ZigBee網(wǎng)絡(luò)協(xié)調(diào)器發(fā)送過來的命令,并對(duì)命令進(jìn)行判斷,如果命令被判斷為控制命令,終端節(jié)點(diǎn)/路由器節(jié)點(diǎn)則根據(jù)命令幀收發(fā)數(shù)據(jù),如果命令是修改命令,則根據(jù)命令,終端節(jié)點(diǎn)/路由器節(jié)點(diǎn)完成對(duì)對(duì)應(yīng)屬性值的修改。
1.2.3 服務(wù)器軟件設(shè)計(jì)
該平臺(tái)軟件是以Windows XP為操作系統(tǒng),采用C++語(yǔ)言,選用Visual Studio 2010程序開發(fā)工具以及MFC對(duì)界面程序及其它應(yīng)用程序的設(shè)計(jì)[4]。軟件界面如圖3所示。
PC機(jī)軟件主要包含四個(gè)模塊:(1)網(wǎng)絡(luò)通信模塊,對(duì)整個(gè)ZigBee網(wǎng)絡(luò)進(jìn)行監(jiān)聽;(2)數(shù)據(jù)處理模塊,解析ZigBee網(wǎng)絡(luò)協(xié)議,接收網(wǎng)絡(luò)中的節(jié)點(diǎn)數(shù)據(jù)包,分析數(shù)據(jù)包中的數(shù)據(jù),對(duì)解析好的數(shù)據(jù)進(jìn)行分類;(3)數(shù)據(jù)顯示模塊,在軟件中顯示接收的各節(jié)點(diǎn)IP地址及TCP/IP模型各層數(shù)據(jù);(4)驗(yàn)證模塊,ZigBee節(jié)點(diǎn)接收服務(wù)器的修改命令,對(duì)節(jié)點(diǎn)屬性進(jìn)行修改和反饋。
(1)網(wǎng)絡(luò)通信模塊。為完成PC機(jī)軟件端對(duì)整個(gè)ZigBee網(wǎng)絡(luò)進(jìn)行監(jiān)聽,ZigBee測(cè)試節(jié)點(diǎn)采用TCP/IP協(xié)議的Socket編程與服務(wù)器端建立連接,使用了IO完成端口(Completion Port)網(wǎng)絡(luò)通信模型。實(shí)現(xiàn)TCP/IP協(xié)議通信所采用的臨時(shí)端口號(hào)為10012。
(2)數(shù)據(jù)處理模塊。與服務(wù)器端建立連接后,采用函數(shù)inet_ntoa()將一個(gè)32位數(shù)字表示的IP地址轉(zhuǎn)換成點(diǎn)分十進(jìn)制IP地址字符串,存入名為IPAddressForTreeCtrl的Vector全局容器中,以方便測(cè)試過程中更好地對(duì)IP地址查看和使用。當(dāng)各個(gè)ZigBee節(jié)點(diǎn)的各層屬性數(shù)據(jù)通過以太網(wǎng)傳送到數(shù)據(jù)中心之后,數(shù)據(jù)中心的程序動(dòng)態(tài)新建一個(gè)CNode類對(duì)象,并將接收到的數(shù)據(jù)存入Vector容器中,以便以后對(duì)數(shù)據(jù)進(jìn)行分析處理,將處理后的數(shù)據(jù)實(shí)時(shí)顯示在軟件界面中。
(3)數(shù)據(jù)顯示模塊。數(shù)據(jù)顯示模塊一方面顯示節(jié)點(diǎn)網(wǎng)絡(luò)IP地址,另一方面顯示節(jié)點(diǎn)各層的屬性值。節(jié)點(diǎn)網(wǎng)絡(luò)IP地址顯示在界面中的網(wǎng)內(nèi)節(jié)點(diǎn)列表欄中,是通過PC軟件端對(duì)節(jié)點(diǎn)發(fā)送來的數(shù)據(jù)幀進(jìn)行解析實(shí)現(xiàn)的,通過解析后可以得知各節(jié)點(diǎn)分別對(duì)應(yīng)的三種設(shè)備類型:協(xié)調(diào)器節(jié)點(diǎn)、路由器節(jié)點(diǎn)和終端設(shè)備節(jié)點(diǎn),然后分別顯示在樹控件對(duì)應(yīng)的根結(jié)點(diǎn)下。
經(jīng)過處理后的各節(jié)點(diǎn)的屬性數(shù)據(jù)全部顯示在界面中間部分的Tab控件中,通過解析數(shù)據(jù)幀,將數(shù)據(jù)分別顯示在基本屬性、APS層屬性、NWK層屬性、MAC層屬性和PHY層屬性五個(gè)子頁(yè)面中。每個(gè)子界面中包括各層中的一些主要屬性的屬性名、獲取的屬性值以及一個(gè)確定按鈕,屬性值的獲取采用實(shí)時(shí)更新。
1.3 數(shù)據(jù)分析與驗(yàn)證模塊
該模塊是通過對(duì)數(shù)據(jù)顯示模塊中的一些不符合ZigBee協(xié)議標(biāo)準(zhǔn)的屬性參數(shù)進(jìn)行修改,向節(jié)點(diǎn)發(fā)送修改數(shù)據(jù)包,通過接收節(jié)點(diǎn)的修改反饋,來完成驗(yàn)證工作,檢驗(yàn)一個(gè)ZigBee測(cè)試節(jié)點(diǎn)能否適應(yīng)所在的符合ZigBee協(xié)議標(biāo)準(zhǔn)的ZigBee網(wǎng)絡(luò)。
2 測(cè)試方法
目前,協(xié)議測(cè)試一般包含一致性測(cè)試(Conformance Testing)、互操作性測(cè)試(Interoperability Testing)以及性能測(cè)試(Performance Testing)[2]。一致性測(cè)試是檢測(cè)協(xié)議實(shí)現(xiàn)和協(xié)議描述的一致與否,互操作性測(cè)試檢測(cè)一個(gè)協(xié)議規(guī)范的不同實(shí)現(xiàn)之間的互通性和互操作性,性能測(cè)試是檢測(cè)一個(gè)協(xié)議的實(shí)現(xiàn)的性能是否滿足要求,包括數(shù)據(jù)傳輸速率、吞吐率、響應(yīng)時(shí)間等指標(biāo)。一致性測(cè)試是其他測(cè)試的基礎(chǔ)。
協(xié)議測(cè)試的目的就是保證協(xié)議棧軟件對(duì)協(xié)議標(biāo)準(zhǔn)的正確實(shí)現(xiàn)以及符合協(xié)議的不同廠商的設(shè)備能夠正常通信[5]。
該平臺(tái)選用一致性測(cè)試來完成ZigBee測(cè)試節(jié)點(diǎn)測(cè)試工作。測(cè)試步驟如下:
(1)搭建一個(gè)符合ZigBee協(xié)議標(biāo)準(zhǔn)的ZigBee網(wǎng)絡(luò),采用有線的方式接入PC機(jī)遠(yuǎn)程控制端所在的以太網(wǎng)中,如下圖5所示。
(2)在Windows的平臺(tái)下,借助于Visual Studio 2010開發(fā)工具基于VC++完成PC機(jī)遠(yuǎn)程控制端的軟件設(shè)計(jì),采用IOCP(IO完成端口)技術(shù)實(shí)現(xiàn)ZigBee網(wǎng)絡(luò)中的節(jié)點(diǎn)與服務(wù)器通信[6],管理測(cè)試過程;
(3)當(dāng)ZigBee測(cè)試節(jié)點(diǎn)加入自組的ZigBee網(wǎng)絡(luò)時(shí),采用有線的方式連入以太網(wǎng)中,完成與PC機(jī)遠(yuǎn)程控制端的通信,依照協(xié)議定義的數(shù)據(jù)格式開始向PC機(jī)端發(fā)送數(shù)據(jù)包;PC機(jī)端接收到數(shù)據(jù)包后,依照協(xié)議解析數(shù)據(jù)包,將解析出來節(jié)點(diǎn)各層屬性參數(shù),顯示在PC機(jī)控制端的界面中,觀察節(jié)點(diǎn)的屬性參數(shù)是否滿足ZigBee協(xié)議標(biāo)準(zhǔn)參數(shù)指標(biāo),來分析測(cè)試結(jié)果;
(4)參照Z(yǔ)igBee協(xié)議標(biāo)準(zhǔn)參數(shù)指標(biāo),對(duì)測(cè)試節(jié)點(diǎn)中不符合ZigBee協(xié)議標(biāo)準(zhǔn)的屬性參數(shù)進(jìn)行修改,觀察測(cè)試節(jié)點(diǎn)屬性參數(shù)的修改狀況,通過對(duì)測(cè)試節(jié)點(diǎn)屬性參數(shù)的修改,確認(rèn)該測(cè)試節(jié)點(diǎn)能否適應(yīng)該ZigBee網(wǎng)絡(luò),來分析測(cè)試結(jié)果。
預(yù)測(cè)結(jié)果:軟件控制端提取各層屬性數(shù)據(jù),顯示在界面上,查看參數(shù)是否滿足各個(gè)屬性指標(biāo)。若滿足該屬性指標(biāo),則該節(jié)點(diǎn)符合ZigBee協(xié)議標(biāo)準(zhǔn);若不滿足該參數(shù)指標(biāo),則對(duì)該節(jié)點(diǎn)屬性值進(jìn)行修改測(cè)試,參照Z(yǔ)igBee協(xié)議標(biāo)準(zhǔn)參數(shù)指標(biāo),對(duì)ZigBee節(jié)點(diǎn)屬性值進(jìn)行修改,若修改成功,節(jié)點(diǎn)還能適應(yīng)該ZigBee網(wǎng)絡(luò),在網(wǎng)絡(luò)中正常運(yùn)行,則該節(jié)點(diǎn)符合ZigBee協(xié)議標(biāo)準(zhǔn);若修改失敗,則該節(jié)點(diǎn)不符合ZigBee協(xié)議標(biāo)準(zhǔn)。
3 結(jié)束語(yǔ)
ZigBee 技術(shù)以其低功耗、低成本、低復(fù)雜度、低速率的特點(diǎn),在物聯(lián)網(wǎng)發(fā)展中得到了廣泛的應(yīng)用,比如,在智能家居、樓宇自動(dòng)化、工業(yè)監(jiān)控領(lǐng)域具備都有著廣闊的市場(chǎng)[7]。致使以ZigBee技術(shù)為基礎(chǔ)的無線傳感網(wǎng)的研究,在國(guó)內(nèi)外的學(xué)術(shù)界以及產(chǎn)業(yè)界都開始蓬勃的發(fā)展。這意味著一個(gè)ZigBee測(cè)試認(rèn)證對(duì)其相關(guān)產(chǎn)品而言至關(guān)重要。
參考文獻(xiàn):
[1]凌志浩,周怡颋,鄭麗國(guó).ZigBee無線通信技術(shù)及其應(yīng)用研究[J].華東理工大學(xué)學(xué)報(bào),2006(07):801-805.
[2]卓蘭.ZigBee 技術(shù)及測(cè)試認(rèn)證綜述.中國(guó)電子技術(shù)標(biāo)準(zhǔn)化研究所,2012.
[3]江華麗,蔡暑.基于ATmega128L的ZigBee節(jié)點(diǎn)硬件設(shè)計(jì)與實(shí)現(xiàn)[J].電子測(cè)量技術(shù),2011(4):33-35.DOI:10.3969/j.issn.1002-7300.2011.04.010.
[4]孫鑫.VC++深入詳解[M].北京:電子工業(yè)出版社,2006.
[5]劉寶鍾,徐欣.ZigBee協(xié)議測(cè)試平臺(tái)建設(shè)分析,2012.
[6]汪曉平.Visual C++網(wǎng)絡(luò)通信協(xié)議分析與應(yīng)用實(shí)現(xiàn)[M].北京:人民郵電出版社,2003.
[7]秦霆鎬,豆曉強(qiáng),黃文彬.ZigBee技術(shù)在無線傳感器網(wǎng)絡(luò)中的應(yīng)用[J].儀表技術(shù),2007.
作者簡(jiǎn)介:申二星(1988-),男,河南焦作人,碩士研究生,主要研究方向?yàn)槲锫?lián)網(wǎng)技術(shù);李祥攀(1985-),男,山東菏澤人,碩士研究生;許期長(zhǎng)(1989-),男,重慶梁平人,碩士研究生,主要研究方向?yàn)槲锫?lián)網(wǎng)技術(shù)。
作者單位:重慶郵電大學(xué) 寬帶泛在接入技術(shù)研究所,重慶 400065