在自动化项目中,经常需要用一个按钮来实现状态切换功能。简单的逻辑就是按钮按下置位1,按钮释放置位0。
这种基本条件对应线圈就能很简单实现。
有点难度的逻辑是:
按钮按下、释放 置位1 , 按钮再按下、释放 置位0.,循环往复
这时候就需要点编程技巧来实现对应逻辑了。
首先在变量表里创建两个变量 btn /status
Ladder:
简单解释:利用一个临时变量temp来记录上一次按钮释放时M0.1的状态,来判断下次按钮按下需要置0还是置1。
当然也可以做一个FC进行复用。
FUNCTION "FB_Btn" : VOID
TITLE =Basic Btn Function
VERSION : 0.1
VAR_INPUT
btn : BOOL ;
END_VAR
VAR_OUTPUT
status : BOOL ;
END_VAR
VAR_TEMP
temp : BOOL ;
END_VAR
BEGIN
NETWORK
TITLE =Set Final status
A #btn;
AN #temp;
S #status;
A #btn;
A #temp;
R #status;
NOP 0;
NETWORK
TITLE =Help BIT temp
AN #btn;
A #status;
S #temp;
AN #btn;
AN #status;
R #temp;
NOP 0;
END_FUNCTION