文献标识码: A
DOI:10.16157/j.issn.0258-7998.173250
中文引用格式: 赵立杰,魏昊晨,田志颖. 高速数字振动信号无线接收螺旋缓冲算法[J].电子技术应用,2018,44(4):65-68.
英文引用格式: Zhao Lijie,Wei Haochen,Tian Zhiying. Helical buffering algorithm for wireless receiving of high speed digital vibration signal[J]. Application of Electronic Technique,2018,44(4):65-68.
0 引言
球磨机通过旋转带动筒体内部的研磨介质粉碎物料。研磨介质和物料在筒体旋转过程中会不断地撞击筒壁内侧,相应地在筒体表面产生振动响应。文献[1]中表明球磨机筒体表面振动信号与筒体内部物料粉碎程度存在一定数学关系,因此就球磨机筒体表面的振动信号分析来间接推断和预测出球磨机内部的负荷状态,所以在设计球磨机负荷前端振动信号采集装置中,要保证采集筒体表面的振动信号数据是准确、实时和连续的。
根据文献[2],磨机负荷前端振动信号采集装置在工作时会通过nRF24L01+无线设备源源不断地向接收端发送数据,数据传输速度可达到nRF24L01+的最高速度2 Mbit/s。在如此高速的情况下,则需要确保接收端准确接收数据。nRF24L01+最大可设定在一次传输任务中传递一个包含32 B的数据的数据包,在传递下一个数据包时中间需要间隔至少10 ns的冷启动时间,这些数据包内的数据常常在经过协议转换器件时发生数据丢失和粘连。在程序的接收中断函数中如果直接以32 B为判定依据判定出接满一个数据包,则会出现第一个数据包的后几位和第二个数据包的前几位组成一个32 B的数据包的情况,使数据位发生错乱,致使信息丢失。
数据缓冲和数据速度均衡在很多领域都有重要的应用,例如Linux文件系统内核代码中含有inode缓冲区、dentry缓冲区、块缓冲机制,这些对于数据IO性能有重要的作用;在速度均衡方面,Socket系统需要处理远程主机发送过来的大量数据,每一个Socket都会配套一个缓冲区,该缓冲区用于解决应用程序写入数据时的阻塞现象。文献[3]、文献[4]提出的缓冲区建立方法是单环结构可选择阻塞和非阻塞的缓冲模型,易于负荷均衡,在解决球磨机振动信号连续大剂量数据时有显著的速度均衡作用,可消灭相邻数据包间的延时间隔,但无法解决数据包内数据黏连问题。文献[5]提出的方法具备一般性,可应用于连续性数据的读取,但在本文的硬件条件限制下,存在数据传输格式错位问题,无法套用该模型。
综上,此软件算法在整体的实时数据传递系统上要求数据是连续不断持续供应的,且不能出现数据位错乱。因此本文提出一个在软件上建立的模型来解决nRF24L01+无线设备硬件规则与本设计要求的矛盾,以及协议转换装置出现的数据位错乱和数据不连续问题。
1 模型结构
为了清晰表达螺旋缓冲模型的机构设定和功能,使用图1所示螺旋缓冲模型的思维导图来解释模型的结构和功能。模型设定有两大机制,即时间机制和空间机制。
时间机制有两个功能,纠正由于硬件设备自带的缓冲功能造成的数据包内的字节错乱问题。问题经常出现在许多协议转换芯片上,例如由沁恒公司生产的CH340串口转USB协议的芯片中,常常由于芯片内部的缓冲区导致数据包错乱。不幸的是,本文使用的无线设备同样具备该问题,这个现象将在下一节中详细演示。时间机制另一个工作就是给定数据传输的固定节律,保证数据包的完整性,使数据包不会再次错乱。
空间机制为文献[3]~[5]中环形缓冲区的功能,有一定的空间存储数据、负载均衡作用。图2所示为负载均衡器简要功能示意图,D1、D2、D3、D4数据包之间的间隔差异明显,负载均衡器会消除这种差异,同时结合控速机制这些数据会均匀输出。另外,在空间机制中还存在隐性的功能,将设定管道为“透明的”,有指针可以随时提取管道内的数据,这将有助于一些做命令识别的通信数据。
2 时间机制
2.1 功能概述
时间机制是数据包接收的时间测量工具,数据包与数据包之间接收的间隔为10 μs,以此来判定分时使能数据接收功能。在设定相应的计时时间后,超过计时数时则使能接收功能,接收一组数据包完毕后清除超时标记位,数据指针归0,数据推入到缓冲区后被清除,等到下一次超时计时使能开启再接收下一个数据包。在超时标志位被清除之后,此时无法接收任何数据。该机制能有效地解决由于包和包之间时间间隔问题导致的数据位错乱问题。要实现超时机制,务必要求处理器具备以下功能:
(1)具备定时器并且定时器具有中断功能;
(2)具备可读电平状态的IO口或外部中断。
2.2 原理介绍
时间机制本质上是对有时间间隔的数据包进行同步读取,保证数据是一个包一个包接收的,而不是一个包的后半部分和下一个包的前半部分组成32 B的数据包,图3所示为数据包被拆开的一种可能性,错位后组成的数据包包含了1 μs的时间延时分量,不但影响速度,还会因为数据断载导致包丢失。
时间机制限定了以上在时间上自由读取,与无线发送数据包函数配合,设定布尔标志位,判定可读和不可读两种状态。图4所示为超时机制和发送函数配合的同步原理,超时机制进行计时,如果超时则将布尔变量设定为“真”,并停止计时,此时,整个发送系统进入到可读状态,32 B数据发送完毕之后,发送函数会将布尔标志位置为“假”,此时,整个发送系统进入到不可读状态,计时系统开始计时等待下一个周期的数据包,重复上述操作。
引入时间机制,若发生数据错位,如图5所示,在第二个包发送完毕后由发送函数拉低标志位开始计时,恢复同步时序。
3 空间机制
3.1 功能概述
任何系统中都有自己的一套数据管理方法,数据管理影响着整个系统的性能。在第1节中介绍了时间机制,解决了数据包黏连和错位的问题,但在接收过程中数据包和数据包之间存在1 μs的延迟,在对球磨机负荷振动信号的采集过程中,不允许以32 B为分割,要求数据是无间断连续的。在螺旋缓冲中的数据还可以不断对缓冲区域内的数据进行判定,所以就可以应用于一般通信模型的响应命令模式。
3.2 螺旋缓冲区模型
螺旋缓冲区的构想源于数据结构中先进先出的线性队列。通常在C语言中定义一个线形队列使用一维数组的方式,数组索引即是队列中的序号。螺旋缓冲区也为一个先进先出的队列,但在定义方式上采取二维数组的方式,例如data[x][y],索引代表在y层螺旋上的第x个元素,如图6所示。螺旋缓冲区具有以下特性:
(1)可以有N层;
(2)每一层环形数据满了之后可以进位到下一层,也可以在自己的一层形成首位相接的回环;
(3)定义4个指针,分别为写指针、读指针、层指针和位置指针,可以实现任意位置的数据读写;
(4)出口释放速度可定义,实现非匀速数据进入,数据匀速输出。
3.3 速度讨论
在磨机振动信号采集过程中,nRF24L01+会以32 B为一个数据包向螺旋缓冲区内推入,每个字节数据的时序图如图7所示。
在该设备中,每当CLK信号的上升沿到来,无线设备写1 bit数据,写满8 bit的数据产生一个字节。上升沿来临需要40 ns的时间,传递一个字节则需要640 ns的时间,字节和字节之间还需要10 μs的延迟。为了使输出速度平均,需要在螺旋缓冲区的出口处设立控速机制,实现匀速输出。
3.4 作为环形缓冲
图8所示为环形缓冲区模型图,环形缓冲区域为螺旋缓冲区其中的某一层次的俯视图。
“N”处为环形缓冲区中最后一个元素,这个元素可以和“1”处封闭起来作为环形缓冲区,也可以断开后与上一层环和下一层环连接上。在球磨机振动信号采集中,需要大型的缓冲区域,则需要每一层的圆环首尾相接。当磨机振动信号装置处于命令模式时,需要对圆环进行衔接,形成闭合的圆环,启用读写指针,完成对命令的实时响应。
文献[2]中给出单个高性能环形缓冲区模型,在模型中有一个不可忽视的弊端,即没有应急命令区域。在整个系统设计过程中,应急操作尤为重要,而单个圆环需要对圆环内部数据进行处理完毕后,才能响应应急命令。而在本文中给出的螺旋缓冲,可以启用两层圆环,其中一个作为应急命令处理,一旦有数据优先对其进行处理。
4 算法实现
基于文献[1],利用已采集好的离散磨机振动信号作为数据样本,对该系统中的数据模型实行可控速数据IO压栈处理。利用TMS320VC5509A型号的DSP驱动nRF24L01+无线设备作为发送机,利用TMS320C6748型号的DSP驱动nRF24L01+无线设备作为接收机,接收的数据存储在计算机上,进行一次性接收。
由于数据十分庞大,故本文截取了8 000点的离散数据,为了让数据分散度更清晰,在绘制图像时对该数据进行倍乘处理,图9所示为采样的时域离散图,从图中可以看到,每一数据点以“*”和外围“○”表示,“*”表示接收的数据,“○”表示发送的数据。本文将数据呈现在一张图上,可以看清楚明显的差异。
为了更清晰地表现数据样本,本文将坐标范围缩小至0~200,如图10所示,研究开始的错误状态。可以观察到在一开始独立的“○”和“*”分开了。
从图10中可以看到,在一开始出现了不吻合状态,这也是一开始本文提到的问题,当同步机制生效后,数据开始连续吻合了。在约126点和195点的位置,也发生了数据错误现象,原因暂时不明,后续将进行研究。
5 结论
针对球磨机数字振动信号的字节流搭建了时间机制和螺旋缓冲区域机制,确保了数据包中数据组合的正确性和数据包间的数据连续性,为后续实时振动信号分析做好了铺垫。
本文提出的螺旋缓冲算法亦可以移植到其他协议传输上,例如TCP、USB、SCI、I2C等,只需要更换底层通信代码,上层对于数据的处理只需进行少许的更改。
参考文献
[1] 谭仁鹏.球磨机振动信号采集与无线传输装置的设计与开发[D].沈阳:东北大学,2009.
[2] 赵立杰,陈斌,魏昊晨,等.一种非接触式的球磨机旋转筒体振动信号采集系统:中国,CN 105136276 A[P].2017-11-10.
[3] 姚章俊,陈蜀宇,卢尧.一种高性能环形缓冲区的研究与实现[J].计算机工程,2012,38(8):228-231.
[4] 杨泽林,李先发.基于双指针环形缓冲区的数据采集系统设计[J].仪表技术与传感器,2016(11):67-69.
[5] 黄毅峰.支持阻塞与非阻塞模型且线程安全的环形缓冲的设计与实现——环形缓冲、攻克高级缓冲技术的关键[J].电脑编程技巧与维护,2003(11):51-54.
作者信息:
赵立杰1,魏昊晨1,2,田志颖1,2
(1.沈阳化工大学 信息工程学院,辽宁 沈阳110142;2.西北工业大学 航海学院,陕西 西安710072)