| |
 | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: Erstellung einer Ablaufsteuerung (2175 mal gelesen)
|
Mars1 Mitglied Maschbau Student

 Beiträge: 12 Registriert: 02.11.2006
|
erstellt am: 02. Nov. 2006 16:16 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich arbeite mit der Studentenversion von AutoMod. Ich führe im Rahmen einer Diplomarbeit eine Lagerplatzanalyse durch und habe folgendes Problem: Ich habe verschiedene Conveyor Systeme die Durchlaufregale darstellen. Anschließend sollen die eingehenden Paletten von einem Flurförderer abgeholt werden. Erstens sollen die Paletten in der Reihenfolge abgeholt werden, in der sie eintreffen und zweitens soll das Fahrzeug erst zu irgendeinem "Regal" fahren, wenn dort beispielsweise 3 Paletten eingegangen sind. Um eine hilfreiche Antwort wäre ich dankbar. P.S.: Ich habe schon 196 entities verbraucht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rolan Mitglied Konstruktionsingenieur
 
 Beiträge: 179 Registriert: 15.04.2005 AMech / Inventor 2023
|
erstellt am: 03. Nov. 2006 08:48 <-- editieren / zitieren --> Unities abgeben:          Nur für Mars1
Hallo Mars und Willkommen in diesem Forum, das sind ganz grundlegende Dinge, die du da fragst. Prinzipiell ist es so, das auf einem conveyor die fifo-Regel gilt: first in is first out, daher also dort eigentlich keine Schwierigkeit. Deine zweite Frage betrifft die Anwendung von order lists, das sind Warteschleifen, die eine Ausgangsbedingung haben. Das müsstest du unbedingt auch in den Handbüchern nachlesen! Der code sieht im Prinzip so aus: begin P_warten arriving move into c:station1 travel to c:station2 inc V_counter by 1 if V_counter = 3 then begin order 3 loads from OL_wait to continue in case order not filled backorder on OL_wait set V_counter to 0 end travel to c:station3 wait to be ordered on OL_wait send to P_nextprocess end Beste Grüße Roland
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mars1 Mitglied Maschbau Student

 Beiträge: 12 Registriert: 02.11.2006
|
erstellt am: 03. Nov. 2006 14:55 <-- editieren / zitieren --> Unities abgeben:         
Hallo Roland, zunächst einmal vielen Dank für deine Antwort. Es kann durchaus sein, das es sich um Grundlegende dinge handelt, aber ich bin auch erst seit einer Woche mit dem Programm vertraut. Ich habe aber allerdings auch leider nicht die Zeit, da mir die Zeit von der Diplomarbeit davonläuft. Deine Lösungshilfe klappt in soweit, das die Paletten schon im Regal bleiben, bis die Kapa erreicht ist, allerdings fährt das Fahrzeug schon nach der ersten Palette zum conv.sta x und wartet dann dort bis die Kapa erreicht ist und fährt die dann weg. Ich wollte halt, dass das Regal bis zur Kapa vollläuft und erst dann das Fahrzeug aus seiner Parkposition kommt. Es kann ja auch sein (es ist auch so), das zwar in einem Regal zuerst was ankommt, aber ein anderes Regal zuerst seine Kapa erreicht hat. Ich bitte um Nachsicht und um Hilfe ! Gruß Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rolan Mitglied Konstruktionsingenieur
 
 Beiträge: 179 Registriert: 15.04.2005 AMech / Inventor 2023
