Autor
|
Thema: Autostore in Simtalk (2084 mal gelesen)
|
Martin94 Mitglied
Beiträge: 11 Registriert: 14.11.2018
|
erstellt am: 15. Nov. 2018 11:57 <-- editieren / zitieren --> Unities abgeben:
Guten Tage liebe Community, mein Kommilitone und ich haben im Rahmen unsere Studiums eine Projektarbeit erhalten. Wir sollen mit Hilfe von Plant Simulation ein Autostore simulieren. Ein Autostore ist ein Lagerungssystem, bei welchem nur von Oben auf die Ware zugegriffen werden kann. Es ist ein 10x10x10 Raster. Leider kennen wir uns beide nicht mit Plant Simulation aus. Und mussten auch nach einiger Einarbeitungszeit feststellen, dass diese Projektarbeit eine wirkliche Herausforderung für uns darstellt. Oben auf dem Raster gibt es 3 Fahrzeuge, welche zufällig Teile ein und auslagern. Es gibt 3 verschiedene Arten von Teilen (A,B,C) Nun unser Ansatz hierfür ist: Ein Raster aus Einzelstationen, welche alle mit einem zweispureWeg Bauteil verknüpft sind. Die Problematik ist das auf jeder Einzelstation bis zu 10 Teile gelagert werden können. Jedoch kann man nur auf das Teil zugreifen welches oben liegt (Schachtsystem).--> Idee ist es dies mit Hilfe einer Liste zu lösen. Die Fahrzeuge sollen dann nur auf das letzte Teil in der Liste zugreifen können. (Schachtsystem) Die Simulation sollte auch erkennen welches Teil am schnellsten zur Verfügung steht (Weg bis zum Auslagerpunkt). Berücksichtigt werden sollte auch das wenn kein z.B. A-Teil in der ersten Schicht liegt, Teile, welche drüber liegen umgelagert werden bis das A-Teil zur Verfügung steht. Das ist der Teile welcher uns vor die oben genannte Herausforderung stellt. Zusätzliche hat jeder Weg eine gewissen Länge bzw. Fahrzeuge eine Beschleunigung und Geschwindigkeit. Auch das Zugreifen auf einen Teil in einem Schacht unterliegt diesen Bedingungen. --> Die Geschwindigkeit und Beschleunigung kann über die Einstellung der Fahrzeuge eingestellt werden --> Die Strecke des Wegs kann auch so festgelegt werden. Bei den Schächten hatten wir uns es so überlegt, dass man diese fest definiert. Heißt für Pos.1 Förderzeit X für Pos.2 Förderzeit Y usw. Ist dies in Listen so überhaupt möglich?
Unten rechts bzw. unten links ist der Ein/Ausgang des Lagers. Wir würden uns sehr über jegliche Hilfe bezüglich dieses Themas freuen. Aktuell sind wir ein wenig verzweifelt. Viele Grüße, Martin & Leon
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 15. Nov. 2018 15:07 <-- editieren / zitieren --> Unities abgeben: Nur für Martin94
Hallo Martin & Leon, Zitat: Ein Raster aus Einzelstationen, welche alle mit einem zweispureWeg Bauteil verknüpft sind.
Wenn Weg und Fahrzeug in Simulation abgebildet werden, sollte die Logik passen (Bild). Nicht alles auf einmal oder nicht so kompliziert. Erst die Muss-Ziele erreichen. Wenn Zeit ausreicht, dann wird es auch hübsch - Step 1 (nur empfehlung): Wie sieht ein Einlager- bzw. Auslagervorgang aus. Was kann alles dabei passieren... vG Nadin ------------------ Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten. (Matthew Austern) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Martin94 Mitglied
Beiträge: 11 Registriert: 14.11.2018
|
erstellt am: 16. Nov. 2018 17:08 <-- editieren / zitieren --> Unities abgeben:
Hallo Nadin, ersteinmal Danke für eine schnelle Antwort. Einlagern: Soll zufällig in eins der 98 Plätze gelagert werden. Probleme: -Zufallsplatz kann bereits 10 Artikel enthalten -Auf dem weg dort hin dürfen die 3 Fahrzeuge sich nicht treffen Auslagern: Ein Zufälliges Teil (A,B,C) soll ausgelagert werden. Probleme: -Teil ist nicht in der obersten Schicht vorhanden -Fahrzeuge dürfen sich nicht treffen Was hierbei unsere Problem ist wie realisieren wir das mit den Listen. Wir haben ja keine Lager, heißt das BE, welches auf die Einzelstation kommt muss dort verschwinden allerdings in der Liste vermerkt werden das es dort liegt. Hatten jetzt überlegt, es mit einem Unternetzwerk zulösen und dort ein Lager mit 10 Plätzen einzufügen (LIFO). Man muss dazu sagen wir sind wirklich sehr sehr unerfahren und die Programmtexte zuschreiben ist für uns ein echter Kampf
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 17. Nov. 2018 00:40 <-- editieren / zitieren --> Unities abgeben: Nur für Martin94
Zitat: -Auf dem weg dort hin dürfen die 3 Fahrzeuge sich nicht treffen
empfehlenswert ist da (wenn "Automatische Zielfindung" den "Routengeschwindigkeitsattribut" zu nutzen. Zitat: -Zufallsplatz kann bereits 10 Artikel enthalten
dann wird halt gewürfelt, bis ein freier Platz erwischt wird. (ehe unwichtig zu diesem Zeitpunkt) Zitat: -Teil ist nicht in der obersten Schicht vorhanden
das ist ehe step2 ;) Zitat: Was hierbei unsere Problem ist wie realisieren wir das mit den Listen. Wir haben ja keine Lager, heißt das BE, welches auf die Einzelstation kommt muss dort verschwinden allerdings in der Liste vermerkt werden das es dort liegt.
warum Einzelstation....Sortierlager geht auch. Der wird die Liste aber NICHT ersetzen, weil in Tabellen ist es einfacher zu suchen. Schaut euch mal das Beispiel von Bangsow an. Zitat: Hatten jetzt überlegt, es mit einem Unternetzwerk zulösen und dort ein Lager mit 10 Plätzen einzufügen (LIFO).
Unternetzwerke sind immer gut. Ermöglicht ein Standartbaustein zu kreieren und diesen zu vervielfältigen.... Zitat: Man muss dazu sagen wir sind wirklich sehr sehr unerfahren und die Programmtexte zuschreiben ist für uns ein echter Kampf
Zum Ende der Projektarbeit seit ihr Profis darin... ------------------ Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten. (Matthew Austern) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Martin94 Mitglied
Beiträge: 11 Registriert: 14.11.2018
|
erstellt am: 28. Nov. 2018 12:45 <-- editieren / zitieren --> Unities abgeben:
Hallo Nadine, wir kämpfen immer noch sehr mit der Programmumgebung. Wir wollten jetzt erstmal die Automatische Befüllung für den "Start" machen. Hatte mich erst daran probiert es mit einer Liste zumachen. Leider scheitert das komplett. Jetzt habe ich quasi für jede Einzelstation eine Liste angelegt. Nur habe ich die Befürchtung, dass mir das in der Zukunft viele Probleme machen wird. is anz:integer; i1:integer; i2:integer; i3:integer; i4:integer; do anz:=400; Liste1["ID",1] := 1; Liste1["Position",1] := 1; Liste2["ID",1] := 1; Liste2["Position",1] := 1; Liste3["ID",1] := 1; Liste3["Position",1] := 1; for local i := 1 to anz loop if i > 25 then i1 := Liste1["Position",Liste1.yDim]; i2 := Liste2["Position",Liste2.yDim]; i3 := Liste3["Position",Liste3.yDim]; i4 = i1 + i2 + i3; else i4 :=1; end; if i4 < 31 then @.Stats[1,i]:= str_to_obj("myE"+to_str(floor(z_gleich(17,1,4)))); else error; end; next; --@.Stats[1,anz+1]:=myE; -- Umlagern des BEs an seine erste Bearbeitungsstation @.umlagern(@.Stats[1,1]); end; is position_alt:integer; x:integer; i:integer; do --Löschen der ersten Zeile der Tabelle @.Stats @.Stats.entferneZeile(1); x := 10; if Liste3.yDim == 0 then position_alt := 1; --Schreiben des Ereignisses in die Tabelle Liste3 Liste3["ID",Liste3.yDim+1] := @.id; Liste3["Position",Liste3.yDim] := position_alt; --Liste3["Station",Liste3.yDim] := ?; --Liste3["Uhrzeit",Liste3.yDim] := Ereignisverwalter.zeit; --Liste3["Aktion",Liste3.yDim] := "Verlassen"; else if Liste3["Position",Liste3.yDim] < x then position_alt := Liste3["Position",Liste3.yDim]+1; --Schreiben des Ereignisses in die Tabelle Proto Liste3["ID",Liste3.yDim+1] := @.id; Liste3["Position",Liste3.yDim] := position_alt; --Liste3["Station",Liste3.yDim] := ?; --Liste3["Uhrzeit",Liste3.yDim] := Ereignisverwalter.zeit; --Liste3["Aktion",Liste3.yDim] := "Verlassen"; else i:= @.id; @.Stats[1,i]:= str_to_obj("myE"+to_str(floor(z_gleich(17,1,3)))); end; end; --Umlagern auf die nächste Bearbeitungsstation @.umlagern(@.Stats[1,1]);
Ein richtiges Chaos bei uns aktuell. Eigentlich hätte ich es gerne so, dass ich die Anzahl der Teile am Start selber bestimmen kann. Und nur eine Liste. Mit 100 Listen wird mir das definitiv zu chaotisch Hoffe du kannst uns etwas weiter helfen. LG Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 28. Nov. 2018 14:59 <-- editieren / zitieren --> Unities abgeben: Nur für Martin94
kannst du das Modell anhängen? ------------------ Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten. (Matthew Austern) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Martin94 Mitglied
Beiträge: 11 Registriert: 14.11.2018
|
erstellt am: 05. Dez. 2018 13:50 <-- editieren / zitieren --> Unities abgeben:
Hi Nicole, wir haben jetzt nochmals von vorne angefangen. War alles viel zu chaotisch Ich kann nun zufällig Kisten einlagern und in eine Liste schreiben lassen. Allerdings werden in meiner Liste die Daten nicht untereinander eingetragen. Er fügt mit jedem Eintrag in die Liste eine Zahl hinzu. Ich hätte es gerne so das die Einträge untereinander entstehen, heißt maximal 10 Zeilen. Desweitern soll er erkennen sobald in einer Spalte bereits 10 Kisten liegen und dann einen neuen Lagerort finden. Kann ich die Datei einfach anhängen ? LG, Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Martin94 Mitglied
Beiträge: 11 Registriert: 14.11.2018
|
erstellt am: 05. Dez. 2018 13:54 <-- editieren / zitieren --> Unities abgeben:
|
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 05. Dez. 2018 13:56 <-- editieren / zitieren --> Unities abgeben: Nur für Martin94
.spp kann nicht geladen werden. Entweder in ZIP-Ordner oder Dateiendung mit txt erweitern. ------------------ Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten. (Matthew Austern) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Martin94 Mitglied
Beiträge: 11 Registriert: 14.11.2018
|
erstellt am: 05. Dez. 2018 14:01 <-- editieren / zitieren --> Unities abgeben:
Also wir haben es nun anders gelöst. Fraglich nur ob es die bessere Entscheidung war. Können nun das Lager automatisch befüllen. (Ausgangsbefüllung) Der nächste Schritt wird sein das Lager mit Fahrzeugen weiter zu befüllen. Aktueller Stand der Dinge habe ich mal angehängt. Sind komplett aus dem Häuschen
Haben uns den weiteren Schritt so vorgestellt : Wir erzeugen ein BE lagern dies auf eine Eingangsstation um, und wenn diese besetzt ist soll ein freies Fahrzeug kommen und es abholen. Wie das funktioniert aber vll kommen wir ja morgen wieder etwas weiter. Jeder Tipp wird dankbar angenommen [Diese Nachricht wurde von Martin94 am 06. Dez. 2018 editiert.]
[Diese Nachricht wurde von Martin94 am 06. Dez. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 07. Dez. 2018 22:24 <-- editieren / zitieren --> Unities abgeben: Nur für Martin94
für Transporter hat Bangsow ein schönes beispiel. Eurer (erste) Lösungsansatz sieht sehr gut aus. der Zweite wird zum Ende schwierig zu handeln sein.. hab mir die Freiheit genommen ein wenig im Ersten die Methoden und Tabelle anzupassen. vG Nadin
------------------ Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten. (Matthew Austern) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Martin94 Mitglied
Beiträge: 11 Registriert: 14.11.2018
|
erstellt am: 13. Dez. 2018 09:14 <-- editieren / zitieren --> Unities abgeben:
Hallo Nadin, wir können deine Datei leider nicht öffnen da wir nur eine Lizens für die 12 Version hier an der Uni besitzen... Würdest du uns vll beschreiben was du geändert hast ? Dann können wir es in unsere Datei übernehmen … LG Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 13. Dez. 2018 09:42 <-- editieren / zitieren --> Unities abgeben: Nur für Martin94
|
Martin94 Mitglied
Beiträge: 11 Registriert: 14.11.2018
|
erstellt am: 14. Dez. 2018 22:21 <-- editieren / zitieren --> Unities abgeben:
Hallo Nadin, haben unsere Datei exakt so aufgebaut wie du Sie hattest. Aber bei uns läuft es schon unterschiedlich. Also wo ist der Haken ? Bei uns taucht immer folgender Fehler auf (Screenshot) Haben es auch mal mit BESTANDTabelle[i,(@.Zielort)][1,1] := @.name; probiert. dadurch können wir den Fehler unschädlich machen. Jedoch führt es danach zu einem weitern Fehler Sind morgen wieder dran mal sehen ob wir es dann lösen können. Vll hast du ja eine Idee warum es nicht geht ? Ansonsten haben wir ein wenig mehr Verständnis erlang. Haben deine Version mal gründlich zerlegt und betrachtet was du gemacht hast.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 14. Dez. 2018 22:42 <-- editieren / zitieren --> Unities abgeben: Nur für Martin94
|
Martin94 Mitglied
Beiträge: 11 Registriert: 14.11.2018
|
erstellt am: 15. Dez. 2018 16:46 <-- editieren / zitieren --> Unities abgeben:
Also es läuft jetzt wie bei dir Gott sei dank probieren uns jetzt mal an deinen TODOs aus mal sehen wie wir heute weiter kommen. [Diese Nachricht wurde von Martin94 am 15. Dez. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Martin94 Mitglied
Beiträge: 11 Registriert: 14.11.2018
|
erstellt am: 21. Dez. 2018 18:58 <-- editieren / zitieren --> Unities abgeben:
Hey Nadin, wir haben jetzt weiter gearbeitet. Haben unsere Einlagerungsstrategie implementiert. - können die Startbefüllung machen und dann zufällig eine Einlagerung oder Auslagerung In dem Vorgängermodell hat die Auslagerung immer von oben nach unten gesucht. Wir haben das auf zufällig geändert, in dem wir an den Ausgang der myQ zufällig entscheiden lassen auf welchen Puffer das Päckchen umgelagert werden soll. Ein Problem sehen wir allerdings noch. Wir können aktuell nur jeweils einen Vorgang machen also entweder einlagern oder umlagern oder auslagern. (vll. Platz auf dem Puffer auf 3 erhöhen) Hier ein Vorschlag für uns ? Danach würden wir das Problem mit den Transportern angehen. Mal sehen was wir zwischen den Jahren hinbekommen. Haben dir unsere aktuelle Datei angehängt. Sollte dir noch etwas auffallen was wir besser machen könnten freuen wir uns über deine Vorschläge. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 21. Dez. 2018 23:40 <-- editieren / zitieren --> Unities abgeben: Nur für Martin94
Moin, nur überflogen... Achtung, wenn das Produkt nicht im Lager da, dann ist dies in der Methode "auslagerungspositionssuchen" eine Endlosschleife.. Code: repeat i:= floor(z_gleich(17,1,98)); j:= floor(z_gleich(17,1,11)); _BESTANDTabelleSUCHE.setzeZeiger(j,i); until _BESTANDTabelleSUCHE[j,i] = MUObj.name;
Zitat: Ein Problem sehen wir allerdings noch. Wir können aktuell nur jeweils einen Vorgang machen also entweder einlagern oder umlagern oder auslagern. (vll. Platz auf dem Puffer auf 3 erhöhen)
alles ist OK zu diesem Zeitpunkt...die Steuerung für Einlagerung und Auslagerung auf eine Quelle zu legen ist sehr ungewöhnlich. Ehe von zwei Quellen ausgehen, es sei denn dies ist explizit von Auftraggeber genauso vorgegeben. Genügt aber zu diesem Zeitpunkt... Ich gehe stark davon aus, dass Transporter ein Muss-Ziel ist, deshalb ... viel Spaß beim Basteln und erholsame Weihnachtszeit . vG Nadin ------------------ Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten. (Matthew Austern) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 08. Jan. 2019 10:27 <-- editieren / zitieren --> Unities abgeben: Nur für Martin94
Zitat: Wenn ein Fahrzeug auf eine Einzelstation kommt wird die Eingangsfunktion der Einzelstation aktiviert. Obwohl es kein BE ist. Wie können wir sowas umgehen?
du kannst prüfen, ob etwas auf dem Transportwagen ist... Code: if @.Inhalt = VOID then --nichts drauf else --es ist etwas draufend;
Zitat: Transporter ist noch ein großes Fragezeichen . Das Beispiel, welches du uns gegeben hast hilft uns nicht wirklich weiter. Hast du noch ein paar Tipps für uns ?
Es gibt zu viele Wege nach Rom und ein Weg ist für Euch der Richtige....Nur ich kann euch leider nicht sagen welcher..... ..Der Transporter ist im Aufwand ehe komplizierter, als die Bestellverwaltung... Zitat: Step 1 (nur empfehlung): Wie sieht ein Einlager- bzw. Auslagervorgang aus. Was kann alles dabei passieren...
je mehr euer Verständnis von diesen Prozess ist, desto besser könnt ihr es im Modell abstrahiert abbilden... Macht am besten kleines Modell und testet eure Eidrücke (beispielsweise in den Beispielmodellen im PlantSimulation)....variiert und kombiniert...und Fragt, wenn Unklarheiten entstehen... vG Nadin ------------------ Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten. (Matthew Austern) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Martin94 Mitglied
Beiträge: 11 Registriert: 14.11.2018
|
erstellt am: 20. Jan. 2019 14:54 <-- editieren / zitieren --> Unities abgeben:
Hallo Nadin, Wir haben jetzt Transporter in unserer Simulation. Die Ein-Auslagerung klappt auch soweit ganz gut . Nur bei der Umlagerung fahren unsere Transporter leider nicht los... Hast du vielleicht eine Idee warum das der Fall ist ? LG Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |