Skip to main content

引言

在自动化控制系统中,定时器是实现时间控制与事件调度的重要工具。本文将介绍一个多模式定时器功能块(FB_MultiModeTimer),它支持多种工作模式,可以灵活应对不同应用场景。无论是在工业设备上进行延时控制,还是在家庭自动化中实现定时操作,这个功能块都能提供便捷的解决方案。


 

1

   

程序代码及介绍

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

FUNCTION_BLOCK FB_MultiModeTimer
VAR_INPUT
    IN_Enable : BOOL;           // 使能
    IN_Mode : INT;              // 工作模式: 1=ON延时, 2=OFF延时, 3=脉冲, 4=单次
    IN_TimeSet : TIME;          // 时间设定
    IN_Reset : BOOL;            // 复位
END_VAR
VAR_OUTPUT
    OUT_Output : BOOL;          // 输出
    OUT_ElapsedTime : TIME;     // 已用时间
    OUT_RemainingTime : TIME;   // 剩余时间
    OUT_Done : BOOL;            // 定时完成
END_VAR
VAR
    Timer_ON : TON;
    Timer_OFF : TOF;
    Timer_Pulse : TP;
    Timer_OneShot : TON;
    LastEnable : BOOL;
END_VAR
CASE IN_Mode OF
    1: // ON延时模式
        Timer_ON(IN := IN_Enable, PT := IN_TimeSet);
        OUT_Output := Timer_ON.Q;
        OUT_ElapsedTime := Timer_ON.ET;
        OUT_RemainingTime := IN_TimeSet - OUT_ElapsedTime;
    2: // OFF延时模式
        Timer_OFF(IN := IN_Enable, PT := IN_TimeSet);
        OUT_Output := Timer_OFF.Q;
        OUT_ElapsedTime := Timer_OFF.ET;
        OUT_RemainingTime := IN_TimeSet - OUT_ElapsedTime;
    3: // 脉冲模式
        Timer_Pulse(IN := IN_Enable, PT := IN_TimeSet);
        OUT_Output := Timer_Pulse.Q;
        OUT_ElapsedTime := Timer_Pulse.ET;
        OUT_RemainingTime := IN_TimeSet - OUT_ElapsedTime;
    4: // 单次触发模式
        IF IN_Enable AND NOT LastEnable THEN
            Timer_OneShot(IN := TRUE, PT := IN_TimeSet);
        END_IF
        OUT_Output := Timer_OneShot.Q;
        OUT_ElapsedTime := Timer_OneShot.ET;
        OUT_RemainingTime := IN_TimeSet - OUT_ElapsedTime;
END_CASE
OUT_Done := (OUT_ElapsedTime >= IN_TimeSet) AND IN_Enable;
// 复位处理
IF IN_Reset THEN
    Timer_ON(IN := FALSE);
    Timer_OFF(IN := FALSE);
    Timer_Pulse(IN := FALSE);
    Timer_OneShot(IN := FALSE);
END_IF
LastEnable := IN_Enable;

2

   

功能块详细介绍

该功能块主要由输入变量、输出变量和内部变量组成,支持以下四种工作模式:


  1.  

    ON 延时模式:当使能信号为真时,定时器会在设定时间后输出信号,适用于需要延时开启的场合。


     


  2.  

    OFF 延时模式:在使能信号为真时,定时器在设定时间后停止输出,适用于延时关闭的需求。


     


  3.  

    脉冲模式:此模式在使能信号为真时,会产生一个持续设定时间的输出信号,适合用于脉冲控制。


     


  4.  

    单次触发模式:在使能信号变化时,定时器会执行一次性触发,适用于需要单次事件响应的场合。


     

复位机制

该程序还包含复位机制,通过IN_Reset输入变量可以重置所有定时器状态,确保在程序运行过程中能够及时清除旧的定时操作,避免误操作。


 

3

   

应用场景

多模式定时器可广泛应用于各类自动化控制系统中,例如:

  • 工业自动化:在生产线设备中,使用 ON 延时模式可以实现设备的延时启动,OFF 延时模式则可以用于安全停机。

  • 家庭自动化:在智能家居系统中,脉冲模式可以用于灯光的时段控制,而单次触发模式可以用于定时开关电器。

  • 园艺灌溉:利用定时器的延时特性,实现定时灌溉,确保植物获得适宜的水分。


 

4

   

拓展思考

随着工业 4.0 的推进,自动化控制系统越来越复杂,定时器作为基础组件之一,其灵活性和功能扩展性显得尤为重要。未来,我们可以考虑将多模式定时器与其他传感器和执行器结合,实现更复杂的逻辑控制,比如根据环境光线变化自动调整灯光亮度、根据土壤湿度自动控制灌溉等。这不仅提高了系统的智能化水平,也提升了资源的使用效率。


 

总结

本文介绍的多模式定时器功能块,凭借其灵活的设计和多样的应用场景,为自动化控制提供了强大的支持。通过不同的工作模式,该功能块能够满足各种定时需求,是工业与家庭自动化领域不可或缺的工具。随着技术的不断发展,我们相信,多模式定时器将在未来的智能控制系统中发挥更大的作用。

图片

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

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

图片

往期回顾


 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

每周一个编程小例子:智能报警过滤器:优化报警系统的 PLC 程序

每周一个编程小例子:使用 PLC 程序让灯光呼吸

每周一个编程小例子:自适应性滤波器:动态调整以平衡响应与稳定性

图片

2026年4月

Tags