史 磊
(陕西机电职业技术学院 电子与信息学院,陕西 宝鸡 721001)
无线通信是指多个节点间不通过导体传播而实现远距离传输通讯的技术,与有线通信相比,无线通信方式具有结构简单、传输距离远等优点,不会受到光缆、导线等硬件设备的约束,能够在很大程度节约硬件成本,完成有线通信设备无法完成的数据传输任务,因此网络通信信息的获取和传输逐步从有线过渡到无线,并应用到诸多工作领域中[1]。一般来讲,无线通信主要利用无线电波作为数据传输的媒介,将发送端与接收端设备的数据信息调制到相同的载波频率上,从而实现数据的定向传输。
然而从当前无线通信远程数据传输的应用情况来看,受到通信传输环境的影响,会出现传输中断、传输数据丢失等现象,随着使用用户数量的增加,无线通信服务也容易出现传输拥塞等问题,不仅会影响无线通信的运行效率,还有可能造成信息泄露等严重后果。为了最大程度地保证无线通信远程数据传输的安全稳定性以及时效性,有必要设计并应用相应的数据传输控制系统。
现有的数据传输控制系统存在明显的控制功能不佳、运行性能差的问题,主要体现在数据传输丢失量大、拥塞概率高、吞吐量差等方面,为了解决上述传统控制系统存在的问题,引入STM32嵌入式的概念。将STM32以嵌入式的方式应用到无线通信远程数据传输控制系统中,改装传输数据处理器,加设时钟发生器,提升无线通信远程数据传输控制效果。通过系统电路的连接实现数据传输控制硬件系统的设计,采集并处理无线通信数据资源,设置远程数据传输控制协议并通过信道特征分配远程传输数据资源,提高系统的传输控制功能与运行性能。
无线通信远程数据传输控制系统以无线信息远程控制为主要手段,通过对传输信道、传输数据等主体的控制,完成对数据传输流量以及传输速度的控制。此次无线通信远程数据传输控制系统分别从硬件、软件功能程序两个方面进行分析优化设计,其中硬件部分的作用是为数据库以及软件功能的运行提供支持,硬件系统的基本框架如图1所示。
图1 无线通信远程数据传输控制硬件系统框图
在传统传输控制硬件系统的基础上,利用STM32对控制器以及微处理器等硬件设备进行优化,同时对部分硬件元件和连接电路进行改装和调整,提高硬件设备的运行效率。
STM32嵌入式芯片基于Cortex-m3核心,结合了多种工业标准的高性能接口,并与STM32系列产品的管脚和软件兼容,使得STM32适配于多种应用程序[2]。为满足系统的互联功能和实时性能,选择STM32107型号的芯片进行传输控制器优化。图2表示的是STM32107嵌入式芯片的内部结构。
图2 STM32嵌入式芯片结构图
图2所示的STM32控制芯片,包括256KB的Flash存储器,6个USART接口、3个16位DAC转换器、12个DMA通道、以太网IEEE1588接口等。STM32嵌入式芯片相对于传统的嵌入式控制系统,采用IEEE1588协议,内置双CAN总线具有良好的网络连接能力[3]。STM32芯片采用了嵌入式的方式连接到传统控制器上,实现一种经济的网络互联。在硬件方面,它支持IEEE1588精确计时协议,能够在网络上进行准确的时钟同步,为更多的嵌入式应用程序预留CPU空间。STM32中采用的双CAN20B模块是一种更为便捷的CAN桥接方式。
优化设计的无线通信远程数据传输控制系统采用ARM7型信号处理装置进行了优化设计,包括核心、总线、外部接口、调试等部分。内核是执行运算、内存存取、周边界面控制、中断控制等功能的核心。ARM7处理器采用了一个简单的二极管处理命令,一个命令被内核同时解码,而另一个命令又被读取到了内存中,所以程序计数器总是指向下一个命令,而非目前被执行的命令。ARM7核心包含38个寄存器,32个通用寄存器,6个寄存器不能用于使用者和程序[4]。目前可使用的暂存器组合需要通过处理器状态、运行、闲置和运行方式来确定。
硬件系统中的所有元件均为时序电路,需要一个时钟信号才能工作,为此在硬件设备中内置一个型号为LPC2210晶体振荡器,LPC2210晶体振荡器的工作模式可以分为从属模式和振荡模式两种[5],从属模式下的工作原理如图3所示。
图3 时钟发生器工作原理图
输入时钟信号被耦合到一个大于100 pF的电容器Cc,该电容器的振幅小于200米Vrms,X2管脚未被连接。若选取从属模式,则将振荡器输出Fosc信号的频率限定为1至50 MHz[6]。在振荡模式下,LPC2210芯片内部有一个反馈电阻,因此,只要将 Xtal与Cx1,Cx2的外部相连,即可实现基本的振荡[7]。
1.4.1 电源电路
无线通信远程数据传输控制系统的控制器是在通讯网络中正常工作的,其稳定、可靠的电力供应是确保其可靠工作的先决条件[8]。该系统的供电电路采用线性稳压器,线性稳压电源具有响应迅速、噪音低、输出波动小等特点[9]。控制器的 IC晶片均为5 V及3.3 V。控制器及物理层 PHY晶片的工作电源为3.3 V DC,而储存晶片及 I/O控制电路则需5 V供电。由于控制电路由5 V DC供电,所以由 LM1117-3.3 V的稳压芯片构成,LM1117具有过热保护、限制过流的作用,保障电压稳定度达到了电路工作的需要。
1.4.2 通信接口电路
优化设计的数据传输控制系统需保证最基础的串口通讯,只需 RXD, TXD, GND三种通信接口电路即可实现。这种连接只需要三条线路,也就是模拟了 MCU的串行通讯方式,需要用SP232实现控制器与电脑之间的电平变换。
1.4.3 液晶显示电路
为直观地显示无线数据采集终端的采集结果,同时也便于系统的调试,系统使用128*64的液晶显示设备,并采用ST7920驱动128x64 LCD模组,既能实现32路 com的输入,又能实现64路 Sg的输出[10]。该系统采用ST7921驱动256×32的点阵 LCD,适用于汉字及图形的显示,内置2 M中文字型 ROM[11]。另外,系统还具有4位并行功能,以满足不同的微处理器和 MCU的接口要求。将显示器设备与系统其他元件按图4方式进行连接。
图4 液晶显示连接电路图
LCD显示器采用3线串联模式, PSB管脚固定在地面上,使 I/O占用较小,程序编制简便。同时,通过STM32的 IO来实现对背光的控制,延长 LCD屏幕的使用寿命。
除了上述硬件设备和电路外,数据采集器、通信网络等设备均沿用传统无线通信远程数据传输控制硬件系统中的设备。
启动硬件系统中的数据采集器,按照图5表示流程进行初始无线通信数据的采集。
图5 无线通信数据采集流程图
在采集动态无线通信数据过程中,通过SPI中断服务和中断服务程序来实现,STM32控制器通过SPI中断来接收初始数据,SPI中断服务中,将所收到的数据存储到对应的全局阵列变量spi_data中,从而保证当前采集数据的实时性[12]。为了满足无线传输通信信道的传输规则,需要对初始采集的数据进行处理,规范数据的报文格式。首先利用公式(1)对数据进行无量纲规范化处理。
(1)
式中,x为初始采集的无线通信远程传输数据,xmax和xmin为数据的最大值和最小值。在此基础上将数据转换为ACK报文格式,ACK报文包含了一个消息的回复和一个特定的序列号的回复[13]。当接收端收到消息时,报文的序列被存储在响应包清单中,并且基于该清单来计算下一次传送的 ACK域的值。若传送代理传送1、2、3、4、5五个消息,当报文到达接收端传送代理的次序是1、2、4、5,则接收端的 acklist中存储[1、2、4、5],则 ACK是3,表明所有小于3的消息都被接收。在下一次 ACK报文被传送时, ACK字段置为3,t字段为001,并且将sn=4、sn=5的消息确认应答置于 ACK的负载中,通知发送端,序号小于3的消息已被接收,而序号为4和5的消息也已接收,发送者仅需重新发送3号消息[14]。采用该格式和响应机制,可以极大地降低重复发送的消息,间接地提高了数据传输的效率。
无线通信远程数据传输选择TCP/IP协议作为控制约束标准,传输控制协议的工作流程如图6所示。
图6 数据传输控制协议工作流程图
若传输信道处于静态状态,则无实体层连接。在调制解调器的载频信号被侦测并且物理层连接被建立之后, LCP就会开始进行一些选择。谈判完毕,就进入鉴定阶段。如果通信双方识别成功,就可以进行网络访问。NCP设定网路层,指定 IP位址,进入开放状态,进行资料通讯。在完成了数据传送之后,进入了终止状态。当载波停止时,恢复到静止状态。在实际运行过程中,IP协议用来约束数据包的接收与发送、数据传输信道的搜索、路由以及差错处理等[15-17]。IP协议的作用就是把数据包传递给目标主机,因为在某些中间节点上都没有验证的程序,因此无法保证数据包的正确性。在传送过程中,若出现了由路由器缓冲溢出引起的包丢失等差错,协议会依据自己的纠错算法,将此资料包删除,并以响应消息报文的方式传送至源主机,只有高层传送控制协议才能保证其可靠性。
在无线通信远程数据传输控制协议的约束下,假设无线通信环境的初始通道是随机生成的,在此期间,该节点不再变换通道,而是一直在这个通道内。该节点利用伪随机序列生成的种子来计算下一时段的频道,信道是频道的总数。利用伪随机序列生成的种子,下一个时间周期内使用的信道可以表示为:
nChannel=(βChannel+seed)mod(NChannels)
(2)
式中,nChannel和NChannels分别为节点将要切换的新信道编号和信道总数量,βChannel为节点初始信道,seed为伪随机序列产生的种子。以初始采集并处理完成的数据作为分配目标,则其分配结果可以表示为:
(3)
根据无线通讯的远程数据传送流程,客户机_ a和客户机_ b被定义为发送方,agent_A和agent_B作为接收方,首先在发送方和接收方之间建立 TCP连接,当接到客户端_ a的 Connection请求时,agent_A将代理响应于client_a,并将client_a传送到发送队列中,同时向agent_B询问client_b的状况,agent_B先查询接收会话信息表 RIB,然后主动地与client_b建立联系,并通过 RESPONSE消息反馈给agent_B。一旦agent_A接收到agent_B和client_b之间的连接成功,则告知发送端传送代理将数据从发送队列中提取,并将其封装在 UTP包的数据区进行发送[18]。相应地,在接收 UTP包之后,接收端传送代理按照包类型进行处理,若发现为数据包,则从 UTP包中分析该数据,通过agent_B向客户机_ b传送一个应答包,并且将响应包传送到发送代理,若发现为响应包,则按照响应包从传送队列中删除相应的数据。在完成了数据传送之后,客户机_ a主动启动中断连接请求,agent_A将 FINISH报文发送给agent_B,告知agent_B切断与客户机_b的连接,agent_B在收到 FINISH消息后,切断与客户机_b的连接并从接收会话表中删除传输相关会话信息[19]。按照上述数据传输流程,利用安装的控制器设备,在传输协议的约束下,以选择的信道为控制目标,实现系统的无线通信远程数据传输控制功能。无线通信远程数据传输流量控制的目的是最大程度地避免传输信道出现拥塞现象,首先利用式(4)计算无线通信网络中任意信道的最大链路容量。
Qi=RTTi×Bandwidthi
(4)
式中,变量RTTi和Bandwidthi分别表示的是链路往返时延向量和测量代理查询每个端口的带宽信息。在实际流量控制过程中,根据式(4)的计算结果生成一个流量拥塞控制窗口,任意时刻无线通信传输信道流量受限于如下公式:
awnd=min(creditwnd,Q)
(5)
式中,awnd和creditwnd分别为允许窗口和拥塞窗口大小。若当前无线通信信道的数据总传输量高于awnd,则利用控制器设备启动流量控制窗口程序,保证该信道通过流量低于awnd,直到信道传输数据低于0.6Qi为止[20]。另外通过对流量窗口大小的设置与调节,实现数据实时传输速率的控制,由此从流量和速率两个方面完成系统的数据传输控制功能。
在系统设计中,每一个模块都要经过验证、测试、检查和不断地修正,从而使各个功能模块能够根据设计的要求来工作,从而实现目标和结果。在对各功能模块进行了测试后,根据对系统的功能需求,对经过测试的各模块进行了装配和测试,以确定系统在运行时是否能够满足所需的性能指标,并对其进行改进。为了测试优化设计的基于STM32嵌入式的无线通信远程数据传输控制系统的控制功能和运行性能,设计系统测试实验,并验证优化设计结果是否满足设计与应用要求。
此次系统测试实验所针对的无线通信环境由网关部署环境、服务器运行环境、用户端运行环境3个部分组成。其中,网关与 LoRa模块的数据输出接口通过串口进行连接,使之能与 LoRa网络相连通。可移动网关将路由器与无线网络相连,由此进入互联网。另外,在实验室的局域网下面还配置了一个监控 PC,以实现现场的实时监控。Tomcat和 MySQL被部署在服务器中,用于提供业务支持,并在开放式系统中使用每个端口进行数据传送。设置多个远程用户端作为无线通信远程数据传输的接收端。
为了给系统测试实验提供充足的数据样本,收集某个有线通信网络的发送传输信息数据,以此作为系统测试实验的传输数据样本。表1为部分实验数据传输样本的设置结果。
表1 部分实验传输数据样本设置表
系统测试实验共设置200个数据传输任务,通过传输数据的大小确定合适的传输信道,以此作为系统控制效果测试的对比标准。
根据基于STM32嵌入式的无线通信远程数据传输控制系统的优化设计目的,分别从控制功能和运行性能两个方面进行分析。其中控制功能的测试内容是检测控制系统能否完成数据在规定速率下无误码传输,同时避免出现数据传输拥塞现象。而控制系统的运行性能主要就是测试该系统能够同时控制无线通信远程传输数据量的多少。在实验环境中安装优化设计系统中的硬件设备,并执行硬件设备调试工作。启动数据传输控制系统软件程序,逐一调取数据传输任务。以第一个传输任务为例,服务器端传送的是0XFFF10101的数据,前面4个16进制的数据是一个FFF1,如果服务器端的4个16进制的数据是一个FFF1,则确认这个网络的数据是有效的,然后把后面的4个16进制的数据传送到一个控制 I/O控制任务以进行对应的控制,使用相同的方式可以得出其他任务的数据传输与控制结果。通过 Xilinx ISE12.2开发包中的 Chip Scope,通过 Chip Scope来实现对系统内的信号进行实时探测,当错误标记比特被触发时,该错误标记比特信号会一直等待,表明在发送数据时未发生任何数据传输错误。
此次系统测试实验设置传输速率控制误差、丢包率、传输拥塞总时长3个指标来反映系统的数据传输控制功能,其中传输速率控制误差和丢包率的数值结果为:
(6)
式中,变量νtarget和νcontrol分别为设置的数据传输速率目标值和实际控制结果,Nreceive和Nsend对应的是数据的接收量和发送量,另外传输拥塞总时长测试指标的测试结果为:
(7)
式中,τi为第i次拥塞的维持时长,参数n为传输过程中发生拥塞事故的次数。为了满足系统设计对控制功能的要求,设置εν、ηloss和τ的预设值分别为0.5 MB/s、1%和3.0 s,并要求系统控制功能实际测试指标结果不高于预设值。另外,设置吞吐率作为系统运行性能量化测试指标,其数值结果可以表示为:
(8)
式中,L为无线通信信道的长度,RTT、N和To分别为数据传输的往返时间、单个ACK确认数据量和数据传输超时重传定时器参数,To取值为定值。另外ηloss为数据丢包率,可以通过式(6)的计算得出该变量的具体取值,实验要求吞吐率不得低于88%。
通过相关数据的提取与统计,得出系统控制功能的测试结果,如表2所示。
表2 系统控制功能测试数据表
将表2中的数据代入到式(6)中,可以得出控制系统下无线通信远程数据传输速率控制误差和丢包率对的平均测试结果分别为0.18 MB/s和0.6%。另外通过式(7)的计算,得出传输拥塞总时长的测试结果如图7所示。
从图7中可以直观地看出,在设计系统的控制下,远程数据传输发生拥塞时间的最大值为2.6 s。由此可见系统控制功能指标的测试结果均低于预设值,即优化设计系统的控制功能满足设计要求。另外通过式(8)的计算得出系统运行性能的测试结果,如图8所示。
图7 控制系统下远程数据传输拥塞总时长统计图
图8 通信远程数据传输控制系统运行性能测试结果
从图8中可以看出,无线通信远程数据传输控制系统吞吐率的最小值为91.5%,由此可见设计控制系统的运行性能满足设计与应用要求。
从系统测试结果中可以看出,通过STM32芯片的嵌入式应用,有效提高了无线通信远程数据传输控制系统的控制功能与运行性能,对于无线通信技术而言具有较高的应用价值。然而实验中设置的传输样本数量较少,且未对数据传输延迟进行测试,因此得出的系统测试结果存在一定的局限性,因此在控制系统投入应用之前,还需要进一步补充相关的测试数据。