单键按钮起停控制,在我们的工程中经常会遇到,网友们也经常在论坛中有讨论,搜集归类了几个实用程序与大家分享:
1、常规编程实现,优点直观,易理解且不使用RS触发器就能实现。不足在于语句较多。
A #Button
FP #Button_FP
= #Button_FP_Flg
A #Button_FP_Flg
AN #Out_Flg
= #On_Flg
A #Button_FP_Flg
A #Out_Flg
= #Off_Flg
A(
O #On_Flg
O #Out_Flg
)
AN #Off_Flg
= #Out_Flg
A #Out_Flg
= #Out
如果你使用HMI的软件按钮来操作,上面的程序可以满足可靠的控制了.
如果你使用硬件按钮来操作,那么就会遇到我们经常讨论到的按钮去抖动的问题.通常我们都会采用定时器延时的方法来解决,在S7300/400中可以用SD定时器或SFB4,前者造成程序的可移植性较差(要带一个定时器的形参),后者又占用了较多的程序资源(SFB4的程序容量远远超过了控制程序的本身),都不尽如人意.
这里有一种更简便的方法:
分析一下按钮的抖动,按照现在的制造工艺水平,其触点抖动产生的信号变化也就在初始的几十毫秒中,而且在后期其信号抖动的幅度已经是很小了,这样我们可以考虑利用PLC CPU的扫描周期来实现延时去抖动的目的.假设:CPU的扫描周期最小为10毫秒,一般利用3个扫描周期的延时,即可去除按钮的抖动信号.
A #Button_Flg_2
= #Button_Flg_3
A #Button_Flg_1
= #Button_Flg_2
A #Button
= #Button_Flg_1
A #Button_Flg_3
FP #Button_FP
= #Button_FP_Flg
A #Button_FP_Flg
AN #Out_Flg
= #On_Flg
A #Button_FP_Flg
A #Out_Flg
= #Off_Flg
A(
O #On_Flg
O #Out_Flg
)
AN #Off_Flg
= #Out_Flg
A #Out_Flg
= #Out
仅增加12个字节就可以实现了,而且和用定时器的是一样的使用效果.
2、最简单的单按钮启停程序,用RS触发器用最少的语句就能实现。
AN Q 0.1
A(
A I 0.1
FP M 0.1
R Q 0.1
)
S Q 0.1
NOP 0