LabVIEW转子动平衡测控系统

Posted 不脱发的程序猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LabVIEW转子动平衡测控系统相关的知识,希望对你有一定的参考价值。

目录

1、项目背景

2、项目功能

3、项目框架

3.1、系统原理

3.2、系统框架

4、开发工具

5、功能实现

5.1、数据保存

5.2、转速测量

5.3、实时轴心轨迹绘制

5.4、数据滤波

5.5、工频特征值提取

5.6、模态参数识别

5.7、动平衡控制

6、项目效果

6.1、参数设置界面

6.2、数据采集界面

6.3、振动分析界面

6.4、动平衡控制界面


1、项目背景

本软件是基于 LabVIEW 的转子动平衡测控系统,为了实现转子信号的实时精确采集,使用高采样频率,提高采样的转换速率,通过多通道实时采集的 NI 采集卡实现信号采集。

项目资源下载请参见:https://download.csdn.net/download/m0_38106923/87619121

为了分析信号的各个频率的特点,将采集到的信号进行实时处理,得到信号时频域的特点。

为了了解转子实验台的模态参数,分析出实验台的各阶临界转速,提高动平衡的效果,利用模态分析模块,对激励和响应信号处理得到频响函数,系统可直接识别出模态参数。利用本系统可以进行离线模态的分析也可以进行在线的模态分析。

为了能消除主轴加工过程中由环境及工况变化等因素导致的不平衡,有效提高平衡精度和效率,可进行动平衡控制。控制系统实时对转子信号进行分析,实现不平衡量的识别和校正。

2、项目功能

本测控软件可以实现以下功能:
  • 实时采集旋转主轴的振动信号;
  • 数据动态实时显示;
  • 振动信号时频域处理;
  • 旋转主轴轴心轨迹的绘制;
  • 振动信号滤波处理;
  • 模态分析;
  • 进行动平衡控制;
  • 转速的实时测量;
  • 工频特征值的提取;
  • 数据保存。

3、项目框架

3.1、系统原理

转子动平衡测控软件的基本原理是:测试系统实时监测转子的振动,系统对径向或者横向振动信号进行处理,停机进行转子不平衡量的校正。同时设计了模态分析可以辅助我们对平台进行临界转速下的动平衡。

转子动平衡测控系统原理图如下所示:

3.2、系统框架

本文所设计的 LabVIEW 软件系统主要包括五个模块:参数设置模块,数据采集模块,数据保存模块,数据分析模块及基于影响系数法单面试重进行转子动平衡模块。其中包括许多子模块包括频域分析模块,工频特征值提取模块,滤波模块,模态分析模块,转速测量模块等等,其整体结构图如下图所示:

4、开发工具

为了保证各硬件之间的协调工作,并使系统具有更高的可靠性,根据硬件支持的操作系统说明,选LabVIEW作为硬件系统运行支持。

为了使软件运行具有最高的效率,选用 LabVIEW 与 Matlab 混合编程。LabVIEW 是一款图形化的编程语言开发环境,具有大量的模块函数、开放式的编程平台、支持 TCP/IP,DDE 等协议,以及对多种硬件的设备驱动功能等特点;Matlab 有可靠的数值计算和符号计算功能、强大的绘图功能、简单易学的语言体系以及为数众多的应用工具箱。把 LabVIEW 软件平台与 MATLAB 相结合使用,无疑将使虚拟仪器的数据处理功能更加强大,大大缩短了开发周期。

5、功能实现

5.1、数据保存

用户点击界面的保存按钮,提示用户选择保存文件的文件夹用户即保存相应的信号数据。实现方法是通过 LabVIEW 调用 MATLAB script 脚本函数将数据保存成 mat 文件。即实现数据的保存功能。

下图是保存八个通道的采集数据的数据保存程序框图。

5.2、转速测量

转速的测量及振动信号的参考相位主要是通过光电传感器来获得的。在转子上贴上一小块反光材料或者黑色的胶布。当光电传感器的光打到转子的反光材料时,光电传感器接受到的光的强度就会发生变化,直接的反映就是采集到的光电传感器的电压信号会随着转子的旋转产生周期信的方波信号(包含许多递减的谐波信号)。

通过采集到的方波信号,再通过阈值处理生成二值化方波,其次要先记录转速下降沿的时刻信息,并将其放在周期时刻数组,在周期到达 5 或者点数超过1980则结束该循环;最后在求得周期时刻信息后,根据转速周期的数据以及对应的时刻值求得每个周期的时间,然后求对应转速。

5.3、实时轴心轨迹绘制

