DerBenutzer
Level-1
- Beiträge
- 13
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Hi ich habe ein kleines Problem mit einem TON Timer. Obwohl dessen Eingang auf True gesetzt ist will dieser einfach nicht anfangen zu zählen.
Kennt einer dieses Phänomen? Hier ist mal ein Bild des Ganzen, es geht dabei um TimerRichtung2. Vielleicht erkennt jemand das Ganze auch wieder, da es mit Hilfe von
ein paar netten Leuten hier im Forum entstanden ist.

Code sieht wie folgt aus, ist aber doch etwas komplexer geworden - es geht hierbei aber wirklich nur um Timerrichtung2 und warum dieser im Variablenfenster nicht hochzählt. Zur Erläuterung wir befinden uns in Schritt 1 beim
Fall SuchenLinks:
Kennt einer dieses Phänomen? Hier ist mal ein Bild des Ganzen, es geht dabei um TimerRichtung2. Vielleicht erkennt jemand das Ganze auch wieder, da es mit Hilfe von
ein paar netten Leuten hier im Forum entstanden ist.

Code sieht wie folgt aus, ist aber doch etwas komplexer geworden - es geht hierbei aber wirklich nur um Timerrichtung2 und warum dieser im Variablenfenster nicht hochzählt. Zur Erläuterung wir befinden uns in Schritt 1 beim
Fall SuchenLinks:
Code:
PROGRAM MAIN
VAR CONSTANT
Start:BYTE:=0;
SuchenLinks:BYTE:=1;
SuchenRechts:BYTE:=2;
Schieben:BYTE:=3;
END_VAR
(*Deklaration der Variablen*)
VAR
x:BOOL;
IMPULS:BOOL;
Schritt:BYTE;
Timer1:TON;
Timer2:TON;
Timer3:TON;
Timer0:TON;
TimerRichtung:TON;
TimerRichtung2:TON;
TimerRichtung3:TON;
zaehler:BYTE;
RichtungRechts:BOOL;
RichtungLinks:BOOL;
Lichtschranke:BOOL;
END_VAR
CASE Schritt OF
Start:
RichtungRechts:=False;
RichtungLinks:=False;
IF Timer0.Q THEN
Timer0.IN:=FALSE;
RichtungLinks:=True;
Schritt:=SuchenLinks;
END_IF
SuchenLinks:
IF Lichtschranke THEN
Impuls:=True;
END_IF
IF Impuls THEN
IF zaehler>4 AND NOT TimerRichtung.Q THEN
RichtungLinks:=False;
TimerRichtung(IN:=TRUE, PT:=T#2S);
ELSIF TimerRichtung.Q THEN
RichtungRechts:=True;
Impuls:=False;
TimerRichtung.In:=False;
Timer1.In:=False;
Schritt:=Schieben;
ELSIF zaehler<=4 THEN
Impuls:=False;
Timer1.In:=False;
Schritt:=Schieben;
END_IF
ELSIF TimerRichtung2.Q THEN
RichtungRechts:=TRUE;
TimerRichtung2.IN:=FALSE;
Timer1.IN:=FALSE;
Schritt:=SuchenRechts;
ELSIF (Timer1.Q AND NOT TimerRichtung.In) AND NOT(TimerRichtung2.IN) THEN
RichtungLinks:=False;
TimerRichtung2(IN:=TRUE, PT:=T#2S);
END_IF
SuchenRechts:
IF Lichtschranke THEN
Impuls:=True;
END_IF
IF Impuls THEN
IF zaehler<=4 AND NOT TimerRichtung.Q THEN
RichtungRechts:=False;
TimerRichtung3(IN:=TRUE, PT:=T#2S);
ELSIF TimerRichtung3.Q THEN
RichtungLinks:=True;
Impuls:=False;
TimerRichtung3.In:=FALSE;
Timer2.In:=False;
Schritt:=Schieben;
ELSIF zaehler>4 THEN
Impuls:=False;
Schritt:=Schieben;
END_IF
ELSIF Timer2.Q AND NOT TimerRichtung3.IN THEN
Timer2.IN:=False;
Schritt:=Start;
END_IF
Schieben:
IF Timer3.Q THEN
Timer3.IN:=False;
IF Zaehler<10 THEN
Zaehler:=Zaehler+1;
ELSE
Zaehler:=0;
END_IF
Schritt:=Start;
END_IF
END_CASE
Timer1(IN:=Schritt=SuchenLinks, PT:=T#2S);
Timer2(IN:=Schritt=SuchenRechts, PT:=T#3S);
Timer3(IN:=Schritt=Schieben, PT:=T#5S);
Timer0(IN:=Schritt=Start, PT:=T#3S);