Hallo Leute,
hier ein Beispiel für einen FB Stern-Dreieck-Anlauf.
FUNCTION_BLOCK YD_Anlauf
(*
##############################################################
Programmbeschreibung:
Stern-Dreieck-Anlauf mit folgendem Ablauf:
Sternschütz lastfrei einschalten,
50ms nach Sternschütz das Hauptschütz einschalten,
50ms vor Timerablauf Sternschütz aus,
mit Ablauf Timer das Dreieckschütz einschalten
Wenn eine Zeit unter 300ms vorgegeben wird, wird nicht gestartet und Fehler
ausgegeben weil Schütze Zeit brauchen zum sicheren schalten
##############################################################
Änderungsindex
Name:TL Version:0.1 Datum: 06.05.2014 Grund: neu, Test OK
##############################################################
*)
VAR_INPUT
ON: BOOL; (*Schalteingang*)
Zeit: TIME := t#2s; (*Anlaufzeit (min 300ms!)*)
END_VAR
VAR_OUTPUT
H: BOOL; (*Hauptschütz*)
Y: BOOL; (*Sternschütz*)
D: BOOL; (*Dreieckschütz*)
Err: BOOL; (*Zeitfehler*)
END_VAR
VAR
Anlauf: TON; (*Anlauftimer*)
END_VAR
###################################################
(*Zeit auf min 300ms setzen wenn kleiner*)
IF Zeit < t#300ms THEN
Zeit :=t#300ms;
Err:= TRUE;
ELSE
Err:= FALSE;
END_IF
(*Anlauftimer*)
Anlauf(IN:= ON AND NOT Err , PT:= Zeit, Q=> , ET=> );
(*Sternschütz bis 50ms vor Umschaltung einschalten*)
Y:= ON AND (Anlauf.ET < (Zeit - t#50ms) ) AND NOT (D OR Anlauf.Q);
(*Hauptschütz 50ms nach Y einschalten*)
H:= ON AND Anlauf.ET > t#50ms;
(*Dreieckschütz *)
D:= ON AND H AND Anlauf.Q AND NOT Y;
Gruß Thomas