如果你要重复调用一个子程序你必须先弄清楚两件事:
1、扫描周期的概念;
2、子程序的结果;
举个例子:
FUNCTION FC1: VOID
VAR_INPUT
IN1: bool;
IN2: bool;
END_VAR
VAR_OUTPUT
OUT1: bool;
END_VAR
VAR_IN_OUT
IN_OUT1: bool;
w_Word :word;
END_VAR
VAR_TEMP
a1: bool;
a2: bool;
a3: bool;
a4: bool;
a5: bool;
a6: bool;
a7: bool;
END_VAR
BEGIN
NETWORK
TITLE =<这段程序在重复调用时,输出不了正确的结果>
//错误原因:以为OUT1是输出引脚,它不能自锁
//
a in1;
s OUT1;
a In2;
r Out1;
NETWORK
TITLE =<这段程序在重复调用时,可以输出正确的结果>
a in1;
s IN_OUT1;
a In2;
r IN_OUT1;
//网络3
NETWORK
TITLE =<如果想要对字或者字节等进行位操作,这条语句是必须的>
L w_Word;
T LW0;
NETWORK
TITLE =
a in1;
s a1;
r a2;
a In2;
r a1;
s a2
NETWORK
TITLE =
a in1;
FP a3;
s a6;
r a7;
a In2;
FN a4;
s a7;
r a6;
//网络6
NETWORK
TITLE =<将位操作的结果,以字或者字节等格式输出>
L LW0;
T w_Word;
END_FUNCTION