




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离婚诉讼调解达成一致子女抚养及财产分割执行合同
- 离婚房产分割与原配偶子女就业基金协议
- 离婚财产分割及子女抚养费支付协议
- 离婚协议范本:无子女共同财产分配及债务清理
- 链家新人培训体系
- 班组新员工安全培训内容课件
- 中国历史文选 课件 第十九讲 经籍志序;第二十讲 二体
- 幼儿学看病课件
- 进餐环节培训课件
- 统编人教版四年级语文下册第三单元《语文园地三》示范教学课件
- GB/T 15688-2024动植物油脂不溶性杂质含量的测定
- GB/T 44412-2024船舶与海上技术液化天然气燃料船舶加注规范
- 电动吊篮安全专项施工方案
- 抚养费协议书范本电子版
- JB∕T 13357-2018 起重机械用制动电动机能效限额
- 华中师范大学经济与工商管理学院807经济学基础历年考研真题汇编合集
- 无人机培训公司合同范本
- 2024年水域救援安全及基础理论知识考试题库(附含答案)
- 2024年安徽马鞍山市公安局辅警招聘笔试参考题库附带答案详解
- 2024电工(三级)职业技能等级认定理论考试复习题库(含答案)
- 室内高尔夫行业分析
评论
0/150
提交评论