Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  Shared Buffer Setup

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:  Shared Buffer Setup (327 / mal gelesen)
benvicious
Mitglied


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

Beiträge: 2
Registriert: 10.01.2022

erstellt am: 10. Jan. 2022 14: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

Hallo liebes Forum!

Da ich nun wirklich mit meinem Latein am Ende bin, hoffe ich, dass ihr mir bei folgendem Szenario weiterhelfen könnt.  Ich schreibe aktuell meine Masterarbeit, in welcher ich den Einfluss verschiedener Puffersetups in flexiblen Automobilfertigungssystemen in Plant Simulation untersuchen soll. (BTW, ich habe vorher noch nie mit der Software gearbeitet.)

In dem Thema habe ich sowohl klassische Puffer, welche zwischen zwei Fertigungsstationen liegen, als auch sog. Shared Buffer, in welchen mehrere Stationen ihre Werkstücke puffern dürfen. Für diese Shared Buffer habe ich ein Lager gewählt, da ich da mittels einer Methode fortlaufend prüfen kann, welche Bauteile im Lager liegen und diese passend an die vorgegebenen Stationen weiterleiten kann, sobald diese leer sind.
Da ich allerdings schwankende und zwischen den Stationen abweichende Bearbeitungszeiten habe (negexp, 3:00 bis 5:00), möchte ich gerne begrenzen, wie viele Teile eine jeweilige Station puffern darf. Mein Plan ist, dass eine Station nach der Bearbeitung überprüft, wie viele Teile im Lager liegen und dies mit einem Grenzwert einer Tabelle vergleicht. An Hand dessen entscheidet die Station, ob sie das Bauteil in den Puffer übergibt oder ob sie warten muss, bis einer der ihr zugewiesenen Pufferplätze frei ist.

Folgendes Beispiel: Station 2 führt Task 1 an zwei unterschiedlichen Modellen aus. Die Tabelle "SB_Grenzen" gibt den Grenzwert vor, bis zu welcher Menge Teile mit der Kennzeichnung T1 in den Puffer geschoben werden dürfen. Wenn der Wert in der Tabelle 0 ist, darf nicht in den Puffer gefahren werden, die Umlagerung erfolgt direkt zur Nachfolgestation. Wenn der Wert >0 ist, prüfe ich über eine for-Schleife die Anzahl der Teile und die Teile landen entsprechend im Lager. Zumindest in meiner Theorie..  Wenn der Grenzwert in der Tabelle 1 ist, funktioniert das System, sobald ich jedoch einen Wert >2 vorgebe, bricht das System zusammen und die Station läuft nach und nach das Lager mit mehr Teilen voll, als der Grenzwert eigentlich zulassen sollte.
Könnt ihr mir da helfen? Habe ich einen Syntaxfehler oder ähnliches? Ich weiß leider nicht mehr weiter..

Liebe Grüße, Ben 

Code:

var Schwellenwert: integer
Schwellenwert := SB_Grenzen[1,2]

var i: integer
var T1: integer

if Schwellenwert = 0
@.umlagern(1)
elseif Schwellenwert > 0
for i:= 1 to Lager.XDim loop
if Lager[i,1].belegt
if Lager[i,1].Inhalt.Name = "V1_T1" or Lager[i,1].Inhalt.Name = "V2_T1"
T1 := T1 + 1
if T1 < Schwellenwert
@.umlagern(2)
elseif T1 >= Schwellenwert
waituntil not StationL6.belegt
@.umlagern(2)
end
end
end
next
if T1 = 0
@.umlagern(2)
end
end


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: 10. Jan. 2022 15: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 Nur für benvicious 10 Unities + Antwort hilfreich

ich werde noch nicht ganz schlau aus Steuerungsansatz, welchen du implementieren willst ...
aber ich lese es mir mal heut Abend nochmal in ruhe durch...
in deiner Methode fehlt mindestens exitloop um for-Schleife nach einer Umlagerung zu verlassen

------------------
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

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: 11. Jan. 2022 00:22    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 benvicious 10 Unities + Antwort hilfreich

Also ich vermute mal du möchtest diesen Lösungsansatz implementieren.....
Zitat:
"If there is space in the dedicated buffer the machine releases the part which then moves towards machineM2, otherwise the system controls if the part can be introduced in the shared buffer. If there is space available in the shared buffer the machine releases the part that enters in the shared buffer, otherwise the machine is blocked until a new space becomes available in the dedicated buffer or shared buffer." [Matta, A., Runchina, M., & Tolio, T. (2006). Automated flow lines with shared buffer. In Stochastic Modeling of Manufacturing Systems (pp. 99-120). Springer, Berlin, Heidelberg. S:111]

Wenn ich deinen Methodenansatz richtig interpretieren, dann wäre unten ein möglicher Lösungsansatz hierzu (nicht getestet).... Aber dein Methodenansatz passt nicht ganz zu dem Lösungsansatz ..... deshalb: Welchen Lösungsansatz versuchst du zu implementieren?

Code:
var Schwellenwert: integer
Schwellenwert := SB_Grenzen[1,2]
var _NF: integer := 1 --Puffer
var T1: integer := Schwellenwert --inizialisieren auf Schwellenwert

if Schwellenwert > 0
for var i:= 1 to Lager.XDim loop
if Lager[i,1].belegt
if Lager[i,1].Inhalt.Name = "V1_T1" or Lager[i,1].Inhalt.Name = "V2_T1"
T1 -= 1
if T1 = 0
exitloop
end
end
end
next
if T1 = 0
waituntil not StationL6.belegt prio 1
--prio im Mikrosystem abstimmen (ich vermute mal, du hast mehr als eines)
end
_NF := 2 --Lager
end

@.umlagern(_NF)



Bezugnehmend auf deine Massage: Nein, weil öffentliche Postings auch Anderen mit ähnlichen Problemen helfen!

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

benvicious
Mitglied


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

Beiträge: 2
Registriert: 10.01.2022

erstellt am: 11. Jan. 2022 18:45    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

Der zitierte Lösungsansatz wäre der nächste Schritt, zunächst soll ein alleinstehender Shared Buffer verwendet werden, welcher Bauteile verschiedener Stationen in festgelegten Mengen (dazu die for-Schleife mit der Grenzwerttabelle) aufnehmen kann und an den zugehörigen Stellen einspeist.

Ich habe deinen Methodenansatz geprüft, er hat zwar nicht direkt funktioniert, konnte jedoch damit meine Methode nochmal überarbeiten. Ich habe die If-Abfrage, welche prüft, ob das behandelte Werkstück noch in den Puffer darf aus der For-Schleife gezogen und lasse sie, nachdem die For-Schleife die Anzahl der bereits gepufferten Werkstücke gezählt hat, unabhängig den gemessenen Wert mit dem Grenzwert abgleichen. In den ersten Tests funktioniert es bisher super, vielen Dank schonmal! Aktuell sitze ich an einem kleinem Modell zu dem in deinem Zitat beschriebenem Ansatz und lasse nebenbei meine Methode mit dem Experimentverwalter testen.

Wenn ich mehr herausgefunden bzw. eine Lösung habe, stelle ich den Aufbau hier in den Thread, wird wahrscheinlich aber erst morgen sein.
VG Julian

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