Autor
|
Thema: Problem mit Waituntil (3963 mal gelesen)
|
VS-Simulator Mitglied Doktorand
Beiträge: 75 Registriert: 20.02.2008 Plant Simulation 8.2
|
erstellt am: 22. Apr. 2008 11:26 <-- editieren / zitieren --> Unities abgeben:
Hallo, habe nachfolgende Methode mit Waituntil Schleife. Habe jedoch das Problem, dass die Methode einfach nicht ausgeführt wird. Könnt Ihr mir weiterhelfen wo der Fehler liegt? DANKE! is do -- wait until all parts are available and the assembly -- station is free Waituntil Pf_Magnethülse.AnzahlBEStuecke > 0 and Pf_Magnetkern.AnzahlBEStuecke > 0 prio 1; -- create a new main part on the assembly station .BEs.Magnet.erzeugen(Montagestation); -- assemble all parts to the main part Magnethülse.Inhalt.move(Montagestation.Inhalt); Magnetkern.Inhalt.move(Montagestation.Inhalt); -- starts method execution again self.methcall(1); end;
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LaBonita Mitglied Dipl.-Math.
Beiträge: 151 Registriert: 26.07.2007 eM-Plant 7.5 bis 8.1 VB Java C#
|
erstellt am: 22. Apr. 2008 11:43 <-- editieren / zitieren --> Unities abgeben: Nur für VS-Simulator
Hallo VS-Simulator, prinzipiell sehe ich zwei Probleme, die auftreten können: 1) Initierst Du von irgendwoher den Aufruf der Methode zum ersten Mal? Ansonsten wird sie sicherlich nie ausgeführt werden. Erst nach einem ersten Aufruf ruft sich die Methode rekursiv immer wieder neu auf. 2) Wird die Bedingung der Waituntil Schleife jemals erfüllt? Ist die Bedingung nie erfüllt, wird auch der Rest der Methode nie ausgeführt. Außerdem kann ein nicht valides move auch zu Problemem führen. Ein move wird nur dann ausgeführt, wenn das Ziel auch den Platz dafür bereit stellt. Ist das nicht der Fall, wird das Objekt nicht verschoben, es wird jedoch kein Fehler gemeldet. Vielleicht mal prüfen und dann schauen, was geht. Gruß, Ortrun Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VS-Simulator Mitglied Doktorand
Beiträge: 75 Registriert: 20.02.2008 Plant Simulation 8.2
|
erstellt am: 22. Apr. 2008 12:45 <-- editieren / zitieren --> Unities abgeben:
Wie kann ich den am geschicktesten die Methode einmal zu Beginn aufrufen lassen? Trigger? Habe diese Waituntil Schleife versucht für folgende Problematik zu nutzen. Wisst Ihr vielleicht eine besser Lösung: Ich möchte eine Montagestation programmieren bei der die Bearbeitungszeit 10min ist jedoch alle 10sek. ein Teil fertig ist, da die Montagestation mehrere Teile aufnehmen kann. Der vorgegebene Montagebaustein kann doch nur ein Teil aufnehmen oder? Habe daher gedacht eine Parallelstation zu programmieren, welche mehrere Teile aufnimmt und im Anschluss je ein neues BE erzeugt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LaBonita Mitglied Dipl.-Math.
Beiträge: 151 Registriert: 26.07.2007 eM-Plant 7.5 bis 8.1 VB Java C#
|
erstellt am: 22. Apr. 2008 15:15 <-- editieren / zitieren --> Unities abgeben: Nur für VS-Simulator
Hallo VS-Simulator, für so etwas verwende ich i.d.R. die Init Methode. Das Problem mit Deiner Montagestation habe ich noch nicht so ganz kappiert... Möchtest Du: a) parallel mehrere Teile bearbeiten, die jeweils 10 Minuten bearbeitet werden und dann weiter transportiert werden sollen? Das ist ne Parallelstation, mit entsprechend vielen Plätzen, damit alle 10 Sekunden ein Teil fertig wird. b) aus einem Teil innerhalb von 10 Minuten alle 10 Sekunden ein neues Teil gemacht bekommen? Geht evtl. mit der Demontagestation - müßte ich mir aber auch erst im Detail anschauen. c) parallel mehrere Teile bearbeiten, die jeweils 10 Minuten bearbeitet werden und dann zu etwas neuem werden, das dann weiter transportiert werden soll? Das ist ne Parallelstation, mit entsprechend vielen Plätzen, damit alle 10 Sekunden ein Teil fertig wird. Die Änderung würde ich vermutlich über ein Attribut und ggf. eine Änderung des Icons machen. Hab ich mit irgendetwas Dein Problem getroffen??? Gruß, Ortrun Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VS-Simulator Mitglied Doktorand
Beiträge: 75 Registriert: 20.02.2008 Plant Simulation 8.2
|
erstellt am: 22. Apr. 2008 15:20 <-- editieren / zitieren --> Unities abgeben:
Deine Beschreibung c) trifft es am ehesten. Es soll so sein, dass aus zwei Puffern zwei Teile an eine Bearbeitungsstation gegeben werden. Diese werden dann 10 Minuten bearbeitet und es entsteht dann ein neues Teil. Die weitergabe der Vorteile an die Berabeitungsstation erfolgt alle 10 Sekunden. Aufgrund der parallelen Stationen kommt so bei der Bearbeitungssation alle 10 Sek ein neues Teil heraus. Habe dies versucht mit der ganz oben beschriebenen Methode zu realisiern. Funktioniert aber nicht so ganz. Hättest du einen anderen Vorschlag? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LaBonita Mitglied Dipl.-Math.
Beiträge: 151 Registriert: 26.07.2007 eM-Plant 7.5 bis 8.1 VB Java C#
|
erstellt am: 22. Apr. 2008 17:53 <-- editieren / zitieren --> Unities abgeben: Nur für VS-Simulator
Hallo VS-Simulator, würde es Dir helfen, die Teile vorher in einem Puffer zusammen zu führen (z.B. auf eine Palette) und dann an eine Parallelstation weiter zugeben. Dort per Austrittsmethode die Palette ggf. vernichten und ein neues Element erzeugen. Evtl. auch die Palette als neues Element verwenden und die aufgeladenen Teile dann nach dem Prozess vernichten - hier ist die Datenhaltung immer ganz wichtig. Wenn Objekt weg, dann alle damit verbundenen Informationen, die man vorher nicht gespeichert hat, auch... Gruß, Ortrun Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VS-Simulator Mitglied Doktorand
Beiträge: 75 Registriert: 20.02.2008 Plant Simulation 8.2
|
erstellt am: 24. Apr. 2008 12:19 <-- editieren / zitieren --> Unities abgeben:
Möchte nun so vorgehen, wie im Screenshot anbei beschrieben, dass wenn in beiden Puffern Teile vorhanden sind und die Bearbeitungsstation leer ist (bzw. freie Plätze hat) soll ein Ladungsträger in der Bearbeitungsstation erzeugt werden und es soll je ein Teil aus dem Puffer darauf gelagert werden. Habe dies auch bereits in der Methode programmiert jedoch funktioniert es nicht korrekt. Seht ihr den Fehler? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SimMaster Mitglied
Beiträge: 2 Registriert: 24.04.2008
|
erstellt am: 24. Apr. 2008 13:23 <-- editieren / zitieren --> Unities abgeben: Nur für VS-Simulator
|
VS-Simulator Mitglied Doktorand
Beiträge: 75 Registriert: 20.02.2008 Plant Simulation 8.2
|
erstellt am: 24. Apr. 2008 13:40 <-- editieren / zitieren --> Unities abgeben:
Es werden die Bedingungen bei Waituntil nicht korrekt betrachtet. Es wird bereits der Ladungsträger (Magnet_DMAX oder Magnet_MAN)erzeugt, obwohl nur in einem Puffer Teile sind und der andere leer ist. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VS-Simulator Mitglied Doktorand
Beiträge: 75 Registriert: 20.02.2008 Plant Simulation 8.2
|
erstellt am: 29. Apr. 2008 11:20 <-- editieren / zitieren --> Unities abgeben:
Hallo, habe das ganze nochmals überprüft und es wird nun korrekt der Ladungsträger in der Bearbeitungsstation erzeugt und gleichzeitig von jedem Puffer die Teile umgelagert. Ich hab nur noch nachfolgende Probleme: - Nach erzeugen des Ladungsträger und des aufladens der Teile wird der ladungsträger direkt an den nachfolgenden Puffer abgegeben ohne die Bearbeitungszeit zu beachten. Wie kann ich dies ändern?? - Was kann ich tun, dass in den nachfolgenden Stationen nur noch das Icon des Ladungsträgers und nicht auch noch der beinhaltenden Teile angezeigt wird? Vielen Dank für die tolle Unterstützung im Forum! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VS-Simulator Mitglied Doktorand
Beiträge: 75 Registriert: 20.02.2008 Plant Simulation 8.2
|
erstellt am: 06. Mai. 2008 10:03 <-- editieren / zitieren --> Unities abgeben:
|
LaBonita Mitglied Dipl.-Math.
Beiträge: 151 Registriert: 26.07.2007 eM-Plant 7.5 bis 8.1 VB Java C#
|
erstellt am: 07. Mai. 2008 12:22 <-- editieren / zitieren --> Unities abgeben: Nur für VS-Simulator
Hallo VS-Simulator, für den Fall, dass es noch keine Lösung gibt: Zitat: - Nach erzeugen des Ladungsträger und des aufladens der Teile wird der ladungsträger direkt an den nachfolgenden Puffer abgegeben ohne die Bearbeitungszeit zu beachten. Wie kann ich dies ändern??
Einen Dummy-Platz erstellen, auf dem das Teil erzeugt wird und von diesm aus umlagern (Methode move), dann wird auch die gesetzte Bearbeitungszeit beachtet. Zitat: - Was kann ich tun, dass in den nachfolgenden Stationen nur noch das Icon des Ladungsträgers und nicht auch noch der beinhaltenden Teile angezeigt wird?
Ein Icon erstellen, in dem es keine visuelle Verknüpfung zur Ladung (also ohne Animationspunkt) gibt und beim Verlassen der Station das Icon entsprechend setzen. Gruß, Ortrun Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VS-Simulator Mitglied Doktorand
Beiträge: 75 Registriert: 20.02.2008 Plant Simulation 8.2
|
erstellt am: 08. Mai. 2008 10:38 <-- editieren / zitieren --> Unities abgeben:
|