将进行过减均值处理的两路信号,分别作为绘制轴心的 X、Y 向位移数据输入到 XY 图控件中去就可以绘制轴心轨迹了。

5.4、数据滤波

将相应的波形数据首先进行 FFT 变换,在频谱中去掉相应的频率成分,然后再进行 FFT 逆变换获得滤波后的波形图。具体原理如下图所示:

5.5、工频特征值提取

通过相关算法提取工频特征值,建立与基频频率相同的正余弦信号,通过相关算法可以过滤掉除基频之外的其他频率成分,从而实现信号的工频幅值和相位的提取。由于 matlab 实现算法的便捷性,采用 LabVIEW 调用 matlab 的形式完成算法的实现。

利用 FFT 变换对信号进行频谱分析,提取幅值谱的峰值对应的频率,该频率基本上就可以认定为工频频率,该峰值基本上就是工频幅值。接着从相位谱中找出工频频率对应的相位就是工频相位。

5.6、模态参数识别

有时候在测量数据的时候有一定的干扰,利用三次采集到的数据进行平均可以使得得到的频响函数更加准确。

首先将测得的频响函数在一定的频段内进行傅里叶逆变换,接着利用 LSCE法进行模态识别。

LSCE 方法的基本思想是通过 Z 变换因子来表示脉冲响应,然后再构造 prony多项式并确定 prony 多项式的自回归系数,再由 prony多项式求取包含系统极点信息的复指数项,进而求得系统极点和留数,从而得到完整的模态参数。

5.7、动平衡控制

在实际测量过程中,需要将测得的信号记录并保存在程序中,以便与之后计算配重方案的时候方便调用。利用条件框将不同的数据存储到对应的输出数据框中。

最后计算配重的时候要将其进行换算,将得到的配重的幅值和相位对应实际的配种盘进行转换。相同默认所使用的配重盘只有 16 个孔,每个配重孔之间间隔 22.5°角,同时所使用的配重螺钉重量也有限制。

6、项目效果

6.1、参数设置界面

参数设置主要分为采集通道参数设置、振动分析参数设置、动平衡参数设置等方面,但具体到软件系统有采样速率、采样点数、采样方式、主轴转速、传感器与轴的阈值距离、传感器灵敏度、通道设置、转速阈值、滤波方式选择等等参数的设置。

本测控系统,设置了一些默认的参数,用户需要根据具体的情况进行修改。实际测量中NI 采集卡的八个通道所连接的传感器的灵敏度不一定相同,依照实际情况特别将传感器灵敏度对应八个通道进行分别的设置。主轴转速的设置也还是依照实际读取到的主轴转速。数据滤波参数设置中,为了显示效果我们只是一次性显示某一个通道的信号,因此需要提前设置。

6.2、数据采集界面

数据采集界面主要是实时进行八个通道的数据的采集,具体的物理通道是根据所选择的 NI 采集卡自动识别的。界面主要可以划分为:时频域波形的显示、波形显示指示灯、采集信号物理通道、传感器与轴的阈值距离、工频特征值显示、电压与幅值转换、采集参数二次设置等几个区域。

软件系统可以将采集到的振动信号以时域和频域的方式实时显示出来,采集通道前的指示灯主要表明对应通道的信号是否显示,实际上所有通道的信号都已采集到。采集通道后的颜色方块可以实时调节该通道显示的波形曲线的颜色。右侧的工频特征值的提取区域可以实时显示对应通道的工频频率、工频幅值、工频相位。

右上侧显示了一些数据采集的参数,如采样频率、采样点数等。但是如果用户想实时修改可以点击设置按钮,就可以对相应参数进行实时设置。

右下侧提供开始、保存、停止按钮,点击开始按钮,采集系统就开始工作,点击保存系统弹出保存路径对话框,设置好路径后就会自动将八个通道的数据保存成 mat 格式的数据文件供 matlab 软件调用分析。点击停止按钮系统就停止工作。需要注意的是,当某通道前的指示等灭的时候,该组数据是自动清零的。如果想保存,就必须提前将指示灯点亮。

6.3、振动分析界面

数据滤波界面

数据滤波界面主要可以划分为:滤波前后时频域信号显示、数据滤波模式选择,相应模式下参数设置、工频特征值提取。

点击设置按钮会弹出一个对话框,可以进行通道选择和滤波模式的选择。

选择好某个通道和滤波方式后,点击中间部分的相应滤波方式的选项卡,进行相应滤波模式的参数设置。就可以在界面两边实时显示出滤波前后时频域信号波形。

在界面中下部分显示工频特征值的模块,使用的是相关算法实现的工频特征值的提取。

轴心轨迹绘制界面

