|
Autor
|
Thema: BE's nochmals in vorgelagerte Prozesse einschleusen (1179 mal gelesen)
|
Schippo Mitglied

 Beiträge: 17 Registriert: 11.09.2013
|
erstellt am: 20. Sep. 2013 17:40 <-- editieren / zitieren --> Unities abgeben:         
Servus liebe Plant Simulation Community, ich hätte da ein Frage bezüglich Attribute während des Simulationslaufs setzen. Problem : Meine Prozesskette besteht aus mehreren Einzelstationen vor denen jeweil Puffer platziert sind. Angenommen meine Kette besteht aus 8 Stationen. Über den Prozess laufen die unterschiedlichsten Teile. Am Ende des achten Prozesses soll ein bestimmtes Teil nochmals durch den zweiten Prozess der Kette laufen. Deshalb, müsste doch nach dem achten Prozess ein Attribut diesem Teil mitgegeben werden, oder etwas ähnliches, welches am zweiten Prozess nochmals abgefragt wird. Beim zweiten Durchlauf des Prozesses soll dann das Teil ausgeschleust werden. Ist dies möglich?? Wäre es möglich gleich am Anfang der Simulation diesem Produkt ein Attribut mitzugeben, welches dann beim zweitmaligen Durchlaufen des Prozesses abgefragt wird????? Oder wie könnte man das Problem lößen? Erschwerend kommt noch dazu, dass das Teil beim zweiten Durchlauf der Station eine andere Bearbeitungs- und Rüstzeit aufweist, was ich allerdings gerne in die Methode reinschreiben würde, da ich in der der Einzelstation direkt zugewiesenen Rüst- und Bearbeitungszeiten (per Liste), kein gesondertes Attribut anhängen kann.... Wie könnte so ein Programmcode aussehen? Ich bin noch ein Anfänger was SimTalk angehet.
In einem schoneinmal ähnlich erstellten Thema habe ich etwas dazu gelesen nur kann ich es nicht mehr finden.. Über Tipps wäre ich dankbar. Grüße Schippo 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: 24. Sep. 2013 08:20 <-- editieren / zitieren --> Unities abgeben:          Nur für Schippo
Es sollte dafür eigentlich ein zusätzliches benutzerdefiniertes Attribut im Fördergut ausreichen (z.B. Durchlauf, integer, Anfangswert 1). Das können Sie in einer Methode nach Station 8 abfragen und evtl. neu setzen: Code:
if @.name="xxx" and @.durchlauf=1 then @.umlagern(zurück_puffer);--zurück zum zweiten Durchlauf @.durchlauf:=@.durchlauf+1; elseif @.name="xxx" and durchlauf=2 then -- nach dem zweiten Durchlauf ausschleusen @.umlagern(ausschleus_station); else @.umlagern; end;
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Schippo Mitglied

 Beiträge: 17 Registriert: 11.09.2013
