Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  Transportaufträge auf einmal falsch generiert

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Transportaufträge auf einmal falsch generiert (1261 mal gelesen)
VerzweifelterMasterand
Mitglied



Sehen Sie sich das Profil von VerzweifelterMasterand an!   Senden Sie eine Private Message an VerzweifelterMasterand  Schreiben Sie einen Gästebucheintrag für VerzweifelterMasterand

Beiträge: 11
Registriert: 13.11.2012

Plant Simulation 9

erstellt am: 13. Nov. 2012 13:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Unbenannt.JPG

 
Hallo,

ich schreibe momentan meine Masterarbeit mithilfe von Plant Simulation. Dazu simuliere ich den Materialfluss in einem Unternehmen.

Nun mein Problem:

Ab einem gewissen Zeitpunkt schreiben sich die Transportaufträge falsch. Sprich, es wird nicht der nächste Arbeitsgang (in Subtabelle des Auftrags hinterlegt) abgearbeitet, sondern es wird ein Transportauftrag von Sensor6 zu Sensor6 z.B. generiert. Dies geschieht sodann in einer Endlosschleife, da hierbei die Arbeitsgangnummer immer weiter hochgesetzt wird (irgendwann ist er dann außerhalb der Listendimension, sprich bei Arbeitsgang 6 von 5 oder 10 von 3)

Ich spiele mich damit schon seit fast einer Woche und komme nicht dahinter. Um Hilfe wäre ich sehr dankbar.

Grüße,
Sebastian

Mein Code zum Schreiben des Transportauftrags:

Transportauftragsnr:=Transportauftragsnr+1;

Transportauftragsliste.erzeugeSubliste(Transportauftragsliste.dim+1);

Transportauftragsliste.lesen(Transportauftragsliste.dim).setzeName("Transportauftrag_Nr_" +to_str(Transportauftragsnr));

Transportauftragsliste.lesen(Transportauftragsliste.dim).Spaltenindex:=true;
Transportauftragsliste.lesen(Transportauftragsliste.dim).setzeDatentyp(1,"object");
Transportauftragsliste.lesen(Transportauftragsliste.dim).setzeDatentyp(2,"object");
Transportauftragsliste.lesen(Transportauftragsliste.dim).setzeDatentyp(3,"integer");
Transportauftragsliste.lesen(Transportauftragsliste.dim).setzeDatentyp(4,"object");
Transportauftragsliste.lesen(Transportauftragsliste.dim).setzeDatentyp(5,"integer");
Transportauftragsliste.lesen(Transportauftragsliste.dim).setzeDatentyp(6,"object");

Transportauftragsliste.lesen(Transportauftragsliste.dim)[1,0]:="BE-ID";
Transportauftragsliste.lesen(Transportauftragsliste.dim)[2,0]:="Abholpuffer";
Transportauftragsliste.lesen(Transportauftragsliste.dim)[3,0]:="Abholsensor";
Transportauftragsliste.lesen(Transportauftragsliste.dim)[4,0]:="Zielmaschine";
Transportauftragsliste.lesen(Transportauftragsliste.dim)[5,0]:="Zielsensor";
Transportauftragsliste.lesen(Transportauftragsliste.dim)[6,0]:="Zielpuffer";

--BE-ID
Transportauftragsliste.lesen(Transportauftragsliste.dim)[1,1]:=@; --Abholpuffer
Transportauftragsliste.lesen(Transportauftragsliste.dim)[2,1]:=?;

--Abholpuffer in Sensorliste finden
Sensorliste.ZeigerX:=1;
Sensorliste.ZeigerY:=1;
Sensorliste.finden(?);

--Abholsensor
Transportauftragsliste.lesen(Transportauftragsliste.dim)[3,1]:= Sensorliste[(Sensorliste.ZeigerX-2),Sensorliste.ZeigerY];

--Aktuellen Arbeitsvorgang im Arbeitsplan finden
@.Arbeitsplan.ZeigerX:=1;
@.Arbeitsplan.ZeigerY:=1;
@.Arbeitsplan.finden(@.Arbeitsvorgang);

--Zielmaschine
Transportauftragsliste.lesen(Transportauftragsliste.dim)[4,1]:= @.Arbeitsplan[(@.Arbeitsplan.ZeigerX+1),@.Arbeitsplan.ZeigerY];

--Zielmaschine finden in Sensorliste finden
Sensorliste.ZeigerX:=1;
Sensorliste.ZeigerY:=1;
Sensorliste.finden(Transportauftragsliste.lesen(Transportauftragsliste.dim)[4,1]);

--Zielsensor
Transportauftragsliste.lesen(Transportauftragsliste.dim)[5,1]:= Sensorliste[(Sensorliste.ZeigerX+1),Sensorliste.ZeigerY];

--Zielpuffer
Transportauftragsliste.lesen(Transportauftragsliste.dim)[6,1]:= Sensorliste[(Sensorliste.ZeigerX+2),Sensorliste.ZeigerY];

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

VerzweifelterMasterand
Mitglied



Sehen Sie sich das Profil von VerzweifelterMasterand an!   Senden Sie eine Private Message an VerzweifelterMasterand  Schreiben Sie einen Gästebucheintrag für VerzweifelterMasterand

Beiträge: 11
Registriert: 13.11.2012

Plant Simulation 9

