Merker bzw Merkerwörter sind globale Variablen.
Du würdest also in deine Funktion deine Eingangsvariable auf ein
Merkerwort schreiben
MW100 := ININTEGER;
Dann kannst du da absolut drauf zugreifen und die Werte z.B. in einem
BOOL Array ablegen.
OUTARRAY[0] := M100.0;
OUTARRAY[15] := M101.7;
Das ganze ist OK, würde ich jedoch nicht machen, wenn ich das ganze als
universale Funktion nutzen möchte. (Funktion OK, Programmiertechnisch
böse)
Google mal nach Ausmaskieren, das ist ja auch bei einem µC unter C so
gang und gebe. Vorteil wäre halt, das man keinen absoluten Zugriff
nutzt, damit ist das ganze nicht an statische Variablen gebunden.
Nachteil: viel mehr Code.
Eine SPS hat durchaus Typenprüfungen und so kann man halt kein Typ
"WORD" einfach in ein Typ "ARRAY OF BOOL" reinkopieren. Will man das
doch machen, braucht man den absoluten Zugriff auf die Variablen,
schreibt halt "stumpf" 16 Bit von Adresse XX nach Adresse XY.
Machbar ist vieles, wichtig ist, dass es nachvollziehbar ist. Und da es
einem Baustein quasi scheißegal ist, ob sich die globale Adressen
verschoben haben, kann man sich damit auch derbst Ärger ins Boot holen.