基于过程现场总线技术的振动检测系统
2018-08-27苏雷皓朱明华
苏雷皓,朱明华
(1.教育部软硬件协同设计技术与应用工程研究中心(华东师范大学),上海 200062; 2.上海物联网有限公司,上海 201899)(*通信作者电子邮箱mhzhu@sei.ecnu.edu.cn)
0 引言
振动检测技术广泛应用于动力系统、火车轨道、桥梁道路等领域,保证了工业生产和日常生活的顺利进行[1-2]。20世纪末,日本某公司电厂600 MW的3号汽轮发电机组因异常振动引发了断轴、毁机的严重事故。在轨道交通领域,近年来随着火车不断提速和运输强度增长,轨道振动检测系统也不断发展进步,许多轨道病害形成的原因在检测数据的科学分析中得到了确认,病害处理比较彻底,极大地保证了铁路桥梁的安全运营。由此可见,振动检测系统对生产设施的日常维护和重大事故的预防具有重要意义。
但是当前的振动检测系统在实时性、可控性、检测精度等方面存在不足:1)由于需要网络传输的振动数据量大、工作站计算量大而造成系统实时性差。Molodova等[3]提出了基于轴箱加速度测量的铁路质量自动检测系统,可以初步实现对不同振动故障的分类;但是该设计将检测节点的大量原始数据全部传输到工作站,网络负载大,难以保证实时性。2)当前的检测系统没能对中大规模系统内的振动检测节点进行有效管理,难以保证振动现场传感器网络的可控性与稳定性。陈高杰[4]提出的基于ZigBee技术的无线通信桥梁振动检测系统方案具有安装使用灵活等优点;但是这种无线通信方案难以保证稳定性,并且数据速率较低、通信范围较小,较难满足对中大规模振动现场的检测需求。3)当前主流的检测系统精度较低。Herranen等[5]在2014年设计的振动检测设备精度约为0.488 mg;Tang等[6]在2016年设计的加速度跟踪方法精度约为0.061mg,难以满足当前某些检测任务需求。
采用过程现场总线(Process field bus, Profibus)协议有利于提高系统的可控性与稳定性。Profibus协议在工业控制领域应用比较广泛,与其他现场总线技术比较,Profibus的主要优势是通过了权威的国际标准EN50170的认证,并已经应用于实时控制、制造加工以及工业流程自动化等领域[7]。陈静[8]设计的用于火电厂主工艺和辅助车间的控制系统应用了Profibus技术,满足了Profibus控制系统在网络结构、控制方式、可靠性等方面的技术要求。若能在振动检测设备上实现Profibus协议,则有助于实现检测设备的功能定制开发和对传感网络有效管理。
采用RT-Thread系统内核有助于提高系统的实时性。RT-Thread是中国开源社区主导开发的面向小型、低功耗设备的开源嵌入式实时操作系统。RT-Thread开发了统一的硬件抽象层、设备驱动框架、传感器框架来解决硬件多样化、碎化的问题,具有实时性高、占用硬件资源小、功能可裁剪等优点[9]。汪宇辰[10]设计的智能轮式机器人使用RT-Thread操作系统进行开发,充分发挥了该系统的实时性与稳定性优势,使轮式机器人具备优异的平衡性能,具有较高的研究价值。传统方法大多在微控制器上采用无操作系统的“裸机”方式开发任务程序,这种方式开发效率低、多任务时难以保证实时性,本文采用RT-Thread系统有助于高效开发和提高系统的实时性。
综上所述,基于当前振动检测系统存在的问题和对现场总线协议及实时嵌入式系统的研究。为了解决振动检测系统延迟大、传感网络可控性差、检测精度低等问题,本文设计了一种基于Profibus技术的振动检测系统,主要有以下特点:1)为保证振动传感网络的鲁棒性和可控性,本设计采用Profibus协议,即在振动检测设备上实现了Profibus协议。2)在每个振动传感器节点处实现卡尔曼滤波、快速傅里叶变换等复杂计算,减轻了传感网络负载和工作站的计算压力,有助于提高系统的实时性和计算能力。3)为保证检测设备的实时性和稳定性,采用RT-Thread实时嵌入式系统内核实现资源分配和任务调度。
1 振动检测系统设计
结合Profibus技术架构和对振动检测系统开发经验,本文设计提出的振动检测系统架构如图1所示,工作站电脑通过虚拟“路由器”的方式与可编程逻辑控制器(Programmable Logic Controller, PLC)主站连接,PLC主站通过Profibus与振动检测设备连接。本文系统主要实现了对振动的采集、振动数据处理和计算、数据传输等功能,为后期振动状态诊断奠定基础。该设计可应用于中大规模振动检测场景,如火车轨道振动检测、大型器械振动检测等领域。
图1 振动检测系统的结构
1.1 振动检测设备功能
振动检测设备软件功能设计如图2所示,由振动数据采集、数据处理、重要数据存储、网络控制与数据传输协议、异常预报警等部分组成,通过轻量级的RT-Thread实时嵌入式系统内核实现任务管理与对微控制器的资源分配。
图2 振动检测设备功能设计
振动检测设备的设计是本系统设计的重要环节,图2中振动检测设备功能设计的具体描述如下:
1)振动数据采集。采用高性能振动传感器来进行振动数据的采集,它的检测精度可达0.003 9 mg,采样频率可达500 Hz。
2)振动数据处理。数据处理包含数据预处理、卡尔曼滤波、快速傅里叶变换(Fast Fourier Transformation, FFT)等。本设计选用的微控制器集成了数字信号处理器,可硬件实现部分复杂计算,速度快。
3)重要数据存储。每个节点的配置信息等重要数据保存在存储器中,可实现掉电保存。
4)网络控制与数据传输。本设计采用Profibus协议实现对传感器网络的控制与数据传输。
5)可通过串口协议输出设备当前的状态信息。
6)异常预报警。可通过数字模拟转换器输出模拟信号,可通过光耦隔离输出数字信号,根据振动情况实现必要的现场控制与报警。
振动检测设备实际的开发过程中的主要难点在于:1)数据处理与计算较复杂,如FFT、卡尔曼滤波等,在有限的微控制器资源内难以保证实时性;2)需要支持Profibus协议,该协议的实现和调试难度大;3)采集振动数据时要求精度高(不低于0.01 mg),采样频率高(不低于400 Hz)。
1.2 RT-Thread内核开发与改进
在RT-Thread实时操作系统中用线程的方式完成各种任务,具有任务执行上下文和优先级等信息的线程是RT-Thread的基本调度单位。为了保证系统任务的有序执行,在设计时可以把紧急任务的优先级设置高一些,并适当放低非实时任务的优先级。在RT-Thread中,线程调度器是基于优先级的全抢占方式:除了中断服务例程、调度器上锁等线程不允许抢占,系统中的其他线程任务都允许抢占[11-12]。
如图3所示,RT-Thread实时系统中的线程包含初始化、就绪、运行、挂起、关闭这5种状态,系统能够根据线程运行的情况动态调整线程状态。例如线程通过调用接口rt_thread_init进入到初始状态(initial),通过调用接口rt_thread_startup进入到就绪状态(ready)。RT-Thread系统的内存管理根据任务需求和系统资源的不同提供了不同的内存分配管理算法,主要分为两类:静态分区内存管理与动态内存管理。在动态内存管理中采用适用于小内存块的“小内存管理算法”和适用于大内存块的“Slab内存管理算法”等内存管理方式。
图3 RT-Thread的线程状态转换
本设计在振动检测设备上开发实现了RT-Thread实时操作系统内核,保证了振动检测设备的实时性和稳定性。为保证实时性和系统性能最优,本设计将振动检测设备的整体功能划分为振动数据获取、数据处理、Profibus协议收发等多线程任务,线程间大多采用消息队列的方式实现线程间通信。此外,本系统把RT-Thread内核与微控制器硬件资源(定时器)融合改进设计:在振动数据获取时需要每秒采集400次数据,即2.5 ms采集一次,但是RT-Thread内核默认的系统时间片为10 ms,不能满足要求;而微控制器中的定时器可以实现微秒级计时,可满足要求。若将系统的时间片改小,则会严重影响系统性能,增加功耗,因此本设计在此线程任务中融合使用微控制器的定时器资源和RT-Thread内核,在线程任务中控制定时器完成所需任务。该改进设计的具体实现方法如下:1)振动数据采集任务线程启动后,开启微控制器的一个定时器,利用微控制器的定时中断机制以固定频率(比如400 Hz)读取振动传感器的数据,并将读到的数据依次放入到栈空间中。与此同时,该振动数据采集任务线程通过调用函数rt_mq_recv进入挂起状态,等待定时器数据采集完成后发出消息。2)数据采集任务完毕后(比如已完成连续采集512个振动数据任务),定时器中断服务例程会调用函数rt_mq_send给数据采集任务线程发送消息,同时自动关闭定时器。3)数据采集任务线程收到该消息后会进入就绪状态,进而读取栈空间的振动数据并进行后续处理。
1.3 系统软件流程
系统软件流程如图4所示,系统上电后开始系统内核初始化,为整个系统系统稳定运行奠定基础。然后对振动传感器、串口等各个功能模块进行初始化,为系统所需的功能实现作好准备。紧接着初始化Profibus协议,为数据传输作准备。然后进入振动数据采集和振动数据处理环节,最后通过Profibus协议进行数据传输与系统管理。
此外,振动检测设备可以根据部分特征值对振动状态进行预诊断,常用的特征值如峰峰值、FFT后最大幅值及对应的频率、均方根值等,若发现异常可立即报警,并通知工作站,实现快速对现场进行保护。振动检测设备可通过串口输出自身的状态信息,并把重要数据保存在存储器中。
图4 系统软件流程
1.4 Profibus协议原理与开发
一个Profibus网络一般由一个主站和多个从站组成,在本设计中,PLC主站作为Profibus网络中的主站,振动检测设备作为从站。主站的参数配置包括参数化数据和主站所控制的从站信息,并且只和属于自己的从站建立通信,主站可以根据参数化和组态这两个报文确定属于自己的从站。系统启动后主站通过组态时设置的波特率与从站建立通信,同时从站会利用专用集成电路自动适应主站报文的通信波特率。在通信过程中从站实时分析收到的每个报文,若有异常的报文信息可以自动把输出设置到安全模式,此时主站也会利用诊断报文及时发现异常。
从站的状态机由“上电”“等待参数初始化”“等待组态”“数据交换”四部分组成。系统启动后,从站接收主站发出的“设置从站地址”报文,并且只有此时从站能够改变地址号。本设计把默认或者重新配置的从站地址保存在从站(振动检测设备)的存储器中,能够实现掉电保存。然后从站进入等待参数化状态,此时从站可以接收参数化报文或者诊断请求报文,并且自动屏蔽其他报文。其中参数化报文包含是否支持同步或者锁定方式等标准化的信息以及其他用户定义的功能信息。参数化完成后进入等待组态阶段,主站发出的组态报文定义了数据交换的输入/输出的字节数等信息,从站会检查是否能匹配该组态报文并反馈给主站。如果从站接受了参数化和组态报文说明通信组态成功,之后主站和从站自动进入数据交换状态。
在振动检测设备上开发实现Profibus协议时,首先对相关软硬件进行初始化设置,采用SPI方式与Profibus协议芯片实现通信控制,然后由RT-Thread内核线程轮询以下接口任务:1)看门狗定时器翻转,实现“喂狗”;2)查询Profibus事件,获取当前状态;3)进入Profibus从站状态机,根据不同状态执行相应任务;4)判断是否有Profibus中断紧急事件,若有则执行相应任务。本研究中的振动数据处理后有较多浮点型数据(float型,占用4 B),在实际应用中多采用字符串形式(一般大于4 B)传输浮点型数据,这种方式虽然处理简单,但是会损失精度、增大数据传输量。在本设计中采用共同体的数据结构实现对浮点型数据的存储和“压缩”传输,并在PLC主站“接收端”进行相应的“解压缩”处理,因此传输每个浮点型数据仅占用4字节,即保证了精度,又降低了数据传输量。
2 振动数据处理
2.1 振动数据处理改进设计
一般来讲,每个振动检测系统至少有几十甚至几百个振动检测设备节点。若每个节点的检测数据都交给工作站电脑处理计算,会给工作站电脑带来巨大的负担,再加上传感器网络数据传输的延迟,会使整个系统的实时性变差甚至使系统崩溃。
本文对振动检测系统的数据处理改进设计如图5所示,与传统的振动检测系统相比,本文系统在每个检测设备节点处实现了一些必要的数据处理和计算。以400 Hz的采样频率为例,若采用传统的检测系统,单个检测设备在传感网络中每秒需要传输的数据约400个;若采用本文设计的改进型检测系统,只需要传输峰峰值、FFT后最大幅值对应的频率、均方根值等约20个数据,因此传感网络的负载降低了约95%,缩短了网络传输时间和工作站的计算时间,提高了整个系统的计算能力和实时性。
图5 振动检测系统的数据处理改进设计
振动检测设备中的数据处理过程如图6所示。
图6 振动检测设备中的数据处理过程
传统的设计一般仅输出振动传感器数据。在本设计中,检测到原始数据后,首先进行零点校正和卡尔曼滤波等预处理,以求得更真实的振动数据。然后进行数据处理和计算,在时域信号中可以求得峰峰值、均方根等特征参数,但精准的振动诊断还需要FFT后最大幅值及对应的频率、能量谱密度等频域中的特征参数,所以有必要进行数字滤波和幅频变换等处理。最后若发现异常的数据,则进行预报警。
2.2 振动数据预处理
在实际应用中,直接从传感器读取的原始数据与仿真时的数据差距较大,原始数据一般是离散的,并且往往含有许多坏值[13]。若将这些数据直接输给控制器,将严重影响控制效果,甚至会带来灾难性后果,所以对传感器数据的预处理非常重要。
卡尔曼滤波算法已被广泛应用。该算法以最小均方差为估计的最佳准则,将被关心的随机过程用状态空间概念来描述,采用递推估计算法估计多个状态变量,可以实现较好的实时滤波效果[14]。卡尔曼滤波采用振动传感器的典型应用是从一组有限的并且包含噪声的物体位置观察序列(该序列可能有一定偏差)预测出物体的速度及位置信息。
由于振动场景一般是非线性系统,所以本设计采用扩展卡尔曼滤波算法对振动数据进行处理,滤波效果如图7所示。由图7可以看出,原始的振动传感器测量值有较多坏值和毛刺,若不作处理会严重影响后续峰峰值等计算的正确性。经过扩展卡尔曼滤波后的数据更加平滑真实,更能反映实际的振动特征,有效过滤掉了一些杂波,有利于后续的数据处理。
图7 扩展卡尔曼滤波处理
2.3 检测节点处振动数据的复杂计算
为了提高系统的计算能力和实时性,减轻工作站的计算压力和传感网络负载,本设计在每个检测设备节点处实现了一些必要的数据处理和计算,对振动数据处理的部分计算式如下所示:
其中:k=0,1,…,N/2-1。
(1)
快速傅里叶变换把时域信号转换成频域信号,从而获得FFT后的最大幅值及对应的频率等在频域中的特征信息,其计算方法如式(1)所示。X(k)=DFT[x(n)],x(n)为有限长度为N的振动信号数据,DFT[]为离散傅里叶变换(Discrete Fourier Transform, DFT)。尽管传统的DFT能够获取频域特征,但是它的计算量大、耗时长,严重影响实时性,所以在本设计中使用了快速傅里叶变换,把运算复杂度从N2减少到N*lbN。
功率谱密度的定义是单位频带内的“功率”,功率谱密度谱是采用概率统计方法实现对随机变量均方值的量度,计算方法如式(2)所示:
(2)
其中x(n)为有限长度为N的振动信号数据,功率谱密度在随机振动分析领域中应用普遍。本设计采用的微控制器集成了数字信号处理器,本节内容所述的FFT等复杂计算可由微控制器硬件实现,在计算时直接调用相关库函数即可,缩短了计算时间,提高了计算的可靠性。
3 实验与结果分析
3.1 实验平台
本系统的所有功能都已通过严格测试,在本章只呈现较重要功能的实现与测试。所需硬件平台:1)工作站电脑(Windows 7系统);2)PLC控制器套件,作为现场总线协议的主站;3)振动检测设备,是自主设计并生产的振动检测设备。所需软件平台:1)振动检测设备软件;2)PLC控制器开发平台;3)Matlab工具。
本设计振动检测系统实验平台如图8所示,“1”是工作站电脑,“2”是PLC主站,“3”是振动检测设备,“4”是直流稳压电源。将振动检测设备固定在振动平台上,实现下文中系统的整体测试。
图8 振动检测系统实验平台
3.2 Profibus通信测试与分析
本系统已经实现Profibus协议,其中振动检测设备作为从站,PLC控制器设备作为主站,其功能测试结果如图9所示。首先在PLC控制器开发平台可看到振动检测设备的状态为“No error”,并且此时PLC中Profibus主站模块常亮绿灯,说明Profibus协议工作正常。然后进行了大量的Profibus协议数据收发测试,所有数据与预期结果一致,进一步说明Profibus协议工作正常。
图9 Profibus通信功能测试
为充分说明Profibus协议的可控性,本文设计还对该系统进行了大量故障测试,比如故意将某个振动检测设备的Profibus接线反接,测试效果如图10所示,PLC主站会快速提示“Server bus fault”,并显示已有1 300个通信报文Profibus从站未回应。本文设计通过对Profibus协议的全面测试说明它有效提升了系统的可控性与稳定性。
图10 Profibus通信故障测试
3.3 系统整体测试与分析
为方便操作和使用,本研究为该系统设计了振动检测系统上位机。上位机运行在工作站电脑上,操作界面如图11(a)所示:“Station No.”代表振动检测设备的设备号;“Display Mode”代表振动数据的呈现方式,有实时振动波形显示方式、历史数据文本显示等方式;Peak-Peak、FFT_Mag、FFT_Fre、RMS分别代表振动数据的峰峰值、FFT后最大幅值、FFT后最大幅值对应的频率、均方差值。
为对比说明本文系统的精确性和可靠性,振动检测设备检测到振动后(振动平台以3.8 Hz左右的主频振动),一方面将振动数据通过Profibus协议发送到工作站电脑,工作站电脑将此振动数据用Matlab工具进行数据处理;另一方面振动检测设备将振动数据作傅里叶变换等处理。所得结果如图11所示,由图11(a)可知振动数据已经成功传输到上位机,振动检测系统得到的峰峰值、FFT后最大幅值对应的频率、均方根等值和真实的振动数值(用Matlab工具计算得到的数据,如图11(b)和图11(c)中的曲线和数据)一致,分别为0.472 2、3.783 0、0.163 2,实现了预期功能。
图11 振动检测系统数据处理与传输测试
在实时性方面,图5和图6所示的数据处理改进设计使总线网络传输数据量是传统方法的5%,实验表明此改进使总线网络传输时间降低约21.5%。另外,对于由512个原始振动数据组成的一组样本数据,单个振动检测设备对这组数据进行FFT等处理所用时间是工作站电脑所用时间的75.6倍左右。以100个振动检测设备组成的检测系统为例,本系统数据处理所用时间是传统方法的75.6/100=0.756倍,即数据处理时间降低约24.4%。综上所述,以100个振动检测设备组成的检测系统为例,理论上本系统与传统的振动检测系统[15]相比综合节省时间(综合考虑系统的网络传输时间和数据处理时间)约22.95%,在实际测试中综合节省时间为21.6%。
4 结语
为提高振动检测系统的实时性和计算能力,本文设计并实现了一种基于Profibus技术的振动检测系统。在检测设备中采用RT-Thread实时嵌入式系统,保证了设备的实时性和鲁棒性;在振动传感器节点处实现滤波处理和必要的计算功能,降低了网络负载,提高了系统的实时性和计算能力。实验结果表明,本文所提的改进使振动监测系统更加实时、可控、精确,有利于推动振动检测技术的发展。在未来的研究中,将重点放在振动诊断算法中,尤其是可以在振动检测嵌入式设备中运行的轻量级诊断算法,进一步减轻工作站电脑的计算压力,提高系统的实时性。