BaseSystemLib hinzugefügt
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
FUNCTION_BLOCK "FB_Blinker"
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
VAR_INPUT
|
||||
tInPeriodicTime : Time := T#500ms; // Eingestellte Zeit, entspricht 1/2*Clock
|
||||
xInActivate : Bool; // true = Dauerblinken, false = Zeit pausieren
|
||||
END_VAR
|
||||
|
||||
VAR_OUTPUT
|
||||
xOutput : Bool; // eingestellte Zeit true, eingestellte Zeit false usw.
|
||||
xOutFlag : Bool; // Flanke von xOutput
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
rTrigSignal {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG;
|
||||
xSync : Bool;
|
||||
timerTON {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME;
|
||||
END_VAR
|
||||
VAR RETAIN
|
||||
timerTONR {InstructionName := 'TONR_TIME'; LibVersion := '1.0'} : TONR_TIME;
|
||||
END_VAR
|
||||
VAR
|
||||
tTONTime : Time; // Verarbeitete Zeit
|
||||
END_VAR
|
||||
VAR RETAIN
|
||||
xTONStart : Bool; // IN-Signal für Timer
|
||||
xSignal : Bool; // Merker für Ausgangszustand
|
||||
END_VAR
|
||||
|
||||
VAR_TEMP
|
||||
xReset : Bool; // Bit um im Takt den Timer zu reseten
|
||||
END_VAR
|
||||
|
||||
|
||||
BEGIN
|
||||
#xSignal := #xOutput;
|
||||
|
||||
REGION Cycle
|
||||
IF #tInPeriodicTime = T#0s THEN
|
||||
#tTONTime := T#500ms;//Defaultwert
|
||||
ELSE
|
||||
#tTONTime := #tInPeriodicTime;//Zeit durch Eingabe
|
||||
END_IF;
|
||||
|
||||
IF #timerTONR.Q THEN //wenn Timer abgelaufen.....
|
||||
IF #xSignal THEN //aktueller Zustand wird gewechselt
|
||||
#xSignal := 0;
|
||||
ELSE //aktueller Zustand wird gewechselt
|
||||
#xSignal := 1;
|
||||
END_IF;
|
||||
#xTONStart := 0; //...dann nimm Eingangssignal weg...
|
||||
#xReset := TRUE; //...und rücksetze Timer
|
||||
ELSE
|
||||
#xTONStart := 1;
|
||||
END_IF;
|
||||
|
||||
IF #xSync (*OR (#TimerTONTime <> #TimerTON.PT) *) THEN
|
||||
#xSync := 0;
|
||||
#xTONStart := 0;
|
||||
#xSignal := 0;
|
||||
END_IF;
|
||||
END_REGION
|
||||
|
||||
#rTrigSignal(CLK:=#xSignal);
|
||||
|
||||
REGION Outputs
|
||||
#xOutput := #xSignal;
|
||||
#xOutFlag := #rTrigSignal.Q;
|
||||
END_REGION
|
||||
|
||||
REGION Timer
|
||||
// #TimerTON(IN := #xTimerTONStart,
|
||||
// PT := #TimerTONTime);
|
||||
#timerTONR(IN:=NOT #xReset AND #xTONStart AND #xInActivate,
|
||||
R:=#xReset,
|
||||
PT:=#tTONTime);
|
||||
END_REGION
|
||||
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
Reference in New Issue
Block a user