技术论坛

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

将好帖分享好友
作者 主题
至圣

经验值: 18393
发帖数: 6291
精华帖: 137
回复:应用讨论----按钮抖动处理问题


只看楼主 2012-05-22 18:45:25
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。
追求完美
将好帖分享好友
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=990098&b_id=4&s_id=0&num=0

  • 上一页
  • 1
  • 下一页
收起
回复:应用讨论----按钮抖动处理问题
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。