Attention

IronPLC can only run very simple programs. The steps described are accurate but many language features are not yet supported.

P4007

Code

P4007

Message

Variable not defined before used

This error occurs when a variable is referenced but not declared in the current scope.

Example

The following code will generate error P4007:

FUNCTION_BLOCK LOGGER
VAR
    TRIG0 : BOOL;
END_VAR

TRIG := TRIG0;  (* Error: TRIG is not declared *)
END_FUNCTION_BLOCK

The variable TRIG is used in the assignment but is not declared in the VAR section of the function block.

If the variable name is similar to a declared variable, the compiler will suggest the closest match. For example, using conter when counter is declared will produce a “did you mean” suggestion.

To fix this error, declare the variable in the appropriate variable section:

FUNCTION_BLOCK LOGGER
VAR
    TRIG : BOOL;   (* Declare the variable *)
    TRIG0 : BOOL;
END_VAR

TRIG := TRIG0;  (* Correct: TRIG is now declared *)
END_FUNCTION_BLOCK