基于P450超宽带模块构建测距通信同步网络
一、测试目的
根据国内某知名高校的团队提议,搭建由若干节点组成的测距与通信网络。需求如下:
1、该网络中任意两节点可进行测距,距离数据在网络内共享,即任意其他节点均可获得已完成的距离数据。
2、同时,节点需具备通信数传功能,将外部输入的数据通过UWB信号广播至网络,其他节点能够获取该数据并与距离数据通过物理接口输出至单片机等外部处理器。
3、各节点需具备同步机制,方便对距离数据和通信数据进行统一处理。
二、测试工具
4套P450超宽带模块,1台电脑含上位机软件,数据线若干。
三、功能原理
1、测距:TW-TOF(Two-Way Time-of-Flight)双向飞行时间
模块A向模块B发送一个“测距请求”数据包,并记录发送时间Ta1。模块B接收到该信号后,经过短暂的处理后会向模块A发送一个“测距响应”数据包,该数据包内含有模块B接收请求信号和发送响应信号的时间,Tb1和Tb2。当模块A接收到该响应信号后,会记录下接收时间Ta1。由此,可以算出信号往返的时间并进一步算出距离。
2、通信
由使用者自定义的字符即待传输信息,将会被模块自动编码然后通过UWB信号的数据包进行传输,直到被另一端接收并解析。通信数传功能是单向的。因此在上图测距原理模型中,无论是测距请求数据包还是测距响应数据包,都可以携带传输信息,区别仅仅是方向不同。可以看出,通信功能通常是与测距功能一起进行的,当然在某些场景下也可单独实现。
四、测试思路
1、通过对4套P450模块的组网配置,让各节点能够完成测距与测距循环。然后让每个节点分别与电脑连接,查看距离获取情况。同时将各节点的输出数据进行对比,查找同步机制。
2、基于上位机软件带有的字符输入与显示窗口,以及日志记录功能中对字符信息的自动解析,查看P450模块在通信数传方面的性能。同时观察同步机制。
五、测试步骤
1、将4个P450模块分别命名为100/101/102/103,设置为TDMA组网协议,并按如下组网信息配置为csv文件:
上述配置中设置了6组“测距对”中的请求端和响应端,并将它们的测距顺序、每组测距占用时间(Manual Time)也进行了设定。这就是单次循环的情况。
将该csv文件分别载入模块中,软件界面显示如下:
2、点击DATA按钮,打开字符输入窗口。将Max Size设置为100字节,该设置表示每次测距时测距数据包内预设的最大数据传输容量是100字节。
该参数的设置范围是0~900,数值越大,传输所需时间越长。可结合上述几张图来看,当MaxSize设置为100时(同时PII设为5),组网配置中MinimumTime为13.341ms。
3、上述两步完成后,测距通信网络即可正常运行。
4、将电脑与所有模块依次连接,打开上位机软件,分别记录一段日志文件。
5、打开日志文件,分析文件中的数据。
六、测试结果
1、数据指令类型说明
根据数据输出主体与实际测距主体的一致性,测距数据主要分为两种:当前模块作为请求端时的测距数据,对应API指令为RCM_FULL_RANGE_INFO (0x0201);当前模块不是请求端,可能是响应端或者与测距数据完全不相关,比如从模块A中获取的“B-C”距离:当模块B对其他模块发送测距请求时会将“B-C”距离放入该数据包中,并广播到所有其他模块中,于是模块A就得到了B-C距离,对应API指令为RCM_ECHOED_RANGE_INFO (0x0204)。
2、日志文件记录情况
模块100:
模块100能够直接输出“100-101”、“100-102”的距离,并获取输出“103-100”、“101-102”、“101-103”、“102-103”的距离,同时收到了来自101/102/103的短报文。
模块101:
模块101能够直接输出“101-102”、“101-103”的距离,并获取输出“100-101”、“100-102”、“103-100”、“102-103”的距离,同时收到了来自100/102/103的短报文。
模块102:
模块102能够直接输出“102-103”的距离,并获取输出“100-101”、“100-102”、“103-100”、“101-102”、“101-103”的距离,同时收到了来自100/101/103的短报文。
模块103:
模块103能够直接输出“103-100”的距离,并获取输出“100-101”、“100-102”、“101-102”、“101-103”、“102-103”的距离,同时收到了来自100/101/102的短报文。
3、时间戳
尽管测距数据指令类型不同,但所有测距数据中包含的时间戳均为模块100的内置时间戳。该时间戳的精度为微秒μs。因此,P450的组网测距行为是具备同步机制的,特点如下:
A、时间戳由网络配置中第一组测距对的请求端决定,如本次测试中的模块100。我们称这类模块为Master,时间戳的计时方式为Master启动后开始生成。
B、时间戳能够传递至网络内所有模块中,可以直接由Master传递,也可以由其他模块间接传递,形成共用的网络时钟(networking clock)。传递完成后,意味着其他模块开始按照设定的测距顺序和请求响应角色分配来执行相应的测距行为,测距完成后距离数据对应的时间点均记录在网络时钟上。
C、在该配置下,即TDMA组网模式,时间戳的精度为微秒μs。
4、关于通信功能的时间戳
在上面日志文件截图中,可以看到模块可以在单次测距循环中获得其他模块的短报文,甚至有的模块能发送多次。在通信数据已齐全的情况下,我们再来了解下对应的时间戳。无论是日志文件中还是API文档里对应指令RCM_DATA_INFO (0x0202),我们可以得知这里的时间戳精度为毫秒ms,并且是从接收模块从启动开始计时的。这意味着时间戳相互独立,无法参与到同步中来。
但是,我们可以换一种方式。从截图中可以看到,每一条报文解析指令(RcmDataInfo)都是与一条RcmEchoedRangeInfo测距数据对应的,同时它们具有相同的MessageId。这与P450通信的原理以及RcmEchoedRangeInfo的定义是符合的,可参考章节“三-2”和章节“六-1”。因此,通信数据可以“借用”测距数据里的时间戳,从而并入到网络时钟内。
七、结论
P450的测距与通信功能,能够完成距离数据与通信数据在网络内、所有节点间共享,同时这些数据可以遵循同一个网络时钟。
八、其他
1、关于配置项PII
PII全称Pulse Int Index,脉冲集成指数。P450模块是一个短脉冲相干雷达,可通过脉冲叠加来增加发送信号(数据包)的强度,在通信和射频两个方面来增加模块性能。由于模块产生脉冲能力是固定的,因此PII的改变会影响测距功能执行速率。我们做了一些测试以及一些推测,供客户参考。
只测距不进行数传时:
PII | 推测测距范围/m | 最小测距间隔/ms | 最大测距频率/Hz |
4 | 30 | 8 | 125 |
5 | 60 | 9.7 | 103.1 |
6 | 90 | 13.7 | 73.0 |
7 | 150 | 21.3 | 46.9 |
8 | 220 | 36.7 | 27.2 |
9 | 300 | 68.0 | 14.7 |
每次测距携带预设900字节:
PII | 最短间隔/ms | 频率/Hz | 传输速率/Bps | KBps |
4 | 31.582 | 31.66360585 | 27900 | 27.24609375 |
5 | 56.765 | 17.61648903 | 15300 | 14.94140625 |
6 | 107.787 | 9.277556663 | 8100 | 7.91015625 |
7 | 209.254 | 4.778881168 | 3600 | 3.515625 |
8 | 412.575 | 2.423801733 | 1800 | 1.7578125 |
9 | 819.602 | 1.220104392 | 900 | 0.87890625 |
每次测距携带预设100字节:
PII | 最短间隔ms | 频率Hz | 传输速率Bps | KBps |
4 | 9.977 | 100.2305302 | 10000 | 9.765625 |
5 | 13.341 | 74.95689978 | 7400 | 7.2265625 |
6 | 20.694 | 48.32318546 | 4800 | 4.6875 |
7 | 32.859 | 30.43306248 | 3000 | 2.9296875 |
8 | 61.53 | 16.25223468 | 1600 | 1.5625 |
9 | 119.245 | 8.386095853 | 800 | 0.78125 |
2、改进思路
已知上述数据对应模块类型是标准型,上述数据对应装配天线类型是低增益全向天线。
在学术研究中,不少客户会考虑采购增强型模块或者选配定向天线,这两个方面都可以显著增加测距和传输距离。也就是说,当项目需求中的范围固定,可以通过上述提高增益或更改天线来缩短测距和通信间隔,从而增加测距刷新率和整体通信速率。
3、测距数据的API指令RCM_FULL_RANGE_INFO (0x0201),示例如下:
A5 A5 00 34 02 01 18 C3 00 00 00 67 00 00 00 0E 00 00 09 EE 00 00 09 EE 00 00 09 EE 00 37 00 37 00 3A 00 01 00 53 07 31 00 09 00 09 00 F0 FF FF 00 00 25 1E 00 30 64 28 7C BD
其中红色字体的4个16进制字节共32位,代表的是时间戳TimeStamp。已知4个16进制字节最大数值为FF FF FF FF,转换为10进制是4,294,967,295。由于时间戳的单位是微秒μs,进一步换算为分钟min:
4,294,967,295μs≈71min
因此,在TDMA组网协议下时间戳数值循环1次的时间,大概是71分钟,也就是从Master模块启动开始算起的时间。这将提醒使用者,在做外部同步时需要注意到时间戳的循环与变化。P450模块的设计者们已在考虑未来将时间戳API表达位数从32位提高到64位,以减轻客户开发人员的工作量。