ZigBee無線傳感器網(wǎng)絡(luò)設(shè)計(jì)實(shí)戰(zhàn)第七章_第1頁
ZigBee無線傳感器網(wǎng)絡(luò)設(shè)計(jì)實(shí)戰(zhàn)第七章_第2頁
ZigBee無線傳感器網(wǎng)絡(luò)設(shè)計(jì)實(shí)戰(zhàn)第七章_第3頁
ZigBee無線傳感器網(wǎng)絡(luò)設(shè)計(jì)實(shí)戰(zhàn)第七章_第4頁
ZigBee無線傳感器網(wǎng)絡(luò)設(shè)計(jì)實(shí)戰(zhàn)第七章_第5頁
已閱讀5頁,還剩66頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

ZigBee無線傳感器網(wǎng)絡(luò)設(shè)計(jì)實(shí)戰(zhàn)7PARTSEVENZigBee無線網(wǎng)絡(luò)管理CONTENT目錄3412實(shí)訓(xùn)7-1無線網(wǎng)絡(luò)通信實(shí)訓(xùn)1——廣播通信實(shí)訓(xùn)7-2無線網(wǎng)絡(luò)通信實(shí)訓(xùn)2——組播通信實(shí)訓(xùn)7-3無線網(wǎng)絡(luò)管理基礎(chǔ)實(shí)訓(xùn)實(shí)訓(xùn)7-4獲取無線網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)在ZigBee網(wǎng)絡(luò)中,進(jìn)行數(shù)據(jù)通信主要有3種方式,即:單播(Unicast)、廣播(Broadcast)和組播(Multicast)。實(shí)訓(xùn)簡介單播:網(wǎng)絡(luò)中兩個(gè)節(jié)點(diǎn)之間一對(duì)一的通信過程,如右圖所示。單播廣播:一個(gè)節(jié)點(diǎn)發(fā)送的數(shù)據(jù)包,網(wǎng)絡(luò)中所有的節(jié)點(diǎn)都能收到,如右圖所示。廣播組播:又稱多播。一個(gè)節(jié)點(diǎn)發(fā)送的數(shù)據(jù)包,只有和該節(jié)點(diǎn)屬于同一組的節(jié)點(diǎn)才能收到這個(gè)數(shù)據(jù)包,其他節(jié)點(diǎn)收不到,如右圖所示。組播實(shí)訓(xùn)目的1

掌握ZigBee無線通信模式的廣播通信。2