|
erstellt am: 03. Nov. 2006 15:49 <-- editieren / zitieren --> Unities abgeben:          Nur für Mars1
Hallo Markus, eigentlich sollte der Folgeprozeß erst ansprechen, wenn die gesetzte Kapazität (in dem Fall 3) erreicht ist. Die loads müssten ja am Regalende die Schlange bilden, aber das move into in das pathmoversystem darf erst im Folgeprozeß abgerufen werden. Aber du hast noch andere Möglichkeiten: a) mit einer Lichtschranke, die an der Regalstrecke an der Stelle angebracht ist, wo die letzte load stehenbleibt. Die Ansprechzeit der Lichtschranke muss dann größer sein als wenn eine load nur vorbeifährt. Die timeout-Funktion der Lichtschranke triggert dann den weiteren Ablauf. Dabei Streckenteilungen des conveyors beachten ! b) mit einer Zählvariablen, die bei Überschreitung dann den Folgeprozeß anwirft. Das klingt aber einfacher, als es dann ist. Das mit den grundlegenden Dingen und so soll nur heißen, daß der TEUFEL beim Simulieren wirklich im Wissen um die Befehle / Programmelemente und ihre Bedeutung / Folgen / Eigenschaften steckt! Schau doch vielleicht trotzdem mal nach ? Help und dann den tutorials, oder was die Studiversion so hergibt. Vielleicht hat deine Schule ja auch noch eine Verbindung zum Systemhaus, das wäre GOLD !!! Wert!!! Hoffe das du klarkommen kannst Und schönes WE Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mars1 Mitglied Maschbau Student

 Beiträge: 12 Registriert: 02.11.2006
|
erstellt am: 06. Nov. 2006 08:20 <-- editieren / zitieren --> Unities abgeben:         
Hallo Roland, vielen Dank für deine Mühe. Das Tutorial hatte ich schon durchgemacht, allerdings sind bei sowas nie die Probleme erklärt, die man dann selbst bräuchte. Ich habe nun das move into Pathmover hintendran gelegt, aber er holt die Paletten immer noch noch nach der ersten ab. Ich zeige dir mal wie ich das bis jetzt versucht habe: begin P_Fluor2 arriving if load type = Palette2 then travel to Pfad.cpinfluorlager2 move into Fluorfoerder:sta3 travel to Fluorfoerder:stawait2 inc V_Zaehler2 by 1 if V_Zaehler2 = 3 then begin get R_Seperieren order 3 loads from OL_Wait10 to continue in case order not filled backorder on OL_Wait10 set V_Zaehler2 to 0 end travel to Fluorfoerder.sta4 send to P_Lack2 end begin P_Lack2 arriving move into Pfad.cpoutfluorlager2 wait to be ordered on OL_Wait10 send to P_Lack end Wäre nett, wenn du eine Antwort wüsstest, auch wenn ich ein hartnäckiger Fall bin. Gruß Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rolan Mitglied Konstruktionsingenieur
 
 Beiträge: 179 Registriert: 15.04.2005 AMech / Inventor 2023
|
erstellt am: 06. Nov. 2006 13:13 <-- editieren / zitieren --> Unities abgeben:          Nur für Mars1
Hallo Markus, in der Kürze der Zeit: habe im folgenden einige Anmerkungen an deinen code-Entwurf eingefügt. begin P_Fluor2 arriving if load type = Palette2 then travel to Pfad.cpinfluorlager2 /* was passiert hier mit den anderen load types ? */ move into Fluorfoerder:sta3 travel to Fluorfoerder:stawait2 inc V_Zaehler2 by 1 if V_Zaehler2 = 3 then begin get R_Seperieren /* die Resource wird nur einmal pro 3 loads beansprucht ! */ order 3 loads from OL_Wait10 to continue in case order not filled backorder on OL_Wait10 set V_Zaehler2 to 0 end travel to Fluorfoerder.sta4 /* die folgende Zeile muss !!! an diese Stelle herein ! */ wait to be ordered on OL_Wait10 send to P_Lack2 end begin P_Lack2 arriving move into Pfad.cpoutfluorlager2 wait to be ordered on OL_Wait10 /* Das geht definitiv nicht: dieselbe order list wie im P_Fluor2-Prozess - die vorhergehende Zeile muss weg, damit ist der Prozess P_Lack2 faktisch leer */ send to P_Lack end Ein Tip: Versuche doch, dir die Steuerungs- und Ablaufstruktur durch einen Programm-Ablaufplan zu vergegenwärtigen, so mit Kästchen und Entscheidungsvierecken und Verbindungslinien und das alles... Beste Grüße Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mars1 Mitglied Maschbau Student

 Beiträge: 12 Registriert: 02.11.2006
