AWL (IL Logic) Problem mit Schleife

julianpe

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

ich möchte folgende Funktionalität in mein Programm einbringen:
Ich habe einen eingelesenen Ist-Wert (Fill1 vom Typ WORD)
und einen Vorgabewert (SET_Fill1 vom Typ WORD)

Ich hatte mir folgende Ansteuerung in AWL, bzw IL (Movicon) vorgestellt:

Code:
L Fill1
L SET_Fill1
> // Fill1 ist groesser als SET_Fill1 und Fill1 und wird um eins verringert
L Fill1
L KD 1
-
T Fill1 
BE

Funktionsprinzip:
Ich lade Fill1 und SET_Fill1 in den Akku und vergleiche diese miteinander.
Sofern Fill1 größer ist als SET_Fill1 so wird Fill1 um 1 dekrementiert.
Mein Problem ist hier, dass die Schleife ewig durchläuft, auch wenn das VKE vom Vergleichsoperator 0 ist.
Normalerweise soll Fill1 nach X Zyklen den Wert von SET_Fill1 annehmen.
Die Realität sieht aber so aus, dass es immer gegen 0 geht und diesen Wert dann auch annimmt.

Wie kann ich das optimieren?

Bzw. wie würde das in VBA ( WinWrap) aussehen?

Danke und Gruß
 
Zuletzt bearbeitet:
Habe ein wenig ausprobiert und folgender Code funktioniert:

Code:
L Fill1
L SET_Fill1
>
JC MINUS
L Fill1
L SET_Fill1
<
JC PLUS
L Fill1
L SET_Fill1
==
JC EQUAL

:MINUS
L Fill1
L KD 1
-
T Fill1
BE

:PLUS
L Fill1
L KD 1
+
T Fill1
BE


:EQUAL
L SET_Fill1
T Fill1

Kann man das noch einfacher umsetzen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei EQUAL brauchst du gar nichts machen, denn die beiden Variablen sind ja ohnehin identisch.

Also einfacher:

Code:
L Fill1
L SET_Fill1
>
JC MINUS
L Fill1
L SET_Fill1
<
JC PLUS
JMP EQUAL

:MINUS
L Fill1
L KD 1
-
T Fill1
BE

:PLUS
L Fill1
L KD 1
+
T Fill1
BE


:EQUAL

JMP soll ein unbedingter Sprung sein (Kenne in deiner Steuerung nicht den Befehl dafür).



 
Zuletzt bearbeitet:
Zurück
Oben