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

引言

在自动化控制系统中,PLC(可编程逻辑控制器)作为一种广泛应用的工业控制设备,其编程语言和功能块的设计在实现高效控制中起着至关重要的作用。本文将带您了解一款名为 PM_Pulse_v2 的脉冲生成器功能块,通过此功能块可以指定高低电平时间,生成高低电平交替的脉冲信号,广泛应用于工业自动化中的信号传输、控制设备的启停等场景。

1  程序代码

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

  • FUNCTION_BLOCK PM_Pulse_v2
  • VAR_INPUT   
  •         Enable : BOOL;  //使能   
  •         PulseHighTime : TIME := T#1500MS; // 脉冲高电平时间   
  •         PulseLowTime : TIME := T#1000MS; // 脉冲低电平时间
  • END_VAR
  • VAR_OUTPUT   
  •         PulseSignal : BOOL := FALSE; // 脉冲信号
  • END_VAR
  • VAR   
  •         Timer_1 : TON; // 定时器   
  •         CurrentState : BOOL := FALSE; // 当前状态(高电平或低电平)   
  •         PtState : TIME;
  • END_VAR
  • IF Enable THEN
  • // 初始化定时器
  •         Timer_1(IN := NOT Timer_1.Q, PT := PtState );
  • // 定时器到期后切换状态
  •         IF Timer_1.Q THEN
  •                     CurrentState := NOT CurrentState;
  •                     PulseSignal := CurrentState;
  •         END_IF
  • ELSE
  •         CurrentState := 0;
  •         PulseSignal := 0;
  •         Timer_1(IN := TRUE);
  •         Timer_1(IN := FALSE);
  • END_IF
  • //切换时间
  • IF CurrentState THEN 
  •         PtState := PulseHighTime;
  • ELSE 
  •         PtState := PulseLowTime;
  • END_IF

2  程序分析

输入变量:

  • Enable:控制脉冲信号是否启用。

  • PulseHighTime:脉冲高电平持续时间,默认为 1500 毫秒。

  • PulseLowTime:脉冲低电平持续时间,默认为 1000 毫秒。

输出变量:

  • PulseSignal:输出的脉冲信号,高电平和低电平交替。

内部变量:

  • Timer_1:TON 定时器,用于控制脉冲信号的时间间隔。

  • CurrentState:当前的信号状态,表示是高电平(TRUE)还是低电平(FALSE)。

  • PtState:当前脉冲的时间长度,依据CurrentState的值动态调整。

程序工作原理:

  • 当Enable为 TRUE 时,程序启动。首先,通过定时器控制脉冲的持续时间(根据高低电平分别设定PulseHighTime和PulseLowTime)。

  • 定时器到期后,脉冲信号会反转(高电平变低电平,低电平变高电平),并输出当前状态的信号。

  • 当Enable为 FALSE 时,脉冲信号停止,定时器停止计时。

3  应用场景

信号传输:在自动化控制中,经常需要定时产生一定周期的脉冲信号来触发其他设备的工作,例如控制步进电机、伺服电机的转动。

设备启停控制:用于设备的周期性启停控制,自动化生产线的定时设备操作等。

信号同步:通过调整脉冲信号的时间,可以实现多个设备之间的同步操作,例如 PLC 控制多个工艺流程或设备之间的协调。

4  拓展思考

时间精度与系统响应:此功能块基于 TON 定时器,但实际使用中可能遇到系统的响应延迟。对于高精度要求的应用,可能需要采用更高精度的计时器或硬件定时器。

多通道脉冲输出:如果需要多个独立的脉冲输出,可以将此功能块复制并根据不同的时间参数调整,实现多路输出。

信号频率调整:目前该功能块的脉冲频率是固定的,如果需要动态调整脉冲频率,可以通过增设输入参数或添加自动调整机制来实现。

总结

本文介绍了 PM_Pulse_v2 脉冲生成器功能块的实现原理及应用场景。通过使用定时器,能够精确控制脉冲信号的高低电平交替输出,广泛应用于工业自动化控制中。在未来的应用中,可以根据实际需求对该功能块进行扩展和优化,从而满足更高的控制精度和灵活性要求。

希望这篇文章能为正在学习 PLC 编程的工程师提供一些有益的思路和实践参考。

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

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

图片

往期回顾

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

图片

2025年10月

Tags: