xbee中文手册.docx
- 文档编号:30489649
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:17
- 大小:216.93KB
xbee中文手册.docx
《xbee中文手册.docx》由会员分享,可在线阅读,更多相关《xbee中文手册.docx(17页珍藏版)》请在冰豆网上搜索。
xbee中文手册
3.XBeeZigBee网络
Zigbee介绍
Zigbee是一个开放的全球标准,建立在IEEE802.15.4MAC/PH基础上。
Zigbee在
6.网络调试与诊断
网络调试是mesh网络中设备发现和配置的过程。
Xbee模块包含若干的特性支持设备发现和配置。
设备发现
网络发现
网络发现ND命令可以发现所有加入到网络的模块,执行ND命令全网广播节点发现命令,所以的节点收到该命令后会发送一个响应,该响应包括设备地址信息,节点标识符字符串和其他相关的信息,该命令用于产生网络中所有模块地址的列表。
当设备接收到节点发现命令后,会等待一个随机的时间然后发送响应。
最大的时间延迟是ND发送者发送的NT命令来设定的。
ND发起者在发送中包含NT设置,为了网络中的所有设备提供一个延时窗口。
大型网络需要增大NT的值提高网络发现的可靠性。
NT默认值为0X3C(6秒)。
ZDO发现
Zigbee设备配置文件包含了用于发现网络中支持zigbee协议的所有设备(包括非DIGI的产品)的条款。
这些条款包括LQI请求(簇ID0x0031)和网络更新请求(簇ID0x0038)。
使用LQI请求来读取远端设备邻居表中的设备。
网络更新请求用于使能远端设备进行一次主动扫描发现附近所有的zigbee设备。
详情请看API章节。
以上两个ZDO帧结构详情请参考zigbee规范。
加入通告
当设备加入到zigbee网络中时,都会发送一个ZDO设备通告广播信息(ZDO簇ID0x0013)。
如果AO=1,这些帧会在XBee模块的串口发出接收指示(0x91),设备通告有效载荷包括一下内容:
序列号+16位网络地址+64位长地址+性能
16位和64位地址是小端格式,详情看zigbee规范。
调试按键和关联LED
XBee模块支持一系列调试和LED指示来帮助设备部署和调试。
7.终端设备操作
zigbee终端设备一般是电池供电,具有周期性的较长时间的睡眠,因此终端设备可能在接收数据到来的时候无法醒来,因此路由或者协调器需要具备额外的能力(包括数据包缓冲池和扩展的传输时间超时)包装传输到终端设备数据的可靠性。
终端设备操作
终端醒来后,发送一个轮询信息给父节点,父节点收到轮询信息后检查数据包队列是否有发给该节点的信息,随后发送一个MAC层确认帧指示是否有需要接收的数据。
当终端设备收到确认帧后发现父节点没有数据,终端转入空闲模式或者进入睡眠。
反之就保持醒来状态接收数据。
轮询机制允许终端设备在没有预期的RF数据时进入空闲模式并关闭接收链路以降低功耗延长电池寿命。
终端设备只能发送数据给他的父节点,如果终端设备需要发送广播或者单播到网络的其他设备,那么他发送信息给父节点,父节点执行一些必要的路由发现和地址发现然后按照路由信息将数据包发送到目的节点。
父节点操作
每一个路由设备或者协调器都有一张子节点表,包含了其下终端子节点的地址。
路由设备或者协调器的子节点表中有未使用的条目,标明具有接受终端节点的能力,换言之就是允许新的终端设备加入。
如果子节点表满了就不允许其他终端设备加入。
一旦终端设备没有在给定的时间内醒来,父节点需要保存到达的数据包。
如果父节点收到发给一个终端设备的数据,且父节点还有足够可用的缓存空间的时候,父节点就缓存数据包,数据包一直被缓存直到时间超时或者终端接设备发送轮询信息询问数据。
父节点可以缓存一个给他子节点的广播信息。
当父节点收到一个广播信息缓存之后,当每一个子节点轮询并接收到数据包后父节点就在子节点表中对应子节点设置一个标识。
一旦所有的子节点都收到这个广播帧,就把该广播帧删除。
如果还有的子节点没有收到缓存的广播帧这时又来一个广播帧,旧的广播帧将被删除,子节点表标识清除并且把新的广播帧缓存起来。
下图简单指示上述观点
终端设备发送数据到父节点,这个数据目的地址是网络中的一个远程设备。
父节点缓存该数据包直到建立到目的节点的路由信息。
父节点执行路由发现或者16bit地址发现。
一旦路由信息建立后,父节点就把数据发送出去。
终端设备轮询超时
为了更好的支持移动终端设备(终端设备可以在网络中移动),充当父节点的路由设备或者协调器都有一个子节点的轮询超时时间。
如果在轮询超时时间内没有发送轮询信息,那面父节点就从子节点表中删除该终端设备。
这种方式更好的适应了网络中移动的终端节点。
包缓冲区对的使用
路由设备或协调器针对包缓冲区的使用依赖于应用。
如下行为可以请求使用包缓冲区达数秒:
●路由发现和地址发现
●应用广播发送
●堆栈广播(例如一个设备加入网络后,ZDO层的设备声明)
●单播发送(数据缓存直到收到目的地址的确认信息或者重试次数耗尽)
●单播信息等待终端设备醒来
应用程序使用广播或者请求地址发现或路由发现时,会使用一定数量的缓冲区,此时将减少分配给终端子节点的可用缓冲区。
应用程序应该减少广播数量,或者使用外部地址表或者多对一、源路由选择有必要提高路由效率。
非父节点设备操作
Zigbee网络中设备对发送给终端设备的数据的处理方式不同于发送给其他路由设备或协调器。
试想一下,当发送一个单播信息,如果在超时时间内没有收到网络确认信息,设备将重新发送。
当数据是发送到远程的协调器或路由设备,发送超时时间是相对较短的,因为这两种设备是一直处于工作状态的。
但是,终端设备可能大部分时间都在睡眠,发送给终端设备的单播需要使用扩展的超时时间来保证终端设备有足够的时间唤醒并从父节点接收数据。
如果非父节点不知道目的节点是终端设备,他将使用标准的单播超时时间来发送数据。
因此,在EmberZigBee协议栈中规定,父节点需要告诉信息发送者目的地址是终端设备。
一旦发送者发现目的设备是终端设备,后续的发送将使用扩展的超时时间。
详细的请看XBee路由设备/协调器配置章节。
XBee终端设备配置
终端设备支持如下两种睡眠模式:
●引脚睡眠
●周期睡眠
引脚睡眠方式允许外面控制器通过控制Sleep_RQ引脚来判断模块何时睡眠何时该唤醒。
相反,周期睡眠允许使用AT命令来配置睡眠周期。
睡眠模式通过SM模式来配置。
不管那种睡眠模式,XBee的终端设备在醒来的时候每隔100ms轮询父节点以便取回缓存的数据。
终端设备发送轮询请求就就切换到接收状态接收父节点的确认帧。
(一般情况,从发送轮询到接收到确认帧的时间小于10ms)。
确认帧指示是否有终端设备的数据。
如果确认帧指示有待处理的数据,终端设备就接收数据。
反之就关闭接收器进入空闲模式(直到下一个轮询请求)以降低功耗(优化电池寿命)。
模块进入睡眠模式后,On/Sleep引脚(pin13)输出低电平指示模块处于睡眠模式。
如果使能了CTS硬件流控制(D7命令),CTS引脚(pin12)输出高电平指示模块处于睡眠模式,此时不能通过串口给模块发送数据。
睡眠模式下,模块对串口和射频数据都不响应。
应用程序需要持续的观察pin12引脚的电平。
当XBee模块从睡眠模式醒来,On/Sleep引脚输出高电平,如果使能流控制,CTS引脚输出低电平(指示模块串口可以接收数据了)。
如果模块没有加入网络,模块将在醒来之后扫描所以通道寻找有效的网络加入。
引脚睡眠
引脚睡眠允许模块根据Sleep_RQ引脚(pin9)的状态来睡眠或唤醒,引脚睡眠模式通过设置SM=1来使能。
当Sleep_RQ是高电平,模块在执行完发送和接收操作后进入低功耗状态。
例如,如果模块没有加入网络且Sleep_RQ是高电平,那么模块在完成当前加入请求后进入睡眠(例如完成扫描有效的网络),当Sleep_RQ是低电平,模块从睡眠中唤醒。
上图中,t1,t2,t3表示一下事件:
●T1—Sleep_RQ引脚高电平
●T2—XBee模块进入睡眠(CTS状态只有在流控制使能了才变化)
●T3—Sleep_RQ引脚低电平,模块唤醒
T1和T2之间的时间差取决于模块的状态。
在最坏的情况下,如果终端设备试图加入设备,或者等待数据传输的确认帧,延时时间可达数秒。
当XBee模块醒来且已经加入了网络,终端设备会给父节点发送轮询请求以便查询是否有数据,终端设备在醒来的时间内会每隔100ms发送一次轮询信息。
引脚睡眠示范:
父节点及远程设备需要正确的配置来缓存数据、使用适当的发送超时时间。
详细请看XBee路由/协调器配置章节。
周期睡眠
周期睡眠模式允许模块睡眠一定的时间,唤醒后保持较短的时间来轮询父节点是否有待处理的数据。
周期睡眠模式通过设置SM=4或5。
SM5和SM4有轻微的区别,SM5允许通过Sleep_RQ引脚(pin9)提前唤醒模块。
SM5模式下,XBee模块有两种方式唤醒,一是睡眠时间期满,二是Sleep_RQ引脚上的高电平到低电平的变化(即下降沿),SM4下,引脚唤醒功能无效。
周期睡眠模式下,模块睡眠一定的时间后唤醒并轮询父节点是否有待处理的数据,如果父节点缓存了模块待处理的数据,或者模块收到了串口数据,那么XBee模块保持特定时间的唤醒状态。
否则,即可进入睡眠模块。
当模块醒来时,On/Sleep输出高电平。
模块睡眠时,On/Sleep输出低电平。
如果使能硬件流控制(D7命令),模块醒来时,CTS引脚输出低电平并可以接收串口数据,模块睡眠时,输出高电平。
上图中,t1,t2和t3表示如下事件:
●T1—模块周期唤醒时刻
●T2—模块进入睡眠时刻
●T3—模块睡眠持续时间
醒来时间和睡眠时间通过软件命令来配置,详细描述请看以下章节。
唤醒时间(直到睡眠)
在周期睡眠模式下(SM=4/5),如果收到串口数据或者无线数据,模块启动睡眠定时器(直到睡眠的时间)。
接收到任何串口数据或射频链路数据都会重启定时器。
睡眠定时器的值通过ST命令来设置。
当模块醒来后,会每隔100ms发送轮询信息查询父节点是否缓存有待处理的数据信息。
如果睡眠定时器期满或者收到SI命令(sleepimmediately),模块进入睡眠模式。
下图显示了该特征。
睡眠周期
睡眠周期通过SP,SN和SO命令配置,下表列出改命令的特征
命令
范围
描述
SP
0x20-0xAF0(*10ms)
(320—28000ms)
配置模块睡眠周期
SN
1—0xFFFF
配置睡眠周期倍数
SO
0—0xFF
定义睡眠模式选项:
0x02—在整个ST定时器一直醒着
0x04—使能扩展睡眠(在SP*SN时间内睡眠)
XBee模块使用上述命令支持短周期睡眠和扩展周期睡眠。
这两种模式允许睡眠周期通过应用程序来配置。
短周期睡眠
在短周期睡眠下,模块的睡眠特征通过SP和SN命令来定义,SO命令必须设为0x00(默认)或者0x02。
在短周期睡眠模式下,SP命令定义了睡眠周期且可设定长达28秒,当模块进入短周期睡眠,模块保持低功耗状态直到SP时间期满。
睡眠时间期满后,XBee模块发送轮询信息,路由器和协调器可为其终端子节点缓存30秒的数据,SP范围(长达28秒)使得终端设备有足够的时间来接收缓存的数据。
如果父节点缓存了子节点的数据,那么终端设备启动睡眠定时器(ST)然后每隔100ms进行轮询来接收数据。
如果终端设备醒来后发现父节点没有给他的数据,那么终端设备立即进入睡眠模式。
SN命令可以用来控制On/Sleep引脚输出高电平的方式。
如果SN设置为1(默认),XBee每次醒来,On/Sleep引脚都会输出高电平。
如果SN>1,只有模块收到射频数据或者SN唤醒周期发生后,On/Sleep才会输出高电平。
这种方式允许外部设备保持掉电模式直到模块收到射频信号或者若干个睡眠时间期满(SN睡眠周期)。
这种机制允许XBee模块定期的轮询父节点有无数据而不用唤醒外设备,这个时间为SP*SN的时间。
上述方式如下图所示。
设置SN>1,XBee模块定期轮询父节点而在On/Sleep引脚上有指示。
如果在轮询的时候接收到射频信号,那么On/Sleep引脚立即有指示。
注意:
在路由设备和协调器上,SP指定了数据包缓存的时间,因此所有路由设备和协调器的SP设置必须匹配终端设备中最长的那个SP定时器。
详细的请看XBee路由/协调器配置章节。
扩展周期睡眠
在扩展周期睡眠操作中,终端设备可以睡眠多个SP时间,该时间可以扩展到几天。
睡眠周期通过配置SP和SN命令。
总的睡眠周期等于SP*SN,SP是以10ms单位测量。
同时,SO命令必须正确配置来使能扩展睡眠周期。
由于路由设备和协调器只能为其子节点的射频数据缓存最长30秒的时间,如果终端设备睡眠时间大于30秒,网络中的设备需要一些标识只有终端设备醒来才能给他发送数据。
当使用扩展睡眠周期的终端设备醒来后,他需要发送一个传输(例如一个IO采样)告知其他设备(我已经醒了,可以接收数据了)。
我们推荐使用扩展睡眠周期的终端设备设置SO命令使得设备在ST时间内是保持醒着的,以便其他设备有足够的时间发送信息给该终端设备。
发送射频数据
对于已经加入网络的终端设备,从睡眠唤醒后可以发送数据。
终端设备直接发送数据给父节点然后等待接收确认信息。
父节点执行一些必须的地址发现和路由发现确保数据包正确到达目的节点,之后发送一个发送状态信息给这个终端设备。
接收射频数据
从睡眠唤醒后,终端设备发送轮询请求查看是否缓存有待处理的数据。
在引脚睡眠模式下,Sleep_RQ低电平时,终端设备每隔100ms轮询一次。
在周期睡眠模式下,终端设备在进入睡眠状态前只能轮询一次,除非睡眠定时器(ST)启动(也就是说只有接收到串口或射频数据时,ST才会启动)。
如果睡眠定时器启动,终端设备会每隔100ms轮询一次直到睡眠定时器期满。
XBeeZB2*6*固件包含了一个自适应的轮询机制,如果终端设备从父节点接收到射频数据,他会在极短的延时之后发送另一个轮询请求以查询是否还有数据。
终端设备只要从父节点接收到数据就会已更快的频率来轮询。
这个特征提高了数据发送到终端的效率。
当终端设备的父节点没有数据后,轮询时间又恢复到100ms。
IO采样
终端设备可以配置成在醒来时候发送一个或多个IO采样。
使能终端的IO采样,IR命令需设置为一个非零值。
至少一个模拟或数字IO引脚设置成采样模式(D0-D9,P0-P9命令)。
如果使能了IO采样,终端设备醒来后发送一个IO采样并启动ST定时器。
他会以IR速率连续的采样直到ST期满。
详细介绍请看第八章节。
使用调试按钮唤醒终端
如果使能了调试按钮功能(D0命令),DIO0引脚上一个由高到低的边沿变化使得终端设备唤醒30秒。
详情请看第七章节的调试按钮。
父节点确认
因为终端设备依赖父节点与网络中其他设备保持连接,XBee终端设备包含若干条款来验证连接到父节点。
终端设备在发送轮询信息,上电周期或者复位事件时监听与其父节点的链路。
当终端设备从睡眠状态醒来,他会发送一个轮询请求给父节点。
在周期睡眠模式下,如果没有接收到射频数据或串口数据且睡眠定时器没启动,终端设备只轮询一次并进入睡眠。
反之,终端设备每100ms轮询一次。
如果在三个连续的轮询请求,父节点没有发送确认响应,终端设备就认为是超出了父节点的通信范围,然后尝试寻找新的父节点。
终端设备在上电或复位事件后,终端设备执行孤立扫描来定位其父节点,如果父节点没有发送孤立扫描的响应,终端设备就尝试寻找新的父节点。
重加入
一旦所以设备都已经加入zigbee网络,允许加入属性应该被禁止,这样新的设备不再能加入到网络。
允许加入属性可以在后面使能一个较短的时间。
这种方式提供一些保护机制避免其他设备加入到一个活动的网络中。
如果终端设备无法与其父节点通信,终端设备必须能够加入一个新的父节点以便保持网络的连通性。
但是,如果允许加入属性无效,终端设备就不能寻找新的父节点了。
为了解决这个问题,zigbee支持重加入的功能,即使加入属性无效,终端设备依然可以获得新的父节点。
终端设备使用重加入功能加入网络时,他会执行PANID扫描发现附件的网络,如果发现和终端设备一样的64位PANID的网络,他会想这个网络中的一个设备发送一个重加入的请求。
收到重加入请求的设备会发送一个重加入响应以便告知是否允许加入(例如子节点表未满)。
重加入机制允许设备加入同一个网络即使允许加入属性无效。
XBee路由/协调器配置
XBee路由和协调器需要确保下面的一些配置正确:
●射频数据包缓存超时时间
●子节点轮询超时时间
●发送超时时间
这些超时时间的配置依赖于终端设备上的睡眠时间,下面详细阐述。
射频数据包缓存超时时间
当路由或协调器收到一个发往其子节点的射频数据包后,会缓存该数据包直到终端设备醒来轮询,或者直到数据包缓存超时时间期满。
这个超时时间通过SP命令设置。
实际的超时时间是1.2*SP,超时时间范围是1.2秒到30秒。
数据包缓存超时时间略大于SP。
路由和协调器上面的SP设置应该和终端设备的周期睡眠时间一致。
对于引脚睡眠设备,SP应该设置与引脚睡眠设备一样长,长达30秒。
注意:
引脚睡眠和扩展周期睡眠中,终端设备睡眠时间可能大于30秒。
如果终端设备睡眠大于30秒,父节点或者非父节点设备必须知道该终端设备什么时候醒来以便可靠的发送数据。
对于睡眠时间大于30秒的应用,终端设备需要在醒来的时候发送一次IO采样或其他数据告知其他设备可以发送数据过来了。
子节点轮询超时
路由和协调器为每一个子节点保留一个时间戳,该时间戳指示终端最后一次发送轮询请求的时间。
如果一个子节点在一个设定的时间内没有发送轮询请求,父节点就认为该终端设备超出了通讯范围并从子节点表中删除该终端。
这种方式允许路由和协调器能够对网络变化做出反应。
任何时候都可以发出NC命令来读取路由或协调器子节点表中未使用的数目。
子节点轮询超时时间通过SP、SN来设定。
SP和SN应当设定SP*SN大于网络中最大的预期的睡眠时间。
实际的超时时间通过3*SP*SN来计算,最小时间为5秒。
对于有引脚睡眠设备的网络,协调器和路由的SP、SN设定成SP*SN匹配网络中最大的睡眠周期。
乘数3确保了终端设备在小于3次睡眠周期不会被从子节点表中删除。
轮询超时时间可以设置长达数月。
发送时间超时
在第四章节中提到,当发送射频数据到一个远端路由设备时,因为路由设备是一直唤醒的,超时时间是基于发送的跳数,超时时间通过NH命令来设定(详情看第四章)。
由于终端设备可能睡眠很长时间,超时时间不要为终端睡眠时间留一些余量。
发送数据到远程的终端设备时,发送时间超时使用SP和NH命令来计算。
如果在时间超时没有收到确认信息,源设备会重新发送直到收到确认信息。
每一次发送时间超时为:
3*((单播路由超时)+(终端设备睡眠时间))或3*((50*NH)+(1.2*SP)),SP以10ms单位测量。
总结
短睡眠周期
引脚或周期睡眠模式,如果睡眠周期小于30秒,终端设备可以在任意时间收到父节点缓存的数据。
网络中所有节点的SP设定应一致。
如果网络中终端设备的SP有多种,那么路由和协调器的SP应该设置为最大的那个。
这样可以确保射频数据包缓存、轮询时间超时、发送时间超时正确。
扩展睡眠周期
如果引脚或周期睡眠的终端睡眠大于30秒,就不能可靠的接收到数据,除非采取特定的设计方法。
比如终端设备在醒来后发送IO采样或其他机制通知网络可以接收数据。
路由和协调器的SP、SN乘积匹配网络中最长的睡眠时间。
睡眠例程
本节举一些XBee模块的配置实例支持不通的睡眠模式。
列出了一些AT命令的推荐值。
本节的符号包含“=”标识命令寄存器应该设置成,例如SM=4。
在XBee里,这不是正确的设置符号。
10.XBee命令参考表
寻址
寻找命令
AT
命令
描述
节点类型
参数范围
默认值
DH
目的地址高字节:
设置/获取64bit目标地址的高32bit。
结合DL,他定义了数据传输的64bit目标地址,DH和DL特殊定义包括0x000000000000FFFF(广播)和0x0000000000000000(协调器)
CRE
0—0xFFFFFFFF
0
DL
目的地址低字节:
设置/获取64bit目标地址的低32bit。
结合DH,他定义了数据传输的64bit目标地址,DH和DL特殊定义包括0x000000000000FFFF(广播)和0x0000000000000000(协调器)
CRT
0—0xFFFFFFFF
0xFFFF(协调器)
0(路由/终端)
MY
16bit网络地址:
读模块的16bit网络地址,0xFFFE表示模块没有入网
CRE
0—0xFFFE(只读)
0xFFFE
MP
16bit父节点网络地址.读模块父节点16bit网络地址,0xFFFE表示模块没有父节点
E
0—0xFFFE(只读)
0xFFFE
NC
剩余子节点数目:
读该值表示能加入字节的数目,如果NC返回0表示不能加入子节点
CR
0—MAX_CHILDREN
只读
SH
序列号高:
读模块唯一的64bit地址高32bit
CRE
0—0xFFFFFFFF(只读)
工厂设置
SL
序列号低:
读模块唯一的64bit地址低32bit
CRE
0—0xFFFFFFFF(只读)
工厂设置
NI
节点识别符:
存储一个串行识别符,该寄存器只接收ASCII字符。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- xbee 中文 手册