APS
相关结果约186条在ember desktop软件配置默认的睡眠终端设备项目定义如下,对于睡眠终端设备,是否需要路由发送地址确认终端设备是否在网?
必须建立ember_aps_option_enable_route_discovery到ember_af_default_aps_options,路由设备将初始路由发现修复网络,如果没有,路线不做任何修复网络。只提供包和超时,发送错误。
Silicon labs 的Zigbee EmberZNet堆栈重试如何工作?
APS 层发送消息至 NWK 层: 发送任何数据包之前 NWK 告诉 MAC 层开始传送并启动定时器: MAC 等待 0 至 7 个退避周期(每个周期 320us)内任意一段时间,然后检查 CCA。 如果此检查失败,则 MAC 等待 0 至 15 个退避周期内任意一段时间,然后检查 CCA。 如果此检查失败,则 MAC 等待 0 至 31 个退避周期内任意一段时间,然后检查 CCA。 如果此检查失败,则 MAC 等待 0 至 31 个退避周期内任意一段时间,然后检查 CCA。 如果此检查失败,则 MAC 等待 0 至 31 个退避周期内任意一段时间,然后检查 CCA。 如果这些 CCA 检查中任何一次检查成功: MAC 传送数据包并等待最长 54 个符号 (864us) 以收到应答。 如果收到 ACK,则 MAC 向 NWK 层报告成功 - 完成。 如果数据包是一个广播,则无需 ACK,MAC 向 NWK 层报告成功 - 完成。 如果没有收到 ACK,MAC 再重试整个 CSMA 传送过程最多三次。 如果这四次尝试中没有一次收到 ACK,MAC 向 NWK 层报告失败。 NWK 层等待 16 至 48 毫秒的随机时间,然后告诉 MAC 层再次从整个过程的开头开始再次传送。 NWK 层将不断尝试直到“成功”或计时器达到 500ms。如果达到 500ms,则向 APS 层报告失败。 APS 层等待 (100ms * EMBER_MAX_HOPS)/2(或 50ms * EMBER_MAX_HOPS),然后告诉 NWK 层重试。 APS 层将尝试三次(首次尝试再加两次重试)之后才认定消息传送彻底失败。
发布时间 : 2025-03-03
车用电源模块项目,之前有在用APS UB-511这款单组分密封胶,表干时间8~20min;想问问贵司有没有表干时间短一些的物料推荐?
推荐您用德聚的N-Sil 8136单组分密封胶,其表干时间3-15min,表干时间短,规格书:https://www.sekorm.com/doc/2923321.html
SiliconLabs ZigBee 的ZED程序里有没有清除发送缓存的函数,例如设备Rejoin成功时会把上一次未发送成功的数据发送出去,实际上它已经过期了,我们能否重加网成功后清除之前的发送缓存,而避免旧的数据上报。
你好。如果设备处于掉线状态,你调用的send命令会返回失败。如果不希望rejoin成功后再次发送缓存数据,建议你尝试关闭 aps ack 功能。请参考 【经验】EmberZnet协议栈中如何关闭ZigBee工程中的APS ACK? https://www.sekorm.com/news/77098617.html
我在EFR32MG21平台下做zigbee通信,一个协调器连接50个router,当同时上电时,协调器端有路由恢复及业务逻辑在内的大量消息下发,导致发送函数emAfSend() 单播时返回 0x18(there is no buffer),组播返回0xA1(A message cannot be sent because the network is currently overloaded). 我想请教一下 1、当问题出现时,网络下行已经彻底瘫痪,任何数据都不能发送,如何从这种状态中恢复? 2、我能否知道何时发生了路由恢复事件? 若有其他好的建议,也可说明。
你好,请根据实际节点数量适当增大 APS Unicast Message Queue Size,Broadcast Table Size ;设备上电后由于 link status/neighbor table,route table 和 source routing 等的建立需要一定时间,故无法马上成功发送数据;通常我们需要等待一定的时间这些数据陆续建立后再发数据;
APS推荐品牌:
Zigbee,A单播到B,A会先查邻居表内是否有B邻居,如果邻居表中有B,则直接发送,如果邻居表中没有B,则A查看route table,如果有B作为目标地址的那条路由,则取出该路由的下一跳(next hop),查找该下一跳在不在A的邻居表中,在,则按route table下一跳发送。 问题:A的路由表 route table取出下一跳,如果该下一跳并不在邻居表中,(即邻居表中没有该节点,但路由表中下一跳有),这条指令还能发送吗?@_世强
你好。邻居表中没有下一跳的地址是否会影响到这包数据发送取决于路由发送机制,目前没有确切说明;可以确定的是这种情况下应答或aps ack是无法收到了,会因为error触发route request 建立新的路径。
Zigbee设备EFR32MG21A020F768设备运行host-ncp的异常问题 所用sdk为emberznet 6.9.1,编译host-ncp运行,大概运行了一个月,出现以下两个比较奇怪的问题,请教各位工程师: 1.出现过一次,panID在运行过程中,变为了0xFFFF且不会自动恢复,此时所有子设备都与网关通讯不上。手动重启网关后,网络pamID自动恢复为以前的ID,所有子设备通讯恢复正常。 2.出现过一次,网关无法接入任何设备,通过抓包可以看到,是由于子设备入网过程中,request key多次后,网关无回复,导致自身主动离网。已经尝试过多种子设备都有该问题,且该情况在重启应用后仍然保持,无法解决。附图如下:
1.运行过程中PANID变以0XFFFF,复位后又可以正常工作说明NVM3中的数据没有改变或出错,应该是RAM的内容在运行过程中出错了。2.发request key后的抓包要再查一下,看MAC与APS的应答是否有发出来?还有出现这个问题时CCA FAILURE的值是多少?打印一下COUNTERS查一下。
zigbee开网250秒,前面180秒左右设备入网都正常,后面几十秒入网发现入不了网,抓包和正常入网流程对比,发现设备在关联响应后开始传输秘钥,传输秘钥这包数据包完整性核查失败( corrupt :aps MIC check failed)我这有抓包,不知道抓包怎么上传
你好,ZigBee3.0的开启一次允许入网时间就是180S,超过180S后网关会关闭允许入网。如需常开网功能,网关中可以每隔170S调用一次开启入网API。
当我尝试修改/删除Silicon Labs Zigbee协议栈EmberZNet中的绑定或地址表条目时,为什么会获得EMBER_BINDING_IS_ACTIVE或EMBER_ADDRESS_TABLE_ENTRY_IS_ACTIVE状态?我怎么能绕过这个?
尝试通过EmberZNet或EZSP软件接口修改或删除绑定或地址表条目时,有时可能会遇到EMBER_ADDRESS_TABLE_ENTRY_IS_ACTIVE(0x76)或EMBER_BINDING_IS_ACTIVE(0x75)的EmberStatus结果,并且请求的操作将不会继续。此状态表示相关的表条目仍在由堆栈主动使用。更具体地说:“活动”条目(适用于EmberZNet中的绑定表条目和地址表条目)是节点在APS重试队列中等待该发送方的待处理消息(等待APS ACK或传递超时)的条目。在堆栈使用这些条目时,用户无法更改这些条目。相反,用户需要通过迭代相关表并查找未使用的条目(类型为== EMBER_UNUSED_BINDING的EmberBindingTableEntry或具有远程节点ID的地址表条目)来查找当前未使用的条目。 EMBER_TABLE_ENTRY_UNUSED_NODE_ID)或非活动条目,其中一个为emberAddressTableEntryIsActive(index)== FALSE。如果没有足够的可用条目,请注意可以增加地址表的大小(通过AppBuilder中的地址表插件作为一部分) EmberZNet 5.1及更高版本,或者通过AppBuilder的“包含”选项卡的“宏”部分中的EMBER_ADDRESS_TABLE_SIZE的直接定义,可以根据用户认为需要处理的未完成目标数量来获得更多可用条目。绑定表也可以通过AppBuilder增加(在“堆栈配置”选项卡中或通过“包含”选项卡显式定义EMBER_BINDING_TABLE_SIZE。)用户还需要考虑将EMBER_APS_UNICAST_MESSAGE_COUNT增加到至少与上述地址表大小或绑定一样高。表大小,因为它设置堆栈可以处理的未完成APS交付的最大数量,这至少与未完成目标的数量一样多。用户可以使用绑定表或地址条目来跟踪目标,其中绑定表条目非易失性保留(因此对地址表的RAM影响较小,当前缓存的节点ID仅涉及2个字节的RAM)。绑定表条目还允许有关每个条目的更多信息(本地/远程端点,群集ID和组播组绑定的可能性)。
zigbee host-ncp 发送失败 host中调用void ezspMessageSentHandler(EmberOutgoingMessageType type,uint16_t indexOrDestination,EmberApsFrame *apsFrame,uint8_t messageTag,EmberStatus status,uint8_t messageLength,uint8_t *messageContents) 发送数据,返回EMBER_DELIVERY_FAILED = 0x66错误。请问数据没发出,错误返回后,数据会再重发吗?在哪一层重发?
调用ezspMessageSentHandler()函数发送数据返回EMBER_DELIVERY_FAILED = 0x66错误后,数据不会重发,需要在应用层重新调用API发送数据。有可能是以下原因导致出现0x66错误:1、主机在短时间发送多条消息导致缓存区溢出而报错;2、主机将消息发送给休眠设备,但是休眠设备没有在规定时间内醒来轮询数据,导致消息超时报错;3、 消息被发送到空中,但没有得到APS层的确认。可以通过捉包看下出现0x66错误时空中是否能捉到相关的数据。
Silicon Labs是否有关于 ZigBee 网络性能的任何形式的白皮书或研究?
有,Silicon Labs的相关研究详细介绍了 Ember 在不同条件下对 ZigBee 网络性能的测试和分析的结果。这些测试结果检查如下问题:1.系统单芯片解决方案(例如 EM250 或 EM35x SoC 或网络协处理器 [NCP] 解决方案,这里的所有堆栈均位于一个芯片上)的性能与一个独立收发器解决方案(例如 AVR MCU + EM2420 RFIC)的性能相比如何?2.安全性的增加对性能有何影响? (注意:由于进行了本项研究,Ember 的 SoC 平台已显著提高安全引擎的速度,而像 2420 这样的 RFIC 与过去的行为保持一致。)3.在大规模测试中,关联(加入)的可靠性如何?4.在 ZigBee 中何种吞吐量是合理的?(实际与理论值对比)5.跳数对吞吐量有何影响?6.数据包间延迟对吞吐量有何影响?7.有效荷载大小对吞吐量有何影响?8.增加 APS 重试(端到端 ACK)对吞吐量有何影响? 虽然自从这份报告发布后堆栈发生了变化,很多关于性能的基本原则目前仍然适用,所以这项研究仍然是相关的。Silicon Labs 希望在不久的将来在更现代的 EmberZNet 堆栈版本重复此测试。
使用Silicon Labs的EFR32MG开发ZigBee产品,请问如何关闭APS ACK?
使用Silicon Labs的EFR32MG开发ZigBee产品,在EmberZnet协议栈工程的config.h文件中,去掉宏定义EMBER_AF_DEFAULT_APS_OPTIONS的EMBER_APS_OPTION_RETRY值,即关闭了APS ACK。