Auf mehrere Elemente eines ARRAY per FC zugreifen

bentrup9405

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Step7 V5.3: Möchte in einem ARRAY jeweils z.B. 4 Bytes ändern, die einen definierten Abstand voneinander haben:

Beispiel 1: Wert 10 in ARRY[5], ARRY[20], ARRY[24] und ARRY[30] schreiben.
Beispiel 2: Wert 22 in ARRY[6], ARRY[21], ARRY[25] und ARRY[31] schreiben.

An eine FC wird der Wert und ein Pointer z.B. auf die erste Variable (Beispiel 1: ARRY[5]) übergeben, die FC errechnet sich die restlichen 3 Positionen. Der FC wird von einem FB angesprochen (der wiederum Wert und Pointer als Parameter bekommt).

Lösungsversuch 1: Die erste Variable als echten Pointer übergeben. Geht nicht, weil dann beim FC nur noch ein Pointer auf einen Pointer ankommt usw.

Lösungsversuch 2: Die erste Variable als IN_OUT zum FC durchreichen. Das geht, aber es wird ein Zeiger (?) auf einen V.. übergeben. Mit dem kann ich nicht die weiteren 3 Positionen errechnen

Bei beiden Lösungsversuchen weiß ich nicht, ob es theoretisch geht und ich nur nicht weiß "wie" ..

Wer knackt das Problem?

Danke + Grüße, Reinhard
 
Dass es mit dem Parametertyp POINTER geht glaub ich nicht, da er vom Step7 Editor selbst erzeugt wird.
Wenn du den Parameter vom Typ ANY anlegst dann funktioniert das, wenn auch etwas aufwändig.

Lösungsweg:
- Der FB und auch der FC haben als IN-Parameter eine Variable IN_ARRY mit Datentyp ANY.
- Im Temp-Bereich des FB wird ebenfalls eine Variable vom Datentyp ANY angelegt, z.B. TMP_ARRY.
- Im FB werden dann über indirekte Adressierung die 10-Bytes des IN_ARRY auf die 10 Bytes von TMP_ARRY umkopiert.
- Wenn im FB der unterlagerte FC aufgerufen wird, wird dort an dessen Parameter IN_ARRY die Variable TMP_ARRY angeschaltet.
 
Zurück
Oben