# indirekte Adressierung AWL



## Tigerente1974 (13 August 2011)

Ich habe manchmal Anwendungen, in denen Daten in einem Global-DB indirekt adressiert werden. In der Regel lege ich für die Daten ein UDT an und bilde den UDT-Typ in einem Array im Global-DB ab. Weil die Daten in AWL ja nicht über den (Array-)Index adressiert werden können, berechne ich die absolute Adresse aus Länge der Struktur und dem Index. Diese übergebe ich dann an einen ANY-Pointer. Das funktioniert problemlos, bis die Struktur -und damit die Länge- verändert wird. Ich habe deswegen mal mit Platzhaltern in der Struktur gearbeitet, fand das aber nicht praktikabel. Aktuell mache ich einen DUMMY-Global-DB, in dem ich den UDT 1x deklariere. Über diesen Umweg kann ich mit DBLG die Länge des UDT auslesen, um die Berechnung der Adresse und den Wiederholfaktor wie oben beschrieben dynamisch zugestalten.
Das klappt, sieht aber irgendwie "hingebastelt" aus. Gibt es noch elegantere Lösungen?


----------



## LargoD (13 August 2011)

Aus den von Dir genannten Gründen mache ich das in SCL.
Wenn der UDT sich ändert, einfach neu übersetzen und die Arrayzugriffe passen wieder. Man muss natürlich durchgehend symbolisch arbeiten und Step7 auch entsprechend eingestellt haben.
Gruß
Erich


----------



## Tigerente1974 (14 August 2011)

Würde ich auch am liebsten machen. Wir haben aber zum Teil Kundenvorgaben, die S7 in KOP, FUP, AWL fordern. Wenn es nach mir ginge, würde ich nicht einmal Siemens einsetzen...


----------

