对于功能FC,功能块FB中IN,OUT,INOUT的困惑?
今天突然心血来潮,测试了一下下面程序(本来IN参数只是作为只读参数,OUT参数只是作为只写参数,可是某些时候把它们当做IN_OUT参数,好像执行结果一致),有点困惑???以下第1,2程序为把IN参数作为IN-OUT使用,在FC,FB程序执行结果不一样!以下第3,4程序为把out参数作为IN-OUT使用,在FC,FB程序执行结果是一样的!
1、OB1程序如下:
CALL FC1
IN1:=MD10
FC1程序如下:
L #IN1
L 100
+D
T #IN1
其中IN1为FC1中定义的IN形参,可是这里程序却不断执行(即MD10不断地累加100,即MD10的结果为100,200,300...)
2、OB1程序如下:
CALL FB1,DB1
IN1:=MD10
FC1程序如下:
L #IN1
L 100
+D
T #IN1
其中IN1为FB1中定义的IN形参,可是这里程序却总是结果一致,MD10总是为初始值,而DB1中对应IN1 位置为恒值(MD10初始值+100)
而对于OUT参数,下面的程序MD10的执行结果一致
3、OB1程序如下:
CALL FC1
OUT1:=MD10
FC1程序如下:
L #OUT1
L 100
+D
T #OUT1
其中OUT1 为FC1中定义的OUT形参,可是这里程序却不断执行(即MD10不断地累加100,即100,200,300...)
4、OB1程序如下:
CALL FB1,DB1
OUT1:=MD10
FC1程序如下:
L #OUT1
L 100
+D
T #OUT1
其中OUT1 为FB1中定义的OUT1形参,(即MD10不断地累加100,即100,200,300...)