Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  Auftragsfreigabe periodisch aktivieren

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:  Auftragsfreigabe periodisch aktivieren (1049 mal gelesen)
smjaprig
Mitglied


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

Beiträge: 4
Registriert: 13.10.2015

erstellt am: 13. Okt. 2015 18:32    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


Modell.JPG

 
[URL=INTERNETADRESSEHIER][/URL]Hallo allerseits,

ich habe ein Problem mit meiner Simulation für meine BA Arbeit und komme da nicht so recht weiter.
Ich habe eine Werkstattproduktion in der die Quelle nur Aufträge freigibt, wenn die Bestandskonten der Station 1, 2, 3 und 4 durch die Freigabe nicht verletzt werden.

Ich möchte diesen Freigabeprozess nun alle 8 Stunden, also zu jeder Schicht, durchführen. Ich denke am beste geht es mit einem Generator, aber ich hab im Moment echt keine Ahnung wie und die Zeit drängt, weswegen ich für jede Hilfe dankbar bin!

Das Modell lässt sich unter diesem Linkfinden.
Ein Bild habe ich ebenfalls angehangen.

Für jede Hilfe wäre ich euch sehr dankbar!

Schöne Grüße,
Janis

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

Bon Simul
Mitglied
Simulant


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

Beiträge: 1250
Registriert: 08.08.2011

Plant Simulation 10.1, 11 ff Professional

erstellt am: 13. Okt. 2015 20:06    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 smjaprig 10 Unities + Antwort hilfreich

ein Generator, der eine Methode im Abstand von 8 Stunden aufruft ist ein guter Ansatz.

Was meinen Sie mit "wenn die Bestandskonten der Station 1, 2, 3 und 4 durch die Freigabe nicht verletzt werden"?

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

smjaprig
Mitglied


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

Beiträge: 4
Registriert: 13.10.2015

erstellt am: 13. Okt. 2015 20:29    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


Modell1.JPG

 
Hallo Bon Simul,

danke für deine Antwort!
Jede Arbeitsstation besitzt ein Bestandskonto in welches bei Auftragsfreigabe die (gewichteten) Bearbeitungszeiten eingebucht werden und wieder ausgebucht werden, wenn der Auftrag an der Station bearbeitet wurde. Es werden immer nur so viele Aufträge freigegeben, wie durch die Bestandskonten zulässig ist.

Ich habe schon einiges mit einem Generator und einer Methode versucht, bin bisher aber nicht zu dem gewünschten Erfolg gekommen.
Ich habe nun zwischen der Flusssteuerung und der Quelle einen Puffer (Pool) eingefügt, welcher genügend Aufträge (Produkte) aufnehmen kann. Der Pool hat als Ausgangssteuerung die Methode "Freigabesteuerung" welche folgendermaßen aussiieht:

Zitat:

: time
is
bearbeitungszeit1 : time;
bearbeitungszeit2 : time;
bearbeitungszeit3 : time;
bearbeitungszeit4 : time;
ES1 : object;
ES2 : object;
ES3 : object;
ES4 : object;


do

ES1 := .Modelle.Netzwerk1.Station1.Station1;
ES2 := .Modelle.Netzwerk1.Station2.Station2;
ES3 := .Modelle.Netzwerk1.Station3.Station3;
ES4 := .Modelle.Netzwerk1.Station4.Station4;
bearbeitungszeit1 := Arbeitsplan[1,@.Produkt][2,ES1];
bearbeitungszeit2 := Arbeitsplan[1,@.Produkt][2,ES2];
bearbeitungszeit3 := Arbeitsplan[1,@.Produkt][2,ES3];
bearbeitungszeit4 := Arbeitsplan[1,@.Produkt][2,ES4];


if (BestandskontoStation1 + bearbeitungszeit1) <= 420
  and (BestandskontoStation2 + bearbeitungszeit2) <= 420
  and (BestandskontoStation3 + bearbeitungszeit3) <= 420
  and (BestandskontoStation4 + bearbeitungszeit4) <= 420
then @.umlagern;
BestandskontoStation1 := Bestandskontostation1 + bearbeitungszeit1;
BestandskontoStation2 := Bestandskontostation2 + bearbeitungszeit2;
BestandskontoStation3 := Bestandskontostation3 + bearbeitungszeit3;
BestandskontoStation4 := Bestandskontostation4 + bearbeitungszeit4;
end;


end;

Es wird also über die if-Schleife abgefragt, ob Kapazitäten frei sind um einen Auftrag freizugeben.
Für den Generator gebe ich als Abstand 8 Stunden (bzw. habe ich in meinem Modell glaube ich noch Minuten bei allen Zeiten) ein.
Wie schaffe ich es denn nun, dass der Generator dem Pool sagt, dass er wieder Aufträge freigeben soll?