|
erstellt am: 06. Nov. 2006 15:11 <-- editieren / zitieren --> Unities abgeben:         
Hallo Roland, vielen Dank für deine Mühe. Jetzt klappt es fast genauso wie ich es wollte. Es lag an der falsch positionierten wait to be ordered Zeile. Nur noch eine Sache (hoffe ich). Jetzt ist es noch so, dass der Stapler wartet bis die Kapa voll ist, fährt dann hin u fängt an abzuräumen. Aber wenn jetzt in einem Regal vorher die Kapa erreicht ist, bricht er die Entleerung des vorherigen Regals ab und fängt stattdessen mit der neuen Regalreihe an. Gibt es da nicht irgendwelche prioritäten? Ich dachte, mit dem Befehl " order 3 loads from OL_Wait10 to continue" wäre das abgegolten. Danke für deine Geduld. Gruß Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rolan Mitglied Konstruktionsingenieur
 
 Beiträge: 179 Registriert: 15.04.2005 AMech / Inventor 2023
|
erstellt am: 07. Nov. 2006 10:07 <-- editieren / zitieren --> Unities abgeben:          Nur für Mars1
Hallo Markus, an dieser Stelle wird es IMHO kompliziert: In deinem Modell gibt es mehrere Fahrzeuge, ggf. des gleichen Typs (identisch) mit einer Kap > 1. Weiterhin gibt es für die "Transportaufträge" an diese Fahrzeuge mehrere Abnahme- und ggf. Anlieferungsstellen. Diese Fahrzeuge werden nun über das automatische vehicle und job scheduling zu den entsprechenden Aufträgen gesteuert, und wenn in der Auftragsliste halt ein Auftrag vom Regal nebenan EHER drankommt als der nächste vom selben Regal: Abfahrt für das Fahrzeug. Die Ursache liegt in der diskreten Modellierungsstruktur von AMOD und den hinterlegten Automatismen : next job is next job. Der Lösungsweg hierzu ist meiner Erfahrung nach über das logikgesteuerte vehicle und job scheduling erreichbar: Man muss die Prioritäten setzen. Hinweise wären: - Einzelfahrzeuge mit gleichen Eigenschaften aber unterschiedlichen Namen (dadurch einzeln ansprechbar) - job scheduling (Aufträge genau steuern, "Fremdaufträge" von anderen Regalen "abwehren" - vehicle location selection procedures zum Wegesteuern der Fahrzeuge, wenn mehrere Wegmöglichkeiten bestehen Sorry, wenn das alles so viel aussieht und dabei nicht einfach bloss paar Zeilen Code, aber diese Materie ist IMHO wirklich komplex! Ein Hinweis noch: in dem Zusammenhang muss steuerungstechnisch auch gewährleistet werden, dass die Fahrzeuge beim Abliefern nicht nach der ersten Abgesetzten load wieder losfahren. Weil nämlich dann 1xKap im System frei gemeldet wird. Und das nimmt das System wörtlich... Roland
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mars1 Mitglied Maschbau Student

 Beiträge: 12 Registriert: 02.11.2006
|
erstellt am: 08. Nov. 2006 10:29 <-- editieren / zitieren --> Unities abgeben:         
Hallo Roland, danke für deine Geduld. Jetzt läuft mein Modell so, wie ich mir das ungefähr vorgestellt habe. Ich habe meine Conveyor-Systeme als Regale rausgeschmissen und stattdessen an deren Stelle Queues platziert. Denen gebe ich eine Kapa vor und lasse sie entsprechend Stapeln. das mit dem abholen nach Reihenfolge habe ich einfach so gelöst, das ich entsprechend viele Fahrzeuge wähle und sie mit einer Kapa versehe. Die warten dann erst vor der Abladestation, aber in der richtigen Reihenfolge. Für deine Hilfe bin ich dir sehr dankbar und hoffe, dass ich auch bei evtl. späteren Problemen auf deine kompetente Hilfe zählen kann. Gruß Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |