ILSLib hinzugefügt
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
FUNCTION_BLOCK "FB_CarrAccumulate1Sep"
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
VAR_INPUT
|
||||
stInSensor1 : "UDT_Sensor"; // Sensor vom 1. Sep
|
||||
xInConvActive : Bool; // Conveyor Rückmeldung
|
||||
stInTimes : Struct
|
||||
tFreeSen1 : Time := T#5000ms; // Zeit welche Sep 1 frei ist
|
||||
tTimerWait : Time := T#10000ms; // Wartezeit
|
||||
END_STRUCT;
|
||||
END_VAR
|
||||
|
||||
VAR_OUTPUT
|
||||
xOutLockSep1 : Bool; // true = Sep 1 wird gesperrt
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
tOn1 {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Timer zählt wie lange Sep 1 warten muss
|
||||
xTimerQ : Bool; // Timerausgang
|
||||
xLockSep1 : Bool;
|
||||
END_VAR
|
||||
|
||||
|
||||
BEGIN
|
||||
(*
|
||||
<====== Fahrtrichtung <======
|
||||
... -------<----------|o|--------<------ ...
|
||||
Sep 1
|
||||
|
||||
Sep 1 lässt Carrier raus die sich angestaut haben, bis In-Sensor wieder mal eine gewisse Zeit frei ist.
|
||||
Dann beginnt Wartezeit wenn in diesem Zustand Sep 1 erstmals wieder ein In-Signal bekommt. Usw....
|
||||
|
||||
*)
|
||||
|
||||
IF NOT #stInSensor1.xDirectSensor AND #stInSensor1.tDirectChangeLast > #stInTimes.tFreeSen1 THEN
|
||||
#xLockSep1 := TRUE;
|
||||
ELSIF #xTimerQ THEN
|
||||
#xLockSep1 := FALSE;
|
||||
END_IF;
|
||||
|
||||
REGION Timer
|
||||
#tOn1(IN := #xLockSep1 AND #stInSensor1.xDirectSensor AND #xInConvActive, //Conveyoer Full Speed ok und Sep 1 wartet
|
||||
PT := #stInTimes.tTimerWait);
|
||||
|
||||
|
||||
#xTimerQ := #tOn1.Q (* OR (#stInSensor1.xDirectSensor AND #stInSensor1.tDirectChangeLast > #stInTimes.tFullSen1) *);
|
||||
END_REGION
|
||||
|
||||
|
||||
REGION Outputs
|
||||
#xOutLockSep1 := #xLockSep1;
|
||||
END_REGION
|
||||
|
||||
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
Reference in New Issue
Block a user