-> Hier kostenlos registrieren
Hallo,
ich habe in einem FC eine Schleife programmiert, welche nur einmal durchlaufen soll, wenn eine Eingangsvariable (#aktive_DatensatzNr [INT]) den Wert ändert.
Versucht habe ich es indem ich eine Temp-Variable (#Temp_aktiver_Datensatz [INT]) angelegt habe, und diese mit der Eingabsvariable vergleiche um den Durchlauf der Schleife zu starten.
Das Problem ist, das die Schleife immer durchlaufen wird, da die Temp-Variable nicht den Wert hat, den ich ihr zuweise.
Lege ich die Temp-Variable in den Bereich Ein-Ausgangsvariable und weise ihr beim Bausteinaufruf des FC´s eine Adresse in einem Datenbaustein zu, funktioniert es.
Allerdings finde ich es unschön, an einem FC-Aufruf "Variablenspeicher" anhängen zu müssen. Gibt es da vielleicht eine elegantere Lösung?
Hier mal der Code-Auszug:
ich habe in einem FC eine Schleife programmiert, welche nur einmal durchlaufen soll, wenn eine Eingangsvariable (#aktive_DatensatzNr [INT]) den Wert ändert.
Versucht habe ich es indem ich eine Temp-Variable (#Temp_aktiver_Datensatz [INT]) angelegt habe, und diese mit der Eingabsvariable vergleiche um den Durchlauf der Schleife zu starten.
Das Problem ist, das die Schleife immer durchlaufen wird, da die Temp-Variable nicht den Wert hat, den ich ihr zuweise.
Lege ich die Temp-Variable in den Bereich Ein-Ausgangsvariable und weise ihr beim Bausteinaufruf des FC´s eine Adresse in einem Datenbaustein zu, funktioniert es.
Allerdings finde ich es unschön, an einem FC-Aufruf "Variablenspeicher" anhängen zu müssen. Gibt es da vielleicht eine elegantere Lösung?
Hier mal der Code-Auszug:
Code:
SET
U(
L #aktive_DatensatzNr
L #Temp_aktiver_Datensatz
<>I
)
SPBN _002
AUF DB [#t_Datenbank_Nr]
L #Startadr_akt_Datensatz
SLW 3
LAR1
AUF DI [#t_User_DB_Nr]
L #Startadr_Datensatz_HMI
SLW 3
LAR2
L #Groesse_Datensatz
Loo1: T #LOOP_Count_1
L DBB [AR1,P#0.0]
T DIB [AR2,P#0.0]
+AR1 P#1.0
+AR2 P#1.0
L #LOOP_Count_1
LOOP Loo1
L #aktive_DatensatzNr
T #Temp_aktiver_Datensatz
_002: NOP 0