




已閱讀5頁,還剩8頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
8.4 ZigBee網絡多信道調度如果需要擴大ZigBee網絡規模,只要網絡PAN ID不同,在一個信道上建立多個PAN網絡的方式是可行的,但是,IEEE 802.15.4標準MAC層信道接入技術采用的是CSMA/CA機制,過多的節點勢必會造成嚴重的信道退避沖突。IEEE 802.15.4標準使用的2.4GHz頻段具有16個信道。因此,利用ZigBee多信道特性可以建立多個PAN網絡。根據多個網絡的負載程度,設置物理信道以選擇性加入網絡,實現網絡負載相對平衡;當由于某種原因與網絡長時間斷開連接后,節點能夠自動地切換信道加入另一個可用網絡,以增強網絡靈活性和可靠性。本節實驗主要講述節點利用協議棧網絡層自動切換信道和在應用層設置信道兩種方式。實驗目的與器材1)實驗目的u 深入理解Z-Stack節點入網過程以及信道概念。u 學會在Z-Stack中進行信道設置以及切換。u 理解并學會使用非易失性存儲器(NV)相關操作。u Z-Stack中使用標準C語言函數庫。2)實驗器材u 5個CC2530開發套件(2個協調器模塊,1個終端模塊,2個用于Packet Sniffer抓包)實驗原理與步驟1實驗原理1)網絡發現和節點信道自動切換協調器上電后,進行一系列的初始化設備,初始化網絡事件等過程后,請求建立形成一個新的網絡。當網絡建立成功后,就可以等待其他終端設備和路由器節點加入。終端設備在經過一系列的初始化過程后,首先要請求網絡層執行網絡掃描發現已經存在的網絡。然后,終端設備根據網絡發現返回的網絡號、信道號等信息,請求加入網絡。如果加入網絡失敗,節點初始化網絡繼續上述過程。終端設備加入網絡后,如果與網絡斷開后,節點會初始化網絡等待再次加入先前的網絡。此時,如果在另一個信道上存在一個網絡,終端設備可以選擇加入這個網絡,從而實現信道自動切換,保證節點不離開ZigBee網絡。網絡啟動與節點加入流程函數基本上都在Z-Stack ZDApp.c文件中。讀者可以在這個文件的關鍵函數處加入斷點,追蹤程序流程。下面主要介紹終端設備的入網過程和無法自動調頻原因。(1)設備初始化終端設備上電后,在ZDApp_Init中調用初始化設備函數:ZDOInitDevice( 0 );ZDOInitDevice函數主要完成初始化任務ID,網絡地址,網絡服務,初始化NV,安全等參數。ZDOInitDevice函數最后觸發初始化網絡操作: ZDApp_NetworkInit( extendedDelay );此函數用于啟動網絡加入過程,extendedDelay代表在網絡啟動前需等待的時間。函數中啟動網絡初始事件ZDO_NETWORK_INIT。osal_start_timerEx( ZDAppTaskID, ZDO_NETWORK_INIT, delay );ZDO層任務事件處理函數ZDApp_event_loop對網絡初始化事件進行處理,設置設備初始狀態為DEV_INIT。并啟動該設備 if ( events & ZDO_NETWORK_INIT ) devState = DEV_INIT; ZDO_StartDevice( (uint8)ZDO_Config_Node_Descriptor.LogicalType, devStartMode,DEFAULT_BEACON_ORDER,DEFAULT_SUPERFRAME_ORDER ); return (events ZDO_NETWORK_INIT); (2)網絡發現如果是協調器,程序將會調用NLME_NetworkFormationRequest函數請求建立網絡。如果是終端設備,程序會啟動網絡發現過程:在ZDO_StartDevice中,執行 if ( (startMode = MODE_JOIN)| (startMode = MODE_REJOIN) ) devState = DEV_NWK_DISC;#if defined( MANAGED_SCAN ) ZDOManagedScan_Next(); ret = NLME_NetworkDiscoveryRequest( managedScanChannelMask, BEACON_ORDER_15_MSEC ); #else ret = NLME_NetworkDiscoveryRequest( zgDefaultChannelList, zgDefaultStartingScanDuration ); #endif NLME_NetworkDiscoveryRequest()正是網絡發現過程中最為關鍵的函數,但是由于TI并沒有給出該函數的具體實現,所以對理解網絡發現的具體實現過程存在一定的困難。TI提供了ZDO_NetworkDiscoveryConfirmCB( )回調函數。該函數返回網絡發現的結果,包括網絡ID,網絡頻段等網絡重要信息。 在ZDO_NetworkDiscoveryConfirmCB( )中最后觸發函數: ZDApp_SendMsg(ZDAppTaskID, ZDO_NWK_DISC_CNF, sizeof(ZDO_NetworkDiscoveryCfm_t), (byte *)&msg );該函數向ZDAppTaskID任務投遞一個ZDO_NWK_DISC_CNF事件。(3)加入網絡在ZDApp_ProcessOSALMsg()函數中響應ZDO_NWK_DISC_CNF事件: case ZDO_NWK_DISC_CNF: if ( ZG_BUILD_JOINING_TYPE & ZG_DEVICE_JOINING_TYPE ) if ( devStartMode = MODE_JOIN ) devState = DEV_NWK_JOINING; ZDApp_NodeProfileSync(ZDO_NetworkDiscoveryCfm_t *)msgPtr); if ( NLME_JoinRequest(.) != ZSuccess ) ZDApp_NetworkInit( (uint16)(NWK_START_DELAY + (uint16)(osal_rand()& EXTENDED_JOINING_RANDOM_MASK) ); 其中網絡的加入通過NLME_JoinRequest( )函數實現,其參數logicalChannel就是加入網絡所在的頻段。如果成功加入網絡,節點將會分配到網絡地址和端點等信息,設為成功加入網絡狀態。如果該函數執行失敗,則調用初始化網絡函數ZDApp_NetworkInit( )重新尋找網絡。在ZDApp_NetworkInit( )函數中又會觸發ZDO_NETWORK_INIT事件,進入下一輪的網絡加入過程。(4)終端節點斷開網絡后,無法自動切換信道的原因終端節點與網絡斷開后,就會重新孤立掃描程序,由于先前沒有加入過網絡,通過孤立掃描程序加入網絡失敗。終端節點重啟網絡發現過程,具體過程已在上文中詳細闡述。當再次執行到網絡發現ZDO_NWK_DISC_CNF事件,而后在ZDApp_ProcessOSALMsg()函數中響應該事件。如果此時網絡沒有恢復,節點不再執行網絡加入過程,而是執行continueJoining代碼段,即執行以下程序:case ZDO_NWK_DISC_CNF:.if ( (ZDO_NetworkDiscoveryCfm_t *)msgPtr)-hdr.status = ZDO_SUCCESS) & (zdoDiscCounter NUM_DISC_ATTEMPTS) ) /如果指示網絡發現不成功或者成功次數不符合規定 else if ( continueJoining ) #if defined ( MANAGED_SCAN ) ZDApp_NetworkInit( MANAGEDSCAN_DELAY_BETWEEN_SCANS ); #else zdoDiscCounter+; ZDApp_NetworkInit( (uint16)(BEACON_REQUEST_DELAY + (uint16)(osal_rand()& BEACON_REQ_DELAY_MASK) ); #endif MANAGED_SCAN是編譯選項,允許信道掃描延遲。從以上程序可以看到,當節點與父節點斷開連接后,子節點會不斷的重復執行ZDApp_NetworkInit初始化網絡,試圖加入先前的網絡,直到與先前網絡重新建立連接。這就是終端節點無法加入到其他網絡,實現自動切換信道的原因。在continueJoining函數段添加增加節點請求入網NLME_JoinRequest函數,即可實現信道跳轉,加入到其他網絡。2)使用NV區設置信道利用mac_low_level.h文件中macRadioSetChannel(uint8 channel),ZmacSetReq(ZMACChannel)能夠實現信道設置。但是,這種在MAC層設置信道的方式可能會影響到上層一些其他函數執行,產生一些嚴重后果。本節介紹利用非易失存儲器(Non Volatile,NV)設置信道,啟動節點實現應用層設置信道。非易失存儲器,像硬盤,U盤(閃存)等存儲介質,掉電后其信息不丟失。而易失性存儲器,像內存,斷電后存儲信息就會丟失。易失性存儲器有什么缺點呢?舉個例子說,你的IAR軟件在處于編輯時狀態時,會將Z-Stack工程從硬盤裝入到內存中。如果突然停電了,你想起剛敲打的幾行代碼還沒有保存到硬盤上,這時的你會有怎樣的反應呢?與此類似,Z-Stack把一些重要的系統參數存儲到NV中。存入NV的系統參數通常包括網絡NIB,組表,設備表,綁定表,Profile ID,網絡密匙等信息。節點不必每次重啟時都需重新配置如此多的參數,能夠迅速恢復到掉電前的系統狀態。OSAL主要有以下幾個重要的NV函數:1. osal_nv_item_init()初始化nv條目。 2. osal_nv_read()讀取nv條目。3. osal_nv_write()寫入nv條目。4. NLME_InitNV( void ) NV區初始化。5. NLME_SetDefaultNV()設置默認的NV區條目。6. NLME_RestoreFromNV()從NV區中恢復條目。使用這幾個函數時,讀者須加入NV_INIT和NV_RESTORE這兩個編譯選項。使用NV區設置信道,讀者可以把欲寫入的信道值使用osal_nv_write()函數寫入NV區中,然后使用Simple API中的zb_SystemReset()重啟系統。重啟之后,節點就可能在設定信道上工作。這里說“可能”的意思是節點設置的PAN ID和信道號,可能不存在于現存網絡中的PAN ID和信道集合。換句話說,節點不能加入到現存網絡。所以,PAN ID和信道設置要與現存網絡PAN ID和信道號一致。2程序流程本實驗是在TI Sensor Demo官方例程基礎上修改的。Sensor Demo工程主要分為傳感器節點(Sensor)和數據收集(Collect)節點兩種類型。Sensor節點為終端節點,采集溫度、光照等信息。Collect節點一般為路由器或協調器節點,主要用于數據匯集等。1)默認信道設置在f8wConfig.cfg配置文件中進行信道設置:/* Default channel is Channel 11 - 0x0B */ Channels are defined in the following:/ 0 : 868 MHz 0x00000001/ 1 - 10 : 915 MHz 0x000007FE/ 11 - 26 : 2.4 GHz 0x07FFF800/-DMAX_CHANNELS_868MHZ 0x00000001/-DMAX_CHANNELS_915MHZ 0x000007FE/-DMAX_CHANNELS_24GHZ 0x07FFF800/-DDEFAULT_CHANLIST=0x04000000 / 26 - 0x1A/-DDEFAULT_CHANLIST=0x02000000 / 25 - 0x19/-DDEFAULT_CHANLIST=0x01000000 / 24 - 0x18/-DDEFAULT_CHANLIST=0x00800000 / 23 - 0x17/-DDEFAULT_CHANLIST=0x00400000 / 22 - 0x16/-DDEFAULT_CHANLIST=0x00200000 / 21 - 0x15/-DDEFAULT_CHANLIST=0x00100000 / 20 - 0x14/-DDEFAULT_CHANLIST=0x00080000 / 19 - 0x13/-DDEFAULT_CHANLIST=0x00040000 / 18 - 0x12/-DDEFAULT_CHANLIST=0x00020000 / 17 - 0x11/-DDEFAULT_CHANLIST=0x00010000 / 16 - 0x10/-DDEFAULT_CHANLIST=0x00008000 / 15 - 0x0F/-DDEFAULT_CHANLIST=0x00006000 / 13和14 - 0x0E/-DDEFAULT_CHANLIST=0x00002000 / 13 - 0x0D/-DDEFAULT_CHANLIST=0x00001000 / 12 - 0x0C/-DDEFAULT_CHANLIST=0x00000800 / 11 - 0x0B 0x00000800-DDEFAULT_CHANLIST=0x01000800 / 11 and 24- 0x0B 0x18信道列表值共計32位,如果使用某一信道,需將其對應位(自右到左的順序,最右一位是信道0)置1即可。如果使用多個信道,需將多個位設置為1。這里編者設置了11和12兩個信道,信道列表值為0x00001800。如果使用2.4GHz所有的16個信道,信道列表值設置為0x07FFF100.為便于不同信道網絡切換,網絡PAN ID定義為固定值:-DZDAPP_CONFIG_PAN_ID=0x00122)終端節點自動切換信道在ZDApp.c中ZDApp_ProcessOSALMsg函數處理網絡發現的continueJoining 程序段中加入如下語句,使得與網絡斷開連接后節點加入其它網絡:/進行網絡初始化ZDApp_NetworkInit( MANAGEDSCAN_DELAY_BETWEEN_SCANS );if (NLME_JoinRequest(.) != ZSuccess ) #if defined ( MANAGED_SCAN ) ZDApp_NetworkInit( MANAGEDSCAN_DELAY_BETWEEN_SCANS ); #else zdoDiscCounter+; ZDApp_NetworkInit( (uint16)(BEACON_REQUEST_DELAY+ (uint16)(osal_rand()& BEACON_REQ_DELAY_MASK) ); #endif 當節點與父節點斷開連接后,子節點會首先進行網絡初始化,執行continueJoining結構中的語句。加入判斷語句后,子節點首先會執行NLME_JoinRequest()函數,該函數根據ZDO_NetworkDiscoveryConfirmCB( )所返回的網絡參數加入網絡,子節點根據掃描到的信道和PANID來加入網絡,從而實現信道的自動切換。當NLME_JoinRequest()的返回狀態不是Zsuccess,說明不在其他ZigBee網絡或者現存網絡不允許該節點加入。此時子節點執行ZDApp_NetworkInit()函數來等待加入先前網絡。一旦先前網絡恢復,子節點就會立即加入。如果程序中不添加ZDApp_NetworkInit函數,節點不經過重啟,將不會加入其它網絡。3)利用NV區設置信道信道設置較好的方式是根據網絡負載或信道干擾情況進行動態設置。由于篇幅限制,本實驗利用在DemoSensor.c的按鍵SW4函數中觸發。(1)定義信道號和PAN ID為便于節點在兩個信道11和12間切換,編者使用兩個按鍵觸發信道設置。SW2鍵:newChannel=0x01001000;/0x18SW4鍵: newChannel=0x00000800;/0x0B 定義網絡重啟后的網絡號,與在f8wConfig.cfg中配置PAN ID一致: newPanid=0x0012;/與協調器建立的PAN ID一致(2)NV區設置 將定義要寫入的網絡號和信道號寫入NV區中 osal_nv_write(ZCD_NV_PANID, 0, sizeof(newPanid), &newPanid); osal_nv_write(ZCD_NV_CHANLIST,0,sizeof(newChannel),&newChannel);/寫NV上述函數需要包含在OSAL_Nv.h頭文件中,需要加入如下語句:#include OSAL_Nv.h/寫NV條目(3)設備重啟 最后,使用zb_SystemReset()函數進行協議棧重置。 zb_SystemReset();/協議棧重置, NV存儲器條目改變,相當于手動重置NV。/zb_StartRequest();/協議棧重啟,相當于按重啟鍵/zb_writeconfiguration(ZCD_NV_STARTUP_OPTION,sizeof(unit8);/從上次保存點恢復Simple API(TI在應用層進一步封裝的函數接口)zb_SystemReset()與zb_StartRequest()都有重啟協議棧的功能。但是,zb_SystemReset()函數在重啟設備后NV區內容會發生改變。而zb_StartRequest()只是重新請求啟動協議棧,不會改變NV區內容,也就是說,諸如一些網絡地址,綁定表等系統參數不會發生改變。重置NV區也可使用手動方法:同時按下Push鍵和重啟鍵,然后松開重啟鍵,等待大約2s后,接著松開PUSH鍵。zb_writeconfiguration()為寫NV命令。如果具有ZCD_NV_STARTUP_OPTION選項,節點會從上一次保存狀態恢復NV區狀態,本次寫入時會自動保存網絡狀態。如果不寫入ZCD_NV_STARTUP_OPTION選項,節點會重新啟動一個新網絡。4)獲取節點地址、PAN ID、信道等指示信息(1)獲取節點地址使用zb_GetDeviceInfo()獲取節點網絡地址信息。函數原型為:void zb_GetDeviceInfo ( uint8 param, void *pValue )參數param為設備信息標識符,pValue為存儲設備信息的緩沖區。節點自身網絡地址,和父節點網絡地址都是16位短地址。因此,它們可共用一個緩沖區:uint16 tmpAddr=0xffff;其標識符分別為ZB_INFO_SHORT_ADDR,ZB_INFO_PARENT_SHORT_ADDR。因此,獲取節點自身地址和父節點地址函數可寫為:zb_GetDeviceInfo(ZB_INFO_SHORT_ADDR,&tmpAddr);zb_GetDeviceInfo(ZB_INFO_PARENT_SHORT_ADDR,&tmpAddr);(2)獲取節點當前PAN ID和信道號PAN ID和信道號存在網絡層信息庫(NIB)中,可以直接從NIB信息庫中讀出。在nwk.h頭文件中網絡信息描述符為:extern nwkIB_t _NIB;typedef struct. / non-settable uint16 nwkDevAddress; byte nwkLogicalChannel; uint16 nwkCoordAddress; byte nwkCoordExtAddressZ_EXTADDR_LEN;uint16 nwkPanId;.讀者可以發現這幾個參數是不能夠設置的。PAN ID和信道號可直接使用_NIB.nwkPanId和_NIB.nwkLogicalChannel。在程序中,需要加入“nwk.h”頭文件。(3)十六進制格式化輸出信息上述網絡地址信息,信道號,網絡號使用十六進制在屏幕上輸出比較直觀。Z-Stack應用開發使用C語言進行編程,那么調用常用的C語言庫函數?答案是肯定的。C語言中sprintf()函數經常用來格式化輸出字符串。函數原型如下:int sprintf( char *buffer, const char *format, argument );buffer是指向寫入字符串的緩沖區,format說明寫入字符串格式。sprintf函數需要加入stdio.h頭文件。讀者可申請一個打印緩沖區,專門用于在屏幕上輸出格式化字符串。static uint8 printf_buf32;如信道號就可以按照下面方式在屏幕上輸出:sprintf(printf_buf,CHANNEL:0x%X,_NIB.nwkLogicalChannel);3實驗步驟本實驗使用三個開發套件,兩個節點下載Collect程序,成為協調器,分別建立PAN網絡,在信道11、12工作。剩余一個節點下載Sensor程序,成為終端設備,默認工作信道為信道11和信道12。終端設備能夠動態加入信道11和12上的網絡。1)將實驗目錄下的相應代碼依照readme.txt中的說明,拷貝到Sensor Demo對應的文件夾下。如果出現編譯不成功情況,很可能沒有加入編譯選項:NV_INIT,NV_RESTORE,MANAGED_SCAN。MANAGED_SCAN 只需加入到CollectEB工程編譯選項中。2)按照如表 所示,在配置f8wConfig.cfg中設置默認信道列表并按照工程類型依次下載到相應的設備中。表 節點的信道設置節點設備類型工程類型信道設置信道號節點1協調器CollectEBDEFAULT_CHANLIST=0x0000080011(0x0B)節點2協調器CollectEBDEFAULT_CHANLIST=0x0100000024(0x18)節點3終端設備SensorEBDEFAULT_CHANLIST=0x0100080011、24然后,定義網絡PAN ID:-DZDAPP_CONFIG_PAN_ID=0x00123)節點1和2上電后,分別按下節點1,2的SW1(上)鍵,它們重啟之后,會成為協調器,并建立PAN網絡。按下SW3(下)鍵,屏幕上出現它們的網絡地址為”0x0000”, PAN ID“0x0012”,信道號“0x0B”或“0x18”。4)將節點3上電,觀察節點3會加入上述哪個信道上的網絡。然后,將關閉那個信道上的協調器節點。觀察節點3能否會立即切換到另一個信道,加入此信道上的網絡。5)按下節點3的SW4(左)鍵和SW2(右)鍵,觀察節點能否在兩個信道上的網絡進行切換。按照步驟4的方式,再次關閉協調器節點,觀察節點3還能否自動跳轉信道。6)去掉編譯選項NV_INIT和NV_RESTORE,重復上述實驗,觀察節點3能否自動跳轉信道。4程序清單清單 終端節點自動切換信道/* 函數段 void ZDApp_ProcessOSALMsg( osal_event_hdr_t *msgPtr )* 位置 ZDO/ZDApp.c * 描述 處理網絡發現事件,節點斷開網絡后,可自動跳頻加入其它網絡 */if ( continueJoining ) /進行網絡初始化ZDApp_NetworkInit( MANAGEDSCAN_DELAY_BETWEEN_SCANS ); if ( NLME_JoinRequest( (ZDO_NetworkDiscoveryCfm_t *)msgPtr)-extendedPANID,BUILD_UINT16( (ZDO_NetworkDiscoveryCfm_t *)msgPtr)-panIdLSB, (ZDO_NetworkDiscoveryCfm_t *)msgPtr)-panIdMSB ),(ZDO_NetworkDiscoveryCfm_t *)msgPtr)-logicalChannel,ZDO_Config_Node_Descriptor.CapabilityFlags ) != ZSuccess ) #if defined ( MANAGED_SCAN ) ZDApp_NetworkInit( MANAGEDSCAN_DELAY_BETWEEN_SCANS ); #else zdoDiscCounter+; ZDApp_NetworkInit( (uint16)(BEACON_REQUEST_DELAY+ (uint16)(osal_rand()& BEACON_REQ_DELAY_MASK) ); #endif 清單 利用NV區設置信道/* * 函數段 void zb_HandleKeys( uint8 shift, uint8 keys )* 位置 APP/DemoSensor.c * 描述 定義并寫入NV區信道號,初始化并重啟NV條目,實現信道設置*/ if ( keys & HAL_KEY_SW_2 ) newPanid=0x0012; newChannel=0x00001000;/0x0C /NLME_InitNV();/NV初始化 /NLME_SetDefaultNV();/設置默認nv osal_nv_write(ZCD_NV_PANID, 0, sizeof(newPanid), &newPanid); osal_nv_write(ZCD_NV_CHANLIST,0,sizeof(newChannel),&newChannel);/寫NV /zb_StartRequest();/協議棧重啟,相當于按重啟鍵 zb_SystemReset();/協議棧重啟,這時NV存儲器也會改變。/改變NV的手動方法,同時按Push鍵和重啟鍵,然后松開重啟鍵,再松開PUSH鍵 if ( keys & HAL_KEY_SW_4 ) newPanid=0x0012; newChannel=0x00000800;/0x0B /NLME_InitNV();/NV初始化 /NLME_SetDefaultNV();/設置默認nv osal_nv_write(ZCD_NV_PANID, 0, sizeof(newPanid), &newPanid); osal_nv_write(ZCD_NV_CHANLIST,0,sizeof(newChannel),&newChannel);/寫NV /zb_StartRequest();/協議棧重啟,相當于按重啟鍵 zb_SystemReset();/協議棧重啟,這時NV存儲器也會改變。/改變NV的手動方法,同時按Push鍵和重啟鍵,然后松開重啟鍵,再松開PUSH鍵 清單 讀取傳感器測出的外界溫度信息/* * 函數段 void zb_HandleKeys( uint8 shift, uint8 keys )* 位置 APP/DemoSensor.c APP/DemoCollect.c * 描述 獲取節點地址、PAN ID、信道等指示信息,并在屏幕上顯示*/ if ( keys & HAL_KEY_SW_3 ) zb_GetDeviceInfo(ZB_INFO_PARENT_SHORT_ADDR,&tmpAddr);/父節點地址 sprintf(printf_buf,parent:-0x%X,tmpAddr);/格式化輸出字符串 HalLcdWriteString(printf_buf,HAL_LCD_LINE_2); zb_GetDeviceInfo(ZB_INFO_SHORT_ADDR,&tmpAddr); /節點地址 sprintf(printf_buf,addr:-0x%X,tmpAddr); HalLcdWriteString(printf_buf,HAL_LCD_LINE_3); sprintf(printf_buf,PAN ID:-0x%X,_NIB.nwkPanId);/輸出PAN ID HalLcdWriteString(printf_buf,HAL_LCD_LINE_4); sprintf(printf_buf,CHANNEL:0x%X,_NIB.nwkLogicalChannel);/ 信道號 HalLcdWriteString(printf_buf,HAL_LCD_LINE_5); 實驗結果為記錄和分析兩個信道上的實驗結果,編者在兩臺PC上使用Packet Sniffer分別抓取信道0x0B和0x18上的數據包。實驗結果證明節點在與當前網絡斷開后,可跳轉到另一個信道上的網絡;通過手動按鍵的方式,終端節點能夠在兩個信道上進行切換。1. 節點1與節點2上電后,并按SW1(上)鍵后,會成為協調器,分別建立兩個PAN網絡。網絡建立成功后,網絡PAN ID為0x0012,協調器地址為0x0000。圖 節點1在信道0x0B上建立網絡圖 節點2在信道0x18上建立網絡2.節點3上電后,會與兩個協調器關聯。如圖 所示,在信道0x0B上,節點3(MAC地址:0x00124B0001658C6D)向協調器節點1(MAC地址:0x00124B0001658C6D)提出關聯請求。節點1收到關聯請求后,向節點回應關聯請求成功的命令幀。圖 節點3與協調器節點1進行關聯3.節點3加入協調器節點1建立的網絡中,分配的網絡短地址為0x796F,并向協調器發送數據請求的命令幀。如圖 所示,發送的數據幀APS負載為16 25 00 00,分別代表片內溫度,電壓值,父節點設備地址。在串口調試助手中可以看出,協調器發送到串口中的相應位也為16 25 00 00。圖 節點3向協調器節點1發送數據4.在抓包過程進行到大約40s時,協調器節點1被關閉。如圖 所示,節點3向協調器連續發送數據請求,沒有得到協調器的確認。此時,節點3向網絡中發送孤立通知的命令幀。由于協調器節點1已經關閉,節點1也不會對孤立通知作出響應。圖 節點3與信道0x0B上的協調器節點斷開連接此時,如圖 所示,在0x18信道上的節點2(MAC 地址:0x00124B0001E401A2)也收到了孤立通知的命令幀。由于協調器節點2與終端節點3進行過關聯,會對節點3發送協調器重排列的命令。此時,節點3加入了信道0x18上的網絡,其分配的網絡短地址依然是0x796F。圖 節點3加入信道0x18上的網絡加入網絡后,終端可以可向協調器節點請求并發送數據。圖 節點3向信道0x18上的協調器節點2發送數據5.當按下節點3的SW2(右)鍵,節點3會自動重啟并加入到0x18信道的網絡上。此時,節點3會與0x0B信道上的網絡斷開,并發送孤立通知命令幀。節點3重啟之后,設置在NV區的網絡PAN ID和信道號恢復到網絡存儲器。圖 節點3與0x0B信道上的網絡斷開連接節點3從NV區讀取的網絡號0x0012,信道號0x18。0x18信道上的協調器節點2會收到節點3發送的孤立通知命令幀,并對節點3發送
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 低空經濟公司跨行業合作模式探索
- 精細化運營流程優化方案設計
- 獨立共享儲能電站項目實施方案
- 設計制作合同范本(8篇)
- 村干考試試題及答案
- 基于大數據的災害信息管理與分析
- 旅游開發面試試題及答案
- 自學考試核心試題及答案
- 專業主播測試題及答案解析
- 系統解剖考試試題及答案
- 《write.as》手機版怎么看文
- 繪本故事:睡睡鎮
- 酒店住宿水單模板1
- 北師大版五年級數學下冊 (分數除法(三))分數除法教學課件(第2課時)
- 《世界遺產背景下的影響評估指南和工具包》
- 供應鏈信息管理教學課件
- 銷售管理培訓課件
- 福建省危險性較大的分部分項工程安全管理標準
- 工貿企業常見安全隱患剖析
- 人工智能導論知到章節答案智慧樹2023年東北石油大學
- 水泥混凝土路面鋼筋用量表
評論
0/150
提交評論