技术论坛

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

返回主题列表
作者 主题
like821080
侠圣

经验值:2143
发帖数:728
精华帖:0
楼主    2012-05-16 06:28:00
主题:应用讨论----按钮抖动处理问题
这个是在论坛里关于按钮抖动处理的方法,

1·在很多检测开关后面带50ms ton,以避免干扰信号
特别重要的启动按钮,也带100ms ton,以免误动作
特别特别重要的启动按钮,除了带 ton以外,还带1个 tp,怕的是按钮失效造成设备满足其他条件时突然启动。
2·程序中添加消抖子程序,比如两次采样并作比较(间隔时间满足大于扰动时间),信号一致时才给予输出……

其中对于
特别特别重要的启动按钮,除了带 ton以外,还带1个 tp,怕的是按钮失效造成设备满足其他条件时突然启动。
不是很理解,有两个疑问:
1.是闭合延时,这个好理解,可TP是什么呢?是不是TON的上升沿信号吗?
2.怕的是按钮失效造成设备满足其他条件时突然启动。 如果失效了的话,开关要么是开要么是关,那怎么会造成其他条件时突然启动呢?
剑忠
奇侠

经验值:9641
发帖数:622
精华帖:57
8楼    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模块不同而灵活处理。
大学之道,在明明德,在亲民,在止于至善。
人鱼
游侠

经验值:431
发帖数:63
精华帖:1
9楼    2012-05-18 22:08:57
精华帖  主题:回复:应用讨论----按钮抖动处理问题
对输入信号高电平延时接通TON,低电平进行延时断开TOF,这样就可以处理常开或者常闭触点了。
S7定时器的数量有限,可以使用IEC定时器来处理,只是占点DB数据块而已。还可以结合FB块的多重背景数据块,减少数据块的数量。我的做法是做好一个标准的32点DI的滤波程序块FB,每一个模块调用一次这块就可以了(每个DI模块预留占用4个字节地址)。
划痕
侠圣

经验值:4794
发帖数:2009
精华帖:22
29楼    2012-06-01 20:08:09
精华帖  主题:回复:应用讨论----按钮抖动处理问题
将开关量信号采样n+1次,将前n次采样信号进行分别进行与运算或运算,可以得到以下3中逻辑结果(已给出滤波算法):
[color=blue][b]与结果=0,滤波输出信号0;
或结果=1,滤波输出信号1;
与结果=0,或结果=1,此时信号处于过度状态,滤波输出保持上一次输出值不变。[/b][/color]
运算完成后将第n+1采样值送入队列中等待下一次运算。
<同样在系统重启后,建议有2n个扫描周期的准备时间,这样也不用区分是常开或常闭点了>
这下应该满足没有定时、也没有计数,只有逻辑运算,达到滤波的功能。
No discussion, no outcome.
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。