|
erstellt am: 25. Sep. 2013 11:46 <-- editieren / zitieren --> Unities abgeben:         
Hallo Bon Simul, vielen Dank für die Antwort. Es hat wunderbar geklappt, nur habe ich leider noch einen wichtigen Punkt außer Acht gelassen. Es kann durchaus vorkommen, dass zwei identische BE-Typen hintereinander im Puffer vor der Maschine aufeinander treffen, das eine welches vom achten Prozess wieder zum zweiten zurück gekommen ist (mit der oben beschriebenen Methode), sowie eines welches von der Quelle erzeugt wurde und das erste mal "ansteht" vor dem Prozess. Das Problem ist nun, dass das Teil welches das zweite Mal durch den Prozess wandert eine andere Bearbeitungs- und Rüstzeit hat als jenes welches das erste Mal kommt. Man kann ja nun in der dargestellten Methode nun die Rüst-und Bearbeitungszeiten hinzufügen. is do if @.name="xx" and @.durchlauf=1 then @.umlagern(Puffer1);--weiterlaufen @.durchlauf:=@.durchlauf+1; Einzelstation.BearbeitungsZeit:=7200; Einzelstation.RüstZeit:=14400; elseif @.name="xx" and @.durchlauf=2 then -- (Verlassen des Prozesses beim 2ten Durchlauf) @.umlagern(Lager); else @.umlagern(Puffer1); end; end; Nun ist es so, sind andere Teile zuvor über den Prozess gelaufen funktioniert das auch, nur eben nicht wenn identische Teile hintereinander stehen. Für z.B. das wiederkehrende wird gerüstet und für das dahinter wartende nicht, obwohl dies der Fall sein müsste. Liegt wahrscheinlich daran dass das Rüsten vom BE-Namen abhängig in der Einzelstation hinterlegt ist, oder? Meine Frage deshalb. Kann ich mit einer Eingangsmethode (wie sollte diese aussehen???? verschiedenes probiert funktioniert nur nicht!) der Maschine erklären, dass wenn diese beiden Teile hintereinander stehen umgerüstet werden muss???? Zur Info, das Teil welches das erste Mal bearbeitet wird zieht seine Bearbeitungs- und Rüstzeit aus einer Liste welche der Maschine hinterlegt ist (PlantSim Tabelle), das wiederkehrende aus einer Methode. Die oben dargestellte Methode hab ich als Ausgangssteuerung dieser Maschine hinterlegt. Grüße Schippo 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: 25. Sep. 2013 13:20 <-- editieren / zitieren --> Unities abgeben:          Nur für Schippo
Das Einfachste ist vielleicht, die Teile für die zweite Runde umzubenennen. Dann können Sie für die Teile der zweiten Runde die Bearbeitungs- und Rüstzeiten auch in der Tabelle hinterlegen. Code:
@.name:=@.name+"_1";
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Schippo Mitglied

 Beiträge: 17 Registriert: 11.09.2013
|
erstellt am: 13. Okt. 2013 21:19 <-- editieren / zitieren --> Unities abgeben:         
Hallo Bon Simul, ich hätte nun nochmals eine Frage zum oben dargestellten Code (dritter Beitrag). Es funktioniert alles soweit, nur ist es nun so, dass über diese Maschine auch noch andere Teile zwei mal drüberlaufen und beim zweiten mal auch woanders hin ausgeschleust werden müssen. Bekomm ich diese Teile analog zum obern Code noch in die Methode??? Ich habe es versucht, bloss wie soll dies funktionieren?? Ich müsste diese anderen Teile auch in dieser einen Ausgangsmethode wie das erste Abfragen, da sich mein Simulationsmodell vom Aufbau kaum ändern lässt. Beste Grüße Schippo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| | Globaler Experte und Ingenieur für Verpackungen in der Chemischen Industrie (m/w/d) | Unseren Industrieruß sieht man nicht sofort und doch steckt er fast überall drin ? in Reifen, die Sie sicher ans Ziel bringen, im Smartphone, das Sie täglich in der Hand halten, in der Farbe, die Ihr Zuhause lebendig macht oder in Batterien, die Energie liefern. Ohne ihn würde das moderne Leben stillstehen. Was man bei uns aber sofort sieht: Wir investieren in Sie. In Ihre Entwicklung, Ihre Perspektiven und Ihre Zukunft.... | | Anzeige ansehen | Feste Anstellung |
|
Bon Simul Mitglied Simulant
   
 Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 14. Okt. 2013 09:49 <-- editieren / zitieren --> Unities abgeben:          Nur für Schippo
In dem Fall müssten Sie mehr elseif- Zweige einfügen: Code:
if @.name="xx1" and @.durchlauf=1 then @.umlagern(zurück_puffer);--zurück zum zweiten Durchlauf @.durchlauf:=@.durchlauf+1; elseif @.name="xx2" and @.durchlauf=1 then @.umlagern(zurück_puffer);--zurück zum zweiten Durchlauf @.durchlauf:=@.durchlauf+1; elseif @.name="xx1" and durchlauf=2 then -- nach dem zweiten Durchlauf ausschleusen @.umlagern(ausschleus_station1);
elseif @.name="xx2" and durchlauf=2 then -- nach dem zweiten Durchlauf ausschleusen @.umlagern(ausschleus_station2); else @.umlagern; end;
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |