64 lines
2.4 KiB
Plaintext
64 lines
2.4 KiB
Plaintext
FUNCTION "FC_SHR_ExtractedHangerPin" : Void
|
|
{ S7_Optimized_Access := 'TRUE' }
|
|
VERSION : 0.1
|
|
VAR_INPUT
|
|
xInUnloadingDone : Bool; // trigger zum Offline Setzen des Trolleys
|
|
nInBarcode : DInt; // Arrayposition in arTrolleysOnline
|
|
xInBypass : Bool;
|
|
END_VAR
|
|
|
|
VAR_IN_OUT
|
|
stInOutConveyorStations : "stConveyorStations";
|
|
arInOutCarrier : Array[*] of "stCarrier";
|
|
END_VAR
|
|
|
|
VAR_TEMP
|
|
nCounter : Int; // Arraynummer bzw. Haken / Trolley
|
|
nTrolleyPosition : Int;
|
|
stEmptyTrolley : "stCarrierPin";
|
|
tempTrolley : "stCarrier";
|
|
TempCounter : DInt;
|
|
TempResult : Bool;
|
|
END_VAR
|
|
|
|
|
|
BEGIN
|
|
// ****************************************
|
|
// Setzt im Online-Register den Hanger im Abwurf auf Not Online
|
|
// ****************************************
|
|
// Passenden Eintrag finden
|
|
IF #xInUnloadingDone THEN
|
|
FOR #nCounter := 1 TO ("cHooksSorterMaxPin") DO
|
|
IF #stInOutConveyorStations.arTrolleysOnline[#nCounter].stCarrier.nBarcode = #nInBarcode THEN
|
|
EXIT;
|
|
END_IF;
|
|
END_FOR;
|
|
// Wenn Eintrag gefunden, dann eintragen.
|
|
IF #nCounter < "cHooksSorterMaxPin" THEN
|
|
// #arOutTrolleyShiftRegister.arTrolley[1] := #arInOutTrolleysOnline[#nCounter].stTrolleyLoad;
|
|
IF NOT #xInBypass THEN //Wenn der Carrier am Block vorbeifährt (Bypass) NICHT buchen *****NEU*****
|
|
#tempTrolley := #stInOutConveyorStations.arTrolleysOnline[#nCounter].stCarrier;
|
|
"FC_TSHR_AddAtEnd"(stInTrolley := #tempTrolley,
|
|
nOutCounter => #TempCounter,
|
|
xOutResult => #TempResult,
|
|
arTSHR := #arInOutCarrier);
|
|
END_IF;
|
|
|
|
IF NOT #TempResult
|
|
AND NOT #xInBypass //***NEU***
|
|
THEN
|
|
RETURN;
|
|
ELSE
|
|
// Leeren des Hangers am Abwurf
|
|
#stInOutConveyorStations.stData.nTrolleysOnline -= 1;
|
|
// Alles im Online-Register eins weiter schieben
|
|
FOR #nCounter := #nCounter TO ("cHooksSorterMaxPin" - 1) DO // Weiterkopieren um eine Position
|
|
#stInOutConveyorStations.arTrolleysOnline[#nCounter] := #stInOutConveyorStations.arTrolleysOnline[#nCounter + 1];
|
|
END_FOR;
|
|
#stInOutConveyorStations.arTrolleysOnline["cHooksSorterMaxPin"] := #stEmptyTrolley;
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
END_FUNCTION
|
|
|