首页 理论教育LabVIEW2015:火车故障检测系统实例

LabVIEW2015:火车故障检测系统实例

【摘要】:在本例中,火车站的维护人员必须检测到火车上存在故障的车轮。选择菜单栏中的“文件”→“另存为”命令,输入VI名称为“火车故障检测系统”。在选择器标签中选择“假”将“火车数量”布尔转换值连接到“分支选择器”上,每检测到一辆火车,就进行一轮新数据显示。若数组元素个数与循环次数相等或单击“停止”按钮,则循环结束,完成火车车轮故障检测。

在本例中,火车站的维护人员必须检测到火车上存在故障的车轮。当前的检测方式是由铁路工人使用锤子敲击车轮,通过听取车轮是否传出异常声响判定车轮是否存在问题。自动监控必须替代手动检测,因为手动检测速度过慢、容易出错且很难发现微小故障。自动解决方案提供了动态检测功能,因为火车车轮在检测过程中可处于运转状态,而无须保持静止。逐点检测应用必须分别分析高频和低频组件。数组最大值与最小值(逐点)VI提取波形数据,该波形反映了每个车轮、火车末端及每个车轮末端的能量水平。

1.设置工作环境

1)新建VI。选择菜单栏中的“文件”→“新建VI”命令,新建一个VI,一个空白的VI包括前面板及程序框图。

2)保存VI。选择菜单栏中的“文件”→“另存为”命令,输入VI名称为“火车故障检测系统”。

2.设置传感器参数

1)在“函数”选板中选择“编程”→“数组”→“数组常量”和“编程”→“数值”→“DBL数值常量”,组合数组常量,单击右键选择“属性”命令,如图8-138所示,弹出“数组常量属性”对话框,勾选“显示垂直滚动条”复选框,单击“确定”按钮,关闭对话框。

2)在数组索引框输入5,则显示5个数值,如图8-139所示,在该数组常量中设置传感器仿真数据。

978-7-111-53194-4-Chapter08-311.jpg

图8-138 “数组常量属性”对话框

978-7-111-53194-4-Chapter08-312.jpg

图8-139 创建数组常量

3.过滤数据

在“函数”选板上选择“编程”→“结构”→“While循环”函数,在该循环中检测火车车轮故障。

在“函数”选板上选择“信号处理”→“逐点”→“滤波器(逐点)”→“Butterworth滤波器(逐点)”VI,创建两个逐点滤波。

(1)高频滤波

在“低截止频率”输入端创建“高频”输入控件,“阶数”输入端创建“滤波器阶数”输入控件,设置滤波器类型为“Highpass”,将传感器仿真数据连接到“x”输入端。

(2)低频滤波

在“低截止频率”输入端创建“低频”输入控件,“阶数”输入端连接到“滤波器阶数”输入控件,设置滤波器类型为“Lowpass”,将传感器仿真数据连接到“x”输入端。

程序设计如图8-140所示,

978-7-111-53194-4-Chapter08-313.jpg

图8-140 过滤数据

4.获取车轮最大频率

在“函数”选板上选择“编程”→“数值”→“绝对值”函数,对高频滤波后的x取绝对值。

在“函数”选板上选择“信号处理”→“逐点”→“滤波器(逐点)”→“数组最大值与最小值(逐点)”VI,输入高频率波结果。

在“函数”选板上选择“编程”→“数值”→“表达式节点”函数,设置表达式为“4*x”,将输入控件“窗长度”进行计算,之后将“采样数”连接到“数组最大值与最小值(逐点)”VI输入端。

输出“最大值”显示在“阈值数据”波形图中,前面板显示如图8-141所示。

978-7-111-53194-4-Chapter08-314.jpg

图8-141 显示“阈值数据”控件

5.检测数据峰值

(1)仿真数据

在“函数”选板上选择“编程”→“簇、类与变体”→“捆绑”函数,在输入端连接传感器仿真数据、低频滤波x,“阈值”输入控件,组合“滤波”“原始数据”“阈值”,将显示在“仿真数据”显示控件中,如图8-142所示。

978-7-111-53194-4-Chapter08-315.jpg

图8-142 生成仿真数据

a)程序框图 b)前面板

(2)检测的火车

在“函数”选板上选择“信号处理”→“逐点”→“滤波器(逐点)”→“数组最大值与最小值(逐点)”VI,输入低频率波x,设置“采样数”为“表达式节点”输出值。

