Autor
|
Thema: Mehrere Rüstvorgänge (4400 mal gelesen)
|
Jochen82 Mitglied
Beiträge: 12 Registriert: 12.05.2012
|
erstellt am: 28. Mai. 2012 16:08 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe bei einer Arbeitsstation mehrer Rüstvorgänge, welche nach einer gewissen Anzahl von teilen erfolgen soll. z.B. Rüsten1 nach 100 Teilen; Rüstzeit 15 Sec Rüsten2 nach 430 Teilen;Rüstzeit 30 Sec Rüsten3 nach 210 Teilen; Rüstzeit 45 Sec usw. Ich habe versucht mit einer Variable die Teile zu zählen und dann nach 100 Stück eine Rüstzeit über eine Methode zu setzen. Plant Simulation rüstet mir jedoch nur genau einmal und kein weiteres mal. Wo liegt mein Fehler hierbei?
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: 29. Mai. 2012 12:31 <-- editieren / zitieren --> Unities abgeben: Nur für Jochen82
Sachlich würde ich ein komplexes Sörungsprofil anstatt Rüsten empfehlen (das würde vom Konzept her besser passen). Wenn Sie so etwas mit Rüsten machen wollen, dann ist ein Rüsten nach einem benutzerdefinierten Attribut die beste Einstellung. Legen Sie in dem Teil ein benutzerdefiniertes Attribut fest, setzen sie dieses nach x Teilen und ändern Sie die Rüstzeit der Maschine, bevor Sie das Teil auf die Maschine umlagern (Ausgangssteuerung Bug Vorgänger oder Heck mit Option "vor Aktionen"). Dann in der Maschine Rüsten - automatisch - Rüsten abhängig von Benutzerdefiniertes Attribut ... Wenn Sie die Standardeinstellung benutzen, dann wird nur gerüstet, wenn ein Teil mit einem anderen Namen die Maschine erreicht (min. einmal, wenn das erste Teil die Maschine erreicht). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jochen82 Mitglied
Beiträge: 12 Registriert: 12.05.2012
|
erstellt am: 29. Mai. 2012 20:06 <-- editieren / zitieren --> Unities abgeben:
Hallo Bon Simulate, ich hatte jetzt diesen Ansatz gewählt. ----------------------------- if counter100=100 then Rotor_assembly.rüstzeit:= 0.000001; --phantom rüsten Rotor_assembly.rüstenFür(.BEs.Fördergut); Rotor_assembly.rüstzeit:= xx.x; -- richtiges rüsten Rotor_assembly.rüstenFür(.Modelle.Linie5.BES.Rotor); counter100:=0; else Rotor_assembly.rüstzeit:=0; end; ---------------------------------------- Es ist zwar nicht so schick, aber es funktioniert. Könntest du deine Variante etwas spezifischer beschreiben, da ich noch nicht so fit in PS bin. Gruß 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: 29. Mai. 2012 22:30 <-- editieren / zitieren --> Unities abgeben: Nur für Jochen82
|
Jochen82 Mitglied
Beiträge: 12 Registriert: 12.05.2012
|
erstellt am: 29. Mai. 2012 23:13 <-- editieren / zitieren --> Unities abgeben:
|
Bon Simul Mitglied Simulant
Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 30. Mai. 2012 15:22 <-- editieren / zitieren --> Unities abgeben: Nur für Jochen82
Das Problem ist, dass das Rüsten "angestoßen" werden muss. Das passiert normalerweise durch das Eintreffen eines BEs mit einem anderen Namen als das vorhergehende. Man kann anstelle dessen auch ein benutzerdefiniertes Attribut angeben. Bei Änderung des Wertes des Attributs wird dann gerüstet. Soweit die Theorie. Erstellen Sie zuerst ein benutzerdefiniertes Attribut in Ihrem Rotor (z.B. rüstIndex, Datentyp integer, erster Wert 0)--> BE --> Blatt Benutzerdefinierte Attribute --> NEU --> usw. In Ihrer Zählmethode (Ausgangssteuerung Bug des Vorgängers von Rotor_assembly) Code:
if counter100=100 then @.rüstIndex:=@.rüstIndex+1; --@ ist der aktuelle Rotor Rotor_assembly.rüstzeit:= xx.x; -- richtiges rüstenend; @.umlagern; --wenn ausgangssteuerung bug
In der Station Rotor_assembly Blatt Rüsten: - automatisch - Rüsten abhängig von: BE-Attribut --> rüstIndex Wenn Sie auf die Weise alle Ihre Zähler einbauen, dann sollte es gehen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jochen82 Mitglied
Beiträge: 12 Registriert: 12.05.2012
|
erstellt am: 31. Mai. 2012 17:41 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank. Es funktioniert nun. Jedoch habe ich noch eine weitere Frage. Wie kann ich bereits bestückte Trays aus einer Senke Produzieren. Oder muss ich dies mit einer Montagestation realisieren? Grüße 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: 01. Jun. 2012 08:43 <-- editieren / zitieren --> Unities abgeben: Nur für Jochen82
Wenn Sie nicht programmieren wollen, dann ist die Montagestation die richtige Wahl. Sie können aber auch die Quelle die Trays erzeugen lassen (Sie müssen dann in der Klassenbibliothek die Kapazität einstellen) und dann in der Ausgangssteuerung (Heck)der Quelle die Trays füllen: Code:
is do while not @.voll loop .BEs.Fördergut.erzeugen(@); end; end;
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jochen82 Mitglied
Beiträge: 12 Registriert: 12.05.2012
|
erstellt am: 04. Jun. 2012 11:05 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank an dieser Stelle. Ich hätte nochmals eine Frage. Wusste jetzt nicht ob ich einen neuen Threat aufmachen soll oder nicht. In meiner Simulation habe ich eine U-Zelle mit Einzelstückfluss. Mein erster Ansatz war, ich lass die Teile von meinen Werkern zur nächsten Station tragen, diese dort Bearbeiten und danach zur nächsten Station usw. Damit die Werker nicht wild durch die Gegend laufen, habe ich Ihnen mit dem Befehle "setzedienste" Dienste für das Arbeiten zugewissen. Wenn der Werker fertig mit arbeiten ist, habe ich Ihnen Carry zugewissen. Somit müsste dieser dann das Teil zur nächsten Station tragen. Jedoch geht der Werker von seiner Station und lässt das Teil liegen. 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: 04. Jun. 2012 17:56 <-- editieren / zitieren --> Unities abgeben: Nur für Jochen82
Damit der Werker an der Station während der Bearbeitung stehen bleibt, muss seine Verweilzeit größer sein als die Bearbeitungszeit (Ausgangsverhalten --> Teil wegtragen --> maximale Verweilzeit). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Benzin89 Mitglied
Beiträge: 6 Registriert: 02.11.2015
|
erstellt am: 02. Nov. 2015 15:01 <-- editieren / zitieren --> Unities abgeben: Nur für Jochen82
hallo, ich habe mich intensiv mit Ihren Lösungsvorschlag befasst. Bekomme jedoch folgende Fehlermeldung und weis einfach nicht mehr weiter '.Modelle.Netwerk.Rotor_assembly' kann nicht gerüstet werden: Das Be'.BEs.Rotor:1' benötigt ein benutzerdefiniertes Attribut des Datentyps 'string' mit dem Namen 'rüstIndex'. Möchten Sie die Simulation anhalten? Eine Änderung des Datentyps auf string hätte die Folge, dass die Zählmethode nicht mehr funktioniert Können Sie mir bitte weiterhelfen? MFG 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: 02. Nov. 2015 17:52 <-- editieren / zitieren --> Unities abgeben: Nur für Jochen82
Wie sieht Ihre Zählmethode denn aus? Sie sollten den Zähler vom rüstindex trennen. Zur Fehlermeldung: Sie müssten im BE (Klassenbibliothek) das Attribut anlegen (Tab benutzerdefinierte Attribute...). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Benzin89 Mitglied
Beiträge: 6 Registriert: 02.11.2015
|
erstellt am: 02. Nov. 2015 18:50 <-- editieren / zitieren --> Unities abgeben: Nur für Jochen82
Die zählmethode greift auf die Maschine vorher zu (Ausgangssteuerung Heck mit Option "vor Aktionen") Zählmethode ist: counter100 := counter100 +1; Rotor_Assembly (Station nach Maschine): Ihre Programmierte Methode greift auf die Eingangssteuerung der Maschine zu... (Rüsten Automatisch, Rüsten abhängig von BE-Attribut) --------------------------------- if counter100=100 then @.rüstIndex:=@.rüstIndex+1; --@ ist der aktuelle Rotor Rotor_assembly.rüstzeit:= xx.x; -- richtiges rüsten end; --------------------------------- Desweiteren habe ich einen BE "Rotor" erstellt mit benutzerdefinieren Attribut (rüstindex, integer, 0) 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: 02. Nov. 2015 21:54 <-- editieren / zitieren --> Unities abgeben: Nur für Jochen82
Versuch: ändern Sie den Datentyp des Attributes zu string. Programm: Zitat:
if counter100=100 then local ri:= str_to_num(@.rüstIndex)+1; @.rüstIndex:=to_str(ri); --@ ist der aktuelle Rotor Rotor_assembly.rüstzeit:= xx.x; -- richtiges rüsten end;
PS:Für das Rüsten nach x gibt es eine spezielle Einstellung im Blatt Rüsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Benzin89 Mitglied
Beiträge: 6 Registriert: 02.11.2015
|
erstellt am: 02. Nov. 2015 22:30 <-- editieren / zitieren --> Unities abgeben: Nur für Jochen82
Versuch hat geklappt . Rotor_Assembly wird nach 1 und 100 eingetroffenen BE's gerüstet. Großes Danke schon mal Zwei Fragen noch. - Lässt sich der Rüstschritt beim Eintreffen des ersten BE's unterbinden? - Ich würde gerne 3 Rüstschritte, wie in der Frage von Jochen 82, ausführen. Lässt sich die Methode entsprechend erweitern? Ich vermute jetzt werden drei lokale Variablen (local ri, usw.) benötigt. PS. Wenn ich die richtig verstehe meinst du das Rüsten nach vorgebener Teileanzahl. Leider seh ich aber keine Möglichkeit dies für drei oder mehr Rüstschritte zu nutzen. 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: 02. Nov. 2015 22:45 <-- editieren / zitieren --> Unities abgeben: Nur für Jochen82
- Lässt sich der Rüstschritt beim Eintreffen des ersten BE's unterbinden? nicht völlig siehe Hilfe: rüstenFür --> hier die BE-Klasse übergeben Besser wäre allerdings, die Vollfahrzeit aus der Statistik zu entfernen (Ereignisverwalterm Statistik) - Ich würde gerne 3 Rüstschritte, wie in der Frage von Jochen 82, ausführen. Lässt sich die Methode entsprechend erweitern? Sie müssten dann die jetzt "feste" 100 parametrisieren, z.B. mit einer Tabelle. Sie könnten dann bei jedem Rüst-Schritt einen Zähler für die Zeilennummer erhöhen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Benzin89 Mitglied
Beiträge: 6 Registriert: 02.11.2015
|
erstellt am: 06. Nov. 2015 12:09 <-- editieren / zitieren --> Unities abgeben: Nur für Jochen82
Könntest du mir evtl. mal dazu ein Beispiel schicken oder zeigen? Vor allem habe ich hiermit Verständnisprobleme: - Ich würde gerne 3 Rüstschritte, wie in der Frage von Jochen 82, ausführen. Lässt sich die Methode entsprechend erweitern? Sie müssten dann die jetzt "feste" 100 parametrisieren, z.B. mit einer Tabelle. Sie könnten dann bei jedem Rüst-Schritt einen Zähler für die Zeilennummer erhöhen. Ich bekomme folgende Fehlermeldung "Ungültige Zuweisung an Rüstzeit, da die rechte Seite nichtdem Datentyp time entspricht"
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: 06. Nov. 2015 22:09 <-- editieren / zitieren --> Unities abgeben: Nur für Jochen82
|
Benzin89 Mitglied
Beiträge: 6 Registriert: 02.11.2015
|
erstellt am: 07. Nov. 2015 11:03 <-- editieren / zitieren --> Unities abgeben: Nur für Jochen82
|