erster Baustein KF00 testweise exportiert
This commit is contained in:
@@ -0,0 +1,188 @@
|
||||
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;
|
||||
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
|
||||
IF #nInArea = 0 OR #nInArea = "cDest1100" THEN
|
||||
FOR #nIdx1 := 1 TO "cNoLines" DO //Lagerlinien
|
||||
FOR #nIdx2 := 1 TO "cNoPositions" DO //Positionen pro Linie
|
||||
IF #nBarcode = "DB_JamBuffer101".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 = "cNoPositions" THEN
|
||||
EXIT; //nach letzter Position -> Schleife beenden
|
||||
END_IF;
|
||||
END_FOR;
|
||||
IF #nIdx1 = "cNoLines" THEN
|
||||
EXIT; //nach letzter Linie -> Schleife beenden
|
||||
END_IF;
|
||||
END_FOR;
|
||||
END_IF;
|
||||
|
||||
REGION Schreibe Daten
|
||||
IF #nPos > 0 THEN
|
||||
"DB_JamBuffer101".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.2
|
||||
IF #nInArea = 0 OR #nInArea = "cDest1200" THEN
|
||||
FOR #nIdx1 := 1 TO "cNoLines" DO //Lagerlinien
|
||||
FOR #nIdx2 := 1 TO "cNoPositions" DO //Positionen pro Linie
|
||||
IF #nBarcode = "DB_JamBuffer102".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 = "cNoPositions" THEN
|
||||
EXIT; //nach letzter Position -> Schleife beenden
|
||||
END_IF;
|
||||
END_FOR;
|
||||
IF #nIdx1 = "cNoLines" THEN
|
||||
EXIT; //nach letzter Linie -> Schleife beenden
|
||||
END_IF;
|
||||
END_FOR;
|
||||
END_IF;
|
||||
|
||||
REGION Schreibe Daten
|
||||
IF #nPos > 0 THEN
|
||||
"DB_JamBuffer102".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
|
||||
|
||||
END_IF;
|
||||
END_FUNCTION
|
||||
|
||||
Reference in New Issue
Block a user