Cancel
Showing results for 
Search instead for 
Did you mean: 

Automatische Bedarfsmeldung durch Einzelstation

Experimenter
Experimenter

Hallo zusammen,

 

ich bin Student und habe noch recht wenig Erfahrung mit Plant Simulation. Derzeit arbeite ich an einer Simulation zur Bereitstellung von Werkzeugen.

 

Folgendes Problem:

Ich möchte eine automatische Bedarfsmeldung an BEs durch eine Einzelstation mittels einer Methode programmieren. Somit soll eine durch die Einzelstation ausgelöste Just-in-Time Belieferung der Einzelstation, ohne die Notwenidgkeit eines Puffers dargestellt werden.

 

Folgendes soll die Methode beinhalten:

Ich möchte, dass die Einzelstation auf einer vorgelagerten Station ein BE erzeugt.

Das BE soll Just-in-Time angeleifert werden.

 

Das heißt die Maschine muss die Bedarfsmeldung für ein neues BE zu dem Zeitpunkt absetzen, wenn

die verbliebene Bearbeitungszeit der Maschine gleich der Durchlaufzeit des BEs ist.

 

Die Durchlaufzeit kann von BE-Typ, zu BE-Typ variieren.

 

Allerdings habe ich momentant Schwierigkeiten, dass das BE zum benötigten Zeitpunkt erstellt wird.

Ich weiß nicht wie ich die restliche Bearbeitungszeit der Maschine ermitteln kann um eine JIT-Belieferung zu ermöglichen.

 

Für Hilfe wäre ich dankbar!

 

Anbei ein Versurch der nicht funktioniert:

 

var SimZeit : real
var zeit1 : real
var zeit2 : real

zeit1 := Production.Bearbeitungszeit --Production ist die Einzelstation welche das BE anfordern soll
zeit2 := num_to_time(Tabelle_Bearbeitungszeiten[1,3]) --Abruf der Durchlaufzeit aus einer Tabelle
SimZeit := Ereignisverwalter.Zeit

if @.name = "Produkt A"
 waituntil Ereignisverwalter.Zeit = SimZeit + zeit1 - zeit2
 .BEs.ProduktA.erzeugen(Help_station)
end

if @.name ="Produkt B"
 waituntil Ereignisverwalter.Zeit = SimZeit + zeit1 - zeit2
 .BEs.ProduktB.erzeugen(Help_station)
end

 

 

6 REPLIES

Re: Automatische Bedarfsmeldung durch Einzelstation

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor
versuchen Sie folgendes (die Wahrscheinlichkeit , einen Zeitpunkt zu erwischen der genau gleich ist, ist sehr gering):

waituntil Ereignisverwalter.Zeit >= SimZeit + zeit1 - zeit2

Es muss eine Eingangssteuerung sein.
Steffen Bangsow
freelance simulation specialist  
web: www.bangsow.eu
mail: steffen@bangsow.net

Re: Automatische Bedarfsmeldung durch Einzelstation

Experimenter
Experimenter

Vielen Dank für Ihre schnelle Antwort!

 

Leider hat dies nicht geklappt. Das anzufordernde BE wird erst dann erzeugt, wenn das BE auf der Einzelstation diese verlässt (Methode ist in der Eingangssteuerung der Einzelstation).

 

Methode zur Berechnung der Durchlaufzeit für ein BE bis zur Einzelstation:


Tabelle_Bearbeitungszeiten[1,1] := Picking.Bearbeitungszeit --Schreibt die einzelnen Bearbeitungszeiten in eine Tabelle
Tabelle_Bearbeitungszeiten[1,2] := Assembly.Bearbeitungszeit
Tabelle_Bearbeitungszeiten[1,3] := Measuring.Bearbeitungszeit


Tabelle_Bearbeitungszeiten[2,1] := time_to_num(Tabelle_Bearbeitungszeiten[1,1]) --wandelt die Bearbeitungszeiten in num um, um diese zu einer Durchlaufzeit (DLZ) addieren zu können
Tabelle_Bearbeitungszeiten[2,2] := time_to_num(Tabelle_Bearbeitungszeiten[1,2])
Tabelle_Bearbeitungszeiten[2,3] := time_to_num(Tabelle_Bearbeitungszeiten[1,3])

Tabelle_Bearbeitungszeiten[3,1] := Tabelle_Bearbeitungszeiten[2,1] + Tabelle_Bearbeitungszeiten[2,2] + Tabelle_Bearbeitungszeiten[2,3] --Berechung der DLZ

 

Current_Throughput_Time := Tabelle_Bearbeitungszeiten[3,1] --globale Variable die die DLZ ausgibt

 

Verbesserte Methode zur Just-in-Time Anforderung

 

var SimZeit : real
var zeit1 : real
var zeit2 : real

zeit1 := Production.Bearbeitungszeit
zeit2 := num_to_time(Tabelle_Bearbeitungszeiten[1,3]) --Abruf der DLZ
SimZeit := Ereignisverwalter.Zeit

if @.name = "Produkt A"
 waituntil Ereignisverwalter.Zeit >= SimZeit + zeit1 - zeit2
 .BEs.ProduktA.erzeugen(Help_station)
end

if @.name ="Produkt B"
 waituntil Ereignisverwalter.Zeit >= SimZeit + zeit1 - zeit2
 .BEs.ProduktB.erzeugen(Help_station)
end

Re: Automatische Bedarfsmeldung durch Einzelstation

Experimenter
Experimenter

Vielen Dank für Ihre schnelle Antwort. Leider hat dies nicht funktioniert.

 

Das BE wird erst dann erzeugt, wenn das BE auf der Einzelstation diese verlässt. Somit steht die Einzelstation entsrechend der Dauer der Durchlaufzeit(DLZ) still.

 

Mit folgender Methode berechne ich die DLZ:


Tabelle_Bearbeitungszeiten[1,1] := Picking.Bearbeitungszeit -- Schreibt Bearbeitungszeiten in eine Tabelle
Tabelle_Bearbeitungszeiten[1,2] := Assembly.Bearbeitungszeit
Tabelle_Bearbeitungszeiten[1,3] := Measuring.Bearbeitungszeit


Tabelle_Bearbeitungszeiten[2,1] := time_to_num(Tabelle_Bearbeitungszeiten[1,1]) --Umwandlung der zeiten
Tabelle_Bearbeitungszeiten[2,2] := time_to_num(Tabelle_Bearbeitungszeiten[1,2])
Tabelle_Bearbeitungszeiten[2,3] := time_to_num(Tabelle_Bearbeitungszeiten[1,3])

Tabelle_Bearbeitungszeiten[3,1] := Tabelle_Bearbeitungszeiten[2,1] + Tabelle_Bearbeitungszeiten[2,2] + Tabelle_Bearbeitungszeiten[2,3] --Berechung der DLZ

Current_Throughput_Time := Tabelle_Bearbeitungszeiten[3,1] --Ausgabe der DLZ über eine globale Variable

 

Verbesserte Methode zur BE-Anforderung/JIT-Belieferung (in der Eingangssteuerung der Maschine)

var SimZeit : real
var zeit1 : real
var zeit2 : real

zeit1 := Production.Bearbeitungszeit
zeit2 := num_to_time(Tabelle_Bearbeitungszeiten[1,3])
SimZeit := Ereignisverwalter.Zeit

if @.name = "ProduktA"
 waituntil Ereignisverwalter.Zeit >= SimZeit + zeit1 - zeit2
 .BEs.ProduktA.erzeugen(Help_station)
end

if @.name ="ProduktB"
 waituntil Ereignisverwalter.Zeit >= SimZeit + zeit1 - zeit2
 .BEs.ProduktB.erzeugen(Help_station)
end

 

Re: Automatische Bedarfsmeldung durch Einzelstation

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor
können Sie Ihr modell posten?
zeit2 sollte positiv und kleiner als zeit1 sein
Steffen Bangsow
freelance simulation specialist  
web: www.bangsow.eu
mail: steffen@bangsow.net

Re: Automatische Bedarfsmeldung durch Einzelstation

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

ich denke, es sind zu wenig Ereignisse für waituntil, versuchen Sie das:

 

var zeit1 : real
var zeit2 : real

zeit1 := Production.Bearbeitungszeit
zeit2 := num_to_time(Tabelle_Bearbeitungszeiten[1,3])

if @.name = "ProduktA"
 wait num_to_time(zeit1 - zeit2)
 .BEs.ProduktA.erzeugen(Help_station)
end

 

Steffen Bangsow
freelance simulation specialist  
web: www.bangsow.eu
mail: steffen@bangsow.net

Re: Automatische Bedarfsmeldung durch Einzelstation

Experimenter
Experimenter

vielen Dank für die schnelle Hilfe, es hat funktioniert!

Somit ist eine Just-in-Time Anforderung durch eine Einzelstation darstellbar.