-> Hier kostenlos registrieren
Hallo zusammen
Ich hab mir in S7 Classic einen FB geschrieben der folgendes macht:
Einen Neuwert in ein FIFO schreiben und
den Durchschnitt aus allen FIFO Einträgen errechnen.
Es sind noch ein paar Gimicks mit dabei wie Länge des FIFO von außen beschalten, Initialisieren etc.
Funktioniert soweit super.
Nun meine Frage:
Das FIFO-Werte-ARRAY liegt im Instanz DB.
Der Knackpunkt ist dass ich es nicht hinbekomme das Array ohne Umweg anzusprechen.
Ich habe mir jetzt so geholfen;
INPUT Beinchen wird mit der Nr. des IDB (Int) beschrieben
der DB wird dann mit <AUF DB [#T_NR_IDB] >aufgerufen und bearbeitet
Wie gesagt, funktioniert super und ich kann damit auch gut leben.
Aber die gängige Vorgehensweise ist das doch eher nicht, oder?
Wie macht ihr das?
Ach ja, noch was:
Den Input Wert muss ich erst in den TEMP Bereich umrangieren
sonst wird er nach dem AUF nicht gefressen
Ich hab mir in S7 Classic einen FB geschrieben der folgendes macht:
Einen Neuwert in ein FIFO schreiben und
den Durchschnitt aus allen FIFO Einträgen errechnen.
Es sind noch ein paar Gimicks mit dabei wie Länge des FIFO von außen beschalten, Initialisieren etc.
Funktioniert soweit super.
Nun meine Frage:
Das FIFO-Werte-ARRAY liegt im Instanz DB.
Der Knackpunkt ist dass ich es nicht hinbekomme das Array ohne Umweg anzusprechen.
Ich habe mir jetzt so geholfen;
INPUT Beinchen wird mit der Nr. des IDB (Int) beschrieben
der DB wird dann mit <AUF DB [#T_NR_IDB] >aufgerufen und bearbeitet
Code:
.................
.................
.................
INIT: CLR //######## Anfang LOOP 1 ##########
L #Schleifenzaehler_1 //Anzahl der bereits absolvierten Durchläufe
L 4 //Pointer um 4 erhöhen wegen Doppelwort
*I
L 4
-I
SLW 3 //Pointer bilden
LAR1 //und ins Adressregister schreiben
L #Neuwert
[B]AUF DB [#T_NR_IDB] //Eigenen Instanz-DB aufrufen[/B]
T DBD [AR1,P#32.0] //Anfangsadresse des Werte-Array im IDB
..............
..............
Aber die gängige Vorgehensweise ist das doch eher nicht, oder?
Wie macht ihr das?
Ach ja, noch was:
Den Input Wert muss ich erst in den TEMP Bereich umrangieren
Code:
L #NR_IDB //INPUT
T #T_NR_IDB //TEMP
.................
.................
AUF DB [#T_NR_IDB] //TEMP