TIA TIA Portal V16 - SCL - While Do

Zuviel Werbung?
-> Hier kostenlos registrieren
Nein, geht nicht.

Wird z.B. #OBT TRUE dann wird #MotorVor auf TRUE geschaltet. Wird nun #OBT FALSE und #LTK ist auch FALSE, so bleibt #MotorVor dauerhaft auf TRUE
Ja, aber ich habe nicht die Logik in Frage gestellt, sondern nur die Lesbarkeit.

Insgesamt ist es (wie so häufig), dass, wenn man von der Programmierung eines ereignisgetriggerten Systems kommt, die Verinnerlichung eines zyklisch arbeitenden Systems befremdlich ist bzw. man einige Stolpersteine findet.
Ich fand es hilfreich, es damit zu verdeutlichen, dass man quasi in einer Endlosschleife programmiert und nicht daraus ausbrechen kann (geht doch, aber für das Verständnis hilft die Vorstellung erstmal).

VG

MFreiberger
 
Zuviel Werbung?
-> Hier kostenlos registrieren
PS: Danke das du das du die Problematik, mit der ich mich als nächstes befassen musste, nämlich der, was passiert wenn beide FALSE sind direkt gelöst hast.
??
Motor := #OBT AND NOT #LTK;
MotorVor := #LTK AND NOT #OBT;

Harald hat ja die Variante mit Selbsthaltung aufgezeigt, bei mir ist es ohne Selbsthaltung. Welche Variante du benötigst ist mir nicht ganz klar.
 
Zuletzt bearbeitet:
..., dass, wenn man von der Programmierung eines ereignisgetriggerten Systems kommt, die Verinnerlichung eines zyklisch arbeitenden Systems befremdlich ist bzw. man einige Stolpersteine findet.
Na gut, Mario, ungewohnt ist die Denkweise eines zyklischen Programms für Nicht-SPS-Programmierer sicherlich.
Aber das zyklische Programm selbst wird doch einfach nur in einer (Endlos)Schleife aufgerufen, die allerdings nicht der Programmierer selbst programmiert hat, sondern die durch das "BetriebsSystem" im Hintergrund (oder Untergrund? ;o) ausserhalb des Programms abläuft und - im Programm somit unsichtbar - ausgeführt wird.
Wenn man dies im Hinterkopf behält, ist der Unterschied also durchaus minimal und lässt sich auf einfachste verstehbare/nachvollziehbare Elemente der Programmierung zurückführen.
Wenn eine ProgrammSchleife nichts anderes tut, als auf einen Zustand(sWechsel) eines Eingangs zu warten, sollten die AlarmGlocken sofort schrillen. Eine ZyklusZeitÜberschreitung ist unvermeidbar. Selbst, wenn der ZustandsWechsel normalerweise in genügend kurzen zeitlichen Abständen erfolgt, so kann der zeitliche Abstand in einem Fehlerfall zu lang werden und damit die PLC lahmlegen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Na gut, Mario, ungewohnt ist die Denkweise eines zyklischen Programms für Nicht-SPS-Programmierer sicherlich.
Aber das zyklische Programm selbst wird doch einfach nur in einer (Endlos)Schleife aufgerufen, die allerdings nicht der Programmierer selbst programmiert hat, sondern die durch das "BetriebsSystem" im Hintergrund (oder Untergrund? ;o) ausserhalb des Programms abläuft und - im Programm somit unsichtbar - ausgeführt wird.
Hab ich doch im nächsten Satz so geschrieben:
Ich fand es hilfreich, es damit zu verdeutlichen, dass man quasi in einer Endlosschleife programmiert und nicht daraus ausbrechen kann (geht doch, aber für das Verständnis hilft die Vorstellung erstmal).
:unsure:
 
Zurück
Oben