indirekte Adressierung AWL

Tigerente1974

Level-3
Beiträge
1.826
Reaktionspunkte
293
Zuviel Werbung?
-> Hier kostenlos registrieren
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?
 
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
 
Zurück
Oben