掌握廣播通信的配置。實(shí)訓(xùn)內(nèi)容本實(shí)訓(xùn)要使用多個(gè)ZigBee節(jié)點(diǎn),其中一個(gè)節(jié)點(diǎn)作為協(xié)調(diào)器,其他的節(jié)點(diǎn)可以是路由器或者終端節(jié)點(diǎn)。協(xié)調(diào)器建網(wǎng)以后,以廣播的方式發(fā)送字符串“XXGCXY”,路由器或者終端節(jié)點(diǎn)加入網(wǎng)絡(luò)接到廣播數(shù)據(jù)后判斷是否是該字符串。如果是,則點(diǎn)亮LED燈,同時(shí)發(fā)送字符串給協(xié)調(diào)器。如果是路由器,就發(fā)送ROU+第幾個(gè)節(jié)點(diǎn);如果是終端節(jié)點(diǎn),就發(fā)送END+第幾個(gè)節(jié)點(diǎn)。協(xié)調(diào)器收到數(shù)據(jù)以后通過串口發(fā)送給PC端。廣播通信實(shí)訓(xùn)的協(xié)調(diào)器、路由器、終端節(jié)點(diǎn)流程圖分別如下方左中右三個(gè)圖所示。廣播通信協(xié)調(diào)器流程圖廣播通信路由器流程圖廣播通信終端節(jié)點(diǎn)流程圖知識(shí)鏈接1ZigBee協(xié)議棧通信方式的實(shí)現(xiàn)如果我們想通過協(xié)議棧發(fā)送數(shù)據(jù),只需要調(diào)用AF_DataRequest函數(shù)即可,通過設(shè)置不同的參數(shù)可選擇不同的發(fā)送方式。AF_DataRequest函數(shù)的原型如下:AF_DataRequest(afAddrType_t*dstAddr,endPointDesc_t*srcEP,uint16cID,uint16len,uint8*buf,uint8*transID,uint8options,uint8radius)afAddrType_t結(jié)構(gòu)體的定義代碼部分參照書中描述。這個(gè)類型是一個(gè)枚舉類型:當(dāng)addrMode=Addr16Bit時(shí),對(duì)應(yīng)的就是單播方式發(fā)送數(shù)據(jù)。當(dāng)addrMode=AddrBroadcast時(shí),對(duì)應(yīng)的就是廣播方式發(fā)送數(shù)據(jù)。當(dāng)addrMode=AddrGroup時(shí),對(duì)應(yīng)的就是組播方式發(fā)送數(shù)據(jù)。上面定義的Addr16Bit、AddrBroadcast和AddrGroup都是一個(gè)常數(shù),在ZigBee協(xié)議棧中定義如下:enum{AddrNotPresent=0,AddrGroup=1,Addr16Bit=2,Addr64Bit=3,AddrBroadcast=15};選擇哪種數(shù)據(jù)發(fā)送方式,只需要設(shè)置相應(yīng)的參數(shù)即可。2廣播通信時(shí)的網(wǎng)絡(luò)地址選擇在使用廣播通信時(shí),目的節(jié)點(diǎn)的網(wǎng)絡(luò)地址有3種選擇,即:0xFFFF、0xFFFD、0xFFFC。表示發(fā)送的數(shù)據(jù)將在全網(wǎng)廣播,所有的節(jié)點(diǎn)都能收到,包括處于休眠狀態(tài)的節(jié)點(diǎn)。0xFFFF表示發(fā)送的數(shù)據(jù)只有未休眠的節(jié)點(diǎn)可以收到,處于休眠狀態(tài)的節(jié)點(diǎn)接收不到廣播。0xFFFD表示數(shù)據(jù)只發(fā)送給網(wǎng)絡(luò)中所有的路由器節(jié)點(diǎn),網(wǎng)絡(luò)中的終端節(jié)點(diǎn)接收不到廣播。0xFFFC實(shí)施步驟程序代碼是在協(xié)議棧GenericApp基礎(chǔ)上完成的,刪除了部分沒有用到的代碼,Coordinator.h文件和第4章的代碼一樣,直接復(fù)制過來即可。01廣播通信實(shí)訓(xùn)協(xié)調(diào)器編程。Coordinator.c文件源代碼部分參照書中描述。02在編譯代碼時(shí),如果是路由器,則在工作空間下拉框選擇“RouterEB”,如果是終端節(jié)點(diǎn),則在工作空間下拉框選擇“EndDeviceEB”即可,所以在此只編寫一個(gè),Enddevice.c文件源代碼部分參照書中描述。成果檢驗(yàn)將程序下載到CC2530開發(fā)板,打開串口調(diào)試工具,設(shè)置波特率為38400,打開協(xié)調(diào)器、路由器和終端節(jié)點(diǎn)電源,待協(xié)調(diào)器建網(wǎng)完成后,可以看到如下的實(shí)訓(xùn)現(xiàn)象:(1)路由器和終端節(jié)點(diǎn)的LED燈每隔5秒亮滅切換一次。(2)串口調(diào)試工具上顯示不同節(jié)點(diǎn)發(fā)過來的數(shù)據(jù),效果如右圖所示。廣播通信效果圖自我考核如果通信方式為組播通信,代碼如何修改可以實(shí)現(xiàn)組播通信?CONTENT目錄3412實(shí)訓(xùn)7-1無線網(wǎng)絡(luò)通信實(shí)訓(xùn)1——廣播通信實(shí)訓(xùn)7-2無線網(wǎng)絡(luò)通信實(shí)訓(xùn)2——組播通信實(shí)訓(xùn)7-3無線網(wǎng)絡(luò)管理基礎(chǔ)實(shí)訓(xùn)實(shí)訓(xùn)7-4獲取無線網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)本實(shí)訓(xùn)將介紹組播通信,組播通信是一個(gè)節(jié)點(diǎn)發(fā)送數(shù)據(jù)包,只有和這個(gè)節(jié)點(diǎn)屬于同一組的節(jié)點(diǎn)才能收到這個(gè)數(shù)據(jù)包,其他節(jié)點(diǎn)收不到??梢姡c廣播通信相比,組播通信就是多了個(gè)分組。組播通信的關(guān)鍵就是進(jìn)行分組。實(shí)訓(xùn)簡介實(shí)訓(xùn)目的1

