Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  Falsche Zuordnung Station und Bearbeitungszeit bei einer Werkstattfertigung

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:  Falsche Zuordnung Station und Bearbeitungszeit bei einer Werkstattfertigung (1093 mal gelesen)
jofu04
Mitglied
Student

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

Beiträge: 3
Registriert: 23.02.2018

erstellt am: 23. Feb. 2018 15:56    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

Hallo liebes Forum,
ich bin absoluter Neuling in Plant Simulation und möchte im Zuge meiner Masterarbeit das Abbild einer Werkstattfertigung simulieren. Dabei ist eine Frage aufgetreten, wofür ich zwar eine Idee habe, wie diese gelöst werden kann aber mir das Wissen fehlt es entsprechend in Plant Simulation umsetzen zu können.

Soweit habe ich das Grundgerüst der Fertigung aufgebaut. Da die Produktvarianten zu unterschiedlich sind, erfolgt die Verbindung der Bearbeitungsstationen nicht über Kanten, sondern wird mittels Methoden gesteuert. Dazu habe ich mich an der Hilfe des Programms orientiert und eine beispielhafte Lieferliste und die beispielhafte Arbeitspläne in das Modell integriert. Über eine Ausgangssteuerung an der Quelle und den einzelnen Bearbeitungsstationen werden die Produkte zur nächsten Bearbeitungsstation umgelagert. Dies erfolgt anhand des Attributs "PositionImArbeitsplan", welches nach jeder erfolgreichen Bearbeitung +1 addiert wird. Dadurch werden die Produkte entsprechend dem Arbeitsplan durch die Fertigung geschleust. Soweit so gut.

Mein Problem tritt nun bei den zugehörigen Bearbeitungszeiten auf, die im Arbeitsplan hinterlegt sind. Nach den möglichen Methoden aus der Hilfe ...

... als Eingangssteuerung einer Bearbeitungsstation,

-> time
var TeileTyp := @.TeileTyp
var Station := ?
var Arbeitsplan := root.Arbeitsplan["Arbeitsschritte", TeileTyp]
result := Arbeitsplan["Bearbeitungszeit",Station]

... oder als Formel/Methode bei der Bearbeitungszeit einer Bearbeitungsstation

root.Arbeitsplan["Arbeitsschritte",@.TeileTyp]["Bearbeitungszeit",Self]

funktioniert es leider nur bedingt, da manche Produkte mehrmals auf der gleichen Bearbeitungsstation bearbeitet werden müssen, die Arbeitsgänge jedoch unterschiedliche Bearbeitungszeiten aufweisen. Mit Hilfe der o.g. Methoden, wird aber immer nur die Bearbeitungszeit der jeweiligen Station ausgewählt, die als erstes in dem Arbeitsplan gelistet ist. Dazu ein beispielhafter Arbeitsplan:

Arbeitsschritt     Bearbeitungszeit
Swei1_6182     5:15:22.4400
Swei1_6182     19:37:20.2200
Anr1_6188       4:49:23.5200
Swei1_6182     1:35:14.3400
...

Im ersten Schritt wird das Produkt auf der Station "Swei1_6182" für ca. 5h bearbeitet. Im zweiten Schritt landet das Produkt zwar wieder auf der gleichen Station wird mit o.g. Methoden jedoch wieder nur ca. 5h anstatt der vorgesehenen ca. 19,5h bearbeitet. Das gleiche passiert im vierten Bearbeitungsschritt.

Meine Idee war es nun die Auswahl der Bearbeitungszeit mit Hilfe des Attributs "PositionImArbeitsplan" in dem Arbeitsplan bestimmen zu können oder einen Zähler laufen zu lassen, der der Station angibt, an welcher Stelle im Arbeitsplan die Bearbeitungszeit entnommen werden soll. Wenn ich das richtig verstehe, würde man dies über ein benutzerdefiniertes Attribut ermöglichen können, welches z.B. "PositionImArbeitsplan" ist. Ich weiß allerdings nicht, wie ich darauf zugreifen kann. Ich habe mehrere Formulierungen ausprobiert, jedoch fehlt mir dazu bisher das Wissen in SimTalk.

Könnte mir bei dieser Fragestellung jemand weiterhelfen oder zumindest einen Tipp geben, wie ich dies am besten umsetzen kann?

Über Eure Hilfe würde ich mich wahnsinnig freuen und allerbesten Dank im Voraus!

Gruß,
jofu04

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

nadin1223
Mitglied
Ing.


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

Beiträge: 938
Registriert: 29.03.2016

erstellt am: 24. Feb. 2018 16:20    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 jofu04 10 Unities + Antwort hilfreich

