ILSLib hinzugefügt
This commit is contained in:
@@ -0,0 +1,140 @@
|
||||
FUNCTION "FC_Route" : Void
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
VAR_INPUT
|
||||
xInSingle : Bool; // true = einzelner Carrier wird losgeschickt, false = Array
|
||||
xInSeparate : Bool; // Carrier und Ladung trennen
|
||||
xInSepEdge : Bool; // Flanke vom Separator
|
||||
xInSensor : Bool; // Sensor Eingang falls dieser verwendet wird
|
||||
xInDelay : Bool; // true = Car werden auf den Weg geschickt bis Sensor kommt
|
||||
stInCarrier : "stCarrier"; // Einzelner Carrier für den Eingang
|
||||
END_VAR
|
||||
|
||||
VAR_OUTPUT
|
||||
stOutBookingInfo : "stEventBookingInfo"; // Infos für Logging
|
||||
END_VAR
|
||||
|
||||
VAR_IN_OUT
|
||||
arJamEntr : Array[*] of "stCarrier"; // Jam am Eingang (Platzhalter verwenden falls kein Jam vorhanden)
|
||||
arOnTheWay : Array[*] of "stCarrier"; // Carrier die für die Travel-Time unterwegs sind
|
||||
arJamExit : Array[*] of "stCarrier"; // Jam am Ausgang (Platzhalter verwenden falls kein Jam vorhanden)
|
||||
END_VAR
|
||||
|
||||
VAR_TEMP
|
||||
stCarrier : "stCarrier"; // Merker vom Eingang
|
||||
stLoadOnly : "stCarrier"; // Nur Ladung am Ende
|
||||
stCarrierOnly : "stCarrier";
|
||||
nCounter1 : DInt; // Temp für TSHR
|
||||
nCounter2 : DInt; // Temp für TSHR
|
||||
xResult1 : Bool; // Temp für TSHR
|
||||
xResult2 : Bool; // Temp für TSHR
|
||||
END_VAR
|
||||
|
||||
|
||||
BEGIN
|
||||
REGION Abfrage ob Singlecarrier oder Array
|
||||
IF #xInSingle THEN
|
||||
#stCarrier := #stInCarrier; //falls kein Array vorhanden, wird hier ein einzlener Carrier verwendet
|
||||
ELSE
|
||||
#stCarrier := #arJamEntr[1]; //erster Carrier des Eingangs-Staubereichs
|
||||
END_IF;
|
||||
END_REGION
|
||||
REGION Weiterbuchen
|
||||
IF NOT #xInDelay THEN //Shift zum Ziel-Bereich sofort
|
||||
IF #xInSepEdge AND NOT #xInSeparate THEN
|
||||
REGION Carrier normal weiterschieben
|
||||
"FC_TSHR_AddAtEnd"(stInTrolley := #stCarrier,
|
||||
nOutCounter => #nCounter1,
|
||||
xOutResult => #xResult1,
|
||||
arTSHR := #arJamExit);
|
||||
|
||||
"FC_TSHR_Shift"(xInShiftBack := TRUE,
|
||||
arTSHR := #arJamEntr);
|
||||
|
||||
REGION Event Log
|
||||
// Info rausgeben an Log-Baustein
|
||||
#stOutBookingInfo.sBarcode := DELETE(IN := DINT_TO_STRING(#stCarrier.nBarcode), L := 1, P := 1);
|
||||
#stOutBookingInfo.sDest := DELETE(IN := INT_TO_STRING(#stCarrier.nDestination), L := 1, P := 1);
|
||||
// #stOutBookingInfo.sJobNo := DELETE(IN := DINT_TO_STRING(#stCarrier.stLoadData.nJobNo), L := 1, P := 1);
|
||||
// #stOutBookingInfo.sProductNo := DELETE(IN := DINT_TO_STRING(#stCarrier.stLoadData.nProductNo), L := 1, P := 1);
|
||||
|
||||
END_REGION
|
||||
|
||||
|
||||
END_REGION
|
||||
ELSIF #xInSepEdge AND #xInSeparate THEN
|
||||
REGION Carrier/Ladung getrennt weiterschieben
|
||||
|
||||
#stCarrierOnly := #stCarrier;
|
||||
#stCarrierOnly.bStatus.%X1 := FALSE;
|
||||
#stLoadOnly := #stCarrier;
|
||||
|
||||
REGION Carrier
|
||||
|
||||
"FC_TSHR_AddAtEnd"(stInTrolley := #stCarrierOnly,
|
||||
nOutCounter => #nCounter1,
|
||||
xOutResult => #xResult1,
|
||||
arTSHR := #arJamExit);
|
||||
|
||||
END_REGION
|
||||
|
||||
REGION Ladung
|
||||
"FC_TSHR_AddAtEnd"(stInTrolley := #stLoadOnly,
|
||||
nOutCounter => #nCounter1,
|
||||
xOutResult => #xResult1,
|
||||
arTSHR := #arOnTheWay);
|
||||
|
||||
END_REGION
|
||||
|
||||
"FC_TSHR_Shift"(xInShiftBack := TRUE,
|
||||
arTSHR := #arJamEntr);
|
||||
|
||||
REGION Event Log
|
||||
// Info rausgeben an Log-Baustein
|
||||
#stOutBookingInfo.sBarcode := DELETE(IN := DINT_TO_STRING(#stCarrier.nBarcode), L := 1, P := 1);
|
||||
#stOutBookingInfo.sDest := DELETE(IN := INT_TO_STRING(#stCarrier.nDestination), L := 1, P := 1);
|
||||
END_REGION
|
||||
|
||||
END_REGION
|
||||
END_IF;
|
||||
ELSE //Shift zum Ziel-Bereich über Verzögerung
|
||||
IF #xInSepEdge THEN
|
||||
REGION Carrier auf den Weg schieben
|
||||
"FC_TSHR_AddAtEnd"(stInTrolley := #stCarrier,
|
||||
nOutCounter => #nCounter1,
|
||||
xOutResult => #xResult1,
|
||||
arTSHR := #arOnTheWay);
|
||||
|
||||
"FC_TSHR_Shift"(xInShiftBack := TRUE,
|
||||
arTSHR := #arJamEntr);
|
||||
END_REGION
|
||||
|
||||
REGION Event Log
|
||||
// Info rausgeben an Log-Baustein
|
||||
#stOutBookingInfo.sBarcode := DELETE(IN := DINT_TO_STRING(#stCarrier.nBarcode), L := 1, P := 1);
|
||||
#stOutBookingInfo.sDest := DELETE(IN := INT_TO_STRING(#stCarrier.nDestination), L := 1, P := 1);
|
||||
END_REGION
|
||||
|
||||
END_IF;
|
||||
IF #xInSensor THEN
|
||||
REGION Carrier unterwegs wird durch Sensor quittiert
|
||||
"FC_TSHR_AddAtEnd"(stInTrolley := #arOnTheWay[1],
|
||||
nOutCounter => #nCounter2,
|
||||
xOutResult => #xResult2,
|
||||
arTSHR := #arJamExit);
|
||||
|
||||
"FC_TSHR_Shift"(xInShiftBack := TRUE,
|
||||
arTSHR := #arOnTheWay);
|
||||
END_REGION
|
||||
|
||||
REGION Event Log
|
||||
// Info rausgeben an Log-Baustein
|
||||
#stOutBookingInfo.sBarcode := DELETE(IN := DINT_TO_STRING(#stCarrier.nBarcode), L := 1, P := 1);
|
||||
#stOutBookingInfo.sDest := DELETE(IN := INT_TO_STRING(#stCarrier.nDestination), L := 1, P := 1);
|
||||
END_REGION
|
||||
|
||||
END_IF;
|
||||
END_IF;
|
||||
END_REGION
|
||||
END_FUNCTION
|
||||
|
||||
Reference in New Issue
Block a user