Danke schon mal und einen schönen Abend noch,
Janis

(Das Bild zeigt die Simulation in dem Moment, in dem Aufträge auf den Stationen abgearbeitet werden, durch den Pool jedoch keine neuen Aufträge freigegeben werden.)

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

Bon Simul
Mitglied
Simulant


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

Beiträge: 1250
Registriert: 08.08.2011

Plant Simulation 10.1, 11 ff Professional

erstellt am: 14. Okt. 2015 08: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 Nur für smjaprig 10 Unities + Antwort hilfreich

Das Problem der Ausgangssteuerung ist, dass sie nur einmal aufgerufen wird. Wenn in Ihrem Fall die Bedingung für das Umlagern nicht erfüllt ist, erfolgt kein neuer Aufruf mehr und der Materialfluss stoppt.

mindestens zwei Möglichkeiten:
- Waituntil statt if  --> so wird irgendwann immer ein Teil umgelagert:

Code:

waituntil (BestandskontoStation1 + bearbeitungszeit1) <= 420
  and (BestandskontoStation2 + bearbeitungszeit2) <= 420
  and (BestandskontoStation3 + bearbeitungszeit3) <= 420
  and (BestandskontoStation4 + bearbeitungszeit4) <= 420
          prio 1;

@.umlagern;


- keine ausgangssteuerung --> Aufruf durch Generator (jede sekunde)
dazu müssten Sie zusätzlich prüfen, ob der nächste Platz frei ist...

Code:

if (BestandskontoStation1 + bearbeitungszeit1) <= 420
  and (BestandskontoStation2 + bearbeitungszeit2) <= 420
  and (BestandskontoStation3 + bearbeitungszeit3) <= 420
  and (BestandskontoStation4 + bearbeitungszeit4) <= 420
          and Nachfolger.leer
then buffer.inhalt.umlagern(Nachfolger);
BestandskontoStation1 := Bestandskontostation1 + bearbeitungszeit1;
BestandskontoStation2 := Bestandskontostation2 + bearbeitungszeit2;
BestandskontoStation3 := Bestandskontostation3 + bearbeitungszeit3;
BestandskontoStation4 := Bestandskontostation4 + bearbeitungszeit4;
end;



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

smjaprig
Mitglied


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

Beiträge: 4
Registriert: 13.10.2015

erstellt am: 14. Okt. 2015 19:08    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

Nabend Bon Simul,
und wieder mal vielen Dank für die Hilfe!
Die zweite Möglichkeit gibt mir einen Fehler aus (void kann keine Methode empfangen, oder so). Ich denke das liegt daran, dass er in einem vorherigen Schritt die Bearbeitungszeit des Produktes überprüft und bei der Lösung allerdings keines auf der Station (also dem Generator) vorhanden ist.

Die zweite Lösung funktioniert im Prinzip schonmal, allerdings bildet es nicht genau das ab, was ich brauche. Hier wird die Freigabeüberprüfung dauerhaft durchgeführt und nicht nur alle 8Stunden. Gibt es hier evt. noch eine Möglichkeit die waituntil Schleife so zu erweitern, dass er den Abgleich nur alle 8 Stunden startet?
Oder gibt's es vielleicht eine Möglichkeit die Methode mittels eines Triggers alle 8 Stunden zu aktivieren?

Danke!

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

Bon Simul
Mitglied
Simulant


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

Beiträge: 1250
Registriert: 08.08.2011

Plant Simulation 10.1, 11 ff Professional

erstellt am: 15. Okt. 2015 09:05    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 smjaprig 10 Unities + Antwort hilfreich

dann könnten Sie die Methode durch einen Generator aufrufen lassen (der Trigger ist der falsche Baustein)

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

smjaprig
Mitglied


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

Beiträge: 4
Registriert: 13.10.2015

erstellt am: 16. Okt. 2015 23:49    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 zusammen,

es funktioniert nun tatsächlich irgendwie! Danke für die Hilfe.
Allerdings hat sich nun zum Schluss doch noch ein neues Problem aufgetan, welches ich mir einfach nicht erklären kann. Vielleicht hat einer von euch eine Idee?

Leider ist das Modell recht komplex geworden, so dass ich es hier verlinke anstatt mit Bildern zu arbeiten.

Das Problem ist folgendes: Ich lasse in der Freigabesteuerung die Prozesszeiten der Aufträge in die Stationen einbuchen und beim verlassen wieder ausbuchen. Beides über je eine Methode, welche aber die selben Daten und Formeln verwenden.
Nun habe ich schon einiges versucht und denke, dass es wohl Probleme mit der waituntil Anweisung + der wait Anweisung des Schichtkalenders geben könnte.


Code der Freigabesteuerung (nicht hübsch, sry dafür!)

