完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1.zigbee设计选择
尽管应用程序框架简化和抽象了设计过程,但无论设计是否基于应用程序框架,都必须作为实现的一部分做出一些设计决策。 为 zigbee 协议开发应用程序时,以下设计选择适用,包括 zigbee PRO 和 zigbee RF4CE: 单网络或多网络 尽管应用程序框架简化并抽象了设计过程,但无论设计是否基于应用程序框架,一些设计决策都必须作为实现的一部分,因此需要有所考虑。 在开发zigbee协议的应用程序时,以下设计选择适用,包括zigbee PRO和zigbee RF4CE: 单网络或多网络 网络发现/调试方法 设备发现和配置方法 路线建立方法 消息传递方法 NCP和主机应用程序兼容性 1.1 单网络 VS 多网络 单个网络节点是形成或加入一个网络的节点,必须在加入第二个网络之前就要离开该第一个网络。 EmberZNet PRO 4.7引入了节点同时成为多个网络一部分的可能性(EM351不支持此功能)。 注意:对于EmberZNet PRO,多网络支持仅限于两个网络。将来可能会支持两个以上的网络。 到目前为止,任何设备都需要两个物理芯片作为两个网络的一部分。例如,设计为HA(家庭自动化)PAN(个人区域网络)和SE(智能能源)PAN之间的网关的设备将使用第一芯片加入第一网络,使用第二芯片加入第二网络。该应用程序必须管理两个硬件,导致硬件和应用程序设计人员的复杂性增加。 多网络堆栈消除了逻辑PAN和物理芯片之间的1对1映射,将其扩展为n对1映射。具有单个芯片的设备的应用可以被设计为可能运行不同安全配置文件的多个PAN的一部分(例如HA和SE)。使用一个而不是两个芯片可以降低硬件要求并降低硬件和应用程序代码设计的复杂性,从而节省成本。 某些应用仍需要双芯片配置。如果设备需要是两个网络上的协调器或路由器(请参阅下面的详细信息),或者应用程序需要在两个不同的堆栈(如EmberZNet PRO和Silicon Labs Thread)上运行,则需要此配置。 单个芯片上的多网络是通过分享网络上芯片唯一的无线电来实现的。换句话说,多网络节点根据网络调度算法重置网络之间的所有无线电参数。 节点在多个网络上同时活动的事实对应用程序完全透明。 API允许应用程序指定引用一组API调用的网络。类似地,API允许应用程序了解堆栈回调与哪个网络相关。有关双网络API的更多详细信息,请参见文档AN724,单芯片上的多个网络设计。 AFV2和网络协处理器应用框架都提供双网络支持。我们强烈建议在开发双网络应用程序时使用应用程序框架。应用程序框架在降低复杂性方面提供了许多优势,主要与框架如何无缝地管理不同的网络上下文有关。 通常,当需要在特定网络上发送传出分组时,多网络堆栈切换网络或在不同网络上重新调谐无线电。在非传输时间期间,根据栈的内部网络调度算法,无线电总是在其中一个网络上进行调谐。 节点可以在网络上承担的角色存在一些限制。由于期望协调器或路由器节点始终保持无线电监听传入的分组,因此多网络节点可以仅在一个网络上是协调器或路由器,而在其他网络上它必须是困的终端设备。 注意:节点可以在一个网络上承担任何角色,但必须是其他网络上的一个困倦的终端设备。 节点参与的网络可以在不同的信道,不同的PAN ID,不同的短ID,不同的配置文件等上。 但是,多网络节点在其参与的网络中维护相同的EUI64地址。 接下来的部分将更详细地讨论两种基本配置,第一种是多网络节点是一个协调器或路由器,另一个是所有其他网络上的一个困倦的终端设备,第二个是所有网络上的一个困倦的终端设备。 1.1.1 协调器/ 路由设备 + 睡眠设备的网络(s) 作为一个网络上的协调器/路由器和其他网络上的睡眠设备的多网络节点应该将大部分时间花在协调器/路由器网络上。网络调度算法无缝地负责从一个网络切换到另一个网络,使得节点始终在协调器/路由器网络上,除了短时间。特别地,节点临时离开协调器/路由器网络以完成在睡眠设备网络上的某些事务,例如从父节点检索轮询/数据和/或发送到父节点的数据。这些事务通常在应用程序层启动。因此,应用程序设计人员应该设计应用程序,以便节点不会花费太多时间远离协调器/路由器网络。在睡眠设备网络上使多网络节点太忙可以一致地影响节点的吞吐量,并且通常可以延迟通过协调器/路由器网络上的节点路由的所有流量。 在文档AN724“单片机上的多个网络设计”中,Silicon Labs提供了从广泛实验中获得的数据,这些实验显示了一个典型的轮询终端设备与其父设备之间的一些典型轮询和数据事务的平均持续时间。该文档还详细研究了睡眠终端设备网络上的活动如何影响协调器/路由器网络上的吞吐量。利用这些数据,您可以根据多网络节点在休眠网络上处理的流量以及此流量如何影响协调器/路由器网络的性能,进行有根据的设计选择。 请注意,即使节点在大多数网络上表现为睡眠设备,如果它也是任何一个网络上的协调器/路由器,它将无法通过暂时关闭无线电来节省能量(睡眠模式)。 1.1.2 多个睡眠终端设备网络 在所有网络上作为睡眠设备的多网络节点不需要始终保持在线。 节点可以在每个网络上以不同的轮询速率进行轮询。 只要任何网络上没有活动,节点就能够继续休眠。 1.2 网络发现/调试 调试是指将设备引入网络的过程。如果您已阅读文档UG103.2:应用程序开发基础知识:Zigbee中关于网络加入过程的讨论,您可能还记得,除非设备充当PAN的协调器,否则它必须请求加入现有网络,并且加入设备必须扫描一个或多个通道以定位可用网络。但是,由于网络协调器有多个无线电信道可供选择形成其PAN,并且由于网络的PAN ID和扩展PAN通常是随机的,因此您的应用通常需要一些智能或外部机制来协助网络发现和调试。任务包括帮助确保设备可以加入正确的网络或从某个外部源接收所需的网络设置,并确保在错误连接错误的网络或正在迁移设备时可以从网络中删除设备到新安装。同样,如果您正在设计可充当zigbee PAN协调器的设备,则必须考虑如何为希望进入协调器网络的设备简化网络选择过程。 注意:如果您正在设计用于官方公共zigbee PRO应用程序配置文件(例如家庭自动化)的应用程序,Silicon Labs建议您查看相应zigbee应用程序配置文件规范的最新发布版本(从http:/获得) /www.zigbee.org)针对您的目标设计,确保其符合任何特定于配置文件的要求或调试的最佳实践。 1.2.1 Simplifying Network Selection through Extended PAN ID or Channel Mask 尽管PAN协调器的扩展PAN ID选择通常是随机的,但是专有网络部署可以使用扩展PAN ID的特定位掩码作为增强用于加入设备的网络选择的方式。在该模型中,协调器在该商定的扩展PAN ID掩码内形成网络,使得加入设备可以扫描用于打开PAN的信道并且限制在配置的扩展PAN ID范围之外的那些。然而,这种增强网络选择的方法对于希望在公共zigbee PRO配置文件上与来自各种制造商的设备进行互操作的设备是不可行的。由于公共zigbee PRO应用程序配置文件通常不限制其扩展PAN ID选择,因此另一个供应商的设备可能会占用您选择的限制位掩码之外的扩展PAN ID。 类似地,尽管2.4GHz zigbee网络可以占用16个不同信道中的任何一个,但是加入设备可能能够限制其信道掩模进行扫描。预期的网络可能是专有设计,其中协调器选择将其信道选择限制在预先配置的掩码内的仅几个信道。或者,所包括的设备的一个或多个端点所基于的应用简档可能需要将网络的信道选择约束到特定的一组信道。例如,zigbee PRO SE和HA应用程序配置文件都要求在将网络形成到最多通道之外时优先考虑 常用的Wi-Fi信道分配(IEEE802.11范围内的信道1,6和11),允许加入设备将其信道扫描限制在zigbee信道11,14,15,19,20,24和25。请注意,AFV2使用网络查找插件(如果已启用)在连接或形成网络时配置设备的通道掩码。如果使用Application Builder配置应用程序,请确保在Network Find插件的配置对话框中查看Channel Mask和其他无线电参数设置。如果您没有使用网络查找插件或您的应用程序不是基于AFV2,您的应用程序代码需要使用自己的方法来确保在扫描,连接或形成网络期间强制执行首选通道掩码和任何其他首选网络参数。 1.2.2 允许入网的操作 希望加入网络的设备通常只考虑那些对新设备开放的PAN(换句话说,它们允许加入),并且设备不得永久设置permitJoining标志。因此,当需要将新设备添加到网络时,设备(尤其是PAN协调器)必须确保它们能够在本地启用permitJoining标志至少一段有限的时间。这种启用通常必须来自某些外部触发,这取决于设备物理特性。通常设备可以使用按钮或串行接口,这通常是启用permitJoining的方法。但是,如果设备没有外部输入作为触发条件,则必须考虑其他方法。一种可能性是在首次启动时让设备启用permitJoining一段有限的时间。另一种选择是当节点通过空中接收特定消息时使permitJoining被启用。 关于后一种方法,虽然应用程序可以通过本地调用emberPermitJoining()API或permitJoining EZSP命令对其自己的permitJoining状态进行本地更改,但也可以通过该方法发送标准请求。 ZDO(zigbee设备对象),由栈本身实现,到zigbee节点,要求它改变其允许连接状态。当通过无线方式接收应用程序配置文件0x0000(zigbee设备配置文件)上的端点0(ZDO)的ZDO许可连接请求时,堆栈会自动更改设备上的permitJoining状态。该请求的单播或广播提供了分别针对一些或所有设备远程地改变网络的加入许可的标准方式。有关实现此请求的示例代码,请参阅EmberZNet PRO安装中“app / util / zigbee-framework / zigbee-device-common.h”文件中的emberPermitJoiningRequest()API。 一旦网络包含允许加入的加入设备范围内的至少一个节点,加入设备应该能够通过堆栈的本机emberNetworkFoundHandler()/ ezspNetworkFoundHandler()回调或其提供的emberJoinableNetworkFoundHandler()回调将其检测为可加入。在app / util / common / form-and-join.h中找到的表单和连接实用程序,由AFV2体系结构使用。 (有关推荐的实施,请参阅AFV2的“网络查找”插件或“网络指导”插件。) 1.2.3 避免在调试过程中出现意外后果 一旦您需要入网设备找到可加入的网络并尝试加入它,应用程序或安装程序必须确定它是否是“正确的”网络,这意味着预期的网络而不是其他任意PAN,恰好在范围内并允许入网。涉及获取PAN的当前NWK(网络)层加密密钥的加入和后续认证过程可能以各种方式失败,即使在加入预期网络时也是如此。因此,永久排除尝试加入但加入/验证失败的网络不一定是最佳做法。同样,根据加入设备的安全期望,它可能会成功加入一个不正确的网络,因此,只是因为堆栈发送EMBER_NETWORK_UP信号而永久地进入网络,表明设备已成功加入并验证到网络中,可能还不够。确定尝试的网络是否正确的适当标准因您的设计要求而异,尤其是在涉及安全性的情况下。 如果您正在设计用于zigbee PRO SE(智能能源)网络的设备,则在设备成功进入网络之前,需要进行复杂的预授权过程。有关更多信息,请参阅文档《UG103.5:应用程序开发基础知识:安全性》。假设在目标网络中已满足预授权的要求,则实际上不可能加入错误的网络,因为如果加密设备未加密或使用不同的APS加密,则加入设备将不接受NWK密钥传送(应用程序支持) )链接键。 但是,即使使用SE安全模型,加入节点仍可能需要考虑不可靠链接或其他通信问题(尤其是涉及PAN的信任中心)可能导致从信任中心传递NWK密钥的事实。即使在正确的网络中也会失败。因此,如果检测到可连接网络,但后续加入和身份验证失败,并且EBERStatu为EMBER_NO_NETWORK_KEY_RECEIVED(意味着NWK密钥未成功到达),则EMBER_JOIN_FAILED(这可能表示未成功接收到加入的关联响应)或者EMBER_NO_BEACONS(意味着所选网络上的关联请求未能得到答案),您可能希望立即或稍后再次在该PAN上重试加入过程,以防第一次尝试因某些暂时中断而失败。如果加入或身份验证过程在所选PAN上继续失败,请考虑尝试加入其他可加入网络,前提是您的设备可以使用其中一个,因为失败可能表明这只是错误的网络。 在使用HA(家庭自动化)安全模型的网络中,该安全模型具有用于传递随机生成的NWK密钥的公共的,预配置的APS链路密钥,如果在其中存在多个可连接网络,则存在意外加入错误网络的重大风险。 加入设备的范围,因为这些网络中的安全设置几乎所有HA网络是通用的,而不是每个都可以进入节点的。请注意,HA网络可能使用不同的预配置链接密码,但必须要成功的方式猫在加入网络之前传送到新节点。因此,你应该应用注意程序设计,以确保进入PAN,它就是期望的。的某个“加入和验证”过程,这意味着发送一个明确定义的消息无线,它有希望响应以指示加入正确的网络;此响应可能是另一个无线,或者可能是系统另一部分的某个人种可检测行为。 可能描述了每个方法的例子,从新节点加入候选网络开始: [tr]触发EventSuccessException[/tr][tr][/tr]示例 1 节点发送ZDO匹配描述符请求广播,获取当前网络中支持该集群的结点从多个结点接收的到 ZDO Match Descriptor Response received没有匹配到相关的集群 警告: 由于此验证过程仅检测到支持电池群集的设备,因此当加入节点已进入具有与预期网络类型相同的安全模型和相同类型的群集功能的网络时,它可以成功。器可以与车库门连接任意网络以控制但不是预期的。如果发生这种情况,系统必须以某种方式检测条件并指示新节点离开当前网络并找到不同的网络。 只有当至少一个具有匹配服务的其他节点已加入网络时,此过程可能会成功。这引入了必须连接设备的订单的调试要求,必须将其传达给安装人员。 示例 2 步骤1:节点向网络协调器单播ZDO匹配请求发送(节点ID 00000),尝试匹配支持ZCL寻找服务器的设备。 步骤2:节点向匹配查找上的协商器发送ZCL识别。节点从协调器接收ZDO Match Descriptor Response 协调器以某种可检测的方式向系统标识自己的。。结点没收到任何相应。 未在预期时间内收到Identification. Caveats: 除了系统所需的指令之外,此方法还取决于节点何时可以访问协调器,通常情况是这样,因为协调器通常履行信任中心的角色,以便为每个新节点提供集中认证。 这种方法还需要在连接节点上提供一些系统可支持的方法,以使其能够更改当前网络。 Example 3 PAN的信任中心接收联接设备的TrustCenterJoinHandler回调PAN的信任中心通过信任中心或某些专用用户界面(如联网PC)上的音视频操作指示来通知系统。系统没有得到预期的指示; Caveats: 此示例不要求加入节点的应用程序发送任何额外消息,这极大地简化了加入节点应用程序的调试设计。但是,它不依赖于PAN信任中心设备的确定性和功能。使用此方法需要与系统的预期信任中心(协调器)节点的设计者合作。 选择上述方法之一或其中的一些变体可能取决于系统中设备的功能,多厂商互操作性在设计中的重要性,调试过程的预期延迟以及复杂程度。 Zigbee在ZCL中提供调试集群,便于将某些调试参数无线安装到设备中。但是,在撰写本文时,HA和SE配置文件都不需要在其设备类型的客户端或服务器端实现此集群,也不会将其用作测试作为这些配置文件的zigbee互操作性测试事件的一部分。使用调试集群仅在网络中可行,在这些网络中,您可以确保加入节点对调试集群具有服务器端支持,并且系统中至少有一个设备具有客户端支持以发送调试命令。此外,由于调试群集依赖于zigbee消息传递,这需要首先进入网络,因此您需要设计一种方案,让您的设备加入临时调试网络,其中存在可提供必要参数的调试工具。虽然应用程序框架允许使用ZCL的调试集群,但如果需要,该集群的实现是应用程序开发人员的责任。 1.2.4 离网机制 许多设计人员仔细考虑网络选择过程,然后忽略为系统提供从当前网络卸载设备然后将其安装到新网络的方法。如上面的调试示例所示,通常需要某种方式让设备手动或自动启动emberLeaveNetwork()操作,并在l离网后找到新网络,以便于在其预期内成功加入和重新加入zigbee设备网络。 如果不能在加入人造的硬件或中实现,那么由自动执行的 ZDO 的离开请求机制可能是一种软件的替代方案,因为它允许 PAN 中的另一个节点,例如网络的控制器,用于指示设备离开网络。有关实现ZDO Leave Request命令的示例代码,请参见EmberZNet PRO安装中“app/util/zigbee-framework/zigbee-device-common.h”文件中的emberLeaveRequest()API。 |
|
|
|
只有小组成员才能发言,加入小组>>
4668个成员聚集在这个小组
加入小组3367 浏览 0 评论
航顺(HK)联合电子发烧友推出“近距离体验高性能Cortex-M3,免费申请价值288元评估板
4297 浏览 1 评论
4328 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-24 19:20 , Processed in 0.534119 second(s), Total 74, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号