Julian1234
Level-2
- Beiträge
- 9
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Hallo, im Anhang habe ich euch den Baustein eingefügt. Vielleicht hilft das weiter.
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
980:// Speichere neue Reihenfolge im Array
WHILE #PS_Step[#i] = #Stop_B_Wechsel DO
#PS_Step[#i] := #Start_B_Wechsel;
#lx_Wechsel := FALSE;
#i := 1;
#step := 0;
END_WHILE;
#i := #i + 1;
IF #i > 6 THEN
#i := 0;
END_IF;
Ich habe es mir jetzt auch 3x angeschaut und konnte keinen Sinn erkennen bzw. es wundert mich dass es überhaupt funktioniert.Ich frage mich auch wozu die WHILE-Schleife gut sein soll. Nach Deiner letzten Erklärung soll doch nur ein einziger Array-Eintrag geändert werden - dafür braucht es keine Schleife.
Innerhalb der Schleife wird #i nur einmal auf 1 gesetzt und ändert sich dann nicht mehr. DeinDas Array das durchlaufen wird mithilfe der Zählvariable i
#i := #i + 1
liegt ja außerhalb der Schleife, daher wird auch das Array nicht "durchlaufen" sondern immer nur #PS_Step[1] verglichen - und da kommt dann immer dasselbe raus, wodurch die Schleife endlos läuft.Irgendwie fehlt in der Schleife dann auch noch ein IF...Wenn ich den Speicherbereich mithilfe der Schleife gefunden habe wird er überschrieben mit der neu gestarteten Pumpe und die Schleife ist beendet.
FOR #index := 1 TO 5 DO
IF #PS_Step[#index] = ... THEN //gesuchter Pumpencode gefunden?
... //neuen Pumpencode eintragen
EXIT; //und Suchschleife benden
END_IF;
END_FOR;
Es kann gut sein das ich die Funktion der While schleife falsch interpretiert habe.Innerhalb der Schleife wird #i nur einmal auf 1 gesetzt und ändert sich dann nicht mehr. Dein#i := #i + 1
liegt ja außerhalb der Schleife, daher wird auch das Array nicht "durchlaufen" sondern immer nur #PS_Step[1] verglichen - und da kommt dann immer dasselbe raus, wodurch die Schleife endlos läuft.
Harald
JA jeder Pumpe kann höchstens einmal im Array stehen.Irgendwie fehlt in der Schleife dann auch noch ein IF...
Und wenn der Pumpencode nicht gefunden wird, dann läuft die WHILE-Schleife endlos.
Steht jeder Pumpencode nur (höchstens) einmal in dem Array? Dann könntest Du doch einfach mit einer FOR-Schleife das Array durchsuchen:
Dann hätte die Schleife auch ein Ende, wenn (warum auch immer) der gesuchte Pumpencode nicht in dem Array steht (nicht gefunden wird).Code:FOR #index := 1 TO 5 DO IF #PS_Step[#index] = ... THEN //gesuchter Pumpencode gefunden? ... //neuen Pumpencode eintragen EXIT; //und Suchschleife benden END_IF; END_FOR;
Harald
So ist es. Eine WHILE-Schleife hat keinen ersten und zweiten Teil. Um sich zu Details zu informieren, dafür ist die Hilfefunktion in TIA da.Es kann gut sein das ich die Funktion der While schleife falsch interpretiert habe.
Es gibt bei einer While Schleife keinen zweiten Teil. Wenn die Bedingung erfüllt ist, dann "hängt" die SPS in der WHILE Schleife. Ist die Bedingung nicht mehr erfüllt, dann wird die Schleife verlassen.Nach meinem Verständnis wird der erste Teil der Schleife durchlaufen wenn er erfüllt ist und der zweite Teil nach der Schleife wenn die Bedingung nicht erfüllt ist
Wir verwenden essentielle Cookies, damit diese Website funktioniert, und optionale Cookies, um den Komfort bei der Nutzung zu verbessern.
Siehe weitere Informationen und konfiguriere deine Einstellungen