FC20是按照下面网址里的代码做的一个取上升沿、下降沿的程序。
http://support.automation.siemens.com/CN/llisapi.dll?func=cslib.csinfo&lang=zh&objid=71705271&caller=view
FB70里只调用了这个FC20,代码如下:
FUNCTION_BLOCK FB70
VAR_INPUT
in:BOOL;
END_VAR
VAR_OUTPUT
up:BOOL;
down:BOOL;
END_VAR
VAR_TEMP
ls:BOOL;
END_VAR
FC20(Current_Status := in // IN: BOOL
,Positive_Edge := up // OUT: BOOL
,Negative_Edge := down// OUT: BOOL
,Last_Status := ls// INOUT: BOOL
); // VOID
END_FUNCTION_BLOCK
编译都正常,我在OB1里直接调用FC20时,可以正常实现取上升沿、下降沿的功能。
但我在OB1里调用FB70时,输入变1后,上升沿始终输出为1,而不是下一扫描周期后变回0。
各大神们知道这是什么原因么?
再补充一句,当ls:BOOL;这个中间变量定义为输出变量时,程序就能正常工作了。