LED toggeln

SCLNewbie

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

ich versuche zwei LED's in Step 7/SCL mit "TP_load" zum toggeln zu bringen. Allerdings geht
die CPU immer aufgrund eines Zeifehlers (16#4568) in den STOP-Zustand.
Mein Programm hat folgende Struktur:

IF "LED1=aus & LED2=ein" THEN
TP_load (IN :=TP_START, PT :=#500ms);
START := TP_load.Q
WHILE START=1 DO
"LED1=ein"
"LED2=aus"
END_WHILE;
ELSE
TP_load (IN :=TP_START, PT :=#500ms);
START := TP_load.Q
WHILE START=1 DO
"LED1=aus"
"LED2=ein"
END_WHILE;
END_IF;

Ich habe es auch mit REPEAT versucht, da trat leider auch ein Zeitfehler auf. Die Zykluszeit der CPU
wurde dementsprechend angepasst.Ich weis, dass es man es auch in AWL schreiben kann, ich möchte es aber in SCL lösen.
Vielen Dank für eure Hilfe!

Viele Grüße
 
Hallo SCLNewbie,

eine WHILE-Schleife wird so lange ausgeführt, wie die WHILE-Bedingung erfüllt ist. In deinem Fall wird die WHILE-Schleife nie verlassen und es kommt dadurch zu einer Zykluszeit-Überschreitung.


Gruß, Onkel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Okay, mit der EXIT-Anweisung ist er auch nicht aus der Endlosschleife rausgekommen. Wie kann ich das
am geschicktesten programmieren, ist der Ansatz mit TP_load manchmal auch der falsche?
Vielen Dank für eure Hilfe.

Viele Grüße
 
Würdest du es denn in AWL mit einer Endlosschleife und einem doppelt benutztem SI-Timer machen ?

Ich würde es mit 2 TON's machen. Diese, wie auch alle anderen IEC-Timer, funktionieren aber nicht sinnvoll (bis gar nicht) innerhalb einer bedingten Bearbeitung - sie müssen also idealerweise absolut aufgerufen werden.
Der Ablauf wäre dann :
- wenn nichts ist dann starte TON_1.
- TON_1.Q startet TON_2 und setzt den Zustand 1 deiner LED's
- TON_2.Q setzt den Zustand 2 deiner LED's und wirft TON_1 wieder ab.
 
Zurück
Oben