掌握ZigBee無線通信模式的組播通信。2

掌握組播通信的設(shè)置及其與廣播通信的區(qū)別。實(shí)訓(xùn)內(nèi)容本實(shí)訓(xùn)過程是:協(xié)調(diào)器周期性地以組播的形式向路由器節(jié)點(diǎn)發(fā)送數(shù)據(jù)。

如果該路由器節(jié)點(diǎn)與協(xié)調(diào)器屬于同一組,則路由器節(jié)點(diǎn)可以收到數(shù)據(jù),并點(diǎn)亮LED燈,同時(shí)該節(jié)點(diǎn)向協(xié)調(diào)器發(fā)送字符串“ROU+編號(hào)”;如果該路由器節(jié)點(diǎn)與協(xié)調(diào)器不屬于同一組,則不做任何動(dòng)作。協(xié)調(diào)器收到路由器節(jié)點(diǎn)發(fā)回的數(shù)據(jù)后,通過串口輸出到PC端,用戶通過串口調(diào)試工具查看該信息。組播通信實(shí)訓(xùn)原理圖如右圖所示。ZigBee網(wǎng)絡(luò)協(xié)調(diào)器PC機(jī)RS232路由器1路由器2路由器3路由器4組播通信實(shí)訓(xùn)原理圖組播通信實(shí)訓(xùn)的協(xié)調(diào)器流程圖如右側(cè)左圖所示。組播通信實(shí)訓(xùn)的路由器流程圖如右側(cè)右圖所示。組播通信協(xié)調(diào)器流程圖組播通信路由器流程圖知識(shí)鏈接

