Skip to main content

引言

在工业自动化和设备监控中,报警系统是确保安全和高效操作的关键组成部分。然而,误报警或瞬时干扰可能导致不必要的停机和资源浪费。因此,开发一个有效的报警过滤系统显得尤为重要。本文将介绍一个基于 PLC 的报警过滤功能块程序,它通过设置过滤时间来消除误报警和去抖动,确保报警系统的可靠性。


 

1

   

程序代码

下面是完整的 PLC 程序代码(代码基于 CodeSys 平台的 ST 语言): 


FUNCTION_BLOCK FB_AlarmFilter
VAR_INPUT
    AlarmInput : BOOL;     // 报警输入
    FilterTime : TIME := T#5s; // 过滤时间
    EnableFilter : BOOL := TRUE; // 使能过滤
END_VAR
VAR_OUTPUT
    AlarmOutput : BOOL;    // 报警输出
    FilterActive : BOOL;   // 过滤激活
    AlarmDuration : TIME;  // 报警持续时间
END_VAR
VAR
    TimerFilter : TON;     // 过滤定时器
    TimerDuration : TON;   // 持续时间定时器
    LastAlarmState : BOOL; // 上次报警状态
END_VAR
// 报警过滤功能块  应用:消除误报警、报警去抖
// 报警持续时间计时
IF AlarmInput THEN
    TimerDuration(IN := TRUE, PT := T#1s);
    IF TimerDuration.Q THEN
        AlarmDuration := AlarmDuration + T#1s;
        TimerDuration(IN := FALSE);
    END_IF
ELSE
    TimerDuration(IN := FALSE);
    AlarmDuration := T#0s;
END_IF
// 报警过滤逻辑
IF EnableFilter THEN
    IF AlarmInput THEN
        TimerFilter(IN := TRUE, PT := FilterTime);
        FilterActive := NOT TimerFilter.Q;
        // 只有超过过滤时间的报警才输出
        AlarmOutput := TimerFilter.Q;
    ELSE
        TimerFilter(IN := FALSE);
        FilterActive := FALSE;
        AlarmOutput := FALSE;
    END_IF
ELSE
    // 不过滤,直接输出
    AlarmOutput := AlarmInput;
    FilterActive := FALSE;
END_IF
LastAlarmState := AlarmInput;

 

2

   

程序功能分析


 

2.1

   

变量介绍

这个功能块 FB_AlarmFilter 主要用于过滤报警信号,避免误报和去抖动。其输入和输出变量如下:

输入变量

  • AlarmInput: 接收来自传感器或设备的报警信号。

  • FilterTime: 设置过滤时间,单位为秒,默认为 5 秒。

  • EnableFilter: 控制是否启用报警过滤的开关。

输出变量

  • AlarmOutput: 经过过滤的报警输出信号。

  • FilterActive: 指示当前过滤功能是否激活。

  • AlarmDuration: 记录报警持续的时间。


 

2.2

   

工作原理

程序的工作原理分为两部分:

报警持续时间计时:当接收到报警信号时,系统启动 TimerDuration 定时器以记录报警持续时间。如果报警信号消失,则重置持续时间。

报警过滤逻辑:如果启用了过滤功能,程序会检查报警信号。如果报警信号持续超过设置的过滤时间(FilterTime),则输出报警信号;否则,报警信号被过滤掉。同时,程序还跟踪过滤状态和激活状态。


 

3

   

应用场景

该报警过滤程序适用于多个领域,包括但不限于:

工业自动化:在生产线设备中,通过过滤无效报警信号提高生产效率,减少误操作。

智能家居:在安全监控系统中,避免因瞬时干扰引发的误报警,提高用户体验。

环境监测:在气体检测或温度监测系统中,减少环境噪声带来的误报警,提高监测系统的可靠性。


 

4

   

拓展思考

随着智能设备和物联网的发展,报警系统的复杂性日益增加,单一的报警机制可能无法满足所有需求。未来的发展方向可以包括:

自适应过滤:根据历史数据和报警频率动态调整过滤时间,以实现更灵活的报警管理。

数据分析:结合大数据技术,对报警事件进行分析,识别潜在问题并优化报警策略。

用户反馈机制:通过用户反馈不断完善报警系统,提升其智能化水平和用户满意度。


 

总结

本文介绍了一个基于 PLC 的报警过滤功能块程序,通过有效地过滤误报警和去抖动,提升了报警系统的可靠性。希望这篇文章能够帮助您理解报警过滤的原理及其应用,为您的自动化项目提供有价值的参考。

图片

你来出题 我来答图片图片图片

欢迎大家在评论区提一些标准功能块的需求,如果合适,我们会在以后的文章中与大家分享。

往期回顾


 

每周一个编程小例子 :Bit 到 Word 转换的两种实现方案对比

每周一个编程小例子:记录设备运行时间

每周一个编程小例子:基于长按检测的启动控制系统

每周一个编程小例子:探秘 PLC 数据记录功能块

每周一个编程小例子:心跳检测与 PLC 应用

每周一个编程小例子:斜坡发生器

每周一个编程小例子:旋转速度计算

每周一个编程小例子:计算 PLC 循环周期|例程需求征集!

每周一个编程小例子:如何优雅的分割字符串

每周一个编程小例子:带反馈的阀门控制程序

每周一个编程小例子:西门子 LGF 库中的脉冲继电器功能块

每周一个编程小例子:曲线加减速的控制应用

每周一个编程小例子:轻松去除字符串前导字符

每周一个编程小例子:根据阈值更新输入

每周一个编程小例子:官方模拟量输入处理模块

每周一个编程小例子:主从电机的时序控制

每周一个编程小例子:基于一阶滞后滤波的优化方案

每周一个编程小例子:16 进制到浮点数的神奇转换

每周一个编程小例子:PLC 长按控制程序

每周一个编程小例子:PLC 程序实现多位整数拆分

每周一个编程小例子:流量累积计算器

每周一个编程小例子:用于连锁的电机标准控制模块

每周一个编程小例子:PID 控制算法在 PLC 系统中的实现与应用

每周一个编程小例子:自定义种子生成随机数

每周一个编程小例子:可调时间的脉冲生成器

每周一个编程小例子:带滤波的标准模拟量输入功能块

每周一个编程小例子:使用 PLC 将字符串转换为日期格式

每周一个编程小例子:PLC 配方管理

每周一个编程小例子:比较两个 DB 块(STL)

每周一个编程小例子:如何使用 PLC 实现数组逆序

每周一个编程小例子:流量累计与批次控制

每周一个编程小例子:自定义循环执行控制程序

每周一个编程小例子:步进控制功能块

每周一个编程小例子:PLC 权重比例分配器

每周一个编程小例子:数字量输入组监控

每周一个编程小例子:实时数据分析

每周一个编程小例子:PLC 多轴同步控制的理解与应用

每周一个编程小例子:PLC 波形生成器 (正弦 方波 三角波)

每周一个编程小例子:模拟量信号报警

每周一个编程小例子:组合数概率的实现

每周一个编程小例子:多传感器信号融合与优化方案

每周一个编程小例子:监控模拟信号的健康状态

每周一个编程小例子:PLC 程序实现模拟信号的线性校准

2026年4月

Tags