Code:
: time
is
bearbeitungszeit1 : time;
bearbeitungszeit2 : time;
bearbeitungszeit3 : time;
bearbeitungszeit4 : time;
ES1 : object;
ES2 : object;
ES3 : object;
ES4 : object;
H1 : real;
Pro : string;
FT : time;
FT2 : time;
ST : time;
ST2 : time;
FT3 : time;
FT4 : time;
ST3 : time;
ST4 : time;
DD : time;
EDD : time;





do

ES1 := .Modelle.Netzwerk1.Station1.Station1;
ES2 := .Modelle.Netzwerk1.Station2.Station2;
ES3 := .Modelle.Netzwerk1.Station3.Station3;
ES4 := .Modelle.Netzwerk1.Station4.Station4;
bearbeitungszeit1 := Arbeitsplan[1,@.Produkt][2,ES1];
bearbeitungszeit2 := Arbeitsplan[1,@.Produkt][2,ES2];
bearbeitungszeit3 := Arbeitsplan[1,@.Produkt][2,ES3];
bearbeitungszeit4 := Arbeitsplan[1,@.Produkt][2,ES4];

if @.Produkt.name = "Produkt3" then h1 := 0.33
else h1 := 0.25;
end;
@.EDD:=EventController.Simtime+Arbeitsplan[1,@.Produkt][1,1]+Arbeitsplan[1,@.Produkt][1,2]+Arbeitsplan[1,@.Produkt][1,3]+Arbeitsplan[1,@.Produkt][1,4] + z_uniform (1, 0, 18000);
FT:= @.EDD-Arbeitsplan[1,@.Produkt][1,1]-Arbeitsplan[1,@.Produkt][1,2]-Arbeitsplan[1,@.Produkt][1,3]-Arbeitsplan[1,@.Produkt][1,4];
DD:=EDD+z_uniform(1,28800,57600);
ST := FT + ((DD - EDD) * h1);
FT2 := ST + Arbeitsplan[1,@.Produkt][2,1];
ST2 := FT2 + ((DD - EDD) * h1);
FT3 := ST2 + Arbeitsplan[1,@.Produkt][2,2];
ST3 := FT3 + ((DD - EDD) * h1);
FT4 := ST3 + Arbeitsplan[1,@.Produkt][2,3];
ST4 := FT4 + ((DD - EDD) * h1);

@.FT := FT;
@.FT2 := FT2;
@.FT3 := FT3;
@.FT4 := FT4;
@.ST := ST;
@.ST2 := ST2;
@.ST3 := ST3;
@.ST4 := ST4;
@.DD := DD;

waituntil (BestandskontoStation1 + bearbeitungszeit1) <= 18000
  and (BestandskontoStation2 + bearbeitungszeit2) <= 18000
  and (BestandskontoStation3 + bearbeitungszeit3) <= 18000
  and (BestandskontoStation4 + bearbeitungszeit4) <= 18000
  prio 1;
 
  @.umlagern;
BestandskontoStation1 := Bestandskontostation1 + bearbeitungszeit1;
BestandskontoStation2 := Bestandskontostation2 + bearbeitungszeit2;
BestandskontoStation3 := Bestandskontostation3 + bearbeitungszeit3;
BestandskontoStation4 := Bestandskontostation4 + bearbeitungszeit4;

end;



Code der Ausbuchen Methode

Code:
: time
is
bearbeitungszeit5 : time;
bearbeitungszeit6 : time;
bearbeitungszeit7 : time;
bearbeitungszeit8 : time;
ES5 : object;
ES6 : object;
ES7 : object;
ES8 : object;

do
ES5 := .Modelle.Netzwerk1.Station1.Station1;
ES6 := .Modelle.Netzwerk1.Station2.Station2;
ES7 := .Modelle.Netzwerk1.Station3.Station3;
ES8 := .Modelle.Netzwerk1.Station4.Station4;
bearbeitungszeit5 := Arbeitsplan[1,@.Produkt][2,ES5];
bearbeitungszeit6 := Arbeitsplan[1,@.Produkt][2,ES6];
bearbeitungszeit7 := Arbeitsplan[1,@.Produkt][2,ES7];
bearbeitungszeit8 := Arbeitsplan[1,@.Produkt][2,ES8];

if ?.vg.name = "Station1"
then BestandskontoStation1 := Bestandskontostation1 - bearbeitungszeit5
elseif ?.vg.name = "Station2"
  then BestandskontoStation2 := Bestandskontostation2 - bearbeitungszeit6;
  elseif ?.vg.name = "Station3"
  then BestandskontoStation3 := Bestandskontostation3 - bearbeitungszeit7;
  elseif ?.vg.name = "Station4"
then BestandskontoStation4 := Bestandskontostation4 - bearbeitungszeit8;
end;
@.umlagern;
end;



Ich bin für jede Hilfe sehr dankbar!
Gruß

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