系统在运行时就会实时将采集到的旋转轴截面 X、Y 方向的信号绘制成轴心,通过调节采样点数和采样频率可以较精确的得到实时的轴心轨迹。本系统可以同时绘制两个界面的轴心轨迹。

点击保存按钮后 ,系统提示保存路径选择,选择好路径后就可以将数据保存成 mat 格式的数据文件。

模态分析

模态分析主界面包括数据采集参数的设置,如:采集单位、采集通道、采样模式、采样速率、样本大小、采集次数等;滤波参数的设置;阈值设置;预触发长度设置;FRF 参数设置等。

数据的显示显示激振、响应、频响函数信号,同时还有模态参数的识别显示如:模态频率、模态振型、模态阻尼比等。

首先测量原始的激励与响应信号,设置一个激励阈值,如果监测到激励信号高于阈值就,将原始信号进行读取到测量频响函数的子 VI 中,连续测量三次数据,然后进行平均 FRF 计算获得结构的频响函数矩阵,最后通过模态识别的算法,提取模态参数(模态矩阵、模态振型、模态阻尼比等)。在数据进入到测量频响函数的子 VI 前最好对信号进行。

试验模态分析中,为了减小为误差需要对单点进行多次试验,将多次所得的数据进行平均计算测点频响函数(FRF)值,其流程如下图所示:

6.4、动平衡控制界面

界面主要划分为:时频域信号显示,动平衡通道选择,信号重组和刷新,原始、配重、试重信号采集选择,配重方案显示等几个部分。

在进行单面试重法进行转子动平衡的实验主要是基于前面所说的利用影响系数法进行动平衡。点击开始按钮,选择信号的采集通道。冗余次数是指采集信号的平均次数,这样对得到的幅值和相位信号更加准确。首先采集原始信号,得到重组信号的幅值和相位,停机添加试重,测量得到的试重信号,将所添加的试重数据(试重重量和试重孔数)和总的配重孔数放到软件中去,点击界面右下区域的计算按钮就可以得到配重方案及配重误差。接着停机,将所计算到的配重方案添加到实验台中,测量配重信号,验证振动是否降低。

具体流程如下图所示:

 项目资源下载请参见:https://download.csdn.net/download/m0_38106923/87619121

LabVIEW技巧策略模式

前言

在之前的文章中,我们提到了如何学习OOP以及对应的简单工厂模式,由于时间比较长,我们先回顾一下之前讲到的一些内容,然后继续了解策略模式。

为什么学习OOP

在测控系统的软件开发过程中,我们LabVIEW工程师一直认为程序完成功能就可以了,但是随着程序的越来越复杂,我们发现很多情况下成型系统到后期无法添加功能或很难添加功能。

是什么阻碍了我们软件系统的开发?为什么在需求沟通不明确的前期,我们无法开发软件;在需求明确的后期,又无法对软件进行灵活修改。

如果大家仔细分析中国的四大发明,就会发现活字印刷非常类似于我们的软件OOP思想。在我们传统的刻板印刷中,我们一旦设计完成系统,再对其变更时,代价就会非常大,需要重新制版印刷,如果连续变更就会意味着连续的修改刻板。古人一定对书籍的变更非常痛恨吧~
技术分享
 但是,当古人转换思想,将每一个字都做一个小的刻板,印刷系统将会变为如下的例子
技术分享
通过某些小模块的替换,可以让印刷更加灵活变更。这种思想的转变正式活字印刷成为四大发明的根本。

在软件设计的过程中,也出现了类似的“活字印刷”术--面向对象思想。通过单一职责原则,OOP设计可以将系统分割为功能单一的很多小模块,通过小模块的拼接,组织不同的程序。一旦任何一处的模块发生了变化,我们只需修改固定的一些模块,即可让我的系统发生变化。

可见,在软件设计的历史上,OOP的出现也引发了一场设计的革命。

简单工厂模式

既然了解了OOP思想,那OOP的第一个使用方法莫过于简单工厂模式了。
通常,我们在传统的面向过程设计中,使用Case结构来解决不同情况的出现
技术分享
 
但是当我们在多个函数中都需要进行判断时,我们的Case结构将会写很多个,并且每一次维护代码均需要了解之前的设计,一步小心还会改错代码。
技术分享
为此,简单工厂模式出现,进行了公共行为的抽象,并且通过简单工厂对输出的内容进行选择
技术分享
通过选择,可以让程序在运行时动态选择执行的内容,通过类的继承,可以实现对原有方法的轻易拓展。而且改动的时候不影响主程序的原有设计,实现了针对接口而是实现编程。
技术分享

 策略模式

策略模式的学习,我使用《大话设计模式》的例子,一边学习一边熟悉。

