Immutable Hardware Binding

Variables configured in a VAR_CONFIG block can not override their hardware binding.

Erroneous code example:

VAR_CONFIG
    main.foo.bar AT %IX1.0 : BOOL;
END_VAR

PROGRAM main
    VAR
        foo : foo_fb;
    END_VAR
END_PROGRAM

FUNCTION_BLOCK foo_fb
    VAR
        bar AT IX1.5: BOOL;
    END_VAR
END_FUNCTION_BLOCK

In this example the VAR_CONFIG block configures bar to have a hardware adress IX1.0. However, at the same time the bar inside the POU foo_fb assigns a hardware address IX1.5.

For the code to be considered valid, bar should have been declared as bar AT %I* : BOOL.