电机故障监测系统的振动信号采集上位机设计

2021-03-02 10:56丁军航
自动化与仪表 2021年2期
关键词:采集卡内存波形

王 斌,丁军航,5,6,官 晟

(1.青岛大学 自动化学院,青岛266071;2.自然资源部 第一海洋研究所,青岛266061;3.青岛海洋科学与技术试点国家实验室 区域海洋动力学与数值模拟功能实验室,青岛266237;4.自然资源部 海洋环境科学与数值模拟重点实验室,青岛266061;5.青岛大学 山东省生态纺织协同创新中心,青岛266071;6.山东省工业控制技术重点实验室,青岛266071)

在工业生产和控制中,电机经过长时间运行易出现故障,从而导致整个关联的系统不能正常运行,造成经济损失[1]。而通过振动信号往往能较为直观地了解、掌握设备在运行中的状态,评价、预测设备的可靠性,及早发现故障。因此,设计一套振动信号采集监测系统,以采集电机的运行数据,进行电机状态监测,对于保障电机正常运行、避免发生事故具有重要意义[2-3]。

如今数据采集技术飞速发展,用户可以直接通过数据采集系统获取外界硬件设备的数据,并在计算机中进行数据显示、分析与处理。传统的基于单片机的数据采集系统,虽然灵活性强,但硬件设计较复杂,且开发周期较长[4],因此通常选用使用方便、功能齐全的数据采集卡来获取数据。

台湾研华公司在数据采集技术上较为成熟,在工业控制中得到广泛应用[5]。而其提供的配套数据采集软件安装复杂,空间占用较大,且不能对异常的数据进行及时判断,使用起来较为不便,故在此根据研华的相关驱动函数进行数据采集软件的二次开发。

1 上位机软件总体设计

1.1 需求分析

研华公司为采集卡配备的软件DAQNavi 安装繁琐,启动较慢;需要安装并开启子软件DataLogger,操作不便;比较占用系统资源;软件并不具备信号的异常报警提示功能,用户并不能对设备异常进行及时发现处理。因此,需要对采集软件进行重新开发设计,满足用户需求。

在此,电机故障监测系统所用采集卡为研华USB系列采集卡,其具有2种采集模式:Instant AI和Buffered AI[6]。Instant AI为实时采样,每个数据单独传输,采样间隔由软件程序决定,采样率相对不高;Buffered AI为缓存采样,先将数据依次暂存在缓存中,储存到指定数量后再批量传输,采样率由硬件本身所支持的采样率决定,可实现高速采集。这2种采集模式都有各自的优缺点,并有着不同的实现方式。在此针对这2种不同的采集方式进行设计,以实现在不同需求下的数据采集。

软件采用Windows 操作系统,在Visual Studio 2019 环境的.net 平台下使用C# 语言进行开发,采用模块化设计,其功能模块如如图1所示。

1.2 设计流程

按照图1所示振动信号采集监测软件功能模块,在软件开始运行时,需要选择欲连接的采集设备,设置好采集参数,选择要采集的方式;在采集过程中观察波形显示,注意报警提示;在采集结束后,可查看本地保存的振动数据以及报警信息。上位机软件的设计流程如图2所示。

图1 软件功能模块Fig.1 Software function module

图2 软件设计流程Fig.2 Flow chart of software design

2 各功能模块设计

2.1 数据采集设计

2.1.1 实时采样

瞬时电压读取需要采用Window 窗体(Win-Form)的定时器控件(Timer)定时触发采集卡驱动提供的Read 方法。将方法置于Timer的触发事件Tick中,每触发1次Tick,便得到1个数值。Instant AI程序流程如图3所示。

图3 Instant AI 程序流程Fig.3 Program flow chart of instant AI

定时器Timer的Interval 属性表示时间间隔,接受数值为int 整型,因此最小时间间隔可设为1 ms,相应的最大采样率能达到1000 Hz。在代码运行测试时,单通道下,将Interval 设置为1,即理论上1 s内Tick 事件会执行1000次,得到1000个数值,但实际保存了几组10 s的数据,发现每组数据的数量都在640个左右,即每秒采样约64个,精度为15 ms,与设置值相差较大。

