刘慧丰, 李东昌, 吕佳莹, 崔建峰
(1. 中国人民解放军 63966部队, 北京 100072; 2. 中北大学 电气与控制工程学院, 山西 太原 030051)
由于装甲特种车辆行驶环境普遍比较恶劣, 内部功能装置及部件结构复杂, 在长期作战任务中磨损严重[1]。 因此, 对装甲特种车辆各特性参数的实时监测和分析是保证装甲车辆稳定运行的重要举措。
目前, 装甲车辆测试主要是研究不同工况下车辆工作状态, 包括整车性能、 振动特性、 动力舱环境和车辆状态信息, 涉及温度、 力、 压力、 车速、 振动加速度等参数, 其测试方法主要有布线测试法[2-3]、 存储测试法[4]和无线测试法[5]。 例如, 杨诚等[6]以NI Compact嵌入式平台为基础, 通过CAN总线测试方法实现了对装甲车辆整车参数(加速度、 扭矩)的实时采集、 传输、 显示和存储; 周晓等[7]利用PC+动态分析仪方式, 对装甲车负重轮进行振动信号采集, 并提出了布线方案; 范锦标等[8]通过存储测试装置对装甲车辆进行动态参数测试, 主要包括扭矩、 转速、 应力场和温度场等参数; 丹麦(B&K)公司[9]根据声学振动检测机理, 在虚拟仪器的基础上, 研制了多通道振动噪声测试仪并应用在车辆机械振动测试中; 史文武等[10]以CC3200为硬件基础, 基于WiFi, 实现了对装甲车辆行动系统振动信号的采集。 其中, 布线测试法在测试时线缆连接复杂, 测试装置安装和拆卸困难; 此外, 在测量具有旋转运动、 往复运动的部件时, 布线测试法数据的准确性不能得到很好的保证; 存储测试法虽然解决了引线的问题, 但当其安装在狭小的空间时, 在工作触发和数据回收时比较困难, 并且只能在采集结束后回收数据, 实时性差; 无线测试法虽然弥补了当前旋转机械测试中存在的一些不足, 具有操作便捷、 测试效率高、 可维护性和可扩展性强等特性, 但是设备之间通信只能是通过单一节点, 节点之间不能构成网络连接, 信号容易受到障碍物阻隔, 覆盖范围有限, 容易受到干扰, 因此, 在装甲车上针对多测点的测试具有很大的局限性。
针对上述问题, 本文将Mesh网络与分布式测试相结合, 提出了一种应用于测量装甲车辆综合传动装置特性参数的WiFi-Mesh组网测试技术。 其通过Mesh网络组网, 实现了在装甲车内复杂环境下的多参数采集、 存储以及实时上传; 同时利用TPSN算法对Mesh网络内的所有节点进行时钟同步, 建立了一个稳定、 快速、 可靠的采集存储系统。
ESP-WIFI-MESH是乐鑫信息科技股份有限公司基于乐鑫Soc和ESP-IDF, ESP-MDF等开源框架以及标准WiFi协议下开发的树状拓扑无线通信网络[11]。 本文基于Esp32模块作为ESP-WIFI-MESH网络节点[12], 结合传感器与采集模块, 构成无线组网测试智能终端。
装甲车内Mesh网络通信结构如图1 所示, 处于测试现场的各个无线组网测试装置通过其自身Esp32无线模块构建WiFi-Mesh网络, 形成树状拓扑结构, 根据相对路由信号强度选举生成唯一根节点、 剩余节点为子节点。 当需要增加额外传感器测点进行状态检测时, 新加入的无线组网测试装置通过扫描Mesh网络自动加入。 Mesh网络中子节点首先将采集信息传输至根节点, 进而通过根节点传输至诊断分析平台, 供技术人员进行后续分析研究。
图1 Mesh网络通信结构Fig.1 Mesh Network communication structure
Mesh节点硬件设计如图2 所示, 对数据采集和数据存储进行分离, 将节点硬件分为主控子板和测试子板, 测试子板完成对临时测点特性参数的采集, 并通过通用接口将数据传输至主控子板; 主控子板首先将采集数据存储至本地, 同时通过Mesh网络向其余节点或上位机进行数据上传。
图2 Mesh节点硬件设计Fig.2 Hardware design of Mesh node
主控子板主要由Esp32(无线模块)、 GD32F4-50VIT6 (MCU)、 eMMC(高速大容量存储模块)构成, 测试子板主要由GD32F103CBT6(MCU)、 相应信号(振动、 信号、 转速)调理模块构成, 两板通过设计通用接口进行信号传输。 一方面, GD32的大容量外设接口满足对不同传感器接口的数据采集, 同时采集和存储分离也提高了整体的测试效率; 另一方面, 将Esp32模块化, 仅作为无线模块进行Mesh网络的构建, 提升了Mesh网络的传输速率。
Mesh网络中子节点主要完成对相应特征信号的采集并通过esp_mesh_send()函数将其发送至根节点。 Mesh网络根节点主要完成自身采集任务并通过esp_mesh_rev()函数接收子节点采集数据。 各节点数据在发送和接收过程中通过mash_data_t中的proto以及tos变量将Mesh网络中数据包协议与格式配置为JSON, P2P(point to point), 具体说明如表1 所示。
表1 数据包格式Tab.1 Format of data packet
节点任务流程设计如图3 所示, 具体实现步骤描述如下:
图3 Mesh节点任务流程图Fig.3 The task flow chart of Mesh node
STEP1: 硬件初始化。 通过wifi_init_sta()以及wifi_init_ap()完成节点soft AP模式需求, 通过esp_mesh_init()完成Mesh网络参数设置;
STEP2: 开启组网事件循环。 通过函数Mesh_event_handler()进入Mesh事件循环以处理Mesh连接事件;
STEP3: 处理组网事件。 系统对接入节点类型进行判断:
若节点为根节点, 根节点首先与上位机建立TCP连接; 接着在Root_tcp_read()中接收来自上位机的指令数据(节点配置信息), 并广播至其它Mesh网络节点。 在Root_tcp_write()中, 根节点接收Mesh网络中普通节点的数据, 然后将数据打包发送至上位机。
若为普通节点, 创建任务Node_read_task(), 接收根节点的指令数据。 同时, 创建任务Node_write_task(), 在其中将根据测试装置状态判断是否选择接收根节点的指令数据; 若接收则通过SPI接口将指令发送至主控子板; 主控子板开始采集数据并将采集到的数据发送至无线模块(普通节点), 最后将采集数据传输至根节点。
处于Mesh网络中的测试节点会通过esp_mesh_send()定期广播包含自身接收信号强度标志值(RSSI: Received Signal Strength Indicator)的信标帧, 每个节点将同时扫描自身以及网络中所有节点的信标帧。 当网络中有空闲节点加入, 此节点会根据规则选择周围节点中RSSI最强的节点作为自身上行父节点, 从而加入到Mesh网络之中。 空闲节点在建立好自身潜在父节点列表后, 根据以下规则优选父节点: ① 优先考虑网络层级中最浅的节点作为父节点; ② 优先考虑子节点最少的节点作为父节点。 在根节点选举过程中, Mesh网络会通过esp_mesh_set_attempts()来配置阈值迭代次数, Mesh网络的层级越大, 迭代次数越高。 网络中所有节点通过迭代对比自身相对于路由器的RSSI值, 从而自动选举出具有最强的RSSI作为Mesh网络的根节点。 经过上诉措施, 实现节点的自组织功能。
在节点故障中, Mesh网络会通过信标帧的数据包来检测当前节点故障原因并进行相应改正。 如果是根节点故障, 第2层节点会重新进行新一轮选举, 其中RSSI值最强的点将被选为根节点。 如果是中间父节点故障, 则与之断开的子节点会通过esp_mesh_scan_sigintensity()扫描潜在父节点, 并同扫描出的父节点形成上行连接。 经过上述措施, 根节点和子节点故障得到纠正, 从而实现Mesh网络的自修复功能。
分布式测试中, 各测试节点是相互独立的测试单元, 它们之间通过Mesh网络相连, 最终将采集数据上传至诊断分析装置。 而诊断分析装置在对数据进行处理分析时, 需要保证各个测试设备之间是相互同步的。 所以保障时钟的精准同步是分布式测试系统对时钟系统的必然要求, 是对数据进行有效分析的前提[13]。
本文基于传感网络时间同步协议(TPSN: Timing-sync Protocol for Sensor Networks)实现了Mesh网络中所有节点的时钟同步, TPSN协议首先会在网络中选取一个根节点, 随后对网络进行分层, 分层完毕后, 从根节点开始, 相邻两层节点进行同步信息交换, 直至最后一层完成同步。 由于ESP-WIFI-MESH已经完成了TPSN协议中的根节点选取和分层, 所以只需在此基础上完成同步信息交换即可。
同步信息交换示意图如图4 所示, 在时钟同步阶段中,i+1级节点在T1时刻发送同步请求数据包;i级节点在T2时刻收到此数据请求包;i级节点在T3时刻发送回复数据包,i+1级节点在T4时刻收到回复数据包。 只需要获取到T1,T2,T3,T4即可计算出时间偏移d和传播延时Δ, 进而得到节点同步后的时钟。
图4 TPSN时钟同步信息交换Fig.4 The TPSN clock synchronization information exchange
时钟同步软件流程如图5 所示。 首先, 系统进行硬件和Mesh网络参数的初始化。 然后启动Mesh网络。 此时, ① 如果节点是根节点, 先判断是否含有子节点; 如果有子节点, 则发送时钟同步数据包; 如果没有则直接结束。 ② 如果节点不是根节点, 则判断是否收到时钟同步数据包; 如果收到了, 表明要开始进行时间同步, 子节点与其上行连接的父节点交换包含本地的数据包。 经过两次交换, 计算出传播时延d和时间偏移Δ, 从而得到同步的时间。 当该节点与父节点时间同步完成后, 判断其是否具有下行连接的节点, 如果有, 则继续向子节点发送时钟同步数据包, 否则结束循环。
图5 时钟同步软件流程图Fig.5 Flow chart of the clock synchronization software
时钟同步过程中将使用ESP32硬件定时器完成计时。 ESP32芯片提供两组硬件定时器, 每组包含两个通用硬件定时器。 所有定时器均为64 bit; 其包括16 bit预分频器和64 bit自动重载向上/向下计数器, 本文使用TIMER_GROUP_0中TIMER_0作为系统同步时钟。 对定时器初始化时, 设置分频器系数为8, 用作APB_CLK(80 MHz)输入时钟的除数。 此时定时器变化的最小刻度为100 ns; 设置计时器模式为递增, 并从0开始计数; 然后使用timer_start使能定时器。 使用timer_get_counter_value获定时器计数值; 同步时使用timer_set_counter_value来设置硬件定时器的计数值。
根据课题组前期无线单节点测试装置在装甲车辆上的实际应用经验, 可在实验室环境下对车内通信性能进行模拟测试。 实验室分为两个房间, 中间有两堵24 cm厚的砖墙结构以及一条走廊。 网络测试组件包含PC电脑一台、 路由器一个以及Mesh节点5个。 节点在实验室环境下的分布如图6 所示。
图6 实验室内节点分布图Fig.6 Distribution map of laboratory nodes
图6 中服务器包含PC电脑和路由器, 左边房间放置0号、 1号、 3号3个节点, 右边房间放置2号、 4号节点。 通过编写测试程序, 将各个节点的MAC地址、 所在层数发送至根节点, 根节点与PC端建立TCP连接, 通过网络调试助手将结果进行打印。
如图7(a) 所示, 从网络调试助手打印结果可以看出, 0号节点被选为根节点, 因此layer值为1; 然后1号、 2号、 3号节点距离0号节点距离较近, 因此均为第2层节点, layer值均为2; 4号节点距离0号、 1号、 3号节点距离较远, 因此成为了2号节点的子节点, 即第3层节点, layer的值为3。
(a) 网络调试助手打印结果
通过串口调试助手, 将根节点中系统关键信息打印, 其结果如图7(b) 所示。 从图中可以看出, 本实验无线Mesh网络使用的信道为第1信道, 根节点的parent bssid即与根节点直接相连的路由器的MAC地址为0a:71:90:a9:68:66, 路由器的RSSI值为-39 dBm, 与根节点直接相连接的2层节点是1, 2, 3。
编写测试程序使Mesh节点连续不停地向根节点发送数据包, 设定每个数据包的大小为1 400 B, 每个字节内容均相同。 在PC上位机建立服务端进行连接, 使用网络调试助手建立连接。 使用Wireshark软件抓取根节点发送到PC端的数据包, 分析Mesh网络的传输速率, 使用其抓包统计IO功能, 将传输速率进行实时显示, 如图8 所示。 在距离10 m范围内两节点间, 经统计, 平均每秒钟收到数据包达到112个, 每个包的大小为1 500 Byte。 故平均每秒接收数据量大小为: 112×1 500×8= 1 344 000 bit, 即传输速率约为1.3 Mbps。 需要说明的是, 当节点间通信距离增加时, 传输速率会因通讯误码率的升高而下降; 但因采用TCP协议, 数据传输仍是可靠的。
图8 Wireshark抓包图Fig.8 Grab package diagram by Wireshark
针对Mesh节点时钟同步功能, 测试验证节点分布情况如图9 所示。 其中0号节点为根节点, 1号和2号节点为第2层节点。
图9 时钟同步节点分布情况Fig.9 Clock synchronization node distribution situation
通过设立事件标志位以及观察IO18引脚电平转换状态来测试时钟同步精度。 首先, 将IO18引脚电平置高, 当时钟同步完成后, 事件标志位置位, 所有节点延时10 s后将IO18引脚电平置低。 示波器输出结果之一如图10 所示。
图10 各节点输出波形Fig.10 Output waveform of each node
图10 中横向单位网格间隔为200 μs, 1号节点相对于0号节点时钟偏差为-410 μs, 2号节点相对于0号节点时钟偏差为+450 μs。 经过多次测试验证, 时钟同步的精度在1 ms之内。
本文分析了WiFi-Mesh组网技术在装甲车辆综合传动装置特性参数采集传输过程中的优势, 设计并建立装甲车内WiFi-Mesh网络, 实现了特性参数的无线传输, 同时该网络的根节点处实现了对数据的打包上传以及缓存; 利用TPSN协议实现了全网节点的时钟同步。 通过多次实验证明, 基于无线组网测试装置的WiFi-Mesh网络能够保证多测点数据的采集和上传, 各节点时钟同步精度可以达到1 ms之内, 为后续数据处理分析以及故障诊断提供了数据支撑。