Files
HundM_Fortna/2_ILSLib/FC/FC_SHR_ExtractedHangerPin.scl
T
2026-06-29 16:29:41 +02:00

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