E0023: a * address that VAR_CONFIG does not complete
Every variable declared AT %I*, %Q* or %M* gets its address in the
configuration’s VAR_CONFIG, once for every instance of the program or
function block that declares it; one missing is an error (Ed.3 6.5.5.4).
The path starts with the resource (when the configuration names its resources), then the program instance, the function block instances, and the variable:
PROGRAM line
VAR pump : valve; END_VAR
END_PROGRAM
CONFIGURATION plant
RESOURCE cpu ON PLC
TASK fast (INTERVAL := T#10ms, PRIORITY := 1);
PROGRAM main WITH fast : line; (* E0023: cpu.main.pump.coil *)
END_RESOURCE
VAR_CONFIG
(* the fix: *)
(* cpu.main.pump.coil AT %QX0.0 : BOOL; *)
END_VAR
END_CONFIGURATION
The error points at the program instance whose variable has no address.