-> Hier kostenlos registrieren
Hallo zusammen,
Ich arbeite zur Zeit an meiner Abschlussprojektarbeit für meinen Techniker (Computer und Netzwerktechnik).
Im Zuge dieses Projekts möchte ich eine Steuerung mit TwinCat und einem Beckhoff-Buskoppler realisieren.
Dazu versuche ich mich nun etwas in Structured Text und TwinCat einzuarbeiten. Leider bin ich bereit auf meine erstes Problem gestoßen, das wahrscheinlich so banal ist, dass mich jetzt die meisten schon auslachen werden^^
Ich wollte einen einfachen Timer programmieren, leider funktioniert dieser nicht wie geplant und ich komme einfach nicht auf meinen Fehler.
VAR_INPUT
ZEIT:TIME;
END_VAR
VAR_OUTPUT
OK:BOOL:=FALSE ;
END_VAR
VAR
TIMER:TP;
END_VAR
---------------------------------------
IF TIMER.Q THEN
TIMER.IN:=FALSE;
ELSE
TIMER(IN:=TRUE , PT:=ZEIT);
END_IF
Für den Timer benutze ich einen Pulsgeber (PT) dieser sollte lauf Hilfe folgendermassen funktionieren:
Wenn IN FALSE ist, sind die Ausgaben FALSE bzw. 0.
Sobald IN TRUE ist, wird auch Q TRUE und bleibt TRUE für die Impulsdauer PT.
Solange Q TRUE ist, wird in ET die Zeit in Millisekunden hochgezählt, bis der Wert gleich dem in PT ist, dann bleibt er gleich.
Der Ausgang Q bleibt TRUE bis die Impulszeit verstrichen ist unabhängig von dem Zustand des Eingangs IN.
Sollte der Timer bereits laufen soll IN wieder auf FALSE gesetzt werden
Läuft er noch nicht wird er mit der Dauer ZEIT gestartet.
Soweit funktioniert das eigentlich auch. Aber die Zeit zählt einfach nicht weiter... Klar ich nehme den Eingang wieder weg aber wenn ich die Beschreibung richtig verstanden habe soll der PT, wenn er erst einmal gestartet wurde unabhängig von IN weiterlaufen. Wo ist hier mein Denkfehler? Das kann doch nur eine dumme Kleinigkeit sein???
Vielen Dank schon einmal
mit freundlichen Grüßen
Eike
Ich arbeite zur Zeit an meiner Abschlussprojektarbeit für meinen Techniker (Computer und Netzwerktechnik).
Im Zuge dieses Projekts möchte ich eine Steuerung mit TwinCat und einem Beckhoff-Buskoppler realisieren.
Dazu versuche ich mich nun etwas in Structured Text und TwinCat einzuarbeiten. Leider bin ich bereit auf meine erstes Problem gestoßen, das wahrscheinlich so banal ist, dass mich jetzt die meisten schon auslachen werden^^
Ich wollte einen einfachen Timer programmieren, leider funktioniert dieser nicht wie geplant und ich komme einfach nicht auf meinen Fehler.
VAR_INPUT
ZEIT:TIME;
END_VAR
VAR_OUTPUT
OK:BOOL:=FALSE ;
END_VAR
VAR
TIMER:TP;
END_VAR
---------------------------------------
IF TIMER.Q THEN
TIMER.IN:=FALSE;
ELSE
TIMER(IN:=TRUE , PT:=ZEIT);
END_IF
Für den Timer benutze ich einen Pulsgeber (PT) dieser sollte lauf Hilfe folgendermassen funktionieren:
Wenn IN FALSE ist, sind die Ausgaben FALSE bzw. 0.
Sobald IN TRUE ist, wird auch Q TRUE und bleibt TRUE für die Impulsdauer PT.
Solange Q TRUE ist, wird in ET die Zeit in Millisekunden hochgezählt, bis der Wert gleich dem in PT ist, dann bleibt er gleich.
Der Ausgang Q bleibt TRUE bis die Impulszeit verstrichen ist unabhängig von dem Zustand des Eingangs IN.
Sollte der Timer bereits laufen soll IN wieder auf FALSE gesetzt werden
Läuft er noch nicht wird er mit der Dauer ZEIT gestartet.
Soweit funktioniert das eigentlich auch. Aber die Zeit zählt einfach nicht weiter... Klar ich nehme den Eingang wieder weg aber wenn ich die Beschreibung richtig verstanden habe soll der PT, wenn er erst einmal gestartet wurde unabhängig von IN weiterlaufen. Wo ist hier mein Denkfehler? Das kann doch nur eine dumme Kleinigkeit sein???
Vielen Dank schon einmal
mit freundlichen Grüßen
Eike