后改用Windows 自身封装的其他2种定时System.Timers.Timer 和System.Threading.Timer,发现精度和WinForm 下的差别不大。之后尝试用Thread.Sleep 方法进行循环等待来实现定时,该方法最高精度同样为1 ms,实际使用时也发现存在+1 ms的误差。查阅相关资料后,发现在多媒体应用上,对每一帧图像的获取精度要求都很高,因此通常使用一种多媒体定时器MmTimer,这是一个高精度且线程分离的定时器,不依赖消息机制,具有较高的优先级[7-8]。在本文采集系统中实际应用该定时器,发现确实也有着很好的效果。

因为Windows 系统不是实时操作系统,任何方案都不能绝对保证定时器的精度,只能尽量地减少误差。各种方式在1 ms 精度下测试采集1000个数据的耗时情况见表1,采用多媒体定时器能更好地保证Instant AI 采样率的准确性。

表1 各定时器使用比较Tab.1 Comparison of timers

2.1.2 缓存采样

Buffered AI 采用内部时钟采集数据,不依赖外部定时器,采样率可达上万赫兹,数据通过设置缓冲区(Buffer)的大小进行批量传输。Buffer 缓冲区可被分为若干段(Section),当开始采集时,获取的数据填入Buffer 中,每当Buffer 中的一段Section 被填满,便会发出一个DataReady 事件,用户可在该事件内调用GetData 方法获取这一段的数据。若Section个数设为0,为流式采集,需用Stop 方法停止;否则为有限采集,所有Section 填满后会自动停止。Buffered AI 程序流程如图4所示。

图4 Buffered AI 程序流程Fig.4 Program flow chart of Buffered AI

Buffered AI的采样率由硬件时钟决定,舍弃实时性,可更快更多地进行数据传输,之后可统一对数据进行批量处理。在程序设计中,因数据传输量大,需注意Section 不能设置过小,或DataReady 事件处理代码过于复杂,否则会使旧事件尚未完成就被新触发的事件覆盖,导致数据丢失;若采样率设置过高,也会导致硬件缓存溢出,在丢失数据的同时也加重硬件负担。

2.1.3 定时采样

为方便使用,软件在原有的采集功能上,加入了定时采集功能,不必人为控制采集的始停,用户可通过设置当天的一个时间段,当系统时间到达指定开始时间后,会自动开始采集,到达设定结束时间后自动结束。该段时间内采集到的数据也会自动保存到本地文本文档txt 中,用户可直接拿到进行后续分析。

2.2 波形显示设计

软件使用GDI+的Graphics类进行绘图,完成动态波形显示。因采集时会随时获得新的数据,绘图需实时循环更新,在此使用List 集合进行数据的传输存放,该集合是一个可以动态增减成员的数组,可自动扩展成员个数[9]。每次获得数据,便添加到List 集合中,并将数据转位坐标点传入绘图方法DrawCurve 中,当满3个点时开始画曲线并实时更新显示[10]。当集合中的数据个数大于屏幕显示的最大宽度量时,删除之前面显示过数据,重新绘制新的数据,这样既实现了波形动态移动的效果,又避免了数据不断积累从而占用内存。

程序启动时,会先初始化显示窗口为长宽十等分的网格,等开始采集时,采集到的振动数据会以波形显示在窗口中;对于已有的数据,也可以利用数据回放功能在回放窗口中重新进行波形绘图显示。

2.3 数据存储设计

Buffered AI 能提供较高的采样率,为防止在长时间持续高采样率下因数据量过大而导致过高的内存占用,采集到的数据不能一直存放在内存中,若数据过多,需要及时转移到本地,以释放内存。通过试验测试,在10000 Hz 采样率下,1 min 采集的数据占用了8 MB,如此换算2 h 后便可达到GB 级,若实际项目所需采样率更高,采样时间更长,则更需要考虑内存溢出问题。本文所提方法是在数据用于图像显示之前,先保存为本地dat 文件写入到程序目录下的Data 文件夹中,在显示时当波形满屏后,删除掉存放数据的集合中之前已显示过的数据,这样既保存下了所有数据,也不会造成过高的内存占用。

每当一段采集结束,便会在本地生成一个dat文件,使用该文件可以进行数据回放,也可通过数据保存按钮选择需要提取的dat 文件及保存路径,软件会将其另存为txt,方便进行后续的数据查看与分析。

2.4 异常报警设计

Buffered AI 方式由于数据量太大,相应波形显示的也快,因此很难用肉眼直接观测到波形异常,只能拿到一段数据后通过后续分析来判断该段时间内是否存在异常情况。为了使用户能够在高速采集下也能及时捕捉到可能的异常,在此实现了一个Buffered AI 采集下的异常报警功能。

电机沿轴转动,其产生的振动信号在时域上具有一定的周期性,当电机出现异常时,其振动信号在幅值上会有较为明显的变化[11]。Buffered AI的数据是以一个Section为单位批量传输的。在此将Section 大小设置为一个周期的数据量,通过记录每段Section 数据中的边界值和平均值,同时设立一个阈值,当新来的一组数据边界值超过该阈值时,则认为该段数据存在异常值,记录该异常值以及出现时间,在报警提示窗口中记录显示并存入程序目录Log 文件夹的log 文件中,之后再比较后续数据。若之后数据恢复到边界之内,则可视为设备受到了临时外界干扰;若异常一直持续,则提示设备可能损坏,提醒用户及时排查异常。

3 试验测试

以三相异步电动机作为待测振动设备,将振动传感器固定其上,连接数据采集卡,再连接个人电脑,通过软件进行数据的采集测试。所用实验平台如图5所示。

图5 电机振动信号监测实验平台Fig.5 Experiment platform for motor vibration signal monitoring

为测试采集功能,将采样频率调至采集卡最高支持的48 kHz,分别采集1×106,2×106,5×106,10×106个数据存入本地,并统计采集耗时得到试验结果,见表2。由表可知,该软件能够在采集卡支持的最高采样率下,较好地完成采集任务。

表2 采集试验结果Tab.2 Result of acquisition experiment

使用Process Explorer,在同一台电脑设备上测得的研华DataLogger 软件与本文软件在48 kHz 采样率下,持续运行采样的资源占用情况如图6所示。由图可见该软件在CPU 占用和内存占用上都有所降低。

为测试异常报警功能,在试验时,先使电机正常运转并监测其波形,再用螺丝刀人为地将电机与实验平台之间的固定螺栓拆卸掉,电机失去固定,导致振动幅度增大,相对应的波形也出现明显变化。这一过程的波形显示如图7所示,此时信号的幅值相比原来有所增大。

图6 两种软件CPU 与内存占用情况比较Fig.6 Comparison of CPU and memory usage of the two software

图7 振动采集信号波形显示Fig.7 Display of vibration acquisition signal waveform

出现异常后软件根据幅值阈值及时检测出了异常值,并将各异常信息记录在了报警信息窗口以及本地log 文件中。异常报警信息界面记录了此次异常信息,如图8所示。

图8 异常报警信息界面Fig.8 Interface of abnormal alarm information

4 结语

在此所述的振动信号采集监测系统,能够对易产生故障的振动设备进行实时监测,及时发现异常,进行修复更新。编写的上位机软件实现了数据采集卡的2种采集方式,在实时采集中采用多媒体定时器提高了采集速率;在高速采集下,设置了信号幅值阈值,对超出阈值的异常信号进行实时报警。通过试验对各项功能进行了测试,软件能够良好运行,同时操作界面友好,简单易用,用户可方便地控制采集过程。该系统扩展性好,后续可实现数据的服务器上传与下载,以及信号的滤波和时频转换等处理,可广泛应用到各种易损设备的异常检测中。

猜你喜欢
采集卡内存波形
高精度AD采集卡性能测试及评价方法研究
“春夏秋冬”的内存
基于LFM波形的灵巧干扰效能分析
用于SAR与通信一体化系统的滤波器组多载波波形
面向数控机床的多通道传感数据采集卡设计
并行高速采样在地震物理模拟采集中的应用
基于ARM的任意波形电源设计
双丝双正弦电流脉冲波形控制
PCI-e高速数据采集卡的驱动与上位机软件设计
内存搭配DDR4、DDR3L还是DDR3?