| 作者 | 主题 |
|---|---|
|
like821080 侠圣 经验值:2143 发帖数:728 精华帖:0 |
楼主
主题:应用讨论----按钮抖动处理问题
这个是在论坛里关于按钮抖动处理的方法,
1·在很多检测开关后面带50ms ton,以避免干扰信号 特别重要的启动按钮,也带100ms ton,以免误动作 特别特别重要的启动按钮,除了带 ton以外,还带1个 tp,怕的是按钮失效造成设备满足其他条件时突然启动。 2·程序中添加消抖子程序,比如两次采样并作比较(间隔时间满足大于扰动时间),信号一致时才给予输出…… 其中对于 特别特别重要的启动按钮,除了带 ton以外,还带1个 tp,怕的是按钮失效造成设备满足其他条件时突然启动。 不是很理解,有两个疑问: 1.是闭合延时,这个好理解,可TP是什么呢?是不是TON的上升沿信号吗? 2.怕的是按钮失效造成设备满足其他条件时突然启动。 如果失效了的话,开关要么是开要么是关,那怎么会造成其他条件时突然启动呢? |
|
剑忠 奇侠 经验值:9641 发帖数:622 精华帖:57 |
8楼
主题:回复:应用讨论----按钮抖动处理问题
最近由于项目原因在外出差一直很忙,目前稍有空闲浏览到到此贴,故此表述一下自己对按钮抖动处理的使用经验供参考。
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楼
主题:回复:应用讨论----按钮抖动处理问题
对输入信号高电平延时接通TON,低电平进行延时断开TOF,这样就可以处理常开或者常闭触点了。
S7定时器的数量有限,可以使用IEC定时器来处理,只是占点DB数据块而已。还可以结合FB块的多重背景数据块,减少数据块的数量。我的做法是做好一个标准的32点DI的滤波程序块FB,每一个模块调用一次这块就可以了(每个DI模块预留占用4个字节地址)。 |
|
划痕 侠圣 经验值:4794 发帖数:2009 精华帖:22 |
29楼
主题:回复:应用讨论----按钮抖动处理问题
将开关量信号采样n+1次,将前n次采样信号进行分别进行与运算和或运算,可以得到以下3中逻辑结果(已给出滤波算法):
[color=blue][b]与结果=0,滤波输出信号0; 或结果=1,滤波输出信号1; 与结果=0,或结果=1,此时信号处于过度状态,滤波输出保持上一次输出值不变。[/b][/color] 运算完成后将第n+1采样值送入队列中等待下一次运算。 <同样在系统重启后,建议有2n个扫描周期的准备时间,这样也不用区分是常开或常闭点了> 这下应该满足没有定时、也没有计数,只有逻辑运算,达到滤波的功能。
No discussion, no outcome.
|