組播的表示方式使用組播的方式發(fā)送數(shù)據(jù)時(shí),需要節(jié)點(diǎn)加入到特定的組中。協(xié)議棧中已經(jīng)為我們定義好了組的表示方式,在aps_groups.h文件中定義了aps_Group_t結(jié)構(gòu)體,具體如下:typedefstruct{uint16ID; //Uniquetothistableuint8name[APS_GROUP_NAME_LEN]; //Humanreadablenameofgroup}aps_Group_t;該結(jié)構(gòu)體包含了兩個(gè)變量:ID和name。其中,ID變量存儲(chǔ)每個(gè)組的ID,每個(gè)組有一個(gè)特定的ID號(hào),在同一網(wǎng)絡(luò)中該ID是唯一的;name變量存儲(chǔ)組的名稱,該組名在同一網(wǎng)絡(luò)中不是唯一的。name變量是一個(gè)無符號(hào)的int數(shù)組,name數(shù)組的第一個(gè)元素存放的是組名的長度,從第二個(gè)元素開始存放的才是組名稱的字符串。定義好組以后,如何把一個(gè)節(jié)點(diǎn)加入到該組中呢?我們可以使用協(xié)議棧為我們定義的aps_AddGroup(uint8endpoint,aps_Group_t*group)函數(shù),在調(diào)用該函數(shù)之前,我們需要為組賦初值,方法如下。aps_Group_tGenericApp_Group; //定義一個(gè)aps_Group_t類型的變量GenericApp_Group.ID=0x0001; //將組ID初始化為0x0001GenericApp_G[0]=6; //將組名的長度寫入name數(shù)組的第一個(gè)元素處osal_memcpy(&(GenericApp_G[1]),"Group1",6);//使用osal_memcpy()函數(shù)將組名“Group1”拷貝到name數(shù)組中,從第二個(gè)元素處開始存放組名然后就可以調(diào)用aps_AddGroup()函數(shù)將該端口加到Group1組中。aps_AddGroup(GENERICAPP_ENDPOINT,&GenericApp_Group);實(shí)施步驟程序代碼是在協(xié)議棧GenericApp基礎(chǔ)上完成的,刪除了部分沒有用到的代碼,Coordinator.h文件和實(shí)訓(xùn)6-1的代碼一樣,直接復(fù)制過來即可。01組播通信實(shí)訓(xùn)協(xié)調(diào)器編程。Coordinator.c文件源代碼部分參照書中描述。02組播通信實(shí)訓(xùn)路由器編程。Enddevice.c文件源代碼部分參照書中描述。成果檢驗(yàn)將程序下載到CC2530開發(fā)板,打開串口調(diào)試工具,設(shè)置波特率為38400,打開協(xié)調(diào)器和路由器電源,待協(xié)調(diào)器建網(wǎng)完成后,可以看到如下實(shí)訓(xùn)現(xiàn)象:(1)串口調(diào)試工具顯示ROU2和ROU4,效果如右圖所示。(2)其中,兩個(gè)路由器節(jié)點(diǎn)LED亮,兩個(gè)路由器節(jié)點(diǎn)沒有現(xiàn)象。組播通信效果圖自我考核加入該組后,為什么終端節(jié)點(diǎn)接收不到組播發(fā)送的數(shù)據(jù)?02把終端節(jié)點(diǎn)加入該組中,觀察實(shí)訓(xùn)現(xiàn)象。01CONTENT目錄3412實(shí)訓(xùn)7-1無線網(wǎng)絡(luò)通信實(shí)訓(xùn)1——廣播通信實(shí)訓(xùn)7-2無線網(wǎng)絡(luò)通信實(shí)訓(xùn)2——組播通信實(shí)訓(xùn)7-3無線網(wǎng)絡(luò)管理基礎(chǔ)實(shí)訓(xùn)實(shí)訓(xùn)7-4獲取無線網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)實(shí)訓(xùn)簡介本實(shí)訓(xùn)將在基于一個(gè)協(xié)調(diào)器和一個(gè)路由器的網(wǎng)絡(luò)下,對(duì)網(wǎng)絡(luò)地址和IEEE地址進(jìn)行分析管理,進(jìn)一步深入認(rèn)識(shí)多個(gè)設(shè)備網(wǎng)絡(luò)。實(shí)訓(xùn)目的1

了解節(jié)點(diǎn)的網(wǎng)絡(luò)地址和MAC地址。2

了解查詢父節(jié)點(diǎn)網(wǎng)絡(luò)地址和MAC地址的方法。為了演示方便,本實(shí)訓(xùn)將使用兩個(gè)節(jié)點(diǎn),其中一個(gè)作為協(xié)調(diào)器,另一個(gè)作為路由器。協(xié)調(diào)器建立好網(wǎng)絡(luò)以后,路由器加入到該網(wǎng)絡(luò)。對(duì)于路由器而言,協(xié)調(diào)器就是路由器的父節(jié)點(diǎn),可以通過在路由器中調(diào)用獲取父節(jié)點(diǎn)的函數(shù)來完成本實(shí)訓(xùn),然后通過串口把獲取的數(shù)據(jù)傳輸?shù)絇C端,通過串口調(diào)試工具進(jìn)行查看。實(shí)訓(xùn)內(nèi)容無線網(wǎng)絡(luò)管理基礎(chǔ)實(shí)訓(xùn)原理圖如下圖所示。ZigBee網(wǎng)絡(luò)路由器PC機(jī)RS232協(xié)調(diào)器網(wǎng)絡(luò)管理基礎(chǔ)實(shí)訓(xùn)原理圖無線網(wǎng)絡(luò)管理基礎(chǔ)實(shí)訓(xùn)的協(xié)調(diào)器流程圖如下方左圖所示。無線網(wǎng)絡(luò)管理基礎(chǔ)實(shí)訓(xùn)的路由器流程圖如下方右圖所示。協(xié)調(diào)器流程圖路由器流程圖知識(shí)鏈接1ZigBee網(wǎng)絡(luò)中的設(shè)備地址在ZigBee無線網(wǎng)絡(luò)中,主要有協(xié)調(diào)器、路由器和終端節(jié)點(diǎn)這3種類型的設(shè)備,設(shè)備類型的選擇是在編譯時(shí)根據(jù)不同的編譯選項(xiàng)來確定的。設(shè)備類型在ZigBee協(xié)議棧中通過參數(shù)來指定。1)協(xié)調(diào)器(Coordinator)協(xié)調(diào)器負(fù)責(zé)建立網(wǎng)絡(luò),系統(tǒng)上電后,協(xié)調(diào)器會(huì)自動(dòng)選擇一個(gè)信道,然后選擇一個(gè)網(wǎng)絡(luò)號(hào)建立網(wǎng)絡(luò)。協(xié)調(diào)器主要是在網(wǎng)絡(luò)建立、網(wǎng)絡(luò)配置方面起作用,一旦網(wǎng)絡(luò)建立了,協(xié)調(diào)器就與路由器的功能相同了。2)路由器(Router)在ZigBee網(wǎng)絡(luò)中,路由器主要有3個(gè)功能:①允許節(jié)點(diǎn)加入網(wǎng)絡(luò);②進(jìn)行數(shù)據(jù)的路由;③輔助子節(jié)點(diǎn)通信。路由器3)終端節(jié)點(diǎn)(End-device)終端節(jié)點(diǎn)只需要加入已建立的網(wǎng)絡(luò)即可,它不具有網(wǎng)絡(luò)維護(hù)功能。終端節(jié)點(diǎn)不需要持續(xù)供電,可以選擇周期性的休眠,ZigBee無線通信的低功耗僅僅是對(duì)終端節(jié)點(diǎn)而言的。2ZigBee網(wǎng)絡(luò)中設(shè)備地址的標(biāo)識(shí)在ZigBee無線網(wǎng)絡(luò)中進(jìn)行通信,需要標(biāo)識(shí)每個(gè)設(shè)備的地址。設(shè)備地址有以下兩種。

