TIA S7 1200 1212C DC/DC/DC While Schleife

Frank_the_Tank

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

ich versuche gerade bei der oben genannten Steuerung in SCL eine While Schleife Einzugeben.
Die SPS gibt beim Ausführen immer den folgenden Fehler aus und geht in Stopp zustand.
-Max. cycle time error(OB start event)- CPU wechselt in STOP-Zustand(keine OB bearbeitung)
-Max. freie Zykluszeit überschritten-Zeitfehler, Start von OB80 angefordert
Gibt es was bei den While Schleifen zu beachten?

Danke für Eure Hilfe
 
Ganz wichtig:

Eine while-Schleife wird ausgeführt, solange die Durchführungsbestimmung erfüllt ist. Du musst also sehr genau darauf achten, dass Deine Schleife verlassen werden kann. Sonst bleibt das Programm in der Schleife und die SPS geht halt in Stop wegen Zykluszeitverletzung.
Ggf. kannst Du die Zykluszeitüberwachung verlängern. Ich vermute aber mal, dass Du Deine While-Schleife verändern musst.
 
Zuletzt bearbeitet:
Eine SPS ist von Haus aus eine Endlose WHILE-Schleife, ein wenig bildlich gesprochen.

Insofern sind WHILE Schleifen in aller Regel bei einer SPS völlig sinn- und nutzlos (Außnahmen gibts natürlich), das was es zu beachten gilt, hast du jetzt ja praktisch schon festgestellt.
Du muss die Anzahl der Durchläufe in irgend einer Form begrenzen, da du die SPS sonst eben auf deine 3 Zeilen SCL beschränkst, "einsperrst".

Mfg
Manuel
 
So, hier der Code:
IF #Record=True THEN
#i:=1;
WHILE #FlaMer=1 AND #Record=1 DO

#Ausgang:=1;
#i:=#i+1
END_WHILE;
END_IF;

Es ist unbekannt wioft die Schleife läuft.
In der Schleife soll später bei der Flankenänderung ein einem Eingang ein Abbild der Ausgänge erstellt werden, dann soll der Zähler ein hochzählen und es soll wieder auf eine Flankenänderung gewartet werden.

MfG
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Auch wenn #FlaMer eine Flanke ist. Das Programm bleibt in der WHILE-Schleife. Die Durchführungsbedingung muss innerhalb der Schleifenanweisung zurückgesetzt werden. Diese Anweisung wird immer zu einer Zyklusverletzung führen. Ich vermute die WHILE-Schleife ist auch nicht die beste Wahl der Mittel für das was Du vorhast.
 
Um die Zustandsänderung eines Eingangs mitzukriegen muß eine SPS nicht stur nur noch diesen Eingang beobachten und alle anderen Aufgaben vernachlässigen. Es reicht, wenn die SPS einmal pro Zyklus "kurz" auf den Eingang schaut.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die Hilfe, ich habe die While Schleife entfernt und duch eine IF ELSE bedingung ersetzt, funktioniert prima :)
Wisst ihr ob es die Möglichkeit gibt die Ausgangsabbilder der SPS zu einem bestimmten Zeitpunkt abzuspeichern? Bzw wie ich am besten den zustand von 8 Ausgängen zu einem bestimmten Zeitpunkt in ein Array schreiben kann?

MfG Frank
 
Zurück
Oben