Es gibt:
4 Hallen
7 Regale je Halle
2 Ebenen je Regal
11 Höhen je Ebene
2 Reihen je Höhe
TYPE "UDT_LAGER"
VERSION : 0.1
STRUCT
HALLE : ARRAY [1 .. 4 ] OF STRUCT
REGAL : ARRAY [1 .. 7 ] OF STRUCT
EBENE : ARRAY [1 .. 2 ] OF STRUCT
HOEHE : ARRAY [1 .. 11 ] OF STRUCT
REIHE : ARRAY [1 .. 2 ] OF INT ;
END_STRUCT ;
END_STRUCT ;
END_STRUCT ;
END_STRUCT ;
END_STRUCT ;
END_TYPE
DATA_BLOCK "DB_LAGER"
TITLE =
VERSION : 0.1
STRUCT
FACH : "UDT_LAGER";
END_STRUCT ;
BEGIN
END_DATA_BLOCK
FUNCTION "FC_LAGERFACH_PRODUKT" : INT
VAR_INPUT
LAGERFACH : UDT_LAGER;
PRODUKT : UDT_PRODUKT;
HALLE, REGAL, EBENE, HOEHE, REIHE : INT;
END_VAR
VAR_OUTPUT
PRODUKTSTRING : STRING[23];
END_VAR
VAR_TEMP
n : INT;
END_VAR
TYPE "UDT_Daten"
STRUCT
PrgNr: BYTE;
PNR: STRING[14];
Belegt: BOOL;
Magnete: INT;
END_STRUCT ;
END_TYPE
DATA_BLOCK "DB_LAGER"
STRUCT
Fach : ARRAY [1 .. 7 ],[1 .. 11 ],[1 .. 2 ] OF "UDT_Daten"
END_STRUCT ;
BEGIN
END_DATA_BLOCK
FUNCTION_BLOCK FB82
Title = 'Lagerfach'
VAR_INPUT
// Eingangsparameter
IN_Regal: INT;
IN_Ebene: INT;
IN_Reihe: INT;
END_VAR
VAR_OUTPUT
// Ausgangsparameter
OUT_PrgNr: BYTE;
OUT_PNR: STRING[14];
OUT_Belegt: BOOL;
OUT_Magnete: INT;
END_VAR
VAR_TEMP
// Temporäre Variabeln
END_VAR
//Auslesen der Daten
OUT_PrgNr := DB_LAGER.Fach[IN_Regal,IN_Ebene,IN_Reihe].PrgNr;
OUT_PNR := DB_LAGER.Fach[IN_Regal,IN_Ebene,IN_Reihe].PNR;
OUT_Belegt := DB_LAGER.Fach[IN_Regal,IN_Ebene,IN_Reihe].Belegt;
OUT_Magnete := DB_LAGER.Fach[IN_Regal,IN_Ebene,IN_Reihe].Magnete;
END_FUNCTION_BLOCK
DATA_BLOCK "DB_LAGER"
STRUCT
Fach : ARRAY [1 .. 7 ],[1 .. 11 ],[1 .. 2 ] OF STRUCT
PrgNr: BYTE;
PNR: STRING[14];
Belegt: BOOL;
Magnete: INT;
END_STRUCT ;
END_STRUCT ;
END_DATA_BLOCK
Bei einer Lagerverwaltung würde ich davon ausgehen, einen solchen UDT möglicherweise mehrmals zu verwenden. Und wenn nicht, dann schadet es auch nicht. Aber so etwas ist bei Bedarf auch schnell mal geändert. In meinem Beispiel hatte ich die beiden UDTs z.Bsp. als Eingangsparameter verwendet, da es mMn die Flexibilität erhöht..Ich verstehe nur nicht ganz, warum ich die Array-Struktur erstmal in einem UDT erstellen muss. Das macht doch nur Sinn, wenn ich plane sie mehrmals zu verwenden...
...
Vielleicht noch einige Anmerkungen dazu :
- wenn PNr für Produktnummer steht - warum nennst du die Variable dann nicht auch so ? Variablennamen selber "fressen" erstmal keinen Speicher
- wie kommen die Daten in den DB ? Vielleicht modifizierst du den Baustein so, dass es auch Daten einlagern kann ...
- vielleicht ist es irgendwann sinnvoll Unter-Informationen zu bekommen, wie :
- wo befindet sich Produkt XYZ ?
- welches ist das nächste freie Fach ?
Gruß
Larry
Wenn die Daten in elektronischer Form als Excel-Tabelle, ASCII-File o.ä. vorliegen, würde ich versuchen diese mit der Macro-Funktionalität z.Bsp. von TextPad ins richtige Quellen-Format zu bringen...Dementsprechend überlege ich noch, wie ich die Daten möglichst fest im DB hinterlege. Ich könnte alles als manuell Ausgangswert in den DB schreiben, aber das wäre ganz schön viel aufwand, denke ich mir.
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?