Problem mit Timerfunktion

vo13

Level-1
Beiträge
31
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
wahrscheinlich ist das Ganze ziemlich einfach zu lösen, aber ich komme irgendwie nicht drauf:
wenn iState=1 ist, dann soll ein Timer gestartet werden und eine Variable auf 1 gesetzt werden.
iState = 2 und Timer abgelaufen dann solll Variable 0 werden.
Aber T1.Q wird nicht true!
Man kann das sicher auch ohne state machine machen, aber ich möchte das gerne so machen, da ich was ähnliches später noch brauche.

VAR
T1: TON := (IN:=FALSE); (* Timer definieren *)

Main Prog
T1(IN:=, PT:=T#5s, Q=>, ET=> ); (* Timer definieren *)

IF iState=1 THEN
T1.IN:=TRUE; (* Timer starten *)
Variable := 1;
iState:=2;
END_IF
IF iState=2 AND (T1.Q) THEN (* ausgang ist ein und zeit ist abgelaufen *)
T1.IN:=FALSE;
Variable := 0;
iState:=0;
END_IF

Hat jemand eine Idee?
Danke...
 
Hallo,

ich würde es so machen :
Code:
Main Prog
    T1(IN:= [B][COLOR=#ff0000](i[B]State[/B]=1) [/COLOR][/B],PT:=T#5s, Q=>, ET=> );            (* Timer definieren  *)

    IF iState=1 THEN
        Variable := 1;            
        iState:=2;
    END_IF
    IF iState=2 AND T1.Q THEN            (* ausgang ist ein und zeit ist abgelaufen *)
        Variable := 0;            
        iState:=0;
    END_IF
Gruß
Larry

Nachsatz :
wie/wann wird iState = 1 ... ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Var

Timer :TON;
Variable :INT:=0;
State :INT:=0;

Main Prog

timer(IN:=State=1 OR Variable=1 , PT:=t#5s , Q=> , ET=> );

IF Timer.Q THEN
Variable:=1;
State:=2;
END_IF


IF State=2 AND Timer.Q THEN
Variable:=0;
State:=0;
END_IF

Gruß
 
Zuletzt bearbeitet:
Zurück
Oben