Autor
|
Thema: Teil wegtragen aus Lager (2151 / mal gelesen)
|
Simon91 Mitglied
Beiträge: 4 Registriert: 24.08.2018
|
erstellt am: 24. Aug. 2018 13:24 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich bin ein blutiger Anfänger was Plant Simulation angeht und kämpfe gerade mit folgender Problemstellung zu der ich in den Foren nirgendwo etwas gefunden habe: Ein Werker soll ein BE aus einem Lager holen und auf eine Einzelstation umlagern. Das habe ich bisher über den Ausgang beim Lager versucht. Doch dabei tut sich nichts. Wenn ich statt des Lagers einen Puffer verwende führt der Werker die gewünschte Aktion aus. Kann mir da bitte jemand weiterhelfen? Vielen Dank!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 25. Aug. 2018 20:59 <-- editieren / zitieren --> Unities abgeben: Nur für Simon91
Hallo Simon, Lager lagern nicht automatisch um... Etwas muss das Event für das Auslagern auslösen. Im Beispiel übernimmt es ein Generator. 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 |
lodonnel Mitglied
Beiträge: 3 Registriert: 06.02.2019
|
erstellt am: 06. Feb. 2019 21:38 <-- editieren / zitieren --> Unities abgeben: Nur für Simon91
Hallo nadin1223, ich habe mich in den letzten Tagen fleißig durch eure Threads und deine oftmaligen Hilfestellungen gelesen - klasse, wie ihr hier unterstützt! Ich habe auch ein Problem (und vermutlich noch ein paar mehr), schließe mich einfach mal hier in dem Thread an, da es thematisch passt. Ich habe ein Modell gebaut, bei dem ich ein Lager befüllen lasse. Das klappt auch soweit gut. Jetzt ist das Regal gefüllt und ich möchte es entladen lassen, mittels: a) Pick&Place auf Fließband oder b) Puffer auf Fließband oder c) direkt auf Fließband Mein Problem ist nun: Ich bekomme den Auslagervorgang aus dem Lager nicht in Gang. Ich habe mir die Lösung aus diesem Thread angeschaut, und bekomme die Steuerung über einen Generator hin. Allerdings ist der Generator ein wenig unsauber für meine Zwecke, da ich nur einen "einmaligen Trigger" für die Auslagerungen brauche, und keinen "alle x Sekunden wiederkehrenden Prozess". Den Code der üblichen Methoden verstehe ich, aber wie bekomme ich das Pick&Place beispielsweise dazu, anzufangen, sobald mein Lager voll ist? if lager1.full then lager1.pe(1,1).inhalt.umlagern(PickAndPlace); //Eventuell auch ohne "Inhalt" end; - das müsste doch so funktionieren oder? Tut es aber einfach nicht, egal ob in Eingang/Ausgang Heck/Bug des nachgelagerten Pick&Place packe... Es passiert nichts. Das Pick&Place hätte eigentlich nur anschaulichen Charakter, bringt faktisch keinen Mehrwert. Ich möchte halt nur "realistisch" simulieren, weshalb das ganz gut aussehen würde. Allerdings werde ich später auch wieder Einlagerungen vornehmen - kann EIN pick&place in ein Regal ein- und auslagern? oder müsste ich da mit zwei pick&place arbeiten?
Vielen Dank für deine Rückmeldung hierzu! VG [Diese Nachricht wurde von lodonnel am 06. Feb. 2019 editiert.] [Diese Nachricht wurde von lodonnel am 07. Feb. 2019 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. Feb. 2019 11:33 <-- editieren / zitieren --> Unities abgeben: Nur für Simon91
Hallo lodonnel, Zitat: kann EIN pick&place in ein Regal ein- und auslagern?
ja...kleines Beispiel anbei Zitat: - das müsste doch so funktionieren oder? Tut es aber einfach nicht, egal ob in Eingang/Ausgang Heck/Bug des nachgelagerten Pick&Place packe... Es passiert nichts.
am Besten zwei Punkte beachten. (1) was soll passieren (das ist der Inhalt der methode) (2) wann (und wo) soll passieren (das ist der Event für die methode) dein Ansatz ist gut. Nur durch was soll die Eingang- oder Ausgangsteuerung aktiviert werden, wenn noch kein BE auf dem nachgelagerten Pick&Place ist.... 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 |
lodonnel Mitglied
Beiträge: 3 Registriert: 06.02.2019
|
erstellt am: 07. Feb. 2019 18:11 <-- editieren / zitieren --> Unities abgeben: Nur für Simon91
Hallo Nadin, vielen Dank für deine Info und Beispiel. Wenn ich das richtig sehe, dann ist das Beispiel ja sogar für beide meiner Fragen relevant :-) Deine rhetorische Frage war super, ich dachte eine Eingangssteuerung könnte eben genau das bewirken, dass in den Baustein etwas rein kommt... 2 Fragen habe ich zu deinem Code: 1) Wieso benutzt du 2 init-Methoden in dem Beispiel? "Für mich" würde die "M_InitStore" genügen. Sie wird halt direkt aufgerufen und steht somit in Warteposition, bis das Lager voll ist. Wieso also muss man eine weitere "init" erstellen, die diese doch nur aufruft? (Ich habe init Methoden bisher auch nur benutzt um Fahrzeuge oder Container zu platzieren, nicht für Methodenaufrufe... ) 2) "&" vor den Methoden ist ja der sog. Reference-Operator - auf nicht programmiererdeutsch: Warum muss ich den verwenden? Und wieso kann ich meinen Store nicht direkt aufrufen, sondern muss es über "current." machen? Ich habe doch nur einen, den ich mit Namen doch innerhalb meines Netzwerkes aufrufen kann, nicht? Ach und Nachtrag, Nr. 3) Das Argument (0) bei Methcall heißt doch lediglich, dass die Methode direkt, also nach 0 Sekunden aufgerufen wird, oder? Vielen lieben Dank Dir! [Diese Nachricht wurde von lodonnel am 07. Feb. 2019 editiert.]
[Diese Nachricht wurde von lodonnel am 07. Feb. 2019 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: 08. Feb. 2019 00:48 <-- editieren / zitieren --> Unities abgeben: Nur für Simon91
Zu (1) "Init", "Reset" wie auch "EndSim" sind vordefinierte Namen. In diesem Example wird "M_InitStore" nochmals aus einer anderen Methode aufgerufen. Ist der Inhalt aus "M_InitStore" in "Init", dann würde Init während der Simulation nochmal ausgeführt werden. Wie du schon schreibst, nimmt "Init"-Methode auch weitere Einstellungen vor. Deshalb ausgelagert. Meist sind Methoden "M_InitStore" und "M_storeOut" eine Methode. Diese würde sich dann selbst zum Ende aufrufen. Aber alles eine Sache von Vorlieben, Programmiererfahrung und Übersicht. Zu (2) &(Methode) bzw. &(Variable) ist der Verweisoperator. Mithilfe von &(...) wird die Ausführung der Methode selbst nicht unterbrochen. Workflow mit &: Methode1 ist fertig --> dann erst die Methode2 (nach 0 Sekunden aufgerufen) ausführen. Workflow ohne: Methode1 unterbrechen --> Methode2 ausführen --> rest von Methode1
Zu "current." es zeigt mir, dass es keine interne Variable ist...(schön farbig)
------------------ 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 |
lodonnel Mitglied
Beiträge: 3 Registriert: 06.02.2019
|
erstellt am: 28. Feb. 2019 18:29 <-- editieren / zitieren --> Unities abgeben: Nur für Simon91
EDITEDIT: Hallo Nadin, also das hier geschilderte Problem ist tatsächlich nicht mehr sehr gravierend für mein Modell, ich habe einen funktionierenden Ausweg gefunden. Da ich nicht weiß, ob ich an anderer Stelle nochmal einen Rat benötigen könnte, ziehe ich die Frage mal zurück :-) VG Hallo Nadin,
deine Hilfe letztes Mal war super - danke! Ich mache auf jeden Fall Fortschritte und nähere mich meinem Ziel an. Allerdings beschäftigt mich jetzt eine "Syntax-Sache", die doch nicht so schwer sein kann. Ich will die Auslagerungen aus einem Regal gezielt über eine Tabelle durchführen. In der Tabelle stehen die Objekte, z.B. ".MUs.Ersatzteil" Jetzt habe ich die entsprechende Methode wie folgt geschrieben: if @.lager1[i,j] = Tabelle[1,1] then @.lager1[i,j].move (Station); else i und j sind natürlich Variablen für meine Suche. Das Problem liegt an dem "@" - wenn ich damit arbeite, kommt immer der Fehler "Ein void kann keine Methode Lager1 empfangen". Ich bekomme das alternativ über Attributsteuerung oder "if lager1[i,1].inhalt.name = ... " hin - aber nicht über das Ansprechen des MUs, was eigentlich doch das einfachste wäre?! Ich mache bestimmt nen total dummen Fehler.. vielleicht kannst du mir ja helfen oder einen Hinweis geben... EDIT: so kommt kein fehler, aber es wird auch nichts ausgelagert... if lager1[i,j].BE = Tabelle[1,1] then lager1[i,1].inhalt.move (Station); else [Diese Nachricht wurde von lodonnel am 28. Feb. 2019 editiert.]
[Diese Nachricht wurde von lodonnel am 04. Mrz. 2019 editiert.] [Diese Nachricht wurde von lodonnel am 04. Mrz. 2019 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: 04. Mrz. 2019 12:26 <-- editieren / zitieren --> Unities abgeben: Nur für Simon91
hier ist ein schönes Beispiel von Herr Bangsow für die Auslagerung aus einem Lager. 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 |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|