1)64位的IEEE地址(64-bitIEEEAddress)IEEE地址是64位的,并且是全球唯一的,每個(gè)CC2530單片機(jī)的IEEE地址在出廠時(shí)就已經(jīng)定義好了。64位的IEEE地址又被稱為MAC地址(MACAddress)或擴(kuò)展地址(ExtendedAddress)。

2)16位的網(wǎng)絡(luò)地址(16-bitNetworkAddress)網(wǎng)絡(luò)地址是16位的,該地址是在設(shè)備加入網(wǎng)絡(luò)時(shí),按照一定的算法計(jì)算得到并分配給加入網(wǎng)絡(luò)的設(shè)備的。網(wǎng)絡(luò)地址在某個(gè)網(wǎng)絡(luò)中是唯一的。16位的網(wǎng)絡(luò)地址主要有兩個(gè)功能:在網(wǎng)絡(luò)中標(biāo)識(shí)不同的設(shè)備;1在網(wǎng)絡(luò)數(shù)據(jù)傳輸時(shí)指定目的地址和源地址。216位的網(wǎng)絡(luò)地址又被稱為邏輯地址(LogicalAddress)或短地址(ShortAddress)。對(duì)于無線通信而言,數(shù)據(jù)長度越長,發(fā)送這些數(shù)據(jù)所需要的功率就越大,同時(shí),由于每個(gè)數(shù)據(jù)包的最大長度是確定的,如果節(jié)點(diǎn)地址占據(jù)的位數(shù)太多,每個(gè)數(shù)據(jù)包所攜帶的有效數(shù)據(jù)必將減少,因此綜合上述考慮,一般節(jié)點(diǎn)成功加入網(wǎng)絡(luò)后,數(shù)據(jù)通信過程中使用節(jié)點(diǎn)的網(wǎng)絡(luò)地址作為源地址。3ZigBee無線網(wǎng)絡(luò)中的地址分配機(jī)制網(wǎng)絡(luò)地址是16位的,因此最多可以分配給65536個(gè)節(jié)點(diǎn),地址的分配取決于整個(gè)網(wǎng)絡(luò)的架構(gòu),整個(gè)網(wǎng)絡(luò)的架構(gòu)由以下3個(gè)值決定:網(wǎng)絡(luò)的最大深度(

);每個(gè)父節(jié)點(diǎn)擁有的子節(jié)點(diǎn)最大數(shù)目(

);每個(gè)父節(jié)點(diǎn)擁有的子節(jié)點(diǎn)中路由器的最大數(shù)目(

)。根據(jù)下面的公式可以計(jì)算位于深度d的父節(jié)點(diǎn)所分配的路由器子設(shè)備之間的地址間隔

,即于是得到父節(jié)點(diǎn)所分配的第n個(gè)路由器子設(shè)備的網(wǎng)絡(luò)地址為:父節(jié)點(diǎn)分配的第1個(gè)路由器地址

父設(shè)備地址

;父節(jié)點(diǎn)分配的第2個(gè)路由器地址

父設(shè)備地址

;父節(jié)點(diǎn)分配的第3個(gè)路由器地址

父設(shè)備地址

;……以此運(yùn)算規(guī)則可以很容易地計(jì)算出網(wǎng)絡(luò)中各個(gè)設(shè)備的節(jié)點(diǎn)地址。父節(jié)點(diǎn)

所分配的第n個(gè)終端節(jié)點(diǎn)的網(wǎng)絡(luò)地址

計(jì)算公式如下:下面通過一個(gè)具體例子來講解ZigBee無線網(wǎng)絡(luò)中節(jié)點(diǎn)地址的計(jì)算過程。具體案例講解及過程參照書中描述。4查詢本節(jié)點(diǎn)有關(guān)的設(shè)備地址的函數(shù)ZigBee協(xié)議棧中提供的網(wǎng)絡(luò)管理函數(shù)定義如下:uint16NLME_GetShortAddr(void)該函數(shù)返回本節(jié)點(diǎn)的16位網(wǎng)絡(luò)地址。byte*NLME_GetExtAddr(void)該函數(shù)返回指向本節(jié)點(diǎn)的64位擴(kuò)展地址(MAC地址)的指針。uint16NLME_GetCoordShortAddr(void)該函數(shù)返回本節(jié)點(diǎn)的父節(jié)點(diǎn)的16位網(wǎng)絡(luò)地址(此函數(shù)名中有Coord并不代表父節(jié)點(diǎn)只能是協(xié)調(diào)器,也可能是路由器)。voidNLME_GetCoordExtAddr(byte*buf)該函數(shù)返回指向存放本節(jié)點(diǎn)的父節(jié)點(diǎn)的64位擴(kuò)展地址(MAC地址)的緩存區(qū)的指針。實(shí)施步驟程序代碼是在協(xié)議棧GenericApp基礎(chǔ)上完成的,根據(jù)本實(shí)訓(xùn)的流程圖,刪除了部分沒有用到的代碼。01無線網(wǎng)絡(luò)管理基礎(chǔ)實(shí)訓(xùn)協(xié)調(diào)器編程。Coordinator.c文件源代碼部分參照書中描述。02無線網(wǎng)絡(luò)管理基礎(chǔ)實(shí)訓(xùn)路由器編程。Enddevice.c文件源代碼部分參照書中描述。成果檢驗(yàn)將程序下載到CC2530開發(fā)板,打開串口調(diào)試工具,設(shè)置波特率為38400。然后打開協(xié)調(diào)器和路由器電源,待協(xié)調(diào)器建網(wǎng)完成后,可以看到如下實(shí)訓(xùn)現(xiàn)象:串口已經(jīng)輸出了本節(jié)點(diǎn)和父節(jié)點(diǎn)的網(wǎng)絡(luò)地址和MAC地址信息,效果如右圖所示。無線網(wǎng)絡(luò)管理基礎(chǔ)實(shí)訓(xùn)效果自我考核如果再增加一個(gè)路由器,那么新增的這個(gè)路由器的地址會(huì)是什么?請(qǐng)通過實(shí)訓(xùn)驗(yàn)證。02路由器的地址為什么是0x0001?01CONTENT目錄3412實(shí)訓(xùn)7-1無線網(wǎng)絡(luò)通信實(shí)訓(xùn)1——廣播通信實(shí)訓(xùn)7-2無線網(wǎng)絡(luò)通信實(shí)訓(xùn)2——組播通信實(shí)訓(xùn)7-3無線網(wǎng)絡(luò)管理基礎(chǔ)實(shí)訓(xùn)實(shí)訓(xùn)7-4獲取無線網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)實(shí)訓(xùn)簡介在實(shí)訓(xùn)7-3中,我們學(xué)習(xí)了本節(jié)點(diǎn)和父節(jié)點(diǎn)網(wǎng)絡(luò)地址、MAC地址的獲取方法,只要知道了每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的網(wǎng)絡(luò)地址及父節(jié)點(diǎn)的網(wǎng)絡(luò)地址,就可以獲得整個(gè)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。實(shí)訓(xùn)目的1

進(jìn)一步掌握網(wǎng)絡(luò)地址的獲取方法。2

應(yīng)用上一個(gè)實(shí)訓(xùn)所學(xué)的知識(shí)獲取ZigBee無線網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。實(shí)訓(xùn)內(nèi)容協(xié)調(diào)器和節(jié)點(diǎn)建立好網(wǎng)絡(luò)以后,節(jié)點(diǎn)將自身的網(wǎng)絡(luò)地址以及父節(jié)點(diǎn)的網(wǎng)絡(luò)地址發(fā)送給協(xié)調(diào)器,通過串口將命令發(fā)送給協(xié)調(diào)器,協(xié)調(diào)器接收到串口發(fā)送的命令以后,將收到的各個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò)地址以及父節(jié)點(diǎn)的網(wǎng)絡(luò)地址發(fā)送到PC機(jī),通過接收到的數(shù)據(jù)就可以得到網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。獲取無線網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)實(shí)訓(xùn)原理圖如下圖所示。協(xié)調(diào)器PC機(jī)

ZigBee無線網(wǎng)絡(luò)終端節(jié)點(diǎn)1路由器2終端節(jié)點(diǎn)2路由器1RS232網(wǎng)絡(luò)拓?fù)鋵?shí)訓(xùn)原理圖網(wǎng)絡(luò)搭建好以后,各個(gè)節(jié)點(diǎn)需要將自身設(shè)備類型、網(wǎng)絡(luò)地址、父節(jié)點(diǎn)網(wǎng)絡(luò)地址發(fā)送給協(xié)調(diào)器,因此,我們需要設(shè)計(jì)一個(gè)數(shù)據(jù)結(jié)構(gòu)來表示這些信息,本實(shí)訓(xùn)中設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)如下表所示。結(jié)構(gòu)設(shè)備類型節(jié)點(diǎn)網(wǎng)絡(luò)地址父節(jié)點(diǎn)網(wǎng)絡(luò)地址長度(字節(jié))444數(shù)據(jù)結(jié)構(gòu)設(shè)備類型一共有3種,即協(xié)調(diào)器、路由器和終端節(jié)點(diǎn)。在本實(shí)訓(xùn)中,路由器和終端節(jié)點(diǎn)需要將自身的設(shè)備類型發(fā)送給協(xié)調(diào)器。為了標(biāo)識(shí)數(shù)據(jù)是哪個(gè)節(jié)點(diǎn)發(fā)送的,我們定義:如果設(shè)備類型是路由器,則發(fā)送字段“ROU*”;如果設(shè)備類型是終端節(jié)點(diǎn),則發(fā)送字段“END*”,其中“*”表示是第幾個(gè)設(shè)備。當(dāng)協(xié)調(diào)器端收到PC機(jī)通過串口給協(xié)調(diào)器發(fā)送的接收命令“receive”后,協(xié)調(diào)器會(huì)把獲取到的節(jié)點(diǎn)數(shù)據(jù)通過串口發(fā)送給PC機(jī),并通過串口調(diào)試工具顯示。獲取無線網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)實(shí)訓(xùn)的協(xié)調(diào)器流程圖如右側(cè)左圖所示。獲取無線網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)實(shí)訓(xùn)的路由器和終端節(jié)點(diǎn)流程圖如右側(cè)右圖所示。網(wǎng)絡(luò)拓?fù)鋵?shí)訓(xùn)協(xié)調(diào)器流程圖網(wǎng)絡(luò)拓?fù)鋵?shí)訓(xùn)路由器和終端節(jié)點(diǎn)流程圖知識(shí)鏈接

自定義數(shù)據(jù)結(jié)構(gòu)根據(jù)實(shí)訓(xùn)內(nèi)容可知,我們需要定義一個(gè)結(jié)構(gòu)體變量來存儲(chǔ)協(xié)調(diào)器獲取的數(shù)據(jù)。該結(jié)構(gòu)體定義如下:typedefstructWLDZBUF{uint8type[4];uint8myNWK[4];uint8pNWK[4];}WLDZ;由于協(xié)調(diào)器、路由器和終端節(jié)點(diǎn)這3種設(shè)備都會(huì)用到這個(gè)結(jié)構(gòu)體,為了減少代碼的重復(fù)定義,故把該結(jié)構(gòu)體的定義放到這3種設(shè)備共同調(diào)用的Coordinator.h頭文件里,應(yīng)修改Coordinator.h文件為如右所示:實(shí)施步驟程序代碼是在協(xié)議棧GenericApp基礎(chǔ)上完成的,根據(jù)本實(shí)訓(xùn)的流程圖,刪除了部分沒有用到的代碼。01獲取無線網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)實(shí)訓(xùn)協(xié)調(diào)器編程。Coordinator.c文件源代碼部分參照書中描述。02獲取無線網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)實(shí)訓(xùn)路由器和終端節(jié)點(diǎn)的流程圖一樣,區(qū)別只有在數(shù)據(jù)發(fā)送時(shí)設(shè)備類型不同,發(fā)送的字符串不同。在編譯代碼時(shí),如果是路由器,則在工作空

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論