Autor
|
Thema: Work in Progress vor Einzelstation (2594 mal gelesen)
|
Schippo Mitglied
Beiträge: 17 Registriert: 11.09.2013
|
erstellt am: 11. Sep. 2013 09:52 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe Community, im Rahmen meiner Master-Thesis muss ich bzw. darf ich eine Montagelinie im PlantSim abbilden. Ich möchte die DLZ eines spezifischen Teils der Fertigungslinie messen und wie diese sich verhält, über den Zeitraum eines Jahres. Nun zum Problem: Da in die erwähnte Linie noch weitere Teile eingeschleust werden und dies nur in spezifische Einzelstationen des Prozesses, möchte ich den Work in Progress vor den Stationen bestimmen (Gesamte Rüstzeit der Aufträge plus Bearbeitungszeit). Die Produkte die in die Maschinen aus anderen Prozessen eingeschleust werden, werden in Losen gefertigt. Wie mach ich dies nun am geschicktesten??? Ich würde nun Puffer vor den betrachteten Maschinen einbauen in welche Teile aus meiner Hauptquelle sowie weiteren Quellen miteinlaufen. Diese Puffer würde ich nun gerne auslesen. Der Puffer darf jedoch keine Begrenzung haben, dies ist in der Realität nämlich auch nicht der Fall. Über Tipps würde ich mich freuen. Beste 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: 11. Sep. 2013 10:21 <-- editieren / zitieren --> Unities abgeben: Nur für Schippo
Die BEs sammeln entsprechende Statistiken von sich aus. Sehen Sie in den Fördergütern unter statProdArbeitsAnteil, statProdRüstAnteil. Lose können Sie zum Beispiel mit benutzerdefinierten Attributen definieren. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Schippo Mitglied
Beiträge: 17 Registriert: 11.09.2013
|
erstellt am: 01. Okt. 2013 08:35 <-- editieren / zitieren --> Unities abgeben:
Hallo Bon Simul, ich hätte da nochmals eine Frage bezüglich der Auslesung des Arbeitsvorrats in einem Puffer. Ich habe anhand eines kleinen Beispiels mit zwei BEs dieses Vorhaben programmiert, siehe Anhang. Ich tue mich allerdings nun damit schwer, dies für mehrere BEs zu verallgemeinern. Da sich in meinem Puffer durchschnittlich bis zu 50 Komponenten sammeln können, wäre es nur sehr mühsam diese Typen alle in die Methode zu packen.. Ich will aus dem Puffer einfach zu jedem Zeitpunkt der Simulation auslesen können, wie groß der Arbeitsvorrat in diesem Ist (Bearbeitungs- + Rüstzeit der jeweiligen BES aufsummiert..) Diese Daten sind wiederum in Tabellen hinterlegt aus denen gezogen wird. Die Methode Berechnung Bearbeitungszeit habe ich an die Eingangssteuerung des Puffers und der Einzelstation gelegt. Wie bekomm ich mein Problem nun gelösst? Gibt es vielleicht eine besseren Programmiercode? Vielen Dank für die Hilfe! Schippo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Schippo Mitglied
Beiträge: 17 Registriert: 11.09.2013
|
erstellt am: 01. Okt. 2013 09:27 <-- editieren / zitieren --> Unities abgeben:
|
Bon Simul Mitglied Simulant
Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 01. Okt. 2013 17:20 <-- editieren / zitieren --> Unities abgeben: Nur für Schippo
Sie könnten eine Tabelle (stat_tabelle) mit Zeilen-Index zum Zählen /Rechnen verwenden. Tragen Sie in den Zeilen-Index (Spalte 0) alle Teile-Namen ein. Die Namen können Sie dann als Teil der Adresse in der Tabelle verwenden (Zeile). Ein einfaches Zählen könnte dann wie folgt aussehen: Code:
stat_tabelle.löschen; for i:=1 to puffer.anzahlBEs loop stat_tabelle[1,@.name]:=stat_tabelle[1,@.name]+1; next;
Analog können Sie auch die Bearbeitungs- und Rüstzeiten aufaddieren. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Schippo Mitglied
Beiträge: 17 Registriert: 11.09.2013
|
erstellt am: 17. Okt. 2013 21:27 <-- editieren / zitieren --> Unities abgeben:
Hallo, Bon Simul, okay, das mit dem WIP übertragen hat geklappt. Also ich habe eine zentrale Tabelle, welche ich zum zählen verwende. Ich hab es geschafft aus der Tabelle (stat_Tabelle) die gesamten Rüst-und Bearbeitungszeiten welche sich aufgrund der Aufträge im Puffer ergeben aufzuaddieren. Das funktioniert soweit auch. Für das Auswerten des Puffers verwende ich einen Generator welche die Methode alle 15 Stunden auslößt. Jetzt habe ich mir gedacht, ich könnte dem WIP sogar noch einen Betrag in Euro zuordnen. Hierfür habe ich eine neue Tabelle angelegt (HK), in dieser befinden sich die Kosten, z.B. 1,10 Euro (habe den Eurowert als Datentyp Real hinterlegt). Ich schaffe es nun allerdings nicht, nach dem selben Prinzip wie schon bei den Beständen, diese je nach BE-Typ aufaddiert anzeigen zu lassen. (in der Tabelle WIP hab ich in der dritten Spalte auch den Datentyp REal hinterlegt). Ich bekomme die Schleife nicht hin, welche nun ja nicht nur von b:=2 to 3 loop geht, sondern jetzt noch erweitern müsste. Oder brauche ich nochmals eine neue Schleife, bzw. kann ich diese irgendwie in die MEthode noch integrieren. Wie könnte die Schleife aussehen,habs versucht, bekomm als Zahlenwert in der TAbelle WIP jedoch extrem hohe werte raus 223654 z.B., dass kann ja nicht stimmen. BEste Grüße Schippo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Schippo Mitglied
Beiträge: 17 Registriert: 11.09.2013
|
erstellt am: 17. Okt. 2013 21:38 <-- editieren / zitieren --> Unities abgeben:
|
Schippo Mitglied
Beiträge: 17 Registriert: 11.09.2013
|
erstellt am: 17. Okt. 2013 22:15 <-- editieren / zitieren --> Unities abgeben:
... schon erledigt, hatte einen Hänger is i,j:integer; do Puffer.AusgangGesperrt:=true; Puffer.EingangGesperrt:=true; stat_tabelle.löschen; for local n := 1 to Rüsten.yDim loop stat_tabelle[2,Rüsten[1,n]]:=Rüsten[2,n]; next; for local m := 1 to Bearbeiten.yDim loop stat_tabelle[3,Bearbeiten[1,m]]:=Bearbeiten[2,m]; next; for local s := 1 to HK.yDim loop stat_tabelle[4,HK[1,s]]:=HK[2,s]; next; for local s := 1 to HK.yDim loop stat_tabelle[4,HK[1,s]]:=HK[2,s]; next; for i:=1 to puffer.anzahlBEs loop if puffer.be(i)/=void then stat_tabelle[1,puffer.be(i).name]:=stat_tabelle[1,puffer.be(i).name]+1; end; next; j:=wip.yDim+1; for local a:=1 to stat_tabelle.yDim loop wip[1,j]:=wip[1,j]+stat_tabelle[1,a]; for local b:=2 to 3 loop wip[2,j]:=wip[2,j]+ stat_tabelle[1,a]*stat_tabelle[b,a]; next; for local c:=4 to 4 Loop wip[3,j]:=wip[3,j]+ stat_tabelle[1,a]*stat_tabelle[c,a]; next; next; Puffer.AusgangGesperrt:=false; Puffer.EingangGesperrt:=false; end; Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|