Hallo jofu04,
kannst mit Tabelle.finden(..) und Tabelle.setzeZeiger probieren.

Oder die Bearbeitungszeiten in Tabelle setzen, und dann so drauf zugreifen

Code:
result := Arbeitsplan["Bearbeitungszeit",Station][1,@.Durchlaufnummer]

vG
Nadin

------------------
„Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.“ Matthew Austern

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

jofu04
Mitglied
Student

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

Beiträge: 3
Registriert: 23.02.2018

erstellt am: 26. Feb. 2018 10:34    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


Arbeitsplan.JPG


Reihenfolgetabelle.JPG


Fehlermeldung.JPG

 
Hallo Nadin,
zunächst einmal vielen, vielen Dank für deine Tipps! Ich habe beides ausprobiert, aber leider nicht den gewünschten Effekt erzielen können.

Variante1:
Über die folgende Methode wollte ich die entsprechende Zelle bei der Bearbeitungszeit ermitteln (die zugehörigen Tabellen sind als Screenshot im Anhang)
-> time
var Arbeitsplan: table
var Station:=?
var Suche: boolean
Arbeitsplan:=root.Arbeitsplan["Arbeitsschritte", @.Materialnummer]
Arbeitsplan.setzeZeiger("Arbeitsschritt",#1)
Suche:=Arbeitsplan.finden({"Arbeitsschritt",*}, Station)
if Suche=true
    result:=Arbeitsplan["Bearbeitungszeit",Arbeitsplan.ZeigerY]
end

Dabei wollte ich einen Zeiger in der Spalte setzen, wo die Bearbeitungsstationen gelistet sind. Benutze ich keinen benutzerdefinierten Index (Zeile 1 anstatt #1), bleibt das Problem das gleiche wie vorher, dass immer die erste Station von oben ausgewählt und die Bearbeitungszeit für die Station immer die gleiche bleibt. Mit einem benutzerdefinierten Index tritt dieses Problem nicht auf aber die erste Station wird dann mit einer Bearbeitungszeit von 0.00 abgearbeitet (was nicht sein soll). Danach werden die Stationen so abgearbeitet wie sie sollen, auch mit den entsprechenden Bearbeitungszeiten. Dies ist der Fall, wenn ein BE für diesen Arbeitsplan erzeugt wird. Sobald aber gleichzeitig zwei oder mehr identische BEs erzeugt werden, die auf den gleichen Arbeitsplan zugreifen, läuft der Zeiger dort weiter, wo das vorherige BE die Zeit abgerufen hat und startet somit nicht für jedes BE am Anfang des Arbeitsplans. Dieses Problem tritt bei dem Standard Index nicht auf, jedoch (wie erwähnt) wird dort immer die erste Station ausgewählt.
Welchen Index sollte ich am besten verwenden? Ist es möglich die Methode so zu modifizieren, damit das Problem behoben wird?

Variante 2:
Die Bearbeitungszeiten habe ich in einer Tabelle hinterlegt, auf die ich zugreifen könnte (siehe Screenshot). Dies habe ich mit folgender Methode versucht:
-> time
var Arbeitsplan: table
var Station:=?
var Suche: boolean
Arbeitsplan:=root.Arbeitsplan["Arbeitsschritte", @.Materialnummer]
result := Arbeitsplan["Bearbeitungszeit",Station][1,@.PositionImArbeitsplan+1]

Dabei war die Idee das benutzerdefinierte Attribut PositionImArbeitsplan (integer) zu verwenden, um die entsprechende Zeile im Arbeitsplan bestimmen zu können, da dieses Attribut im Arbeitsplan die jeweilige Zeile angibt, welche die Nächste Station darstellt. Daher hatte ich gehofft, dies auch für die Bearbeitungszeit nutzen zu können. Es kommt jedoch eine Fehlermeldung (siehe Screenshot: Fehlermeldung). Jedoch verstehe ich nicht was dies bedeutet. Kannst du mir sagen, inwiefern ich deinen Vorschlag falsch angewendet habe? Und hast du eine Idee, wie ich dies beheben könnte?

Gruß,
jofu04

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

jofu04
Mitglied
Student

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

Beiträge: 3
Registriert: 23.02.2018

erstellt am: 26. Feb. 2018 16: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

Das Problem hat sich erledigt. Mit folgender Formel/Methode funktioniert es nun, auf das Attribut zuzugreifen. Es war einfach nur eine Instanz in der letzten Zeile zu viel aufgeführt.

-> time
var Arbeitsplan: table
Arbeitsplan:=root.Arbeitsplan["Arbeitsschritte", @.Materialnummer]
result := Arbeitsplan["Bearbeitungszeit",@.PositionImArbeitsplan+1]

Gruß,
jofu04

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