Autor
|
Thema: Auslagern aus Puffer steuern (2969 mal gelesen)
|
Zwisto Mitglied
Beiträge: 35 Registriert: 12.10.2012
|
erstellt am: 12. Nov. 2012 13:13 <-- editieren / zitieren --> Unities abgeben:
Hallo Community, ich habe folgendes Problem zu lösen: Aus einem Puffer soll quasi auf Anfrage abgerufen werden, sobald an einer Bearbeitungsstation Material verbraucht wird. Ich hab mir überlegt, dass ganze zu lösen indem ich immer wen Material auf der Bearbeitungsstation eintrifft, der Ausgang des Puffers geöffnet wird. (wird in der init Methode blockiert) Darüberhinaus habe ich eine Warteschlange erstellt in die Einträge geschrieben werden sobald Teile auf die Bearbeitungsstation umlagern. Nun dachte ich mir das ich eine Methode schreibe in der ich festlege, dass solange Einträge in der Warteschlange vorhanden sind, der Ausgang des Puffers geöffnet wird. Das Problem hierbei ist, dass ich gerne hätte das pro Eintrag lediglich ein einziges Fördergut aus dem Puffer umgelagert wird und genau ein Eintrag aus der Warteschlange entfernt wird. Meine Frage ist, ob es einen Befehl gibt, mit dem ich sagen kann das nur das erste Teil im Puffer umgelagert wird (und nur wenn Einträge in der Warteschlange vorhanden sind) Grüße Zwisto Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Deadsim Mitglied
Beiträge: 6 Registriert: 09.11.2012 Plant Simulation 10.1.1
|
erstellt am: 12. Nov. 2012 14:35 <-- editieren / zitieren --> Unities abgeben: Nur für Zwisto
Ich erkenne hier dein echtes Problem nicht. Du rufst mit Warteschlange.Dim ab, ob noch Teile in der Liste sind. Wenn ja dann lagerst du ein Teil um. Wenn nicht, dann eben nicht. is do while Warteschlange.Dim > 0 loop Puffer.umlagern Was auch immer du mit dem Teil machen willst := Warteschlange.entnehmen end; end;
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Zwisto Mitglied
Beiträge: 35 Registriert: 12.10.2012
|
erstellt am: 12. Nov. 2012 14:57 <-- editieren / zitieren --> Unities abgeben:
Danke für die Antwort. Problem ist, dass dann der Ausgang des Puffers offen bleibt und dadurch mehr Teile umgelagert werden als sollen... Ich habe es bisher nicht geschafft das pro Eintrag auch nur genau ein Fördergut weiter gegeben wird, der Puffer die Methode umlagern nicht kennt. Was meinst du mit " Was auch immer du mit dem Teil machen willst := Warteschlange.entnehmen" ? Grüße Zwisto [Diese Nachricht wurde von Zwisto am 12. Nov. 2012 editiert.] [Diese Nachricht wurde von Zwisto am 12. Nov. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bon Simul Mitglied Simulant
Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 12. Nov. 2012 15:36 <-- editieren / zitieren --> Unities abgeben: Nur für Zwisto
Zitat:
Ich habe es bisher nicht geschafft das pro Eintrag auch nur genau ein Fördergut weiter gegeben wird, der Puffer die Methode umlagern nicht kennt.
Versuchen Sie es mit:
Code:
puffer.inhalt.umlagern(ziel); --genau ein teil
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Zwisto Mitglied
Beiträge: 35 Registriert: 12.10.2012
|
erstellt am: 12. Nov. 2012 16:14 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank! Das funktioniert, allerdings hätte ich gern das ein Werker das Teil zur nächsten Station bringt und es nicht direkt umgelagert wird. Hab bisher aber leider keine Methode gefunden, die da sagt, "gehe los" Grüße Zwisto Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bon Simul Mitglied Simulant
Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 12. Nov. 2012 16:44 <-- editieren / zitieren --> Unities abgeben: Nur für Zwisto
Das läuft über das Ausgangsverhalten Teil wegtragen. Wenn Sie eine Ausgangssteuerung im Puffer definieren (keine Kante), dann wird der Werker erst mit Aufruf von @.umlagern gerufen. Wenn Sie davor Ihre Bedingung definieren (warteschlange.yDim > 0 und zielstation.belegt und noch kein Job unterwegs), sollte er entsprechend warten. Ansonsten Hilfe: Werker --> Methode geheZu Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Zwisto Mitglied
Beiträge: 35 Registriert: 12.10.2012
|
erstellt am: 12. Nov. 2012 18:26 <-- editieren / zitieren --> Unities abgeben:
Problem ist, dass momentan überhaupt kein Werker gerufen wird. Aktuell entsperre ich den Ausgang durch eine Methode einer anderen Station. Code:
while Abruf.Dim > 0 loop LagerKLT_voll.AusgangGesperrt := false; LagerKLT_voll.inhalt.umlagern(Reader); Abruf.entnehmen; end; LagerKLT_voll.AusgangGesperrt := true
Habe daher auch gar keine Ausgangsteuerung beim Puffer (LagerKLT_voll). Nach etwas rumprobieren glaube ich das es am klügsten wäre die Methode zu splitten und via der Puffer Ausgangssteuerung den in der Liste Abruf einen Eintrag zu entnehmen und den Ausgang nochmals zu sperren, nachdem via Werker umgelagert wurde. Habe aber keine Lösung gefunden, entweder kommt kein Werker der umlagert, es wird direkt auf die nächte Station umgelagert oder der Ausgang bleibt gesperrt... Grüße Zwisto [Diese Nachricht wurde von Zwisto am 12. Nov. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bon Simul Mitglied Simulant
Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 13. Nov. 2012 08:31 <-- editieren / zitieren --> Unities abgeben: Nur für Zwisto
Das ist von der Ferne aus schwierig zu beurteilen. Ich würde es als reine Ziehen-Steuerung modellieren: Wenn alle Bedingungen erfüllt sind, zieht sich die verbrauchende Station ein Teil aus dem Puffer. Das kann man gut über die Einganssteuerung der auslösenden Station erledigen. Wenn es der Werker transportieren soll, dann lagern Sie das zu transportierende Teil auf einen speziellen Platz um (Pick-Bereich) und verbinden die Stationen (Pick-Bereich- Reader) mit dem "Werker-Standard-Kram" (Arbeitsplätze, Fußwege, Werkerpool). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Zwisto Mitglied
Beiträge: 35 Registriert: 12.10.2012
|
erstellt am: 13. Nov. 2012 15:56 <-- editieren / zitieren --> Unities abgeben:
|