Fixed __SET_EXTERNAL_FB declaration in accessor.h, invoked when accessing EXTERNAL_BLOCK.VARIABLE. Macro was invoking __SET_VAR with wrong parameter count. Fixed corresponding code generator for ST. Seems similar codegen for IL is also broken, but fix would affect other (unknown) behviours -> didn't touch it.
PROGRAM foo
VAR_INPUT
single, interval, priority : BOOL;
END_VAR
LD single
LD interval
LD priority
END_PROGRAM
PROGRAM priority
VAR_INPUT
bar : BOOL;
END_VAR
LD bar
END_PROGRAM
PROGRAM single
VAR_INPUT
bar : BOOL;
END_VAR
LD bar
END_PROGRAM
PROGRAM interval
VAR_INPUT
bar : BOOL;
END_VAR
LD bar
END_PROGRAM
CONFIGURATION config1
TASK fast(PRIORITY := 4);
PROGRAM P1 WITH fast:
FOO(single := TRUE, interval := TRUE, priority := TRUE);
END_CONFIGURATION
CONFIGURATION config2
TASK fast(SINGLE := 3, PRIORITY := 4);
PROGRAM P1 WITH fast:
FOO(single := TRUE, interval := TRUE, priority := TRUE);
END_CONFIGURATION
CONFIGURATION config3
TASK fast(INTERVAL := T#1s, PRIORITY := 4);
PROGRAM P1 WITH fast:
FOO(single := TRUE, interval := TRUE, priority := TRUE);
END_CONFIGURATION
CONFIGURATION config4
TASK fast(SINGLE := 3, INTERVAL := T#1s, PRIORITY := 4);
PROGRAM P1 WITH fast:
FOO(single := TRUE, interval := TRUE, priority := TRUE);
END_CONFIGURATION