目录

如何优化双向通信测试时的丢包率

双向通信时,如果一方发送过于频繁和密集,容易造成另一方过多处于接收状态,导致发送的机会减小,发送的成功率下降,这时需要通过优化来达到更好的平衡效果。通常您可以根据您的数据模型来做一些对比测试,以达到更好的效果。为了了解什么样的配置有利于实际拉距测试,我们可以在实验室的条件下,先做一些基本测试。为了在实验室内测试远距通信的效果,可以采取降功率,不加天线等方式,来模拟实际应用场景。我们需要先在实验室内调试到最好的效果,再去进行拉距测试,以减少实验次数和降低复杂性。

数据模型1

数据模型:P2MP模式(TO=40),A模块40Bytes/40ms, B模100Bytes/120ms,长时间发送得到一组数据

SX固件优化测试

SX固件支持Digimesh,固件版本号是90XX。我们先用默认值来做一组测试:

固件类别 版本号 波特率 A模块配置   B模块配置 A发    B收 B发 A收 A2B丢包率   B2A丢包率
XBP9X-DM 9004 BD=115.1K,BR=110k 广播,MT=3   广播,MT=3 699960   663280    656500 620767   5.24%     5.44%
XBP9X-DM 9004 BD=115.1K,BR=110k 广播,MT=3   单播,RR=4 939400   933202    882800 865943   0.66% 1.9%
XBP9X-DM 9004 BD=115.1K,BR=110k 单播,RR=4   广播,MT=3 951840   924352    894100 852546   2.9%     4.6%
XBP9X-DM 9004 BD=115.1K,BR=110k 单播,RR=4   单播,RR=4 615160   608579    577200 425748   1%     26.2%

从上面的测试结果可以看出:在双向密集发送时,将更密集发送的一方配置为广播,另一方配置为单播,可以有效地降低丢包率。

XTC固件优化测试

XTC固件兼容Xtend协议,采用16bit寻址,因此理论上,在数据包较小的情况下,较有优势。XTC固件中可以配置RN和TT参数,来改善密集发送时的随机延迟和收发切换,对于不熟悉的用户容易造成困扰,这里用测试数据来说明: 我们将A模块的地址设置为MY=A,将B模块的地址设置为MY=B,在实验室里去掉天线,发射功率降低,以模拟拉距测试,分别用单播和广播测试长时间工作的丢包率。

固件类别 版本号 波特率 A模块配置   B模块配置 A发    B收 B发 A收 A2B丢包率   B2A丢包率
XBP9XT 2004 BD=115.1K 广播,MT=3,RN=0,TT=0   广播,MT=3,RN=0,TT=0 602680   517363    565100 303521   14.2%     46.3 %
XBP9XT 2004 BD=115.1K 广播,MT=3,RN=0,TT=0  单播,RR=4,RN=0,TT=0 600640   528889    559900 341771   11.9%     39%
XBP9XT 2004 BD=115.1K 单播,RR=4,RN=0,TT=0   广播,MT=3,RN=0,TT=0 606280   523917    568400 325667   13.6%     42.7%
XBP9XT 2004 BD=115.1K 单播,RR=4,RN=0,TT=0   单播,RR=4,RN=0,TT=0 605800   516975    568000 303132   14.7%     46.6%

上面结果可以看出,如果只改发送模式,也是更密集一方单播,另一方广播效果好,但单纯改动发送模式效果提升并不明显,我们需要对RR和TT进行调整,这两个参数在SX固件中是软件自适应的,在XTC/Xtend中却需手动配置,如果配置不合量,会导致效果很差。实验结果表明,TT,RN和历史数据有关,所以配置后需重上电,TT并无明显效果,主要需更改RN,使RN=1~2。

固件类别 版本号 波特率 A模块配置   B模块配置 A发    B收 B发 A收 A2B丢包率   B2A丢包率
XBP9XT 2004 BD=115.1K 广播,MT=3,RN=2,TT=0   广播,MT=3,RN=2,TT=0 56640   55240    48000 42800   2.5%     10.8%
XBP9XT 2004 BD=115.1K 广播,MT=3,RN=2,TT=0   单播,RR=4,RN=2,TT=0 50480   47530    47800 41188   5.8%     13.8%
XBP9XT 2004 BD=115.1K 单播,RR=4,RN=2,TT=0   广播,MT=3,RN=2,TT=0 47400   42638    41500 28800   10 %     30.6%
XBP9XT 2004 BD=115.1K 单播,RR=4,RN=2,TT=0   单播,RR=4,RN=2,TT=0 45320   43120    42400 38396   4.9%     9.4%

数据模型1结论:采用SX固件,更密集发送方广播模式,另一方单播模式,丢包率最低。

数据模型2

数据模型:双向100Bytes/100ms对发,双向50ms对发测试

SX固件

SX固件双向100B/100ms测试

固件类别 版本号 波特率 A模块配置   B模块配置 A发    B收 B发 A收 A2B丢包率   B2A丢包率
XBP9X-DM 9004 BD=115.1K,BR=110k 广播,MT=3   广播,MT=3 253100   233252    253200 235899   7.8%     6.8%
XBP9X-DM 9004 BD=115.1K,BR=110k 单播,RR=4   广播,MT=3 251100   246600    250800 247947   1.8%     1.14%
XBP9X-DM 9004 BD=115.1K,BR=110k 单播,RR=4   单播,RR=4 256300   256200    256400 256200     0%  0%

SX固件双向100B/50ms测试

固件类别 版本号 波特率 A模块配置   B模块配置 A发    B收 B发 A收 A2B丢包率   B2A丢包率
XBP9X-DM 9004 BD=115.1K,BR=110k 广播,MT=3   广播,MT=3 252400   205541    252700 200712   18.6%     20.6%
XBP9X-DM 9004 BD=115.1K,BR=110k 单播,RR=4   广播,MT=3 285700   261887    285200 227515   8.3%     20.2%
XBP9X-DM 9004 BD=115.1K,BR=110k 单播,RR=4   单播,RR=4 253600   199594    253500 192847   21.3%    23.9%
XBP9X-DM 9004 BD=115.1K,BR=250k 单播,RR=4   单播,RR=4 239200   239100    239100 239100   0%    0%
XBP9X-DM 9004 BD=230.4K,BR=110k 单播,RR=4   单播,RR=4 210000   48585     210100 50094   76.9%   76.0%

从上面看到,BD增大并没有对丢包率有提升,但双向都很密集时,需提升空中波特率,以在信号足够的情况下不丢包,不过需注意的是,增大BR,本身会导致通信距离下降。 建议根据自己的数据模型来做类似测试,以达到优化效果。

XTC固件

XTC 双向100B/50ms优化测试

固件类别 版本号 波特率 A模块配置   B模块配置 A发    B收 B发 A收 A2B丢包率   B2A丢包率
XBP9XT 2004 BD=115.2K,BR=250k,TT=600B,RN=3 单播,RR=4   单播,RR=4 132200   88444    132300 88464   33.1%   33.1%
XBP9XT 2004 BD=115.2K,BR=110k,TT=600B,RN=3 单播,RR=4   广播,MT=3 131700   98296    131700 101164 25.4%   23.2%

从上面可以看出,新版SX的固件完全可以替代XTC,不仅配置简单,而且实现更远的距离和更少的丢包论。在实验室内上述各种条件下,均有零丢包率的配置。

注意Digi XBee PRO SX模块和XBee XTC模块硬件完全相同,您可以订购出厂对应固件的模块,也可以自行用XCTU切换固件。