ILSLib hinzugefügt
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
LibraryType:
|
||||
Guid: 7d35be77-2a72-4530-b111-2a609340cc24
|
||||
Comment:
|
||||
de-DE: Initial
|
||||
LibraryVersion:
|
||||
VersionNumber: 2.0.0
|
||||
Author: e.yueksel
|
||||
IsDefault: true
|
||||
Comment:
|
||||
de-DE: Initial
|
||||
@@ -0,0 +1,9 @@
|
||||
DocumentHash:
|
||||
- FileName: FB_CarrAccumulate1Sep.scl
|
||||
Hash: N6cbGozMRL5O0uRLedHuJdl8V+0Q+CiRYK3PiQpUby0=
|
||||
LibraryMetaFileHash: L9r6Lmj4aURbtB++qYCQX/yQy2f8AdK1Wg/TnpZuXKU=
|
||||
LibraryVersion:
|
||||
Guid: 2ad8b4f4-249f-4013-ac79-66401f0d4420
|
||||
DependsOn:
|
||||
- TypeName: UDT_Sensor
|
||||
VersionNumber: 2.0.0
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
LibraryType:
|
||||
Guid: 9efcce89-7b06-4891-9641-6b68006aed8c
|
||||
LibraryVersion:
|
||||
VersionNumber: 2.0.0
|
||||
Author: e.yueksel
|
||||
IsDefault: true
|
||||
@@ -0,0 +1,13 @@
|
||||
DocumentHash:
|
||||
- FileName: FB_PriorityManager.scl
|
||||
Hash: NzWfLNwbHCgIQ09FjswCJqLBoUjRikdGfu39QrN0RqE=
|
||||
LibraryMetaFileHash: kqGkOm3+D2226hP+I8rIYA7hPZUG3JNIJHrkpd/7btg=
|
||||
LibraryVersion:
|
||||
Guid: d2f29772-001f-478c-97e1-1fcccbe27ee7
|
||||
DependsOn:
|
||||
- TypeName: UDT_Request
|
||||
VersionNumber: 2.0.0
|
||||
- TypeName: UDT_Response
|
||||
VersionNumber: 2.0.0
|
||||
- TypeName: UDT_PrioParameter
|
||||
VersionNumber: 2.0.0
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,6 @@
|
||||
LibraryType:
|
||||
Guid: 147eef49-040b-42d5-ae7d-43bf675e04d5
|
||||
LibraryVersion:
|
||||
VersionNumber: 2.0.0
|
||||
Author: e.yueksel
|
||||
IsDefault: true
|
||||
@@ -0,0 +1,11 @@
|
||||
DocumentHash:
|
||||
- FileName: FB_SepPrio.scl
|
||||
Hash: TiobJ+rsdBzTeu+UkBCNDx/iaFdgdPd64yzefoiS5DY=
|
||||
LibraryMetaFileHash: /SJOtlF6TYllHtWLntRFYmq6E9lvJkhN6tgxX7jkSrQ=
|
||||
LibraryVersion:
|
||||
Guid: e2fffa67-74ab-4d49-9905-ebe62964e7d5
|
||||
DependsOn:
|
||||
- TypeName: FB_StateManager
|
||||
VersionNumber: 2.0.0
|
||||
- TypeName: stJamData
|
||||
VersionNumber: 2.0.0
|
||||
@@ -0,0 +1,304 @@
|
||||
FUNCTION_BLOCK "FB_SepPrio"
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
VAR_INPUT
|
||||
xInSepReq1 : Bool; // Anforderung von Sep1
|
||||
xInSepReq2 : Bool; // Anforderung von Sep2
|
||||
xInSepReq3 : Bool; // Anforderung von Sep3
|
||||
xInSepRelease1 : Bool; // Sep 1 hat rausgelassen
|
||||
xInSepRelease2 : Bool; // Sep 2 hat rausgelassen
|
||||
xInSepRelease3 : Bool; // Sep 3 hat rausgelassen
|
||||
xInActive : Bool; // Freigabe grundsätzlich für Separatoren
|
||||
xInCarRun : Bool; // NIU Motor läuft
|
||||
tInTime3 : Time; // Zeit die Sep 3 braucht
|
||||
tInTime2 : Time; // Zeit die Sep 2 braucht
|
||||
END_VAR
|
||||
|
||||
VAR_OUTPUT
|
||||
xOutSepGo1 : Bool; // Freigabe für einzelnen Sep 1
|
||||
xOutSepGo2 : Bool; // Freigabe für einzelnen Sep 2
|
||||
xOutSepGo3 : Bool; // Freigabe für einzelnen Sep 3
|
||||
END_VAR
|
||||
|
||||
VAR_IN_OUT
|
||||
InOutJam : "stJamData";
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
fbStateManager : "FB_StateManager";
|
||||
nState : Int; // Schritt
|
||||
tTime3 {InstructionName := 'TOF_TIME'; LibVersion := '1.0'} : TOF_TIME; // Timer von Sep 3
|
||||
tTime2 {InstructionName := 'TOF_TIME'; LibVersion := '1.0'} : TOF_TIME; // Timer von Sep 2
|
||||
tTime1 {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME;
|
||||
rTrigNotActive {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG;
|
||||
rTrig2 {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG;
|
||||
fTrig3 {InstructionName := 'F_TRIG'; LibVersion := '1.0'} : F_TRIG;
|
||||
fTrig2 {InstructionName := 'F_TRIG'; LibVersion := '1.0'} : F_TRIG;
|
||||
xTimeBit3 : Bool; // Merker für Timer falls unterbrochen wird
|
||||
xTimeBit2 : Bool; // Merker für Timer falls unterbrochen wird
|
||||
END_VAR
|
||||
|
||||
VAR_TEMP
|
||||
tmpActUnivTon : Bool;
|
||||
END_VAR
|
||||
|
||||
VAR CONSTANT
|
||||
cOff : Int := 0;
|
||||
cWaitAll : Int := 1;
|
||||
cWaitFor3 : Int := 30;
|
||||
cWaitFor2 : Int := 20;
|
||||
cOnlySep1 : Int := 10;
|
||||
END_VAR
|
||||
|
||||
|
||||
BEGIN
|
||||
(*
|
||||
_______________________<==
|
||||
| | |
|
||||
| | |
|
||||
\ \ \
|
||||
\ \ \
|
||||
______3______2______1_____==>
|
||||
|
||||
3 hat vor 2 und 1 Vorfahrt
|
||||
2 hat vor 1 Vorfahrt aber muss Zeit 3 abwarten
|
||||
1 muss Zeit 3 und 2 abwarten
|
||||
|
||||
*)
|
||||
|
||||
|
||||
REGION Schrittkette
|
||||
CASE #nState OF
|
||||
#cOff:
|
||||
REGION 000: Off
|
||||
#xOutSepGo3 := FALSE;
|
||||
#xOutSepGo2 := FALSE;
|
||||
#xOutSepGo1 := FALSE;
|
||||
|
||||
// IF #xInActive THEN
|
||||
#nState := #cWaitAll;
|
||||
// END_IF;
|
||||
END_REGION
|
||||
#cWaitAll:
|
||||
REGION 001: Wait All
|
||||
#xOutSepGo3 := FALSE;
|
||||
#xOutSepGo2 := FALSE;
|
||||
#xOutSepGo1 := FALSE;
|
||||
//***************NEU***********
|
||||
#nState := 005;
|
||||
//*************NEU ENDE*******
|
||||
|
||||
|
||||
(*IF NOT #xInActive THEN
|
||||
#nState := #cOff;*)
|
||||
// //********************Kombinationen mit Sep3*************************************************
|
||||
// IF #xInSepReq3 AND #xInSepReq2 AND #xInSepReq1 THEN
|
||||
// #xOutSepGo3 := TRUE;
|
||||
// #xOutSepGo2 := false;//TRUE;
|
||||
// #xOutSepGo1 := false;//TRUE;
|
||||
// #nState := #cWaitFor3;
|
||||
// ELSIF #xInSepReq3 AND (#xInSepReq2 OR NOT #xInSepReq1) THEN
|
||||
// #xOutSepGo3 := TRUE;
|
||||
// #xOutSepGo2 := false;//TRUE;
|
||||
// #xOutSepGo1 := FALSE;
|
||||
// #nState := #cWaitFor3;
|
||||
// ELSIF #xInSepReq3 AND (NOT #xInSepReq2 OR #xInSepReq1) THEN
|
||||
// #xOutSepGo3 := TRUE;
|
||||
// #xOutSepGo2 := FALSE;
|
||||
// #xOutSepGo1 := false;//TRUE;
|
||||
// #nState := #cWaitFor3;
|
||||
// ELSIF #xInSepReq3 AND (NOT #xInSepReq2 AND NOT #xInSepReq1) THEN
|
||||
// #xOutSepGo3 := TRUE;
|
||||
// #xOutSepGo2 := FALSE;
|
||||
// #xOutSepGo1 := FALSE;
|
||||
// #nState := #cWaitFor3;
|
||||
// //********************Kombinationen ohne Sep3************************************************
|
||||
// ELSIF NOT #xInSepReq3 AND (#xInSepReq2 AND #xInSepReq1) THEN
|
||||
// #xOutSepGo3 := FALSE;
|
||||
// #xOutSepGo2 := TRUE;
|
||||
// #xOutSepGo1 := false;//TRUE;
|
||||
// #nState := #cWaitFor2;
|
||||
// ELSIF NOT #xInSepReq3 AND (#xInSepReq2 AND NOT #xInSepReq1) THEN
|
||||
// #xOutSepGo3 := FALSE;
|
||||
// #xOutSepGo2 := TRUE;
|
||||
// #xOutSepGo1 := FALSE;
|
||||
// #nState := #cWaitFor2;
|
||||
// //********************Nur Sep1 alleine***************************************************
|
||||
// ELSIF NOT #xInSepReq3 AND (NOT #xInSepReq2 AND #xInSepReq1) THEN
|
||||
// #xOutSepGo3 := FALSE;
|
||||
// #xOutSepGo2 := FALSE;
|
||||
// #xOutSepGo1 := TRUE;
|
||||
// #nState := #cOnlySep1;
|
||||
// END_IF;
|
||||
END_REGION
|
||||
005:
|
||||
REGION 005: NEU Zwischenschritt
|
||||
#xOutSepGo3 := FALSE;
|
||||
#xOutSepGo2 := FALSE;
|
||||
#xOutSepGo1 := FALSE;
|
||||
|
||||
IF #fbStateManager.tOutTimeInStep > T#6s THEN
|
||||
IF #xInSepReq1 THEN
|
||||
#nState := 006; // Embi
|
||||
// #nState := 010;
|
||||
ELSIF #xInSepReq2 THEN
|
||||
#nState := 16; // Embi
|
||||
// #nState := 020;
|
||||
// ELSIF #xInSepReq3 THEN
|
||||
// #nState := 26; // Embi
|
||||
// #nState := 030;
|
||||
END_IF;
|
||||
END_IF;
|
||||
END_REGION
|
||||
|
||||
006:
|
||||
REGION 006: Warten auf freie Ausfahrt
|
||||
#xOutSepGo3 := FALSE;
|
||||
#xOutSepGo2 := FALSE;
|
||||
#xOutSepGo1 := FALSE;
|
||||
IF #InOutJam.Status.nCount = 0 OR #fbStateManager.tOutTimeInStep > T#24s THEN
|
||||
#nState := #cOnlySep1;
|
||||
END_IF;
|
||||
END_REGION
|
||||
#cOnlySep1:
|
||||
REGION 010: Only Sep 1
|
||||
#xOutSepGo3 := FALSE;
|
||||
#xOutSepGo2 := FALSE;
|
||||
#xOutSepGo1 := TRUE;
|
||||
|
||||
//***************NEU***********
|
||||
IF #fbStateManager.tOutTimeInStep > T#10s THEN
|
||||
#nState := 015;
|
||||
END_IF;
|
||||
//*************NEU ENDE*******
|
||||
|
||||
// IF (#xInSepReq2 OR #xInSepReq3) AND #tTime1.Q THEN //Wird sofort von 2 oder 3 unterbrochen
|
||||
// #xOutSepGo3 := FALSE;
|
||||
// #xOutSepGo2 := FALSE;
|
||||
// #xOutSepGo1 := FALSE;
|
||||
// #nState := #cWaitAll;
|
||||
// END_IF;
|
||||
END_REGION
|
||||
015:
|
||||
REGION 015: NEU Zwischenschritt
|
||||
#xOutSepGo3 := FALSE;
|
||||
#xOutSepGo2 := FALSE;
|
||||
#xOutSepGo1 := FALSE;
|
||||
|
||||
IF #fbStateManager.tOutTimeInStep > T#4s THEN
|
||||
IF #xInSepReq2 THEN
|
||||
#nState := 16; // Embi
|
||||
// #nState := 020;
|
||||
// ELSIF #xInSepReq3 THEN
|
||||
// #nState := 26; // Embi
|
||||
// #nState := 030;
|
||||
ELSIF #xInSepReq1 THEN
|
||||
#nState := 6; // Embi
|
||||
// #nState := 010;
|
||||
END_IF;
|
||||
END_IF;
|
||||
END_REGION
|
||||
|
||||
016:
|
||||
REGION 16: Warten auf freie Ausfahrt
|
||||
#xOutSepGo3 := FALSE;
|
||||
#xOutSepGo2 := FALSE;
|
||||
#xOutSepGo1 := FALSE;
|
||||
IF #InOutJam.Status.nCount = 0 OR #fbStateManager.tOutTimeInStep > T#26s THEN
|
||||
#nState := #cWaitFor2;
|
||||
END_IF;
|
||||
END_REGION
|
||||
|
||||
#cWaitFor2:
|
||||
REGION 020: Wait for 2
|
||||
#xOutSepGo3 := FALSE;
|
||||
#xOutSepGo2 := TRUE;
|
||||
#xOutSepGo1 := FALSE;
|
||||
|
||||
//***************NEU***********
|
||||
IF #fbStateManager.tOutTimeInStep > T#11s THEN
|
||||
// #nState := 025;
|
||||
#nState := 5;
|
||||
END_IF;
|
||||
//*************NEU ENDE*******
|
||||
|
||||
(*IF NOT #xInActive THEN
|
||||
#nState := #cOff;*)
|
||||
// IF #fTrig2.Q THEN //Bis Sep 2 fertig....
|
||||
// #xOutSepGo3 := FALSE;
|
||||
// #xOutSepGo2 := FALSE;
|
||||
// #xOutSepGo1 := FALSE;
|
||||
// #nState := #cWaitAll;
|
||||
// ELSIF #xInSepReq3 THEN //...oder sofort durch Sep 3 unterbrochen
|
||||
// #xOutSepGo3 := TRUE;
|
||||
// #xOutSepGo2 := FALSE;
|
||||
// #xOutSepGo1 := FALSE;
|
||||
// #nState := #cWaitFor3;
|
||||
// END_IF;
|
||||
END_REGION
|
||||
025:
|
||||
REGION 025: NEU Zwischenschritt
|
||||
#xOutSepGo3 := FALSE;
|
||||
#xOutSepGo2 := FALSE;
|
||||
#xOutSepGo1 := FALSE;
|
||||
|
||||
IF #fbStateManager.tOutTimeInStep > T#5s THEN
|
||||
IF #xInSepReq3 THEN
|
||||
#nState := 26; // Embi
|
||||
// #nState := 030;
|
||||
ELSIF #xInSepReq1 THEN
|
||||
#nState := 6; // Embi
|
||||
// #nState := 010;
|
||||
ELSIF #xInSepReq2 THEN
|
||||
#nState := 16; // Embi
|
||||
// #nState := 020;
|
||||
END_IF;
|
||||
END_IF;
|
||||
END_REGION
|
||||
|
||||
026:
|
||||
REGION 26: Warten auf freie Ausfahrt
|
||||
#xOutSepGo3 := FALSE;
|
||||
#xOutSepGo2 := FALSE;
|
||||
#xOutSepGo1 := FALSE;
|
||||
IF #InOutJam.Status.nCount = 0 OR #fbStateManager.tOutTimeInStep > T#25s THEN
|
||||
#nState := #cWaitFor3;
|
||||
END_IF;
|
||||
END_REGION
|
||||
|
||||
#cWaitFor3:
|
||||
REGION 030: Wait for 3
|
||||
#xOutSepGo3 := TRUE;
|
||||
#xOutSepGo2 := FALSE;
|
||||
#xOutSepGo1 := FALSE;
|
||||
|
||||
//***************NEU***********
|
||||
IF #fbStateManager.tOutTimeInStep > T#11s THEN //war 8s
|
||||
#nState := 005;
|
||||
END_IF;
|
||||
//*************NEU ENDE*******
|
||||
|
||||
(*IF NOT #xInActive THEN
|
||||
#nState := #cOff;*)
|
||||
// IF #fTrig3.Q THEN //Bis Sep 3 fertig ist
|
||||
// #xOutSepGo3 := FALSE;
|
||||
// #xOutSepGo2 := FALSE;
|
||||
// #xOutSepGo1 := FALSE;
|
||||
// #nState := #cWaitAll;
|
||||
// END_IF;
|
||||
END_REGION
|
||||
ELSE
|
||||
;
|
||||
END_CASE;
|
||||
END_REGION
|
||||
|
||||
REGION State Manager
|
||||
#fbStateManager.stInSettings.nStartState := 0;
|
||||
#fbStateManager.stInSettings.xActUnivTOn := TRUE;
|
||||
#fbStateManager.stInSettings.xRestartAtStartState := FALSE;
|
||||
#fbStateManager(xInFunctionEnabled:=TRUE,
|
||||
xInRunUnivTOn:=#tmpActUnivTon,
|
||||
nInOutState:=#nState);
|
||||
END_REGION
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
LibraryType:
|
||||
Guid: b2b7bae2-df01-45c1-b728-4f21f6dccf2b
|
||||
Comment:
|
||||
de-DE: Initial
|
||||
LibraryVersion:
|
||||
VersionNumber: 2.0.2
|
||||
Author: e.yueksel
|
||||
IsDefault: true
|
||||
@@ -0,0 +1,9 @@
|
||||
DocumentHash:
|
||||
- FileName: FB_SupervisionRasterSensor.scl
|
||||
Hash: brsi2hAS6wrw9/jmi3v1V82anQUbZwQLOrO9MMcjTSE=
|
||||
LibraryMetaFileHash: rP2CWmPh58VX2bM7MLVbOLWLkCnAMh6UXNcah+oCJ6c=
|
||||
LibraryVersion:
|
||||
Guid: 3b4a840b-d014-4f13-8b4b-a11a10747b6c
|
||||
DependsOn:
|
||||
- TypeName: UDT_Sensor
|
||||
VersionNumber: 2.0.0
|
||||
@@ -0,0 +1,74 @@
|
||||
FUNCTION_BLOCK "FB_SupervisionRasterSensor"
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
VAR_INPUT
|
||||
stInSenRaster : "UDT_Sensor"; // Das Signal das überwacht wird
|
||||
xInMotorRun : Bool; // Motor dreht sich
|
||||
stInSettings : Struct // Einstellungen
|
||||
xInEnableSupervision : Bool := false; // Überwachung aktiviert
|
||||
tInDelayMotorRun : Time := T#200ms; // Motor Delay
|
||||
tInRasterHigh : Time := T#100ms; // High Signal
|
||||
tInRasterLow : Time := T#100ms; // Low Signal
|
||||
sInConveyorName : String;
|
||||
wInTextListFunctionId : Word;
|
||||
wInTextListMessageId : Word;
|
||||
END_STRUCT;
|
||||
xInErrorQuit : Bool; // Quittieren z.B. Button Reset
|
||||
END_VAR
|
||||
|
||||
VAR_OUTPUT
|
||||
xOutErrorRasterSensor : Bool; // Fehler ausgeben
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
tOn_RasterHigh {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Überwachungszeit High-Signal
|
||||
tOn_RasterLow {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Überwachungszeit Low-Signal
|
||||
tOnMotorRunningDelay {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Motor Delay Timer
|
||||
xErrorRasterSensor : Bool; // Fehler
|
||||
END_VAR
|
||||
|
||||
|
||||
BEGIN
|
||||
REGION Überwachung Raster Sensor
|
||||
|
||||
#tOnMotorRunningDelay(IN := #xInMotorRun, // CarouselRun muss delayed benutzt werden, wegen Anfahrzeit vom ETF
|
||||
PT := #stInSettings.tInDelayMotorRun);
|
||||
|
||||
#tOn_RasterHigh(IN := #xInMotorRun AND #tOnMotorRunningDelay.Q AND #stInSenRaster.xDirectSensor,
|
||||
PT := #stInSettings.tInRasterHigh);
|
||||
|
||||
#tOn_RasterLow(IN := #xInMotorRun AND #tOnMotorRunningDelay.Q AND NOT #stInSenRaster.xDirectSensor,
|
||||
PT := #stInSettings.tInRasterLow);
|
||||
|
||||
IF #tOn_RasterHigh.Q OR #tOn_RasterLow.Q THEN // Wenn einer der beiden Timer abläuft, dann Fehler!
|
||||
#xErrorRasterSensor := TRUE;
|
||||
END_IF;
|
||||
END_REGION
|
||||
|
||||
REGION Quittieren
|
||||
IF #xErrorRasterSensor AND #stInSettings.xInEnableSupervision AND #xInErrorQuit THEN
|
||||
#xErrorRasterSensor := FALSE;
|
||||
END_IF;
|
||||
END_REGION
|
||||
|
||||
REGION Ausgänge
|
||||
#xOutErrorRasterSensor := #xErrorRasterSensor AND #stInSettings.xInEnableSupervision; // Fehler ausgeben, wenn Überwachung aktiviert
|
||||
END_REGION
|
||||
|
||||
(* REGION Monitoring
|
||||
#fbMonitoring.stSettings.nErrorType := 1;
|
||||
#fbMonitoring.stSettings.xErrLedIfMachineIsOff := TRUE;
|
||||
#fbMonitoring.stSettings.xSelfQuit := TRUE;
|
||||
#fbMonitoring.stSettings.tDelay := T#1s;
|
||||
#fbMonitoring(sInFctnName := 'Rastersensorueberwachung',
|
||||
sInPrefix := #stInSettings.sInConveyorName,
|
||||
wInTextListId_Function := #stInSettings.wInTextListFunctionId,
|
||||
wInTextListId_Message := #stInSettings.wInTextListMessageId,
|
||||
sInSuffix := #stInSenRaster.sName,
|
||||
InOutMachineState := "DB_MachineGlobal".stStateMain,
|
||||
xInQuitError := "DB_MachineGlobal".stStateMain.xQuitError,
|
||||
xInSignal := NOT #xErrorRasterSensor,
|
||||
sInAlarmMessage := 'Rastersensorueberwachung ausgeloest');
|
||||
END_REGION *)
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
LibraryType:
|
||||
Guid: 2ed8a6f8-c110-4695-b999-af4dbf845bb4
|
||||
Comment:
|
||||
de-DE: Initial
|
||||
LibraryVersion:
|
||||
VersionNumber: 2.0.0
|
||||
Author: e.yueksel
|
||||
IsDefault: true
|
||||
Comment:
|
||||
de-DE: Initial
|
||||
@@ -0,0 +1,11 @@
|
||||
DocumentHash:
|
||||
- FileName: FB_VarioFingerMonitoring.scl
|
||||
Hash: hO+7ulxM45sR+Y0DWMaxvkMhvex1mfxH3l0j+rQL7S4=
|
||||
LibraryMetaFileHash: z1/42ZPNlHM3vfq0hKE+ij6RojciR6JTY4/0RBG4HBk=
|
||||
LibraryVersion:
|
||||
Guid: b65fb0a1-003f-4b71-8c59-64c01a419f06
|
||||
DependsOn:
|
||||
- TypeName: UDT_SettingsVarioFingerMonitoring
|
||||
VersionNumber: 2.0.0
|
||||
- TypeName: UDT_Sensor
|
||||
VersionNumber: 2.0.0
|
||||
@@ -0,0 +1,43 @@
|
||||
FUNCTION_BLOCK "FB_VarioFingerMonitoring"
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
VAR_INPUT
|
||||
stInSenFinger : "UDT_Sensor"; // Das zu überwachende Fingerabfrage-Signal
|
||||
xInMotorRun : Bool; // Vario an
|
||||
stInSettings : "UDT_SettingsVarioFingerMonitoring"; // Parameter Einstellungen
|
||||
END_VAR
|
||||
|
||||
VAR_OUTPUT
|
||||
xOutErrorSignal : Bool; // Fehler Ausgang
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
tOn_SignalHigh {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Einschaltverzögerung High Signal
|
||||
tOn_SignalLow {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Einschaltverzögerung Low Signal
|
||||
tOnMotorRunningDelay {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Einschaltverzögerung Vario an
|
||||
xErrorSignal : Bool; // Fehler
|
||||
END_VAR
|
||||
|
||||
|
||||
BEGIN
|
||||
REGION Überwachung Raster Sensor
|
||||
|
||||
#tOnMotorRunningDelay(IN := #xInMotorRun, // CarouselRun muss delayed benutzt werden, wegen Anfahrzeit vom ETF
|
||||
PT := #stInSettings.tDelayMotorRun);
|
||||
|
||||
#tOn_SignalHigh(IN := #xInMotorRun AND #tOnMotorRunningDelay.Q AND #stInSenFinger.xDirectSensor,
|
||||
PT := #stInSettings.tSignalHigh);
|
||||
|
||||
#tOn_SignalLow(IN := #xInMotorRun AND #tOnMotorRunningDelay.Q AND NOT #stInSenFinger.xDirectSensor,
|
||||
PT := #stInSettings.tSignalLow);
|
||||
|
||||
#xErrorSignal := #tOn_SignalHigh.Q OR #tOn_SignalLow.Q; // Wenn einer der beiden Timer abläuft, dann Fehler!
|
||||
END_REGION
|
||||
|
||||
REGION Ausgänge
|
||||
|
||||
#xOutErrorSignal := #xErrorSignal AND #stInSettings.xEnableSupervision; // Fehler ausgeben, wenn Überwachung aktiviert
|
||||
|
||||
END_REGION
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
LibraryType:
|
||||
Guid: a394caf2-9e35-454c-b109-30b66c22bddd
|
||||
LibraryVersion:
|
||||
VersionNumber: 0.0.7
|
||||
Author: e.yueksel
|
||||
IsDefault: true
|
||||
Comment:
|
||||
de-DE: Bugfix bei 3 Sources
|
||||
@@ -0,0 +1,15 @@
|
||||
DocumentHash:
|
||||
- FileName: Fb_PriorityManagerV2.scl
|
||||
Hash: wqqBp67364m0gt+16CtbP8q4g79tHCbzSx8tBn/Ivl4=
|
||||
LibraryMetaFileHash: 6XcCS8ObOmcFHFc3eoOsI0dRjol0UJSqGnS3J29XZwU=
|
||||
LibraryVersion:
|
||||
Guid: 9a9ac382-d0ec-462d-9753-478a90c82276
|
||||
DependsOn:
|
||||
- TypeName: UDT_Request
|
||||
VersionNumber: 2.0.0
|
||||
- TypeName: UDT_Response
|
||||
VersionNumber: 2.0.0
|
||||
- TypeName: UDT_PrioParameter
|
||||
VersionNumber: 2.0.0
|
||||
- TypeName: udt_InterruptParameter
|
||||
VersionNumber: 0.0.1
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,6 @@
|
||||
LibraryType:
|
||||
Guid: 97355db0-90c7-4394-9656-3acdfec45b04
|
||||
LibraryVersion:
|
||||
VersionNumber: 0.0.1
|
||||
Author: e.yueksel
|
||||
IsDefault: true
|
||||
@@ -0,0 +1,6 @@
|
||||
DocumentHash:
|
||||
- FileName: udt_InterruptParameter.xml
|
||||
Hash: /NW/PME3L1cRjrOlhQBiYc3MllTZmwH9rHeW0kDHx+8=
|
||||
LibraryMetaFileHash: JrEilA2LwOeiJO3O1jHkH6aZ5ts+YupQo1GyUy1aXTE=
|
||||
LibraryVersion:
|
||||
Guid: bd3b46ca-0cf0-47fc-9154-7e6e814179d1
|
||||
@@ -0,0 +1,64 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Document>
|
||||
<Engineering version="V20" />
|
||||
<SW.Types.PlcStruct ID="0">
|
||||
<AttributeList>
|
||||
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
|
||||
<Section Name="None">
|
||||
<Member Name="n_MainSource" Datatype="USInt" />
|
||||
<Member Name="n_InterruptSource" Datatype="USInt" />
|
||||
<Member Name="t_InterruptDuration" Datatype="Time" />
|
||||
<Member Name="t_PathClearDelay" Datatype="Time" />
|
||||
</Section>
|
||||
</Sections></Interface>
|
||||
<Name>udt_InterruptParameter</Name>
|
||||
<Namespace />
|
||||
</AttributeList>
|
||||
<ObjectList>
|
||||
<MultilingualText ID="1" CompositionName="Comment">
|
||||
<ObjectList>
|
||||
<MultilingualTextItem ID="2" CompositionName="Items">
|
||||
<AttributeList>
|
||||
<Culture>de-DE</Culture>
|
||||
<Text />
|
||||
</AttributeList>
|
||||
</MultilingualTextItem>
|
||||
<MultilingualTextItem ID="3" CompositionName="Items">
|
||||
<AttributeList>
|
||||
<Culture>en-US</Culture>
|
||||
<Text />
|
||||
</AttributeList>
|
||||
</MultilingualTextItem>
|
||||
<MultilingualTextItem ID="4" CompositionName="Items">
|
||||
<AttributeList>
|
||||
<Culture>cs-CZ</Culture>
|
||||
<Text />
|
||||
</AttributeList>
|
||||
</MultilingualTextItem>
|
||||
</ObjectList>
|
||||
</MultilingualText>
|
||||
<MultilingualText ID="5" CompositionName="Title">
|
||||
<ObjectList>
|
||||
<MultilingualTextItem ID="6" CompositionName="Items">
|
||||
<AttributeList>
|
||||
<Culture>de-DE</Culture>
|
||||
<Text />
|
||||
</AttributeList>
|
||||
</MultilingualTextItem>
|
||||
<MultilingualTextItem ID="7" CompositionName="Items">
|
||||
<AttributeList>
|
||||
<Culture>en-US</Culture>
|
||||
<Text />
|
||||
</AttributeList>
|
||||
</MultilingualTextItem>
|
||||
<MultilingualTextItem ID="8" CompositionName="Items">
|
||||
<AttributeList>
|
||||
<Culture>cs-CZ</Culture>
|
||||
<Text />
|
||||
</AttributeList>
|
||||
</MultilingualTextItem>
|
||||
</ObjectList>
|
||||
</MultilingualText>
|
||||
</ObjectList>
|
||||
</SW.Types.PlcStruct>
|
||||
</Document>
|
||||
Reference in New Issue
Block a user