资讯详情

XBee3与XBee S2C混合应用注意事项(石油A11领域)

中石油在油气行业自动化方面处于国内前列,采用了标准Zigbee无线协议,A11协议是多年前召集多家无线供应商讨论制定的标准,中石油也对协议的应用提出了许多要求。虽然中石油的数字油田战略已经实施多年,但也有A11作为一个标准系统,但由于各厂家的技术水平、产品的可靠性和智能水平不同,在具体实施过程中经常遇到一些障碍,容易出现不同厂家的数据交换问题,影响生产效率。具体来说,由于不同厂家的参与,无线仪表虽然有A11标准确立了大方向,但有时每个制造商的适应仍然需要相互协调,通常是RTU辅以不同厂家的传感器。具体到项目环节,由于不同传感器厂家的自适应性和兼容性测试验证不足,项目实施环节的性能差异较大。

随着XBee系列产品的更新可以满足要求Zigbee 3.0标准的XBee3横空出生,慢慢取代原来的XBee S2C。A11协议没有随着时代的变化而演变,XBee3.它提供了许多新的特征,但也与前进兼容S2C 做了很多兼容优化。在实际应用中,无论是传感器还是传感器RTU,XBee可直接接替换S2C在产品上部署。对于S2C和XBee3.混合网络场景需要了解这两代产品的异同,尽可能实现软件上无忧无虑的混合网络智能部署,减少等待时间、包装损失率和人工干预。本文试图验证产品设计和兼容性ZigBee协议的注意事项等方方面面来讨论如何让自家产品做到兼容百搭,智能部署。

图片

一、初级篇


虽然简单的配置也可以满足基本项目的实施和应用,但由于缺乏程序网络管理和智能部署功能,在参数和模块选择力地选择参数和模块。

Digi XBee Zigbee模块是应用最广泛的符合ZigBee联盟协议规范的无线模块。ZigBee第一代系列模块XBee S2B,演进到S2C,目前最新的XBee3,只要是ZigBee协议模块可以相互兼容通信。

如果是新项目设计,尽量使用XBee3.老产品也要尽快升级PCB为了应对供应链紧张带来的风险,尽量在封装设计中实现大小模块的兼容性。Digi无线模块分为普通模块和增强模块。只有发射功率的差异,才能在复杂的电磁环境中增强信号,降低包装损失率。

Digi会定期发布XBee模块的新固件主要是增加功能特性并修复已知的bug。若未解决bug或者对于新特性的需求,现有模块不需要升级到最新的固件版本。但XBee在生产过程中,模块总是用最新发布的固件生产,反映在模块的标签上,这是不同的revision。一般情况下,固件会在充分测试后发布。由于每个用户的应用配置不同,很难保证在某些特定配置下不会有一些bug因此,阅读是最好的方是阅读Release Note,避免或绕过潜在的影响根据相关描述。建议客户在新项目启动前,对当前可用固件进行充分测试,确保批量生产前没有问题。

XBee S2C

问题固件:405F;主要问题:休眠节点polling timeout异常。

问题固件:4061;主要问题:休眠节点NJ<FF时,rejoin机制不可用,原父节点不能加回。

解决问题:回退或升级4059、4060、4062等固件版本。

XBee3

和XBee S2C混合组网时,,为了真正与原始固件兼容,不能使用更早的固件S2C协调行为。

中石油A11无线仪表规范在设立之初就参考了当时的情况Zigbee协议的标准和知名度XBee无线模块API标准,而ZigBee作为一种开放的无线物联网协议,该协议具有许多优点。首先,它是安全的。中石油的物联网通信需要加密ZigBee协议通信,所以厂家RTU所有仪器都需要打开加密模式。

XBee3还应该设置C8=10,ET值应略大于休眠时间。此外,打开网络公告的功能有助于先进用户的程序设计,因此通常JN=1。其他常见参数请参考A协议要求11。

