Duplicate interface methods with different signatures
POUs implementing multiple interfaces where both interfaces define a method with the same name are required to have the same signature for the method. A method signature is thereby defined by its name, return type and parameter list.
Errouneus code example:
INTERFACE interfaceA
METHOD foo : INT
VAR_INPUT
a : INT;
END_VAR
END_METHOD
END_INTERFACE
INTERFACE interfaceB
METHOD foo : DINT
VAR_OUTPUT
a : INT;
END_VAR
END_METHOD
END_INTERFACE
FUNCTION_BLOCK fb IMPLEMENTS interfaceA, interfaceB
// Signatures for foo differs, do we implement foo as defined in interfaceA or interfaceB?
END_FUNCTION_BLOCK
In the example above, the method foo is defined in both interfaces interfaceA and interfaceB.
However, the return type of foo in interfaceA is INT whereas in interfaceB it is DINT. Futhermore,
the parameter a in interfaceA is an input parameter whereas in interfaceB it is an output parameter.
As a result both you and the compiler are left in doubt as to which method signature to implement in the
function block fb and as a result the compiler will raise this error.