王晓品
(广州软件学院 电子系,广东 广州 510990)
通信链路是由大量分布于监测区域的通信节点通过无线传输形成的动态组织。由于通信链路节点之间距离较远,且运行环境不稳定,通信链路会受到很多随机干扰,这就导致了链路中断、传输延迟长、误码率高的问题[1-2]。通过对通信链路信息进行采集,可以随时了解通信系统中各节点以及各链路的性能及状态信息,继而通过可靠调节,可有效保障通信系统的平稳与安全[3-4]。
文献[5]设计基于串行通信的数据采集系统,利用串行通信接口对波特率进行自动识别,并结合参数传感器对通信特点进行对比分析,从而进行参数的分类识别,继而实现数据信息的有效采集,但该系统采集精准度较低,难以适用于远程通信环境。文献[6]利用单片机与专用AD采集芯片构造数据采集系统,将STM32RCT6作为主控芯片,配合ADC128D818模数转换芯片,实现了八通道实时数据采集,但该系统的应用并未消除数据差异较大的现象,导致数据采集结果有效完整度较差。文献[7]设计基于嵌入式系统的参数采集系统,利用GPS技术制定参数检测装置,并利用LabVIEW开发嵌入式系统的软件部分,通过传输控制协议来实现数据信息的实时采集,但嵌入式系统是一种低速度、低功耗的短距离无线通信技术,需根据用户端需求来确定应用层,导致数据传输延时增大。
卡尔曼滤波可结合系统状态方程观测其输入、输出数据的状态,从而对系统状态进行最优估计的一种过程。由于待观测的数据中除有效信息外还包含环境噪声等干扰信息,因此,最优估计过程也可以被视为是一种通过高效处理观测值并进行优化计算来实现干扰过滤、还原真实数据的过程。因此,为解决传统方法的不足,本研究基于Karman滤波算法设计了一种新的通信链路环境参数数据采集系统。
通信链路环境参数采集系统的硬件主要分为前端数据采集和后台数据传输控制2部分,利用模块化设计的形式满足环境参数的采集、传输和控制。
在硬件中,设计利用STM32处理器解决系统功耗高的问题,当采集数据过大或过小时,报警电路可发出警告。同时,利用配置去耦电容和设计地线的方式增强系统硬件的抗干扰性,从而有效降低数据采集和传输延迟。
本研究设计利用STM32处理器作为微控制器解决系统功耗高的问题,将其以接口的方式实现与上位机之间的数据传输。由于STM32处理器的处理速度快、代码量少,且其中的嵌入式快速中断控制器支持延时操作和实时性能[8-9],因此,该研究设计利用6个CPU周期唤醒系统待机状态,从而有效改善了系统功耗高的问题。
设计数据采集模块实现系统前端数据采集功能,其主要负责完成环境参数采集和无线数据传输任务。环境温度和湿度数据由分布于监测区域内的各传感节点采集,利用单片机对采集过程进行控制和处理后发送到协调器。
在数据采集过程中,利用电容感湿元件测量环境湿度,利用NTC感温元件测量环境温度,二者通过单总线接口与单片机相连。在这种连接方式下,系统的电路结构简单、功耗低,使得数据采集过程耗时较短[10-12]。然而,2种测量元件会将采集的温、湿信号以电信号的形式输出,此时的信号强度太弱[13-14]。因此,还需通过A/D转换电路对电信号进行转换和释放,并将其传送到微控制器之中。
在采集的数据过大或过小时,报警电路会发出告警,其目的在于降低数据传输时延,实现采集数据的实时传输。报警电路的主要结构包括蜂鸣器、晶体管、电路保护电阻。报警电路的输入接口与STM32处理器管脚相连,用于直接控制电平的高低。当采集的数据过大或过小时,在处理器的控制下,蜂鸣器发出振动告警。
通信链路所处的环境不稳定,在一些环境恶劣的监控区域,环境噪声干扰会破坏控制程序,使参数采集结构产生误差[15-17]。因此,若想实现通信链路环境参数的有效采集,系统必须具备较强的稳定性和抗干扰能力。一般来说,通信链路中的干扰源主要为射频噪声信号,故在系统硬件设计中采取了如下抗干扰措施:
1) 去耦电容配置。在系统综合电路板中,由于各元件的功耗不同,地线上的电位差会比较大[18]。为抑制由电位差引起的通信链路环境噪声,本研究在电源线和地面之间安装了电容器。电解电容配置在集成电路芯片上,与电源引脚相连。利用小电容去除高频干扰信号,利用大电容去除低频干扰信号。电容应安装在芯片引脚附近,尽可能缩短引线长度,高频旁路电容不作引线。
2) 地线设计。使地线成环可显著提高数据采集系统的抗噪性能[19-20]。因此,系统硬件电路与数字电路地线应分开,并采用单点连接的形式,避免噪声干扰信号从地线进入数字电路。
系统硬件部分利用数字式温湿度传感器采集链路环境信息,并通过A/D转换信号形式。同时,结合STM32处理器改善系统功耗高的问题,利用报警电路避免采集数据过大或过小问题,再通过去耦电容配置和地线实现抗干扰设计,从根本上有效降低了数据传输时延。在此基础上,利用卡尔曼滤波算法进一步去除环境噪声,实现环境参数数据完整、高效采集。
传统的滤波方法是在假设信号和噪声都处于平稳的过程,利用最优化方法对信号真值进行估计,从而达到滤波的目的。而卡尔曼滤波无需这些假设条件。在卡尔曼滤波算法中,首先对某时刻系统的扰动和观测误差(即噪声)展开统计,然后在线性状态空间表示的基础上,通过处理含噪的观测信号求得误差最小时真实信号的估计值,从而排除数据中噪声和干扰信息的影响。
滤波是去除环境噪声、还原真实数据的一种数据处理技术,卡尔曼滤波在测量方差已知的情况下能够从一系列存在测量噪声的数据中估计动态数据的状态。通过Multi-wavelet多小波工具箱对采集到的环境参数进行初步消噪,根据噪声估计量得到噪声方差,同时计算误差值,然后根据卡尔曼滤波过程判断迭代结果是否为最优估计值。
描述卡尔曼滤波算法状态方程可表示为
(1)
式中:T(t)为计算周期;s(t)为通信链路数据包传输时延变化率;v(t)为通信链路数据包传输时延变化速率;si≥1为常值系数。上述状态方程描述了影响通信链路数据包传输时延的参数时间函数。为保证数据包采集周期一致,分析数据包确认信号排队状态。如果当前数据包排队时延T1与上一个数据包确认信号排队时延之和T2保持一致,那么不存在排队时延。如果数据包传输完成之前存储区内存已满,那么排队时延不再增长,这时排队时延值达到最大。通过已知的实测数据来估计状态变量建立状态方程模型,状态变量应包含引起系统整体变化的变量。状态方程的表达式为
a(t)=βλ[a(t-1)]+nt-1
(2)
式中:β为排队时延的控制参数;λ(·)为数据采集向量方程;nt-1为在t-1时刻通信链路状态噪声。
返程时,数据包的返程时延测量可以通过时间戳函数来实现,但所得到结果因受到空间环境随机因素干扰,会增加数据包的返程时延。对于空间网来说,这部分的延迟变化很短,可忽略不计。
综上所述,由于通信链路环境参数数据流具有连续、大规模、含有噪声等特点,采集系统需要适应数据流变化特性。卡尔曼滤波可根据历史状态来估计当前状态,从而有效消除数据流中包含的噪声,并实时跟踪系统动态变化。因此,采用卡尔曼滤波算法可得到更精确的参数数据采集结果。
STM32处理器控制程序主要包括系统初始化以及对采集数据的电信号进行A/D转换。采用接口方式实现STM32处理器与上位机之间的数据传输,当连接成功后开始数据采集、转换和存储,判断数据是否超出标准并显示数据,实现数据的低延时传输。数据采集的过程中,首先读取温、湿度传感器信号,再基于卡尔曼滤波算法滤除数据流中的环境噪声,通过串口实现对数据采集和传输,并从根本上提高采集数据的数据有效完整度。图1为具体的数据采集流程。
图1 参数数据采集流程Fig.1 Parameter data acquisition process
为验证上述基于卡尔曼滤波算法的通信链路环境参数采集系统的实际应用效果,利用Matlab曲线拟合工具设计如下仿真实验。为了更加突出本文系统的实际应用性能,将文献[5]中的基于串行通信的数据采集系统和文献[7]中的基于嵌入式系统的数据无线传感采集系统作为对比组,从数据传输时延和数据有效完整度2个角度,对比检验不同系统的实际应用性能。
实验温度为-15~50 ℃,误差控制为±0.5 ℃;湿度传感器分辨率为0.5%,误差控制在±0.05%,湿度传感器电源电压为3 V,待机电流为0.5~1.5 mA,正常电流为1.5~2.5 mA,每1.5~2.0 s为1个采样周期。
处理前后的通信链路含噪信号如图2所示。
图2 处理前后的通信链路含噪信号分析Fig.2 Analysis of noisy signal in communicationlink before and after processing
从图2可知,在利用卡尔曼滤波的方式进行去噪前,通信链路的含噪信号波动幅度较大,但具有一定规律性,最高幅值为75 dB,最低幅值为-75 dB。经过卡尔曼滤波器去噪处理后的波动幅度明显减小,基本保持在-25~25 dB之间。在此基础上对数据进行传输将提高参数采集的精度。
在通信环境中,每个客户端节点通过一条与接入点相连的链路来传输信息的过程为单跳传输,每个客户端节点都可以与一个或者多个对等节点进行直接通信来传输信息的过程则为多跳传输,二者是两种不同的传输形式。为此,本研究在单跳与多跳2种传输模式下完成系统性能验证。
3.3.1 数据传输时延对比 数据包长度分别为100、200、300、400、500、600 GB时,不同系统针对单跳数据包的传输时延对比情况如图3所示。
图3 单跳传输时延Fig.3 Single-hop transmission delay
从图3可知,单跳数据传输时延与数据包长度有关,当数据包长度较小时,传输时延较小。随着数据包增大,误码率增大,其对数据传输过程的影响也较大,致使数据传输时延不断增加。但本文系统的单跳传输时延可控制在15 s以下,文献[5]系统和文献[7]系统传输时延明显高于本文系统,同时,本文系统的传输时延受数据包长度影响较小。
数据包长度分别为100、200、300、400、500、600 GB时,不同系统针对多跳数据包的传输时延对比情况如图4所示。
从图4可知,文献[5]与文献[7]系统中,多跳传输时延也随着数据包长度的增加而增加。而在本文系统中,随着数据包长度的增加其数据传输延迟先增加后略降低,且其多跳数据传输时延仍保持在15 s以下。产生上述结果的原因在于在本文系统利用STM32处理器具有的处理速度快、代码量少、嵌入式快速中断控制器支持延时操作和实时性能的优点,改善了系统功耗高的问题。同时,利用报警电路避免采集数据过大或过小问题,结合卡尔曼滤波过程有效降低了数据传输时延。
图4 多跳传输时延Fig.4 Multi-hop transmission delay
3.3.2 数据有效完整度对比 为进一步突出本文系统的应用优势,在75 dB噪声干扰的环境下,对不同系统采集数据的有效完整度展开对比分析,结果如表1所示。
表1 不同系统参数数据有效完整度对比Tab.1 Comparison of effective integrity of data of different system parameters
从表1可知,文献[5]系统无论在单跳还是多跳传输下,其数据有效完整度都低于文献[7]系统。但相比之下,本文系统的数据有效完整度更高,其数值始终不低于0.96。产生上述结果的原因在于本文系统利用卡尔曼滤波算法对采集到的链路环境信息展开滤波处理,降低了环境噪声对采集结果的干扰,并实时根据环境动态变化调整采集参数,进而在数据包长度不断增加的情况下,数据有效完整度也能保持在较高水平。
1) 本文设计了一种高效的通信链路环境参数数据采集系统,以STM32处理器为控制中心,构建数据采集、抗干扰传输等硬件模块,利用报警电路避免采集数据过大或过小问题,并利用卡尔曼滤波器对采集到的数据信息进行去噪处理,有效降低了数据传输时延、提高了数据有效完整度。
2) 无论在单跳还是多跳传输的情况下,本文系统的数据传输时延均较低,且参数数据有效完整度始终较高。
3) 由于研究时间的限制,该系统还具有改进和优化的空间。就技术和应用而言,在接下来的研究中,可利用STM32高性能处理器在提高系统稳定性的同时,可加速实现数据采集和处理。