TIA Auf Array-Variable indirekt zugreifen

zloyduh

Level-1
Beiträge
226
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
habe folgendes Problem:
Möchte auf Variablen aus einem Array indirekt zugreifen.
Laut Handbuch wäre das möglich, bekomme aber immer eine Fehlermeldung
„Der eingegebene Index ist ungültig“.
So in etwa habe ich mir das vorgestellt:
MyDB.ARRAY[MW30].ABSCHNITT_L1

MW30 (INT)
 
Habe mit SCL probiert, da funktioniert das.

Möchte aber in FUP oder KOP auf die Variablen zugreifen und da funktioniert es nicht:confused:
 
In TIA V11 und 1200 CPU hat das zugreifen über Index funktioniert.

EDIT:
Bei TIA V12 und CPU 1500 geht speichern und übersetzen ohne Probleme.
Kann es aber im Moment nicht testen...
 
Zuletzt bearbeitet:
Ich möchte gerne diesen alten Thread wieder hervorholen, weil ich gerne wissen möchte wie! das in FUP geht?
TIA-V13 und 1500/1200-er.
Wie kann ich in FUP auf ein EW0 die einzelnen Bits in abhängigkeit von einer Variable zugreifen?
Also an einem Und-Baustein EW0.[laufvariable] beispielsweise.
 
Zuletzt bearbeitet:
Vergiss dieses S5-Style absolut zugreifen aus dem vorigen Jahrhundert...
Benutze Schieben/Rotieren und AND-Wordverknüpfen zum Ausmaskieren der Bits.

Harald
 
Hi wolder

angenommen a ist ein DB und b eine Variable innerhalb des DB von einfachem Typ, z.B. ein DINT.
Dann darf man bei 1200/1500 in allen Sprachen "a".b.%xi schreiben. Damit greift man auf bit i von "a".b zu. i ist jedoch immer eine feste Zahl.
"a".b.x wobei i selbst eine Variable ist, geht nicht. Mal sehen ob das je kommt.
Bis dahin musst du wie PN/DP vorschlägt schieben oder rotieren und maskieren.
Das hat den Vorteil, dass man bei der 1500 auch mit 64 Bit Typen arbeiten kann.

Für nicht optimierte DB, E,A,M gibt es PEEK_BOOL und POKE_BOOL. Die können auch völlig losgelöst von irgendwelchen Symbolen ein einzelnes bit liefern, wobei die Bitposition durch eine Variable gegeben werden kann. Diese muss jedoch einen Wert im Bereich 0 bis 7 haben. Auf das EW0.%x15 kann man damit nicht, statt dessen ist dann EB0.%x7 zu verwenden. Nicht optimierter Speicher ist big-endian. EW0.%x7 = EB1.%x7. Big-endian ist verwirrend.

'n schön' Tach auch
HB
 
Zurück
Oben