# Wie verwendet man eine ganz normale Timerfunktion in Beckhoff ST?



## Jush (8 Dezember 2006)

Guten Tag,

ich habe gerade mit ST (Strukturierter Text) angefangen.
Wie mach man eine ganz normale Timerfunktion hier?:

Timer start.
nach 10 sekunden soll dann den Ausgang gesetzt werden.

Vielen Dank im Voraus!

MfG


----------



## zotos (8 Dezember 2006)

Such mal in der Hilfe nach "TON"
Da ist ein Beispiel auch in ST Dargestellt.


----------



## zotos (8 Dezember 2006)

Ohne Gewähr:

VAR 
TON_1: *TON*; 

___________________________________________________________


TON_1(IN := Eingang, PT := T#10000ms); (* Einschaltverzögeung 10s*)

Ausgang := TON_1.Q; (* Dem Ausgang zuweisen *)


----------



## Jush (11 Dezember 2006)

Das funktioniert, steht allerdings nicht in meinem Hilfemenu.

Ich hate folgendes versucht, aber das ging nicht:

TON_1.PV := T#10s;
TON_1.IN := Eingang;

Danke für die Hilfe!

P.s.:
findet Ihr auch, dass die Beckhoff Hilfedatei ganz schlecht ist?


----------



## M_o_t (11 Dezember 2006)

Hallo,

ich kenn zwar nur Wago aber da ist über rechten Mausklick fast alles zu finden, z.B in deinem Fall die Eingabehilfe. Dann wird's schon ganz einfach.

Gruß
Silke


----------



## ge_org (11 Dezember 2006)

hallo,
deine 2 Zeilen hätten meines Erachtens auch funktioniert wenn Du vor dem In und PV Parametern den Baustein aufgerufen hättest:

ton_1();
dann deine 2 Zeilen (PV und in);

gruß
georg


----------



## trinitaucher (12 Dezember 2006)

> P.s.:
> findet Ihr auch, dass die Beckhoff Hilfedatei ganz schlecht ist?


Kommt drauf an,welche Version man hat und wie intensiv man sucht 
Ich hab die neueste Version des "Beckhoff Information System" (2.0) und nach der Eingabe von "TON" wird sofort die Beschreibung des Bausteins aufgerufen. Dann muss man natürlich noch wissen, wie man generell Funktionsbausteine aufruft. Aber das sollte für SPS-Programmierer Voraussetzung sein.

Aber ich stimme zu,die orignial CoDeSys Hilfe ist besonders für nicht ganz so gut geschultes Personal teilweise leichter zu verstehen, bzw. es gibt dort mehr Beispiele.

MfG
der trinitaucher


----------



## Cerberus (30 August 2007)

*Ultimative Lösung!!*

Also jetzt einmal eine funktionierende Lösung in ST:

Variablendeklarierung:

VAR
     fbTimer: TON;
     iSchritt: INT := 1;
     Ausgang: BOOL := FALSE;
END_VAR

Programm:

CASE iSchritt OF
     10:
          fbTimer(IN:= TRUE, PT:= T#10s, Q=> , ET=> );  (*Timer starten*)
          iSchritt := 11;
     11:
          fbTimer(IN:= TRUE);
          IF fbTimer.Q THEN             (*Warten bis Timer abgelaufen*)
               fbTimer(IN:= FALSE);    (*Timer rücksetzen*)
               Ausgang := TRUE;
          END_IF
END_CASE


----------



## zotos (30 August 2007)

Cerberus schrieb:


> Also jetzt einmal eine funktionierende Lösung in ST:
> ...



Was schreibst Du für einen Müll?


----------



## drfunfrock (3 September 2007)

Der TOn ist nun wirkilich einfach zu benutzen:

Nach der Deklaration erfolgt die Initialisierung. In der Regel stelle ich den Initialisierungsteil an den Anfang eines Blocks, um die Übersicht zu behalten. Bedingte Ausführungen sind nicht nötig. Hier 2 Beispiele

1) ------------------------
timer : TON;

(* Initialisierung *)
timer(PT:=t#100ms);

(* Benutzen *)

timer.IN := not timer.Q;
IF timer.Q THEN
 ...
END_IF;
------------------------


2) ------------------------
timer : TON;

(* Initialisierung *)
timer(PT:=t#100ms, IN := sensor1 AND sensor2);

(* Benutzen *)
IF timer.Q THEN
 ...
END_IF;
------------------------


----------

