[西门子] 西门子SCL编程实例——按钮的短按与长按

[复制链接]
查看239 | 回复0 | 2024-4-25 16:53:50 | 显示全部楼层 |阅读模式
收到小伙伴的来信,怎样区分按钮的短按(按下后松开)与长按(按下并保持一段时间)。说实话,在工业现场,按钮长按来实现某个功能使用的并不多。我曾经在某个信号需要人工确认时使用了长按功能,当时是结合定时器与按钮的输入信号来实现的。要实现按钮的短按与长按的区分,我提供一种思路供大家参考。

基本思路:

使用沿信号配合定时器指令。如果在短时间内检测到了该信号的上升沿及下降沿,则认为按钮是短按状态;如果在某个时间内(比如2秒钟),只检测到了该信号的上升沿而没有下降沿,则认为按钮是长按状态;

结合这个思路我使用SCL语言实现了一个函数块FB5020_BtnClickHold,其变量声明如下图所示:

其中:

  • signal:要检测的按钮信号(或其它类似信号);
  • R:用于复位内部变量;
  • timeCheck:用于检测的时间,默认2秒;
  • click:按钮是短按状态;
  • hold:按钮是长按状态;
注:短按与长按不会同时为TRUE。为保证正确,应在获取信号后使用R对内部静态变量进行复位;
代码如下图所示:

这段代码我已经测试过,如果你有任何问题或其它思路,欢迎留言交流。
我的书《西门子S7-1200/1500 PLC SCL语言编程 ——从入门到精通》从硬件到软件,比较详细的介绍了SCL语言的编程,感兴趣的话可以点击下面的链接或者左下角的【阅读原文】:



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则