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

引言

在现代自动化控制系统中,长按控制功能是常见的一种需求,尤其是在操作简单且可靠性要求高的场景中。通过对按钮的长按时间进行检测,可以避免误操作,同时实现更精确的控制。本文将介绍一个 PLC 程序,介绍如何通过使用定时器(TON)实现长按控制功能。通过该实例,我们将探讨如何在不同的应用场景中灵活运用此功能,并分享一些优化建议与拓展思路。

程序代码及介绍

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

  • FUNCTION_BLOCK PM_LongPressControl
  • VAR_INPUT   
  •         StartButton : BOOL;   
  •         StopButton : BOOL;   
  •         StartLongPressTime : TIME := T#5S;   
  •         StopLongPressTime : TIME := T#5S;
  • END_VAR
  • VAR_OUTPUT   
  •         Output : BOOL;   
  •         StartLongPressDuration : TIME;   
  •         StopLongPressDuration : TIME;
  • END_VAR
  • VAR   
  •         StartTimer : TON;   
  •         StopTimer : TON;
  • END_VAR
  •  
  • (* 
  • StartTimer 和 StopTimer 是定时器,分别用于检测启动和停止按钮的长按。
  • 定时器 TON(ON 延迟定时器)用于实现长按检测。只有当按钮按下的时间超过预设时间时,定时器的 Q 输出才为 TRUE。
  • StartLongPressDuration 和 StopLongPressDuration 用于记录实际的长按时间。
  • *)
  •  
  • StartTimer(IN := StartButton AND NOT StopButton AND NOT Output, PT := StartLongPressTime);
  • StopTimer(IN := StopButton AND Output, PT := StopLongPressTime);
  • IF StartTimer.Q THEN   
  •         Output := TRUE;
  • ELSE   
  •         StartLongPressDuration := T#0ms;
  • END_IF
  • StartLongPressDuration := StartTimer.ET;
  • IF StopTimer.Q THEN   
  •         Output := FALSE;
  • ELSE   
  •         StopLongPressDuration := T#0ms;
  • END_IF
  • StopLongPressDuration := StopTimer.ET;

功能描述

输入参数:

  • StartButton:启动按钮输入信号。

  • StopButton:停止按钮输入信号。

  • StartLongPressTime:启动按钮的长按时间阈值,默认为 5 秒。

  • StopLongPressTime:停止按钮的长按时间阈值,默认为 5 秒。

输出参数:

  • Output:控制信号输出,启动或停止的控制信号。

  • StartLongPressDuration:启动按钮实际长按时间。

  • StopLongPressDuration:停止按钮实际长按时间。

定时器:

  • StartTimer:用于检测启动按钮的长按时间。

  • StopTimer:用于检测停止按钮的长按时间。

程序流程:

  • StartTimer 和 StopTimer 定时器用于监控按钮的长按时间,只有当按钮按下的时间超过设定的时间阈值时,定时器的输出 Q 才会变为 TRUE,触发相应的动作。

  • 当 StartTimer.Q 为 TRUE 时,输出信号 Output 为 TRUE,即启动信号;当 StopTimer.Q 为 TRUE 时,输出信号 Output 为 FALSE,即停止信号。

  • 定时器的 ET 输出用于记录按钮的实际按压时长。

应用场景

这种长按控制功能在工业自动化中具有广泛的应用,特别是在需要防止误操作、减少频繁切换状态的场合。以下是一些常见的应用场景:

机械设备启动与停止控制:在一些大型机械设备中,为了避免因误触碰启动或停止按钮导致的设备突然启动或停止,可以设置启动和停止按钮的长按检测,确保操作员的每次操作都是经过深思熟虑的。

电梯控制系统:电梯按钮经常会遇到按错楼层的问题,取消可以长按按钮,可以有效避免短按导致的误操作。

报警确认:在一些报警系统中,按钮长按可能代表着确认报警或重置报警功能,通过长按时间的设置来区分正常操作与误触发。

优化思路

多状态控制:目前的程序只有启动与停止两种状态,通过优化程序,可以引入更多的控制状态。例如,添加暂停、重启等功能,根据不同场景灵活切换。

超时保护:如果长按的时间超过预设阈值且没有得到及时响应,可以加入超时机制,避免因长时间未响应导致系统进入不稳定状态。

多按钮支持:当前程序仅支持一个启动按钮和一个停止按钮,未来可以扩展为多个按钮进行状态切换,适用于更复杂的控制需求。

延迟优化:对于定时器的设置,可以根据设备的响应时间进行精确调节,避免过长的延迟影响设备的正常工作。

拓展思考

除了本程序中的长按控制,我们可以拓展到更多的控制逻辑。例如,在自动化生产线中,如果需要进行多步操作,可以利用长按控制设置不同的步骤,确保操作的安全性和准确性。另外,还可以通过网络通讯将长按控制信号发送到远程监控系统,实现远程报警和状态控制。

总结

通过对 PLC 程序的分析,我们可以看到长按控制功能不仅提高了系统的可靠性,也减少了误操作的风险。本文的优化方案和拓展思考为实际应用中的功能改进提供了可行的路径。长按控制在工业自动化中的应用前景广阔,其灵活性和稳定性将有助于提升控制系统的安全性和效率。

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

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

图片

往期回顾

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

图片

2025年08月

Tags: