Autor
|
Thema: Puffer überspringt BEs die dann liegen bleiben (1459 / mal gelesen)
|
shishanis Mitglied Student
Beiträge: 5 Registriert: 25.10.2017
|
erstellt am: 24. Jan. 2018 21:23 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen ich hab mal wieder eine Frage. Ich möchte mithilfe eines Durchlaufdiagramms die Zugänge und Abgänge an einem Arbeitssystem mit zehn parallelen Einzelstationen messen. Der Puffer soll dabei zur AS zum Arbeitssystem gehören, um auch den Bestand mit messen zu können. Mein Problem ist, dass sobald die Bearbeitungszeiten meiner Maschinen länger dauert als die Zwischenankunftszeit, bleiben teile im Puffer liegen. Die sollte aber nicht der Fall sein. Der Puffer sollte sich weiter füllen, aber sobal eine Maschine frei ist soll dann das nächste Teil umgelagert werden. Puffereingangssteuerung: is i:integer; NextStation: object; do for i:=1 to AnzahlAS loop NextStation:=str_to_obj( "AS" + to_str(i)); if NextStation.belegt=false then @.umlagern(str_to_obj("AS"+i)); exitloop; end; next; i:=0; repeat i:=i+1 until i=@.id; Datentabelle["ZAZ",i]:=Ereignisverwalter.abszeit; end; Ausgangssteuerung Einzelstationen: is i:integer; do i:=0; repeat i:=i+1; until Datentabelle["ANR",i]=@.id or i=Lieferliste_A.ydim; Datentabelle["Aus",i]:=Ereignisverwalter.zeit; Datentabelle["BZeit",i]:=Datentabelle["Aus",i]-Datentabelle["Ein",i]; @.umlagern(Senke); end; Problem ist dann dass er die Station 1-10 bedient und so lange die Stationen belegt sind und neue Aufträge eintreffen, diese nicht abgearbeitet werden. Bsps bei einer ZAZ von 1 Sek und einer Bearbeitungsdauer der Maschinen von 12 Sek würden dann BE 11 und 12 liegen bleiben und BE 13 wieder auf Maschine 1 umglagert werden. Vielen Dank schonmal, shishanis
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 949 Registriert: 29.03.2016
|
erstellt am: 25. Jan. 2018 23:21 <-- editieren / zitieren --> Unities abgeben: Nur für shishanis
Hallo shishanis, Zitat: BE 11 und 12 liegen bleiben und BE 13 wieder auf Maschine 1 umglagert werden
die Auslagerung aus dem Puffer erfolgt mittels einer Eingangssteuerung. Das @ ist gleich dem BE, welches den Puffer betritt. BEs, die auf dem Puffer ankommen wenn die Stationen belegt sind, werden nie ausgelagert, da hierzu beispielsweise die Stationen in Ausgangssteuerung eine weitere Auslagerungsprüfung benötigen. TIPP: Das BE betritt den Puffer. Das ist der Input. Das BE betritt die Senke. Das ist der Output. Wenn Eingang im Puffer oder Senke erfolgt eine Notiz in die Tabelle. 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 |
shishanis Mitglied Student
Beiträge: 5 Registriert: 25.10.2017
|
erstellt am: 27. Jan. 2018 14:06 <-- editieren / zitieren --> Unities abgeben:
Hallo Nadine, vielen Dank erstmal für die fixe Antwort, ich werde daraus leider nicht ganz schlau. Wenn ich meine Steuerung im Puffer als Ausgangstteuerung setze, dann hört er nach den 10 BEs komplett auf umzulagern. Gibt es evtl eine Möglickeit das BE anzusprechen, dass als nächstes im Puffer liegt ? Meinst du ich soll dann quasi nur noch die BEs dokumentieren, die den Weg durch alle Stationen "schaffen"? Gibt es da nicht eine elegantere Lösung? Das Problem ist auch dass die BEs mit einer gesetzten Zwischenankunftszeit eintreffen sollen und der Bestand am Puffer dokumentiert werden soll, daher ist es leider auch nicht möglich den Eingang des Puffers zu sperren bis die Maschinen frei sind. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 949 Registriert: 29.03.2016
|
erstellt am: 27. Jan. 2018 14:50 <-- editieren / zitieren --> Unities abgeben: Nur für shishanis
nicht zu kompliziert denken. Paar Fragen für dich selbst, um das Problem zu ergründen... Ziel deines Vorhabens.....(z.B.: Durchlaufdiagramm, Materialflusssteuerung, Maschinenbelegung...) Wenn für das Erreichen deines Ziels eine Methode erforderlich ist, dann.... Ziel der Steuerung... (z.B.: schreibt auf, regelt den Materialfluss...) Wie wird jede Methode ausgelöst...(z.B.: Wenn BE in das Lager eintritt) Durch was wird diese Methode ausgelöst.... (Durch das BE beim Eintretten ins Lager) Was ist das Resultat dieser Auslösung der Methode (z.B.: wenn kein Eintritt ins Lager, dann kein Auslösen)
Zitat: Wenn ich meine Steuerung im Puffer als Ausgangstteuerung setze, dann hört er nach den 10 BEs komplett auf umzulagern.
Mache dir eine Vorstellung, was wer macht. Stell dir den Mitarbeiter (MA) im Lager vor. Er hat die Arbeitsanweisung: Bei Eingang der Teile, prüfe ob Teile an Maschine erforderlich. Aber obwohl Lager voll ist, werden bei Lieferschwierigkeiten die schon gelagerten Teile im Lager nicht zur Stationen geliefert. Jetzt gehst du zu dem MA im Lager und ergänzt die Arbeitsanweisung: Prüfe ob bedarf in Station, wenn du auslagerst. Zitat: Gibt es evtl eine Möglickeit das BE anzusprechen, dass als nächstes im Puffer liegt ?
Beispielsweise mithilfe einer For-Schleife die BEs auf dem Puffer durchgehen.
Zitat: Meinst du ich soll dann quasi nur noch die BEs dokumentieren, die den Weg durch alle Stationen "schaffen"?
und Zitat: Das Problem ist auch dass die BEs mit einer gesetzten Zwischenankunftszeit eintreffen sollen und der Bestand am Puffer dokumentiert werden soll, daher ist es leider auch nicht möglich den Eingang des Puffers zu sperren bis die Maschinen frei sind.
Ein Monitoring hat in der Regel keine Auswirkungen auf den Prozess. .... warum "schaffen" die BE den Weg nicht? ... und was hat dies mit der Erfassung der Durchlaufzeit zutun?
Zitat: Gibt es da nicht eine elegantere Lösung?
Zitat: TIPP: Das BE betritt den Puffer. Das ist der Input. Das BE betritt die Senke. Das ist der Output. Wenn Eingang im Puffer oder Senke erfolgt eine Notiz in die Tabelle.
------------------ „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 |
shishanis Mitglied Student
Beiträge: 5 Registriert: 25.10.2017
|
erstellt am: 11. Feb. 2018 21:44 <-- editieren / zitieren --> Unities abgeben:
Hey Nadin, Vielen lieben Dank schonmal für deine super Denkanstöße. Habe es damit jetzt hinbekommen, dass tatsächlich jedes BE umgelagert wird. Habe dies durch eine Eingangssteuerungen am Puffer gelöst, der den Ausgang nur freigibt, wenn nicht alle Maschinen belegt sind. Der Ausgang des Puffers schließt sich nach jedem überlieferten BE wieder und der Senkeneingang gibt den Pufferausgang wieder frei, sobald ein BE eintrifft. Gibt bestimmt elegantere Lösungen aber ich bin froh, dass es klappt Nun kannte ich keine Funktion die bei einer Prüfung hochzählt bis zu einem vorgegebenen Wert wodurch meine Lösung zwar funktional aber mit ständigen Anpassungen in der Methode verbunden ist, wenn sich die Anzahl der Maschinen ändert. Eingangssteuerung Puffer: is do
if AS1.belegt=true and AS2.belegt=true and AS3.belegt=true and AS4.belegt=true and AS5.belegt=true and AS6.belegt=true and AS7.belegt=true and AS8.belegt=true and AS9.belegt=true and AS10.belegt=true then Puffer1.AusgangGesperrt:=True; else Puffer1.AusgangGesperrt:=False; end; end; Da die Anzahl der Maschinen im Laufe der Experimente angepasst werden soll wäre es super wenn man dies über Variablen anpassen kann, damit eine einfach Änderung im Experimenteverwalter ausreicht. Die Anzahl der Stationen soll zwischen 2 und 10 variieren. Dies wird aktuell über die globale Variable "AnzahlAS" geregelt. Gibt es vielleicht eine Möglichkeit die "and Funktion" nur solange durchzuspielen bis i:=AnzahlAS? Ich hoffe ja und du kannst mir vorerst noch ein letztes mal sehr helfen Ich wäre wirklich sehr dankbar! LG shishanis Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 949 Registriert: 29.03.2016
|
erstellt am: 11. Feb. 2018 23:18 <-- editieren / zitieren --> Unities abgeben: Nur für shishanis
beispielsweise so... Code:
is integer: i; object: _obj; dofor i:= 1 to current.AnzahlAS loop /*gehe den Zähler durch. */ _obj:= str_to_obj(incl("Einzelstation",to_str(i),-1)) /*Erstelle aus String ein Object*/ if _obj.belegt = false then /* prüfe, wenn belegt*/ current.Puffer1.AusgangGesperrt := false; /*dann öffne den Ausgang*/ return; /* und ferlasse die Methode, da sonst am Ende der Ausgang nochmals geöfnet wird.*/ end; next current.Puffer1.AusgangGesperrt := true; /* wenn noch da, dann öffne den Ausgang*/
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 |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|