Hallo,
leider habe ich dir den Code gepostet ohne ihn gegenzuchecken - deshalb der Fehler darin - sorry.
Du kannst mit AT eine komplett andere Sicht auf ein gleich großes oder größeres Objekt erstellen.
Mein Fehler war, dass das Array [0..17] of Bool zwar den Platz von einem DWORD (z.B.) benötigt - das ist dem Compiler allerdings scheinbar nicht klar/egal. Du könntest also das Array einfach auf [0..31] vergrößern damit der Compiler nicht mehr meckert. Du hast dadurch dann zwar ein zu groß deklariertes Array gegenüber dem, was du brauchst - du kannst dann aber den Befehl so einsetzen.
Das gilt natürlich für jeden der beiden Vorschläge ...
Die AT-Sicht kannst du dir so vorstellen, wie die Speicherverwaltung in Step7 schlechthin.
Du kannst in einem DB ein DINT an Stelle 0 anlegen, deshalb kannst du dann aber trotzdem jedes Bits(bei absoluter Adressierung) noch einzeln adressieren und natürlich jedes Byte und Word etc.
AT ist/erzeugt eine andere Form der Betrachtung eines festgelegten Speicherbereichs. Das geht dann natürlich auch für komplexe Strukturen oder ARRAY's oder oder ...
Entscheidend ist, was ich oben schon erwähnte :
... mit AT eine komplett andere Sicht auf ein gleich großes oder größeres Objekt erstellen.
Gruß
Larry