Files
HundM_Fortna/=A01+UH02-KF00/Programmbausteine/FC_BARCODE_SEARCH.scl
T

591 lines
27 KiB
Plaintext

FUNCTION "FC_BARCODE_SEARCH" : Void
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
nInArea : Int; // Suchort eingrenzen: 0 = alles durchsuchen / xxx00 = nur hier suchen
xInActive : Bool; // Flanke für Starten des Abrufes
END_VAR
VAR_OUTPUT
xOutNewRetrieve : Bool; // Flanke als Ausgang dass neuer Abruf VOM LAGER stattfindet
nOutMissingBarcode : DInt; // Fehlteil
xOutError : Bool; // FALSE: Kein Fehler | TRUE: Während der Bearbeitung ist ein Fehler aufgetreten
nOutStatus : Int; // Fehlercodes
END_VAR
VAR_IN_OUT
InOutTest : Array[*] of "stCarrier"; // Liste mit dem Jambereich des Lagerausgangs
InOutStructRetrieve : Struct // Struktur in der Abruf vorgegeben wird
nBarcode : DInt;
nDestination : USInt;
END_STRUCT;
InOutLocalized : "SearchResult"; // Ergebnis
END_VAR
VAR_TEMP
nBarcode : DInt;
nDestination : Int;
nIdx1 : Int;
nIdx2 : Int;
nIdx3 : Int;
nLine : Int; // Zwischenmerker für Suchergebnis
nPos : Int; // Zwischenmerker für Suchergebnis
nArrTestMax : Int;
xPartFound : Bool; // Zwischenmerker Teil gefunden
END_VAR
VAR CONSTANT
ERR_RETRIEVE_INVALID : Int := 3000; // Ungültige Eingaben jeglicher Art
ERR_RETRIEVE_EMPTY : Int := 3001; // NIU
ERR_RETRIEVE_NOT_FOUND : Int := 3001; // Nicht gefunden
ERR_RETRIEVE_MISCERROR : Int := 3003; // NIU
"Store1.1.1" : Int := 1;
"Store1.1.2" : Int := 2;
"Store1.1.3" : Int := 3;
"Store1.1.4" : Int := 4;
"Store1.2.1" : Int := 5;
"Store1.2.2" : Int := 6;
"Store1.2.3" : Int := 7;
"Store1.2.4" : Int := 8;
"Store1.3.1" : Int := 9;
"Store1.3.2" : Int := 10;
"Store1.3.3" : Int := 11;
"Store1.3.4" : Int := 12;
END_VAR
BEGIN
(*
************************************************************************************
Sucht in Vorsortierlinie sowie Lager nach dem Teil welches als EXPRESS abgerufen werden soll
************************************************************************************
*)
IF #xInActive THEN
REGION Array-Größen ermitteln
#nArrTestMax := DINT_TO_INT(UPPER_BOUND(ARR := #InOutTest, DIM := 1));
END_REGION
REGION Return Bedingung TO DO
IF #InOutStructRetrieve.nDestination < "cDestLvl1B1" OR #InOutStructRetrieve.nDestination > "cDestExit" OR //kein gültiges Ziel
(#InOutStructRetrieve.nBarcode / 10000000 <> 2) OR //Wenn hier etwas anderes als 2 rauskommt, dann ist der angeforderte Barcode nicht 8-stellig oder beginnt nicht mit 2 für "MiniTrolley"
(((#InOutStructRetrieve.nBarcode / 10) MOD 100) MOD 2 <> 1) //Wenn hier etwas anderes als 1 rauskommt, dann ist die 10er Stelle nicht ungerade
THEN
#xOutError := TRUE;
#nOutStatus := #ERR_RETRIEVE_INVALID;
#nOutMissingBarcode := 0;
RETURN;//Abruf ungültig
ELSE //Wenn Eingaben in Ordnung, dann speichere in Temp
#nBarcode := #InOutStructRetrieve.nBarcode;
#nDestination := #InOutStructRetrieve.nDestination;
END_IF;
END_REGION
REGION Durchsuche TEST
// FOR #nIdx1 := 1 TO #nArrTestMax DO
// IF #nBarcode = #InOutTest[#nIdx1].stLoadData.nProductNo AND
// #InOutTest[#nIdx1].stLoadData.nDestinationNo <> INT_TO_USINT(#nTarget) AND
// #InOutTest[#nIdx1].stLoadData.nDestinationNo <> "cDestQUALITY" (* AND
// #InOutExitArray[#nIdx1].stLoadData.nDestinationNo <> "cDestSEAT" AND
// #InOutExitArray[#nIdx1].stLoadData.nDestinationNo <> "cDestREST" *) THEN
// // #tempPartFound := TRUE;
// REGION Schreibe Daten
// "FC_GetBackFcPart"(stInPart := #InOutTest[#nIdx1],
// xOutput => "DB_RetrieveSearchResult".xGetBackFc);
// #InOutTest[#nIdx1].stLoadData.nDestinationNo := INT_TO_USINT(#nTarget);
// #InOutTest[#nIdx1].stLoadData.nJobNo := #nJobNo;
// END_REGION
// #InOutLocalized.nBarcode := #nBarcode;
// #InOutLocalized.Storage.Line := 0;
// #InOutLocalized.Storage.Pos := 0;
// #InOutLocalized.JamTest := #nIdx1;
// #InOutLocalized.205_1 := 0;
// #InOutLocalized.205_2 := 0;
// // #xOutNewRetrieve := TRUE;
// #xOutError := FALSE;
// #nOutStatus := 0;
// #nOutMissingBarcode[1] := 0;
// #nOutMissingBarcode[2] := 0;
// RETURN; //Suche unterbrechen wenn Teil gefunden wurde
// END_IF;
// END_FOR;
END_REGION
REGION Durchsuche Lager 1.1.1
IF #nInArea = 0 OR #nInArea = "cDest11100" THEN
FOR #nIdx1 := 1 TO "cNoLines1.1.1" DO //Lagerlinien
FOR #nIdx2 := 1 TO "cNoPositionsBlock1" DO //Positionen pro Linie
IF #nBarcode = "DB_Storage1.1.1".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode AND
// "DB_Storage2.1.1".arLine[#nIdx1].arCarrier[#nIdx2].nTarget <> INT_TO_USINT(#nTarget) AND
(#nPos = 0 OR #nPos > #nIdx2) THEN
//***********falls gefunden*********
#nLine := #nIdx1;
#nPos := #nIdx2;
// #tempPartFound := TRUE;
EXIT; //Suche unterbrechen wenn Teil gefunden wurde
END_IF;
IF #nIdx2 = "cNoPositionsBlock1" THEN
EXIT; //nach letzter Position -> Schleife beenden
END_IF;
END_FOR;
IF #nIdx1 = "cNoLines1.1.1" THEN
EXIT; //nach letzter Linie -> Schleife beenden
END_IF;
END_FOR;
END_IF;
REGION Schreibe Daten
IF #nPos > 0 THEN
"DB_Storage1.1.1".arLine[#nLine].arCarrier[#nPos].nDestination := INT_TO_USINT(#nDestination);
#InOutLocalized.nBarcode := #nBarcode;
#InOutLocalized.Storage.Store := #"Store1.1.1";
#InOutLocalized.Storage.Line := #nLine;
#InOutLocalized.Storage.Pos := #nPos;
#InOutLocalized.JamTest := 0;
#xOutNewRetrieve := TRUE;
#xOutError := FALSE;
#nOutStatus := 0;
#nOutMissingBarcode := 0;
RETURN;
END_IF;
END_REGION
END_REGION
REGION Durchsuche Lager 1.1.2
IF #nInArea = 0 OR #nInArea = "cDest11200" THEN
FOR #nIdx1 := 1 TO "cNoLines1.1.2" DO //Lagerlinien
FOR #nIdx2 := 1 TO "cNoPositionsBlock1" DO //Positionen pro Linie
IF #nBarcode = "DB_Storage1.1.2".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode AND
// "DB_Storage2.1.2".arLine[#nIdx1].arCarrier[#nIdx2].nTarget <> INT_TO_USINT(#nTarget) AND
(#nPos = 0 OR #nPos > #nIdx2) THEN
//***********falls gefunden*********
#nLine := #nIdx1;
#nPos := #nIdx2;
// #tempPartFound := TRUE;
EXIT; //Suche unterbrechen wenn Teil gefunden wurde
END_IF;
IF #nIdx2 = "cNoPositionsBlock1" THEN
EXIT; //nach letzter Position -> Schleife beenden
END_IF;
END_FOR;
IF #nIdx1 = "cNoLines1.1.2" THEN
EXIT; //nach letzter Linie -> Schleife beenden
END_IF;
END_FOR;
END_IF;
REGION Schreibe Daten
IF #nPos > 0 THEN
"DB_Storage1.1.2".arLine[#nLine].arCarrier[#nPos].nDestination := INT_TO_USINT(#nDestination);
#InOutLocalized.nBarcode := #nBarcode;
#InOutLocalized.Storage.Store := #"Store1.1.2";
#InOutLocalized.Storage.Line := #nLine;
#InOutLocalized.Storage.Pos := #nPos;
#InOutLocalized.JamTest := 0;
#xOutNewRetrieve := TRUE;
#xOutError := FALSE;
#nOutStatus := 0;
#nOutMissingBarcode := 0;
RETURN;
END_IF;
END_REGION
END_REGION
REGION Durchsuche Lager 1.1.3
IF #nInArea = 0 OR #nInArea = "cDest11300" THEN
FOR #nIdx1 := 1 TO "cNoLines1.1.3" DO //Lagerlinien
FOR #nIdx2 := 1 TO "cNoPositionsBlock1" DO //Positionen pro Linie
IF #nBarcode = "DB_Storage1.1.3".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode AND
// "DB_Storage2.1.3".arLine[#nIdx1].arCarrier[#nIdx2].nTarget <> INT_TO_USINT(#nTarget) AND
(#nPos = 0 OR #nPos > #nIdx2) THEN
//***********falls gefunden*********
#nLine := #nIdx1;
#nPos := #nIdx2;
// #tempPartFound := TRUE;
EXIT; //Suche unterbrechen wenn Teil gefunden wurde
END_IF;
IF #nIdx2 = "cNoPositionsBlock1" THEN
EXIT; //nach letzter Position -> Schleife beenden
END_IF;
END_FOR;
IF #nIdx1 = "cNoLines1.1.3" THEN
EXIT; //nach letzter Linie -> Schleife beenden
END_IF;
END_FOR;
END_IF;
REGION Schreibe Daten
IF #nPos > 0 THEN
"DB_Storage1.1.3".arLine[#nLine].arCarrier[#nPos].nDestination := INT_TO_USINT(#nDestination);
#InOutLocalized.nBarcode := #nBarcode;
#InOutLocalized.Storage.Store := #"Store1.1.3";
#InOutLocalized.Storage.Line := #nLine;
#InOutLocalized.Storage.Pos := #nPos;
#InOutLocalized.JamTest := 0;
#xOutNewRetrieve := TRUE;
#xOutError := FALSE;
#nOutStatus := 0;
#nOutMissingBarcode := 0;
RETURN;
END_IF;
END_REGION
END_REGION
REGION Durchsuche Lager 1.1.4
IF #nInArea = 0 OR #nInArea = "cDest11400" THEN
FOR #nIdx1 := 1 TO "cNoLines1.1.4" DO //Lagerlinien
FOR #nIdx2 := 1 TO "cNoPositionsBlock1" DO //Positionen pro Linie
IF #nBarcode = "DB_Storage1.1.4".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode AND
// "DB_Storage2.1.4".arLine[#nIdx1].arCarrier[#nIdx2].nTarget <> INT_TO_USINT(#nTarget) AND
(#nPos = 0 OR #nPos > #nIdx2) THEN
//***********falls gefunden*********
#nLine := #nIdx1;
#nPos := #nIdx2;
// #tempPartFound := TRUE;
EXIT; //Suche unterbrechen wenn Teil gefunden wurde
END_IF;
IF #nIdx2 = "cNoPositionsBlock1" THEN
EXIT; //nach letzter Position -> Schleife beenden
END_IF;
END_FOR;
IF #nIdx1 = "cNoLines1.1.4" THEN
EXIT; //nach letzter Linie -> Schleife beenden
END_IF;
END_FOR;
END_IF;
REGION Schreibe Daten
IF #nPos > 0 THEN
"DB_Storage1.1.4".arLine[#nLine].arCarrier[#nPos].nDestination := INT_TO_USINT(#nDestination);
#InOutLocalized.nBarcode := #nBarcode;
#InOutLocalized.Storage.Store := #"Store1.1.4";
#InOutLocalized.Storage.Line := #nLine;
#InOutLocalized.Storage.Pos := #nPos;
#InOutLocalized.JamTest := 0;
#xOutNewRetrieve := TRUE;
#xOutError := FALSE;
#nOutStatus := 0;
#nOutMissingBarcode := 0;
RETURN;
END_IF;
END_REGION
END_REGION
REGION Durchsuche Lager 1.2.1
IF #nInArea = 0 OR #nInArea = "cDest12100" THEN
FOR #nIdx1 := 1 TO "cNoLines1.2.1" DO //Lagerlinien
FOR #nIdx2 := 1 TO "cNoPositionsBlock2" DO //Positionen pro Linie
IF #nBarcode = "DB_Storage1.2.1".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode AND
// "DB_Storage2.2.1".arLine[#nIdx1].arCarrier[#nIdx2].nTarget <> INT_TO_USINT(#nTarget) AND
(#nPos = 0 OR #nPos > #nIdx2) THEN
//***********falls gefunden*********
#nLine := #nIdx1;
#nPos := #nIdx2;
// #tempPartFound := TRUE;
EXIT; //Suche unterbrechen wenn Teil gefunden wurde
END_IF;
IF #nIdx2 = "cNoPositionsBlock2" THEN
EXIT; //nach letzter Position -> Schleife beenden
END_IF;
END_FOR;
IF #nIdx1 = "cNoLines1.2.1" THEN
EXIT; //nach letzter Linie -> Schleife beenden
END_IF;
END_FOR;
END_IF;
REGION Schreibe Daten
IF #nPos > 0 THEN
"DB_Storage1.2.1".arLine[#nLine].arCarrier[#nPos].nDestination := INT_TO_USINT(#nDestination);
#InOutLocalized.nBarcode := #nBarcode;
#InOutLocalized.Storage.Store := #"Store1.2.1";
#InOutLocalized.Storage.Line := #nLine;
#InOutLocalized.Storage.Pos := #nPos;
#InOutLocalized.JamTest := 0;
#xOutNewRetrieve := TRUE;
#xOutError := FALSE;
#nOutStatus := 0;
#nOutMissingBarcode := 0;
RETURN;
END_IF;
END_REGION
END_REGION
REGION Durchsuche Lager 1.2.2
IF #nInArea = 0 OR #nInArea = "cDest12200" THEN
FOR #nIdx1 := 1 TO "cNoLines1.2.2" DO //Lagerlinien
FOR #nIdx2 := 1 TO "cNoPositionsBlock2" DO //Positionen pro Linie
IF #nBarcode = "DB_Storage1.2.2".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode AND
// "DB_Storage2.2.2".arLine[#nIdx1].arCarrier[#nIdx2].nTarget <> INT_TO_USINT(#nTarget) AND
(#nPos = 0 OR #nPos > #nIdx2) THEN
//***********falls gefunden*********
#nLine := #nIdx1;
#nPos := #nIdx2;
// #tempPartFound := TRUE;
EXIT; //Suche unterbrechen wenn Teil gefunden wurde
END_IF;
IF #nIdx2 = "cNoPositionsBlock2" THEN
EXIT; //nach letzter Position -> Schleife beenden
END_IF;
END_FOR;
IF #nIdx1 = "cNoLines1.2.2" THEN
EXIT; //nach letzter Linie -> Schleife beenden
END_IF;
END_FOR;
END_IF;
REGION Schreibe Daten
IF #nPos > 0 THEN
"DB_Storage1.2.2".arLine[#nLine].arCarrier[#nPos].nDestination := INT_TO_USINT(#nDestination);
#InOutLocalized.nBarcode := #nBarcode;
#InOutLocalized.Storage.Store := #"Store1.2.2";
#InOutLocalized.Storage.Line := #nLine;
#InOutLocalized.Storage.Pos := #nPos;
#InOutLocalized.JamTest := 0;
#xOutNewRetrieve := TRUE;
#xOutError := FALSE;
#nOutStatus := 0;
#nOutMissingBarcode := 0;
RETURN;
END_IF;
END_REGION
END_REGION
REGION Durchsuche Lager 1.2.3
IF #nInArea = 0 OR #nInArea = "cDest12300" THEN
FOR #nIdx1 := 1 TO "cNoLines1.2.3" DO //Lagerlinien
FOR #nIdx2 := 1 TO "cNoPositionsBlock2" DO //Positionen pro Linie
IF #nBarcode = "DB_Storage1.2.3".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode AND
// "DB_Storage2.2.3".arLine[#nIdx1].arCarrier[#nIdx2].nTarget <> INT_TO_USINT(#nTarget) AND
(#nPos = 0 OR #nPos > #nIdx2) THEN
//***********falls gefunden*********
#nLine := #nIdx1;
#nPos := #nIdx2;
// #tempPartFound := TRUE;
EXIT; //Suche unterbrechen wenn Teil gefunden wurde
END_IF;
IF #nIdx2 = "cNoPositionsBlock2" THEN
EXIT; //nach letzter Position -> Schleife beenden
END_IF;
END_FOR;
IF #nIdx1 = "cNoLines1.2.3" THEN
EXIT; //nach letzter Linie -> Schleife beenden
END_IF;
END_FOR;
END_IF;
REGION Schreibe Daten
IF #nPos > 0 THEN
"DB_Storage1.2.3".arLine[#nLine].arCarrier[#nPos].nDestination := INT_TO_USINT(#nDestination);
#InOutLocalized.nBarcode := #nBarcode;
#InOutLocalized.Storage.Store := #"Store1.2.3";
#InOutLocalized.Storage.Line := #nLine;
#InOutLocalized.Storage.Pos := #nPos;
#InOutLocalized.JamTest := 0;
#xOutNewRetrieve := TRUE;
#xOutError := FALSE;
#nOutStatus := 0;
#nOutMissingBarcode := 0;
RETURN;
END_IF;
END_REGION
END_REGION
REGION Durchsuche Lager 1.2.4
IF #nInArea = 0 OR #nInArea = "cDest12400" THEN
FOR #nIdx1 := 1 TO "cNoLines1.2.4" DO //Lagerlinien
FOR #nIdx2 := 1 TO "cNoPositionsBlock2" DO //Positionen pro Linie
IF #nBarcode = "DB_Storage1.2.4".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode AND
// "DB_Storage2.2.4".arLine[#nIdx1].arCarrier[#nIdx2].nTarget <> INT_TO_USINT(#nTarget) AND
(#nPos = 0 OR #nPos > #nIdx2) THEN
//***********falls gefunden*********
#nLine := #nIdx1;
#nPos := #nIdx2;
// #tempPartFound := TRUE;
EXIT; //Suche unterbrechen wenn Teil gefunden wurde
END_IF;
IF #nIdx2 = "cNoPositionsBlock2" THEN
EXIT; //nach letzter Position -> Schleife beenden
END_IF;
END_FOR;
IF #nIdx1 = "cNoLines1.2.4" THEN
EXIT; //nach letzter Linie -> Schleife beenden
END_IF;
END_FOR;
END_IF;
REGION Schreibe Daten
IF #nPos > 0 THEN
"DB_Storage1.2.4".arLine[#nLine].arCarrier[#nPos].nDestination := INT_TO_USINT(#nDestination);
#InOutLocalized.nBarcode := #nBarcode;
#InOutLocalized.Storage.Store := #"Store1.2.4";
#InOutLocalized.Storage.Line := #nLine;
#InOutLocalized.Storage.Pos := #nPos;
#InOutLocalized.JamTest := 0;
#xOutNewRetrieve := TRUE;
#xOutError := FALSE;
#nOutStatus := 0;
#nOutMissingBarcode := 0;
RETURN;
END_IF;
END_REGION
END_REGION
REGION Durchsuche Lager 1.3.1
IF #nInArea = 0 OR #nInArea = "cDest13100" THEN
FOR #nIdx1 := 1 TO "cNoLines1.3.1" DO //Lagerlinien
FOR #nIdx2 := 1 TO "cNoPositionsBlock3" DO //Positionen pro Linie
IF #nBarcode = "DB_Storage1.3.1".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode AND
// "DB_Storage2.3.1".arLine[#nIdx1].arCarrier[#nIdx2].nTarget <> INT_TO_USINT(#nTarget) AND
(#nPos = 0 OR #nPos > #nIdx2) THEN
//***********falls gefunden*********
#nLine := #nIdx1;
#nPos := #nIdx2;
// #tempPartFound := TRUE;
EXIT; //Suche unterbrechen wenn Teil gefunden wurde
END_IF;
IF #nIdx2 = "cNoPositionsBlock3" THEN
EXIT; //nach letzter Position -> Schleife beenden
END_IF;
END_FOR;
IF #nIdx1 = "cNoLines1.3.1" THEN
EXIT; //nach letzter Linie -> Schleife beenden
END_IF;
END_FOR;
END_IF;
REGION Schreibe Daten
IF #nPos > 0 THEN
"DB_Storage1.3.1".arLine[#nLine].arCarrier[#nPos].nDestination := INT_TO_USINT(#nDestination);
#InOutLocalized.nBarcode := #nBarcode;
#InOutLocalized.Storage.Store := #"Store1.3.1";
#InOutLocalized.Storage.Line := #nLine;
#InOutLocalized.Storage.Pos := #nPos;
#InOutLocalized.JamTest := 0;
#xOutNewRetrieve := TRUE;
#xOutError := FALSE;
#nOutStatus := 0;
#nOutMissingBarcode := 0;
RETURN;
END_IF;
END_REGION
END_REGION
REGION Durchsuche Lager 1.3.2
IF #nInArea = 0 OR #nInArea = "cDest13200" THEN
FOR #nIdx1 := 1 TO "cNoLines1.3.2" DO //Lagerlinien
FOR #nIdx2 := 1 TO "cNoPositionsBlock3" DO //Positionen pro Linie
IF #nBarcode = "DB_Storage1.3.2".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode AND
// "DB_Storage2.3.2".arLine[#nIdx1].arCarrier[#nIdx2].nTarget <> INT_TO_USINT(#nTarget) AND
(#nPos = 0 OR #nPos > #nIdx2) THEN
//***********falls gefunden*********
#nLine := #nIdx1;
#nPos := #nIdx2;
// #tempPartFound := TRUE;
EXIT; //Suche unterbrechen wenn Teil gefunden wurde
END_IF;
IF #nIdx2 = "cNoPositionsBlock3" THEN
EXIT; //nach letzter Position -> Schleife beenden
END_IF;
END_FOR;
IF #nIdx1 = "cNoLines1.3.2" THEN
EXIT; //nach letzter Linie -> Schleife beenden
END_IF;
END_FOR;
END_IF;
REGION Schreibe Daten
IF #nPos > 0 THEN
"DB_Storage1.3.2".arLine[#nLine].arCarrier[#nPos].nDestination := INT_TO_USINT(#nDestination);
#InOutLocalized.nBarcode := #nBarcode;
#InOutLocalized.Storage.Store := #"Store1.3.2";
#InOutLocalized.Storage.Line := #nLine;
#InOutLocalized.Storage.Pos := #nPos;
#InOutLocalized.JamTest := 0;
#xOutNewRetrieve := TRUE;
#xOutError := FALSE;
#nOutStatus := 0;
#nOutMissingBarcode := 0;
RETURN;
END_IF;
END_REGION
END_REGION
REGION Durchsuche Lager 1.3.3
IF #nInArea = 0 OR #nInArea = "cDest13300" THEN
FOR #nIdx1 := 1 TO "cNoLines1.3.3" DO //Lagerlinien
FOR #nIdx2 := 1 TO "cNoPositionsBlock3" DO //Positionen pro Linie
IF #nBarcode = "DB_Storage1.3.3".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode AND
// "DB_Storage2.3.3".arLine[#nIdx1].arCarrier[#nIdx2].nTarget <> INT_TO_USINT(#nTarget) AND
(#nPos = 0 OR #nPos > #nIdx2) THEN
//***********falls gefunden*********
#nLine := #nIdx1;
#nPos := #nIdx2;
// #tempPartFound := TRUE;
EXIT; //Suche unterbrechen wenn Teil gefunden wurde
END_IF;
IF #nIdx2 = "cNoPositionsBlock3" THEN
EXIT; //nach letzter Position -> Schleife beenden
END_IF;
END_FOR;
IF #nIdx1 = "cNoLines1.3.3" THEN
EXIT; //nach letzter Linie -> Schleife beenden
END_IF;
END_FOR;
END_IF;
REGION Schreibe Daten
IF #nPos > 0 THEN
"DB_Storage1.3.3".arLine[#nLine].arCarrier[#nPos].nDestination := INT_TO_USINT(#nDestination);
#InOutLocalized.nBarcode := #nBarcode;
#InOutLocalized.Storage.Store := #"Store1.3.3";
#InOutLocalized.Storage.Line := #nLine;
#InOutLocalized.Storage.Pos := #nPos;
#InOutLocalized.JamTest := 0;
#xOutNewRetrieve := TRUE;
#xOutError := FALSE;
#nOutStatus := 0;
#nOutMissingBarcode := 0;
RETURN;
END_IF;
END_REGION
END_REGION
REGION Durchsuche Lager 1.3.4
IF #nInArea = 0 OR #nInArea = "cDest13400" THEN
FOR #nIdx1 := 1 TO "cNoLines1.3.4" DO //Lagerlinien
FOR #nIdx2 := 1 TO "cNoPositionsBlock3" DO //Positionen pro Linie
IF #nBarcode = "DB_Storage1.3.4".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode AND
// "DB_Storage2.3.4".arLine[#nIdx1].arCarrier[#nIdx2].nTarget <> INT_TO_USINT(#nTarget) AND
(#nPos = 0 OR #nPos > #nIdx2) THEN
//***********falls gefunden*********
#nLine := #nIdx1;
#nPos := #nIdx2;
// #tempPartFound := TRUE;
EXIT; //Suche unterbrechen wenn Teil gefunden wurde
END_IF;
IF #nIdx2 = "cNoPositionsBlock3" THEN
EXIT; //nach letzter Position -> Schleife beenden
END_IF;
END_FOR;
IF #nIdx1 = "cNoLines1.3.4" THEN
EXIT; //nach letzter Linie -> Schleife beenden
END_IF;
END_FOR;
END_IF;
REGION Schreibe Daten
IF #nPos > 0 THEN
"DB_Storage1.3.4".arLine[#nLine].arCarrier[#nPos].nDestination := INT_TO_USINT(#nDestination);
#InOutLocalized.nBarcode := #nBarcode;
#InOutLocalized.Storage.Store := #"Store1.3.4";
#InOutLocalized.Storage.Line := #nLine;
#InOutLocalized.Storage.Pos := #nPos;
#InOutLocalized.JamTest := 0;
#xOutNewRetrieve := TRUE;
#xOutError := FALSE;
#nOutStatus := 0;
#nOutMissingBarcode := 0;
ELSE
#xOutError := TRUE;
#nOutStatus := #ERR_RETRIEVE_NOT_FOUND;
#nOutMissingBarcode := #nBarcode;
END_IF;
END_REGION
END_REGION
END_IF;
END_FUNCTION