将计算的“最大值”与输入的“阈值”进行“大于”函数计算,显示是否检测到火车,并将检测到的火车显示在输出控件上。

(3)检测到的车轮

在“函数”选板上选择“信号处理”→“逐点”→“滤波器(逐点)”→“数组最大值与最小值(逐点)”VI,输入低频率波x,设置“采样数”为“窗长度”输入值。

将计算的“最大值”与输入的“阈值”进行“大于”函数计算,显示是否检测到车轮,并显示在输出控件上。

程序框图显示如图8-143所示。

978-7-111-53194-4-Chapter08-316.jpg

图8-143 显示检测结果(www.chuimin.cn)

(4)输出检测数据

在“函数”选板上选择“信号处理”→“逐点”→“滤波器(逐点)”→“其余函数逐点)”→“布尔值转换(逐点)”VI,分别转换将检测结果从布尔类型转换为数值类型,在“方向”输入端创建常量,设置参数为“true-false”,转换成数值型后,真值初始值为0。

在“函数”选板上选择“信号处理”→“逐点”→“滤波器(逐点)”→“其余函数逐点)”→“加1(逐点)”VI,对转换数值加1,并分别输出在“火车数量”与“车轮数量”控件上。

前面板与程序框图显示如图8-144所示。

978-7-111-53194-4-Chapter08-317.jpg

图8-144 显示检测数据

6.显示车轮故障

在“函数”选板上选择“编程”→“结构”→“条件结构”,拖动鼠标,创建条件结构,将“车轮数量”布尔转换值连接到“分支选择器”上,根据车轮好坏显示结果。将数组常量“空波形”“阈值数据”与“火车数量”布尔转换值连接到条件结构上。

(1)在选择器标签中选择“真”

在“函数”选板上选择“编程”→“数组”→“创建数组”函数,将数组常量“空波形”与“阈值数据”连接到输入端,输出的数组通过移位寄存器连接到循环结构边框上,获取检测车轮时,窗的最大振动值。

(2)在选择器标签中选择“假”

将“火车数量”布尔转换值连接到“分支选择器”上,每检测到一辆火车,就进行一轮新数据显示。在“函数”选板上选择“编程”→“结构”→“条件结构”,为嵌套条件结构。

1)选择“真”。每检测到一辆新火车,显示最大值并重置为零,清除旧数据,在“坏/好的车轮”显示控件上显示新火车车轮情况,如图8-145所示。

2)选择“假”条件。若没检测到新火车,则不刷新数据,继续监测数据,如图8-146所示。

978-7-111-53194-4-Chapter08-318.jpg

图8-145 设置“真”条件

978-7-111-53194-4-Chapter08-319.jpg

图8-146 设置“假”条件

7.清除缓存图表数据

创建图表控件“阈值数据”与“仿真数据”的属性节点“历史数据”,连接到“While循环”上,根据循环清除这两个图表控件缓存数据,如图8-147所示。

在“函数”选板上选择“编程”→“数组”→“数组

978-7-111-53194-4-Chapter08-320.jpg

图8-147 创建属性节点

大小”函数,连接“火车数据”数组常量,统计该数组的大小,将结果连接到循环结构上。

若数组元素个数与循环次数相等或单击“停止”按钮,则循环结束,完成火车车轮故障检测。

程序框图如图8-148所示。

978-7-111-53194-4-Chapter08-321.jpg

图8-148 程序框图

8.火车运行速度设置

设置每3次循环,使用等待减速,程序框图如图1-149所示。

978-7-111-53194-4-Chapter08-322.jpg

图8-149 设置运行速度

单击工具栏中的“整理程序框图”按钮 978-7-111-53194-4-Chapter08-323.jpg ,整理程序框图,结果如图8-150所示。

978-7-111-53194-4-Chapter08-324.jpg

图8-150 程序框图

选择菜单栏中的“窗口”→“显示前面板”命令,打开其前面板,如图8-151所示。

978-7-111-53194-4-Chapter08-325.jpg

图8-151 前面板设计结果

9.运行程序</ID=4>

在前面板窗口或程序框图窗口的工具栏中单击“运行”按钮 978-7-111-53194-4-Chapter08-326.jpg ,运行VI结果如图8-152所示。

978-7-111-53194-4-Chapter08-327.jpg

图8-152 运行结果