因为ZigBee 3.0的升级,XBee3和S2C有些默认参数不同,通常你可以按S2C设置参数XBee3。但在ZigBee 3.分布式网络概念在0中引入,其中EO默认配置为2,即集中网络;在S2C没有这个概念,所以S2C的EO默认值为0,实际应用多为0S2C作为集中网络的中心,协调器。所以通常是中石油A在11加密网络中要按压S2C的EO值去设置XBee3,而是保持XBee3的EO=2.防止协调器默认0地址在两个模块的混合网络中无效。

二、进阶篇


ZigBee是无线网络协议,ZigBee必须支持所有设备ZigBee虽然网络的基本功能。XBee模块可以不需要应用程序配合来管理最基本的ZigBee但在实际应用中,网络通常可以主动使用ZigBee智能部署和安装调试协议的网络功能。

设备列表:完整ZigBee产品可以在程序空间中建立一个通信设备列表,具有记录和使用16位短地址通信等一系列优点,降低错误概率。RTU它可以识别网络设备的权利,主动删除第三方设备,并与多个目标设备同时通信。例如,传感器不仅可以传输数据RTU,还可以发给router设备等。通常可以在部署模式阶段主动扫描或通过入网通知API将设备添加到列表中。对于设备列表,也应该有一个删除机制,毕竟,有些设备会损坏、更新或更换,通常在一段时间内无法成功通信,作为设备不在现场的标志。

有两种API帧可以作为设备入网通知将设备添加到列表中,一种是使用ZigBee本身的Joining Announce,它不依赖JN参数,缺点是进入网络时只有一次通知,识别设备类型也不容易,所以这种方法在部署时通常需要配合主动扫描。另一种是使用XBee的JN参数,当JN=1时,设备将进入网络或reset后来向网上其他设备公布身份。油田上经常有设备reset动作,即使错过了第一次入网通知,也可以在对方设备后续reset之后获取,所以这样更容易添加设备列表。

运行模式:无线网络通常有网络、网络等动作,因此在程序中制定产品的工作模式,有利于更有效地建立网络,确保可靠的通信。例如,在产品部署阶段,可以定义为部署模式。此时,为了加快网络部署,可以增加主动扫描功能和一些握手识别功能。在产品的正常工作模式下,可以关闭一些功能,使产品能够专注于地专注于应用程序的实现。调试模式可以打开调试代码,方便现场调试。虽然这些模式在产品设计中并不是必不可少的,但合理的安排仍然可以最大限度地保证产品与各种异常环境的兼容性。对于RTU通过按钮切换模式非常方便;对于无按钮传感器,应主要考虑在程序中智能切换各种模式。

三、高级篇


XBee已经推出一段时间了,可以直接替换很多项目。但在一些特殊的应用场景中,仍然可能存在一些未解决的兼容性bug。尽管由于zigbee 3.只有在特定参数的组合下,才能实现0协议的升级,Digi仍将致力于让步XBee3可以完全替换和替换S2C,不需要传统使用S2C修改产品。

最新发现的一个bug是在开启APS出现加密。XBee模块在开启EE之后,网络包已经加密,但是因为很多早期用户都是对的ZigBee了解不深,在产品中额外打开APS加密。APS加密实际上是在加密网络包中任意两点的应用层payload进一步加密意义不大,工业场景很少使用。在XBee API模式中有个transmit option默认为0的字段x中石油很多RTU和传感器的早期用户在一起XBee中采用了transmit option=0x以这种方式进行通信。

下面做S2C和XBee3开启APS层加密通讯的兼容性测试。

刚开始通讯正常,大约5分钟后, S2C代码错误:21 (Network ACK Failure)。

如果对S2C进行reset,它仍然无法修复,但错误代码变成:24 (Address not found)。

使用00作为协调器的16位地址,结果仍然样。

刚开始沟通正常,5分钟左右发不成功,代码错误:24 (Address not found)。

使用真实的16bit地址而不用FFFE,结果还是一样的。

把S2C的EO改为和XBee3一样的0x看结果,只有双向通信才能恢复。S2C发ATNR退网才行。

奇怪的是,如果S2C作为协调器,XBee3作为路由器,不会有这个bug。

初步结论:这是不常用的bug,只有当XBee3作为协调器时,S2C作为路由器API帧中的发送选项打开APS加密(0x20或0x才会出现。

是否能在XBee解决3的配置?很可能是NK或trust center以下临时解决方案需要测试:

这个设置会导致地址0不能代表XBee3作为协调器了,S2C发XBee3只能用FFFE或是真实的16位短地址。如果用0作为短地址发不通,并且会阻塞后续的发送(除非退网)。

实验表明,NK即使双方配置成一样的默认值,这个bug也依然存在。

这个bug的解决要等Digi发布新版的XBee3固件。对于混合组网的设备产家来说,在程序中不盲目采用部分厂家的0x60发送选项的设备制造商,在S2C到XBee3换代升级过程中受到的影响最小。

1、因ET参数默认值产生传感器多次入网短地址发生变化的问题

问题描述:根据报告,当休眠参数SPSN的值大于ET定义的时间,则ET时间到后会有退网的现象。

开发板重现:

协调器配置:ZS=2, ID=58, CE=1, AP=1, AO=1,BD=7,SP=AF0,SN=7,SO=6,EE=1,EO=0,KY=11,NK=0, NI=end

休眠终端配置:ZS=2, ID=58, CE=0, AP=1, AO=1,BD=7,SP=AF0,SN=7,SO=6,EE=1,EO=0,KY=11,NK=0, NI=cord

测试时一般要记录一下MY的值,以观察是否有变化。

在XCTU上两个模块都可以观察到cluster 0013的入网通告,可见休眠节点有离网过程。由于重新加网,所以休眠节点的短地址会变化。这个问题可以归结于,ET比休眠周期小,它认为自己时间到了要重入网,而协调器为S2C只看休眠参数,并没有ET值。

解决方法:将ET值改为大于休眠周期的值,则这个问题消失。

2、更换协调器问题

参数配置同1,在S2C时,不论NJ<FF还是NJ=FF,都不需要发ATNR来离网,而是通讯不上时会自动离网,在XBee3时,需要发ATNR0, 通讯不上, polling没有时不会主动退网。

附录1:详解XBee ZigBee模块的休眠参数和相关意义

ZigBee设备可分为协调器,路由器和终端节点三种角色,其中只有终端节点可以休眠,在睡眠期间可以实现极低功耗,在醒来后又可获取休眠时期收到的数据。休眠参数不仅对终端节点有意义,在作为父节点的协调器或路由器,也同样有着重要的功能。

XCTU上,在配置界面的Sleep Modes区块,列出了所有的休眠参数:SP、SN、SM、ST、SO、WH、PO、ET,不同版本可用参数略有差异,下面详述:

休眠节点的SP代表休眠时间,也就是每隔SP*10ms的时间,休眠模块会醒来查询自己的数据。而在协调器或路由器上,它代表的是父节点收到数据后能为其子节点缓存多久。

这个参数用于设置polling timeout,算法是:3 * SN * (SP * 10ms)。如果在polling timeout规定的时间内,父节点没有收到子节点查询请求,则父节点会把子节点从它的子节点列表中移除。XBee的协调器或路由器都能作为父节点为子节点缓存数据,每个模块最多可以挂20个子节点。当子节点从网络中移除,需要有个机制在父节点中也把该节点从列表中除名,也就是父节点不再为该子节点缓存数据,从而让出空间给其它节点,这个机制就叫polling timeout。值得注意的是,XBee3支持最新的ZigBee 3.0协议,支持休眠子节点设备入网时向父节点报告自己的polling timeout时间,也就是不同的设备可以有不同的超时时间,而不需要在父节点处统一设置。

这个ET是ZigBee 3.0后引入XBee3的,主要是用在休眠节点。对于混合组网的情况,当XBee3作为协调器或路由器,而网内有S2C的休眠节点时,应该把父节点的ET也配置得和休眠周期差不多,略大些即可。

该参数仅在周期休眠中使用(SM=4,5),其代表没数据活动多久后进入休眠。当XBee在收发数据时,模块不能立即进入休眠状态,它必须等待收发结束后一段空闲时间都再无数据,以保证收发数据能顺利完成。这个时间正是ST定义的。休眠节点醒来时polling父节点后,发现没有数据一般可以立即休眠,而无需等待ST时间,但有时模块不仅是接收,也需要外发信息,因此我们也可配置模块醒后保持ST时间,以有足够的时间通过串口来发送数据或命令,这是在后面的SO中配置。

这是两个字节的参数,注意bit0不用,目前仅bit1,bit2有定义。bit1: 在SN个休眠周期后,强制醒来ST时间。bit2: 启用扩展休眠周期,即休眠SN*SP时间。由于父节点在收到数据后只为子节点缓存SP定义的时间,而SP最大只能设置28秒,所以启用扩展休眠周期是有可能丢数据的。

设备从睡眠中醒来,到发送数据到串口的允许时间。有些设备是通过XBee模块的信号唤醒或给处理器上电的,而主机醒来是需要时间,通过这个参数来确保从父节点收到的数据通过串口吐出给MCU时,MCU能准备好接收。

这个参数定义模块醒着时,多久向父节点查询一次数据。默认是100ms。

通过理解模块的休眠参数,我们可很好的利用它的性能,灵活安排程序任务,最大少减少不必要的丢包。

附录2:从S2C升级到XBee3需要注意哪些问题

ZigBee 3.0对网络安全有着远比过去更严格的定义,为了适应这一变化,一些默认参数值在XBee3时代有了一些变化,在实际使用中,程序的逻辑应针对这些变化做相应的调整,特别是NJ参数和C8参数。

NJ是一个允许模块开放网络的参数。在S2C时代,它默认值是0xFF,表示任何时候都允许其它模块加入该网络;而在XBee3,它的默认值是0xFE,也就是在上电254秒后,会自动关闭加入功能。因此,必须注意的是,一个更安全的网络,应该是在适时开启加入,也就是一个网络出于安全考虑,应该只在开放部署时,才允许终端加入,应用程序设置有不同的模式(部署模式,开放部署维护模式,封网运作模式……),能更好地维护和管理无线网络。

XBee3使用更新的zigbee协议栈,它计算LQI曲线和S2C不同,如果一个网络内全用XBee3,并不需要设置该参数,默认值就可以。混合组网中,C8不设置的话,S2C会更容易成为router跳点。该参数在1009后引后,所有混合组网的用户,都建议把XBee3升级到1009之后的版本。

在ZigBee 3.0中,子节点挂在父节点下的timeout时间可以自己申报,而不像以前一样由父节点的休眠参数来决定。这样会更灵活一些,在实际应用中,建议ET比休眠参数略大一些。

在XBee3为了支持ZigBee 3.0的默认安全机制,参数中默认使用中心化的信任中心(EO=2),在S2C,默认是分布式的信任中心(EO=0). 在一个网络中,EO的bit1必须相同,以便它们知道如何做密钥交换。由于在S2C中,CE=1代表协调器,由它维护着集中式安全的网络。在ZigBee 3.0引入了分布式网络的概念,CE不再特指协调器。XBee3的Router为了加入之前S2C协调器维护的集中式网络,应该使用EO=2,而非和S2C一样配置为EO=0,该参数值在XBee3中无需更改。

DO在S2C和XBee3有不同的定义,因此大多数情况下您无需更改它,使用默认值即可。

除了NJ参数外,其它一些参数默认值的不同也大多不会影响入网和通讯体验。如果您的应用程序在初始化时写入一些参数,请仔细检查程序是否将不适用的S2C参数值写入XBee3。

ZigBee 3.0在安全机制上做了一些修改。Digi为了保证和S2C老用户有一样的用户体验,在固件上做了一些适应。因此,

标签: 1226s2po接近传感器1270s2po接近传感器1060s2ao接近传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台