回复:应用讨论----按钮抖动处理问题

Automann

  • 帖子

    6168
  • 精华

    138
  • 被关注

    308

论坛等级:至圣

注册时间:2004-12-23

普通 普通 如何晋级?

发布于 2012-05-22 18:45:25

14楼

quote:以下是引用剑忠在2012-05-18 09:54:25的发言:
最近由于项目原因在外出差一直很忙,目前稍有空闲浏览到到此贴,故此表述一下自己对按钮抖动处理的使用经验供参考。
1、关于按钮抖动处理加延时的方法,只能处理常开按钮,不能处理常闭按钮,而多个按钮处理将耗费更多的定时器和程序开销资源,更是极为繁琐了,这点ZANE版已在楼上指明。
2、通常按钮抖动持续时间约1s~2s,超过这个持续时间通常就视为按钮状态改变了。当然有的按钮抖动频繁,持续时间在1s以下。
3、我对按钮抖动的处理通常是将按钮检测程序合理的放置在相应的OB块中调用执行。这样做程序既简单可行,又可避免在程序中绞尽脑汁使用各种定时器处理抖动滤波延时,大大减少定时器和程序处理开销。
4、SIEMENS的S7-300/400和S7-1200PLC都提供了很多OB块,只要是合理的利用好循环中断(Cyclic Interrupts)OB块,将按钮检测扫描程序或FB/FC程序块放置在OB块中调用,就可很好的实现按钮抖动处理。



5、图示CPU414-2DP、CPU315-2PN/DP和CPU315-2DP模块都有OB32、OB33、OB34、OB35,均分别默认设置为1000ms、500ms、200ms和100ms循环中断(Cyclic Interrupts)定时调用。用户还可更改这些OB块的循环中断(Cyclic Interrupts)定时调用时间,满足特定需求。
6、当然有些低端的S7-300PLC提供给用户可更改的循环中断(Cyclic Interrupts)OB块较少,具体还是要视CPU模块不同而灵活处理。

按钮的抖动主要是触点接通、断开过程的机械抖动。抖动时间不会有1、2s吧?我记得当年汇编程序的防抖动延时时间(用循环实现)的典型值为20ms,DI模块的输入延迟时间是用来防抖动的,可选的最大值也是20ms。
大多数300 CPU只能用一个OB35,这倒没什么关系,可设置中断时间间隔为50ms,用字计中断次数,来实现多个与50ms成整倍数的定时。
因为按钮的上升沿或下降沿与OB的中断时间不同步,这种方法的延时时间是随机的,最大误差为50ms。
追求完美
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。