erstellt am: 13. Nov. 2012 13:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich vermute, dass mehrere Aufträge gleichzeitig einen Transportauftrag generieren wollen und dass dann Probleme mit dem anonymen Bezeichner auftreten... kann dass sein?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bon Simul
Mitglied
Simulant


Sehen Sie sich das Profil von Bon Simul an!   Senden Sie eine Private Message an Bon Simul  Schreiben Sie einen Gästebucheintrag für Bon Simul

Beiträge: 1250
Registriert: 08.08.2011

Plant Simulation 10.1, 11 ff Professional

erstellt am: 13. Nov. 2012 13:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für VerzweifelterMasterand 10 Unities + Antwort hilfreich

Sie müssten überprüfen, was gesucht wird (wenn es nicht gefunden wird, bleibt der Zellzeiger auf dem letzten Eintrag stehen).
Das könnte Ihren Fehler verursachen.
Setzen Sie einen Haltepunkt bei
Code:

Sensorliste.finden(Transportauftragsliste.lesen(Transportauftragsliste.dim)[4,1]);


Prüfen Sie den Ausdruck
Code:

Transportauftragsliste.lesen(Transportauftragsliste.dim)[4,1]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

VerzweifelterMasterand
Mitglied



Sehen Sie sich das Profil von VerzweifelterMasterand an!   Senden Sie eine Private Message an VerzweifelterMasterand  Schreiben Sie einen Gästebucheintrag für VerzweifelterMasterand

Beiträge: 11
Registriert: 13.11.2012

Plant Simulation 9

erstellt am: 13. Nov. 2012 15:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke für die schnelle Antwort.

Irgendwie funktioniert das Ganze so wie es soll aber er macht trotzdem auf einmal komische Sachen (es funktioniert 500 Transportaufträge einwandfrei und auf einmal ist dann ein Schnitt drin).

Ich habe normale Puffer mit Kapa 100 verbaut. Dieser wird mit dem Warteschlangen- (FIFO-Prinzip) abgearbeitet. Wenn die Teile in den Puffer gehen schreiben sie nen Transportauftrag.

Soweit alles klar oder? Das müsste ja funktionieren. Ich versuche gerade mögliche Fehlerquellen auszuschließen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

VerzweifelterMasterand
Mitglied



Sehen Sie sich das Profil von VerzweifelterMasterand an!   Senden Sie eine Private Message an VerzweifelterMasterand  Schreiben Sie einen Gästebucheintrag für VerzweifelterMasterand

Beiträge: 11
Registriert: 13.11.2012

Plant Simulation 9

erstellt am: 13. Nov. 2012 15:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Puffer ist nicht blockierend und hat ein Ausgangsverhalten reihum (ist nur mittels Sensor auf einem Weg verbunden - also keine DIREKTE Verbindung). Die Bearbeitungszeit ist 0

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

VerzweifelterMasterand
Mitglied



Sehen Sie sich das Profil von VerzweifelterMasterand an!   Senden Sie eine Private Message an VerzweifelterMasterand  Schreiben Sie einen Gästebucheintrag für VerzweifelterMasterand

Beiträge: 11
Registriert: 13.11.2012

Plant Simulation 9

erstellt am: 14. Nov. 2012 11:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

So, jetzt habe ich das Problem identifiziert.

Die Arbeitsgänge werden richtigerweise hochgesetzt, jedoch beamen sich einige Aufträge einfach aus dem Puffer zur nächsten Station.

Irgendwann ist dann die AG# > der vorhandenen Arbeitsgänge und nichts geht mehr.

Es muss also daran liegen, dass die Transportaufträge nicht konsequent ausgeführt werden, da die Aufträge ja mit dem letzten Transportauftrag zum Ausgang geführt werden sollten.

Was kann ich da machen? Die Transportaufträge stimmen.

Ich kann mir vorstellen dass dies an den Puffern liegt. Die haben ja auch eine Bearbeitungszeit. Werden die dann einfach irgendwo hin umgelagert nach Ablauf dieser? Ich habe die Zeit auf 0 gestellt, die aufträge bleiben jedoch so lange wie immer drin. Evtl. wird der erste rausgeschoben wenn der Puffer voll ist und ein weiterer dazu kommt?!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bon Simul
Mitglied
Simulant


Sehen Sie sich das Profil von Bon Simul an!   Senden Sie eine Private Message an Bon Simul  Schreiben Sie einen Gästebucheintrag für Bon Simul

Beiträge: 1250
Registriert: 08.08.2011

Plant Simulation 10.1, 11 ff Professional

erstellt am: 15. Nov. 2012 15:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für VerzweifelterMasterand 10 Unities + Antwort hilfreich

Etwas stochern im Nebel:
- die Methode umlagern gibt false zurück, wenn es schief gegangen ist, Wenn Sie umlagern verwenden, dann speichern Sie den Rückgabewert in einer Variable und halten die Simulation beim Rückgabewert false an (z.B. Aufruf von debug). --> vielleicht wurde Ihr auftrag gar nicht transportiert
- waituntil-Doppelaufrufe --> Debugger - Suspendierte Methoden anzeigen; Die von Ihnen beschriebenen "beam"-Effekte können durch mehrfach aufgerufene Methoden mit waituntil-Anweisungen verursacht werden

Von allein passiert in PS eigentlich nichts. Die Puffer können es nicht sein.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz