差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
digi:rf-wireless:xbee:zigbee:antai-dongtaitiaojie [2021/07/06 11:51] robindigi:rf-wireless:xbee:zigbee:antai-dongtaitiaojie [2021/07/07 14:14] (当前版本) robin
行 1: 行 1:
-==== ACK Disable量化测试结果和动态调节建议====+==== 动态调节数据上报时间间隔的方案建议====
  
 **网络数据上报时间调节方法:(20210706修订)** **网络数据上报时间调节方法:(20210706修订)**
  
-RRI(0xA1)每十分钟个数算是一种网络拥堵指标。RRI的增减趋势称为busyIndex,每十分钟统计一次值并和之前值比大小,如果大则busyIndex+1, 如果小则busyIndex-1,当busyIndex大于N时,广播节指标K-Interval+2/D-Interval+2 ,当busyInex小于-N时,广播调节指标K-Interval-2/D-Interval-2。 这里K-Interval和D-Interval分别代表心跳和数据的时间间隔(以秒计)。N为个经验值初始建议设置为5~10之间,建议把N放在上位机上设置+本方案主要在协器端程序做些改动原路由器程序无需变动
  
-BusyIndex需要设置一个上限和下限,到达上下限时清0以防止这个变量溢出。也可以就以正负N为上下限。当busyIndex到达上限时(一般不可能),同样广播调节指标K-Interval+2/D-Interval+2,当busyIndex到达下限时(网络好有可能,同样广播调节指标K-Interval-2/D-Interval-2。心跳和数据间隔也设置一个最小值,以防止溢出,比如K-IntervalD-Interval的下限都为20秒,小于20秒就不再改小了+实施本方案之前是静态方案其中K-IntervalD-Interval分别代表心跳和数据的间间隔以秒计)。上位机可设置心跳和数据包的上报时间间隔,比如41:80,这里心跳上报时间间隔K-Interval=41秒,数据上报时间间隔D-Interval=80秒,这个可作为默认基础值,在上位机设置这两个值后,会广播给下面支架
  
-默认上电的调节指标前测试下来41/80可作为200节点的默认指。其它网络大小对应的默认指标待测,也可以就用这个41/80模型因为反正可以态调节。考虑到外部干扰相同位置不同时间下的指标阀值并不一定会相同这也就是为什么需要动态调节数据上报频次的原因,它可以在任何时候把网络拥堵修复到可自愈的状态+动态调节目标是取代手动设置实现网络拥堵时扩大上报间隙网络畅通减少上了以更快获取数据。
  
-考虑到RRI网络已经严重塞时趋势并不一定有变化,因此还要引入另一个高权值变量,即CTS变高的flag10分钟内两次检查到CTS变高,和BusyIndex超N作一样应对处理即广播调节指标K-Interval+2/D-Interval+2+RRI(0xA1)每十分钟个数RRInumber算是一种网络指标本方案以10分钟内的RRI个数和CTS个数作为指标即RRInumberCTSnumber, 其中RRInumber不为直接判断网络拥堵依据,而是作为另个趋势数据busyIndex的参考值而CTSnumber直接作为网络拥堵的指标。
  
-综上: 程序10分钟统计读取RRI个数或CTS变高个数,如果CTS变高达两次,心路数据上报时间各扩2秒。如果RRI连续5次为增量即BusyIndex累计到5同样心跳数据上报间隔时间各扩大2秒,直到上限不到增。 反之如果RRI是减量的即BusyIndex为负则心跳数据上报时间间隔各减少2直到下限不再减+RRI的增减趋势称为busyIndex,分钟统计一次RRInumber值并和之前值比大小,如果大则busyIndex+1, 如果小则busyIndex-1当busyIndex累计到N次就扩大上报时间间隙2秒,广播调节指标K-Interval+2/D-Interval+2并对busyIndex复位清0;当busyInex小于-N时就缩短上报间隙,此广播调节指标K-Interval-2/D-Interval-2,并对busyIdex复位清0。 N为一个经验值,初始建议设置为5~10之间,建议把N放在上位机上设置
  
-**原理分析**+BusyIndex需要设置一个上限和下限,到达上下限时清0,以防止这个变量溢出。也可以就以正负N为上下限。当busyIndex到达上限时(一般不可能),同样广播调节指标K-Interval+2/D-Interval+2,当busyIndex到达下限时(网络好有可能),同样广播调节指标K-Interval-2/D-Interval-2。心跳和数据间隔也设置一个最小值,以防止溢出,比如K-Interval或D-Interval的下限都为20秒,小于20秒就不再改小了。
  
