Dann kann ich mir folgendes Problem nicht erklären.
Im allgemeinen Versuch ich der Reihe jede Minute für 1 Sekunde einen von 20 Ausgängen zu betätigen. Das ganze soll in ST programmiert werden um mich mit der Sprache zu beschäftigen.
MB 10 ist der Ausgang eines Zählers. Der jede Minute um 1 hoch zählt. Zwischen 1 und 20.
Und um jetzt nicht 20 Timer zu gebrauchen wollte ich das so Lösen.
[
If MB10=MB11 then. // MB10 Zähler MB11 Hilfsmerker
M20:=False;. // Freigabe Timer 05
M22:=False;. // Rücksetzen Ausgang Timer 05
Else
T05 (
EN :=NOT M20,.
RE :=,
ST :=,
I1 := T#2000ms,
I2 :=,
Q1 > M22,. // Timerausgang
QV >
);
If M22 = True then //nach Ablauf des Timers Ausgang
// zurück setzen und Hilfsmerker gleich
// setzten
M20:= true;
Q20:=false;
MB11:=MB10
Else
Q20:= True; // solange Timer 05 nicht abgelaufen ist
// Ausgang setzen
End_if;
End_if/
/code]
Der erste Durchlauf funktioniert ab den zweiten wird in der Simulation sofort der Wert in MB11 übernommen und die If Bedingungen nicht mehr durchlaufen. Für Q20:= true würde ich bei laufenden Code noch ein Case einbauen.