Attention
IronPLC implements many parts of the IEC 61131-3 standard and is working toward full Structured Text support. Key features still missing include ranges, enum and I/O mapping.
P4027¶
- Code
P4027
- Message
Function return type does not match assignment destination type
This error occurs when a function’s return type does not match the type of the variable
being assigned to. IronPLC allows implicit widening between integer types (for example,
a function returning SINT assigned to a DINT variable), but rejects other type
mismatches such as real to integer or narrowing conversions.
For the full set of allowed implicit conversions, see Type Conversions.
Example¶
The following code will generate error P4027:
FUNCTION GET_VALUE : REAL
VAR_INPUT
A : REAL;
END_VAR
GET_VALUE := A;
END_FUNCTION
PROGRAM main
VAR
result : INT;
x : REAL;
END_VAR
result := GET_VALUE(x); (* Error: REAL return assigned to INT variable *)
END_PROGRAM
The function GET_VALUE returns REAL, but result is INT.
To fix this error, use an explicit type conversion:
result := REAL_TO_INT(GET_VALUE(x));