我用SCL做一个切换按钮(就是按一下输出1,按一下输出0)。
FUNCTION FC1000 : VOID
VAR_INPUT
Buttom: BOOL;
END_VAR
VAR
Sp: BOOL;
Buttom_last: BOOL;
END_VAR
VAR_IN_OUT
Out1: BOOL;
END_VAR
VAR_OUTPUT
END_VAR
BEGIN
IF buttom &(buttom_last=false) THEN
sp:=true;
ELSE
sp:=false;
END_IF;
IF buttom THEN
buttom_last:=true;
ELSE
buttom_last:=false;
END_IF;
IF sp THEN
out1:= NOT (out1);
END_IF;
END_FUNCTION
测试的时候当"Buttom"变量为1时的确已将"Buttom_last"置1。但是当到下个扫描周期时"Buttom_last"的值又变为0。因此每个扫描周期"sp"的值都为1。
请教高手这个是不是跟那个"Buttom_last"时临时变量有关系?因为我将"Buttom_last"放在"IN_OUT"在调用时给它赋一个绝对地址功能就好用了。如果是这个原因的话有没有什么办法能解决的,请说明详细一点,谢谢!