实验中偶遇在FB和FC里装载同样的输入参数时,发现得数不一样。下面是具体现象:
FUNCTION_BLOCK 179
VAR_INPUT
IBAddrStartInBuffer : INT ;
END_VAR
VAR_OUTPUT
IntelligentSwitchAddr : INT ;
BeltCarrierNum : INT ;
SensorType : INT ;
FaultCode : INT ;
CheckSum : BYTE ;
END_VAR
BEGIN
NETWORK
L #IBAddrStartInBuffer;
T MW100
END_FUNCTION_BLOCK
OB1里的调用是
CALL FB179,DB179
IBAddrStartInBuffer :=11
IntelligentSwitchAddr:=MW100
BeltCarrierNum :=MW102
SensorType :=MW104
FaultCode :=MW106
发现FB179里“L #IBAddrStartInBuffer”的得数不是11。
而在FC的情况如下:
FUNCTION 179:VIOD
VAR_INPUT
IBAddrStartInBuffer : INT ;
END_VAR
VAR_OUTPUT
IntelligentSwitchAddr : INT ;
BeltCarrierNum : INT ;
SensorType : INT ;
FaultCode : INT ;
CheckSum : BYTE ;
END_VAR
BEGIN
NETWORK
L #IBAddrStartInBuffer;
T MW100
END_FUNCTION_BLOCK
OB1里的调用是
CALL FC179
IBAddrStartInBuffer :=11
IntelligentSwitchAddr:=MW100
BeltCarrierNum :=MW102
SensorType :=MW104
FaultCode :=MW106
此时在FC179里“L #IBAddrStartInBuffer”的得数就是11。
可见FB和FC输入参数的虚实结合机制是不同的。
哪位大侠知道其中具体的原理和不同?