该模式的目的是实现一个商场收银软件,通过文本框来输入单价和数量,从而计算输出的结果。
技术分享
使用传统的方法快速设计完成了代码,不超过10分钟就完成了功能 技术分享
 当我们完成代码后,新的需求改动来了,商场需要增加打折系统,可以对输出的总价进行不同程度的打折,于是,我们增加打折功选项。为了保证商家可以自由控制打折力度,所以我们需要支持不打折和打不同折。
技术分享
当商场需要增加满减活动(如满200减30)时,我们又需要改动程序,增加一个子VI,并且修改程序的连线。

简单工厂实现

为了避免对主程序修改并优化逻辑设计,我们尝试使用OOP思想对该程序进行改进。

 分析程序需求,我们发现用金额计算的算法是这段程序中最容易变化的部分,所以对这段算法进行抽象,抽象后的类图如下。
技术分享

算法抽象 

在程序中,我们将变化的部分抽象为AbstractCash,其具有AcceptCash的方法,可以输入当前的金额,并且返回计算后的结果。
技术分享
 对于采取的商城策略一共有3种类型的处理方式,我们继承抽象并实现这一方法。

对于CashNormal,我们不做任何处理。
技术分享
 对于CashRebate,可以配置打折比例,并且在运算中对其进行相应的处理
技术分享
技术分享
 
CashReturn不同于其他算法,需要增加moneyCondition与moneyReturn两个参数来计算是否执行返现
技术分享

工厂设计 

至此,我们完成了算法的设置,接下来设计工厂类。此处由于工厂类只有一个方法,也没有属性,所以使用一个子VI来代替类
不打折时,我们使用不打折的类作为输出
技术分享
 打八折时,我们使用CashRebate作为输出
技术分享
 设计满减活动时,我们只需要使用CashReturn类即可
技术分享

 主程序设计

完成设计后,主程序只需要调用抽象的方法即可编写程序
技术分享
当某一类的方法拓展时,我们只需要在工厂分支中增加一个Case即可,如打7折。除此之外对不碰任何的其他程序,实现了程序的快速拓展,而又不影响原有的代码。
技术分享
 如拓展一个满减活动时,我们同样只改动简单工厂的方法
技术分享
如拓展一个新的打折活动,如打折和满减同时作用,我们只需要在类图上新增一个继承类,并修改简单工厂即可。
技术分享
经过试验,整个程序既具有了完善的功能,也实现了特殊变化点的快速拓展。
技术分享

 策略模式实现

简单工厂的程序已经使用到了策略模式的思想,通过抽象运算策略,来实现相同顶层方法的复用,这里在此基础上,引出策略模式的设计类图。
技术分享
在策略模式中,我们定义了一个抽象的策略,AbstractCash和3个具体的策略,分别是CashNormal、CashRebate、CashReturn。这里的策略与上文简单工厂中的策略是一样的,不同仅仅在策略模式选择的地方稍有差别。

为了封装策略的变化,使用CashContext聚合AbstractCash,利用GetResult的多态,实现不同策略的替换
技术分享
在接口设计时,结合简单工厂模式,可以将程序改进为工厂+策略模式
技术分享
使用策略模式封装后,我们发现,相比于简单工厂模式的例子,
1.我们在顶层程序完全封装了算法,只需要与给出的预定API交互即可
2.底层的算法变更不会影响主程序的设计,实现了策略的封装和拓展技术分享

 继续优化代码

策略模式中,我们仍需要每次修改枚举的时候重新编写Case结构,优化工厂的解析策略,可以实现自动初始化特定的类,修改如下
技术分享
 通过正则表达式,对枚举的规则进行解析,可以实现自动选择正确的执行策略,从而后续的代码修改将只针对于界面上数值的变化。

总结

本文回顾了之前的OOP设计文章,并且借用商城打折的例子,设计了基于简单工厂的程序,通过对策略的分析,了解了简单工厂和策略模式的联合设计。最后使用开闭原则,将程序的改动仅仅停留在了控件的变更,实现了代码的可拓展和可维护。

后记

接下来的一段时间,小黑将要忙自己的婚姻大事去了,期间的一些内容将会在结婚后更新,希望大家多多支持~

撒一波狗粮撤退啦~
技术分享
 




















以上是关于LabVIEW转子动平衡测控系统的主要内容,如果未能解决你的问题,请参考以下文章

300PLCmpi转以太网通过CHNet-S7300与LABVIEW OPC通信

如何系统学习LabVIEW?

如何系统学习LabVIEW?

labview,视觉与运动

labview中怎么生成lvm文件

labview真假常量有啥用