Skip to main content

引言

在工业自动化中,脉冲输出是实现各种控制操作的重要手段,例如驱动电机、控制阀门或进行计量等。本文将详细介绍一个名为FB_PulseOutputPLC 功能块,它能够根据设定的频率和脉冲个数生成脉冲信号。我们将通过代码解析、应用场景探讨以及拓展思考,帮助您更好地理解和运用该功能块。

 

1

   

程序代码及介绍

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

FUNCTION_BLOCK FB_PulseOutput
VAR_INPUT    
    Enable : BOOL;         // 使能    
    Frequency : REAL := 1; // 频率(Hz)    
    PulseCount : INT;      // 脉冲个数(0=连续)
END_VAR
VAR_OUTPUT    
    Pulse : BOOL;          // 脉冲输出    
    Done : BOOL;           // 完成(当脉冲个数达到时)
END_VAR
VAR    
    TimerL : TON;          // 脉冲定时器    
    Count : INT;           // 已输出脉冲计数    
    Period : TIME;         // 脉冲周期
END_VAR
// 计算脉冲周期
IF Frequency > 0 THEN    
    Period := REAL_TO_TIME(Frequency * 1000);  // 转换为毫秒
ELSE    
    Period := T#1s;
END_IF
// 复位
IF NOT Enable THEN    
    Count := 0;    
    Done := FALSE;    
    Pulse := FALSE;
END_IF
// 生成脉冲
IF Enable AND (PulseCount = 0 OR Count < PulseCount) THEN    
    TimerL(IN := TRUE, PT := Period);    
    Pulse := TimerL.Q;    
    // 计数    
    IF TimerL.Q THEN        
        Count := Count + 1;		
               TimerL(IN := FALSE);    
    END_IF
ELSE    
    Pulse := FALSE;
END_IF
// 完成标志
IF PulseCount > 0 AND Count >= PulseCount THEN    
    Done := TRUE;
ELSE    
    Done := FALSE;
END_IF

 

2

   

功能解析

输入变量

  • Enable:控制功能块是否启用,布尔类型。

  • Frequency:设置脉冲输出的频率,单位为赫兹(Hz),默认值为 1Hz。

  • PulseCount:指定要输出的脉冲个数,设置为 0 表示连续输出。

输出变量

  • Pulse:当前脉冲输出状态,布尔类型。

  • Done:完成标志,当输出的脉冲个数达到设定值时为真。

内部变量

  • TimerL:用于生成脉冲的定时器(TON)。

  • Count:记录已输出的脉冲数量。

  • Period:计算得到的脉冲周期,单位为毫秒。

代码逻辑详解

  • 脉冲周期计算:根据输入的频率计算脉冲周期。如果频率大于 0,则周期为Frequency * 1000(转换为毫秒)。如果频率为 0 或负值,默认设置周期为 1 秒。

  • 复位操作:如果未使能,则重置脉冲计数(Count)、完成标志(Done)和脉冲输出状态(Pulse)。

  • 脉冲生成:当使能且脉冲个数未达到设定值时,启动定时器并生成脉冲。如果定时器超时(TimerL.Q为真),则增加已输出脉冲的计数,并停止定时器。

  • 完成标志更新:如果设置了脉冲个数且已输出脉冲数等于或超过该值,则将完成标志设为真,否则为假。


 

3

   

应用场景

功能块可广泛应用于以下场景:

电机控制:用于控制伺服电机的启动和停止,以实现精确的运动控制(需要设定电子齿轮比,不然速度达不到)。

阀门控制:在流体系统中,脉冲控制可以用于调节阀门的开启和关闭,确保流量的准确控制。

计量设备:在物料计量和配比过程中,根据设定的脉冲数量输出计量信号,以确保物料的精确投放。

测试设备:在测试与检验设备中,通过脉冲输出模拟信号以测试其他设备的响应和性能。


 

4

   

拓展思考

随着智能制造和自动化技术的发展,FB_PulseOutput功能块可以与其他系统组件结合,实现更加复杂的控制策略。例如,结合传感器数据,可以根据实时反馈动态调整脉冲频率和个数。此外,利用云平台和大数据分析,可以实现远程监控和维护,提高系统的可靠性和效率。


 

总结

本文详细介绍了 PLC 功能块FB_PulseOutput的结构和功能,展示了如何通过简单的代码实现复杂的脉冲输出控制。该功能块不仅在多个工业应用中具有重要价值,还为未来智能化的发展提供了广阔的空间。随着技术的进步,将来的脉冲控制系统将更加灵活、高效,推动工业自动化走向新的高度。

图片

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

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

图片

往期回顾


 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

每周一个编程小例子:卡尔曼滤波器在自动化中的简单应用

每周一个编程小例子:多模式定时器

每周一个编程小例子:基于 PLC 的编码器速度计算器

每周一个编程小例子:电机顺序启动与停止程序

每周一个编程小例子:电梯控制程序

每周一个编程小例子:自动门控制系统

每周一个编程小例子:智能停车场计数系统

每周一个编程小例子:智能照明控制系统

每周一个编程小例子:变频器控制

每周一个编程小例子:比例阀控制

图片

2026年7月

Tags