-综合几天测试的结果得出一些结论:网络拥堵时,由于协调器发过不来,实际上它发送负荷很大,以致缓冲区会慢慢增大到溢出状态此时见CTS拉高,使用流控来防止缓冲区溢出当发送负荷大时发送优先权也适当提高了,此时下面上发数据更容易发生碰撞,从而导致更不容易发通,此时MTO变多,且协调器收到的RRI会变多。常见的NETWORK ACK Failure和TX Failure大多是这个原因。实测下来,发送选项禁用ACK时,导至重传多次发生并且接收端收到数据包超过发送端些包在网络拥者时大多没有意义,反而进一步恶化网络拥堵状况。为此时协调器应答包是入在发送缓冲区末端即便有应答,也是很久之后,和10秒握手的机制不匹配。路由器收到这包理论上也是不会认为是之前应答,但不排除有时刚好下次发送的时候收到,这也就是大网络拥堵下你们没有频繁退网事件发生,只有偶发退网事件的原因+默认上电的调节指标目前测试下来41/80可作为200节点默认指标。其它网络大小对应的默认指标待测也可就用这个41/80模型因为反正以动态调节考虑到外部干扰相同位置不同的指标阀值并不一定相同,这也就为什么需要动态调节数据上报频次因,它可以在任何时候网络拥堵修复到可自愈状态
  
 +考虑到RRI在网络已经严重堵塞时趋势并不一定有变化,因此还要引入另一个高权值变量,即CTS变高的次数CTSnumber。每当CTS变高,记录CTSnumbr+1,当10分钟内有N次检查到CTS变高,和BusyIndex超N作一样应对处理,即CTSnumber大于N时,广播调节指标K-Interval+2/D-Interval+2。
 +{{:digi:rf-wireless:xbee:zigbee:pasted:20210707-141411.png}}
  
 +综上: 程序每10分钟统计读取RRI个数或CTS变高个数,如果CTS变高达N次,心路数据上报时间各扩大2秒。如果RRI连续N次为增量,即BusyIndex累计到N,同样心跳数据上报间隔时间各扩大2秒,直到上限不到增。 反之如果RRI是减量的,即BusyIndex为负,则心跳数据上报时间间隔各减少2秒,直到下限不再减。间隔变动后,CTSnumber和BusyIndex复位为0。CTSnumber和BusyIndex取或就可以了,不必重复比较。
  
-**附:07-01测试结**+上位机必须可以设置N的值,以便灵活适当不同场景,如N在上位机没有设置,可用默认值5. N可以作为BusyINdex或CTSnumber的上限。
  
-今天主要做了Disable ACK的测试,效果远好于默认开ACK的方式。考虑到你们昨天晚上有临时开一下ACK效果不佳的情况,很可能是种意外,可进一步观察。\\ +**原理分析**
-测试的目标是观察RRI指标是否可以在某种调节模式下变好,也即RRI不会越来越差,这样CTS才有可能避免拉高。\\+
  
-测试结果和指标\\ +综合前几天测试结果得出一些结论网络拥堵时由于协调器发过不来实际它发送负荷很大以致缓冲区会慢慢增大到溢出状态此时可见CTS拉高,使用流控来防止缓冲区溢出当发送负荷大时,发送优先权也适当提高了,此时下面上发数据更容易发生碰撞从而导致更不容易发通,此时MTO变多,并且协调器收到的RRI会变多。NETWORK ACK FailureTX Failure大多是这个原因下来,发送选项不禁用ACK,会导至重传多次发生并且接收端收到数据包超过发送端,而包在网络拥者时大多是没有意义反而进步恶化网络拥堵状况因为此协调器应答包是入发送缓冲区末端所以即便应答也是很久之,和10秒握手机制不匹配。路由器收到这包论上也是不会认为是之前应答但不排除有时刚好在下次发送的时候收到也就是大网络拥堵下你们没有频繁退网的事件发生,只有偶发退网事件的原因
-共191个节点Disable ACK在35/50的指标下工作正常,也就是35秒心跳50秒数据这个报间隔。在40/80对RRI的抓取结果显示其RRI每分钟个数为284效果比之前好一倍数据上线率来看在35/50上也是非松一起观察,未记录) +
- +
- +
-**抓包指标分析** +
-14:20改为41/80, 14:29记录15分钟 \\ +
-间:14:29:07~14:44:37, 共15分30秒 =930S  \\ +
-测得0xA1=5134  \\ +
-0xA1(MTO_AR)=5*191=955  \\ +
-实际0xA1=5134-955=4179  \\ +
-RRI per second=4.49  \\ +
-RRI per minute = 269  \\ +
- +
-**个抓包在更改后不到10分钟开始,因此意义不大过30分钟再抓**  \\ +
- +
-测试2:改后一小\\ +
-测试时间:15:26:08~15:41:08, 共15分 =900S  \\ +
-测得0xA1=5207  \\ +
-0xA1(MTO_AR)=5*191=955  \\ +
-实际0xA1=5207-900=4307  \\ +
-RRI per second=4.78  \\ +
-RRI per minute = 287  \\ +
- +
-RRI上电半小时和1小时后,有些增幅需要再测一次,如果趋势保持,说明稳态没法消除协调器要发数据大于能处的数据需要进行减少密集发送的行动,也就是间隔。 \\+
  
-测试3:  注:有人到协调器边上和松讨论,可视为平时正常小干扰 \\ 
-测试时间:16:01:20~16:17:32, 共16分12秒 =972S  \\ 
-测得0xA1=5556  \\ 
-0xA1(MTO_AR)=5*191=955  \\ 
-实际0xA1=5556-955=4601  \\ 
-RRI per second=4.73  \\ 
-RRI per minute = 284  \\ 
  
-可见,在有外部小干扰时,RRI指标仍减少,也就是网络拥堵不会进一步恶化,流控CTS事件不会发生。