Showing results for 
Search instead for 
Do you mean 
Reply
Solved! Go to solution

Methode mehrmals durchführen

 

Guten Morgen liebe Community,

 

ich bin neu hier im Forum und benötige etwas Hilfe. Vielen Dank schonmal im Voraus für die Hilfestellungen.

 

Vorab zum Modell:

Im Rahmen einer Studienarbeit soll eine Einfache Bearbeitungslinie erstellt und nach und nach Optimierungen vorgenommen werden.

Es handelt sich um eine Bearbeitungslinie mit 7 Stationen. Diese Maschinen können Teile produzieren die in Ordnung (i.O) sind und Teile die nicht in Ordnung sind (n.i.O). Den BEs und Förderhilfsmitteln habe ich hierzu das Attribute n.i.O mit dem Dateientyp boolean zugewiesen. Über eine Tabelle werden die prozentualen Wahrscheinlichkeiten, dass ein Teil niO wird "ausgewürfelt" und entsprechender Dateityp true oder false zugewiesen. Ist das Teil niO läuft es nochmal durch die gesamte Bearbeitungslinie und wird an der selben Maschine im erneuten Umlauf bearbeitet. Das Teil kann bis zu 3 mal niO werden bis es entgültig verschrottet wird. Sprich das Teil läuft die gesamte Linie bis zu max. 3 mal durch. Dazu würfelt das System jedesmal erneut ob das Bearbeitungsteil niO ist. Funktioniert auch alles super.

Die Methode lautet bisher:

 

v_Zufall,zahl:real;
 v_Help:integer; 
do
 if @.nio=false then
  zahl:= z_gleich(3,0,1);
  v_Help:=Ausschuss.getRowNo(?);
  v_Zufall:=Ausschuss[1,v_Help];
  if zahl<v_Zufall  then;
   @.nio:= true;
   @.Station5:= true;
   @.Umlauf:= true;
   .Modelle.Netzwerk.NiO:=.Modelle.Netzwerk.NiO+1;
  else
   @.nio:= false;
  end;
 elseif @.nio= true and @.Station5=true and @.Umlauf=true and @.Nachgearbeitet=false and @.NiO_Zähler<3 then 
  zahl:= z_gleich(1,0,1);
  v_Help:=Ausschuss.getRowNo(?);
  v_Zufall:=Ausschuss[1,v_Help];
  if zahl>v_Zufall  then;
   @.nio:= false;
   @.Station5:= false;
   @.Umlauf:= false;
   @.Nachgearbeitet:=false;
   @.NiO_Zähler:=0;
   .Modelle.Netzwerk.NiO:=.Modelle.Netzwerk.NiO-1;
  else
   @.nio:= true;
  end;
 elseif @.nio= true and @.Station5=true and @.Umlauf=true and @.Nachgearbeitet=true and @.NiO_Zähler=3 then 
  zahl:= z_gleich(1,0,1);
  v_Help:=Ausschuss.getRowNo(?);
  v_Zufall:=Ausschuss[1,v_Help];
  if zahl>v_Zufall  then;
   @.nio:= false;
   @.Station5:= false;
   @.Umlauf:= false;
   @.Nachgearbeitet:=false;
   @.NiO_Zähler:=0;
   .Modelle.Netzwerk.NiO:=.Modelle.Netzwerk.NiO-1;
  else
   @.nio:= true;
  end;
 else
  return;
 end;
end;

 

Mein Problem ist:

 

Zur Optmimierung soll nun das Teil nicht mehr umlaufen, sondern an der Maschine mehrfach geprüft werden.

Die Station soll die Methode bei nio Meldung erneut aufrufen, und ermitteln ob die Teile niO sind (bis max. 3 mal niO), ohne die Teile erstmal über die gesamte Linie zu befördern. 

Es würde demnach Folgende Möglichkeiten geben.

 

-Das Bearbeitungsteil wird beim Eintritt in die Station (erste Messung) nio:=false gemeldet also benötigt diese keine weitere Messung.

-Das Bearbeitungsteil wird beim Eintritt in die Station nio gemessen nio:=true (erste Messung), also überprüft die Station erneut die Bedingungen und wird bei der zweiten Messung nio:=false.

-Das Bearbeitungsteil wird beim Eintritt in die Station nio gemessen nio:=true (erste Messung), also überprüft die Station erneut die Bedingungen und wird bei der zweiten Messung erneut nio gemessen nio:=true, also wird ein drittes mal gemessen und das Teil wird nio:=false gemeldet. 

- Worst case das Bearbeitungsteil wird dreimal hintereinander niO nio:=true  gemeldet.

 

Wie kann ich die oben aufgeführte Methode anpassen, damit diese Bedingungen eintreten???

 

Ich bin dankbar für jede noch so kleine Hilfestellung.

 

Liebe Grüße

 

Hatiaki

6 REPLIES

Re: Methode mehrmals durchführen

Werden die Teile nach erfolgter nio Einstufung noch einmal auf der Maschine bearbeitet?

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


Re: Methode mehrmals durchführen

Guten Tag Steffen_B,

wenn Sie tatsächlich der Verfasser des Buches "Praxishandbuch Plant Simulation und SimTalk" sind, dann würde ich Ihnen gerne ein großes Kompliment aussprechen. Ich habe zuvor nie mit diesem Programm gearbeitet und bin eigentlich sehr unerfahren, was Programmiersprache angeht. Mit Hilfe Ihres Buches und den Beispielaufgaben ist es mir gelungen eigenständig mit dem Programm zu arbeiten. Vielen Dank.

In dem jetzigen Zustand fährt das Teil nach nio Einstufung weiter und durchquert die gesamte Linie aufs neue um an der selben Station erneut eingestuft zu werden.

Die Maschine "Station5" soll eine Messmaschine darstellen, die das Produzierte Bauteil auf Mängel bei der Produktion überprüft (die Überprüfung ist gleich wie eine Bearbeitung), wobei bei der Maschine ausgegangen wird, dass sie auch mal fehlerhaft misst. Bevor ein Ergebnis ausgegeben wird, wird die eingestellte Prüf- /Bearbeitungszeit abgewartet.
Als Optimierung soll beim nio Fall einfach erneut an Ort und Stelle geprüft werden ohne erneutem Umlauf bis die maximal Bedingung erfüllt ist und erst dann als zu verschrotten eingestuftes Teil über meine Ausschleusstation aus dem System genommen wird.

Ich hoffe das ich Ihre Frage richtig verstanden haben.

Liebe Grüße

Hatiaki

Re: Methode mehrmals durchführen

Hallo Hatiaki,

 

zunächst: schön, dass Ihnen mein Buch geholfen hat.

 

Für Ihr Problem würde ich Ihnen einen anderen Ansatz vorschlagen:

 

Wenn ein Teil in die Messmaschine eintritt (Eingangssteuerung), sperren Sie den Ausgang des Vorgängers:

 

?.vg.ausgangGesperrt:=true

 

In der Ausgangssteuerung können Sie verfahren, wie in dem Linien-Beispiel.

Wenn das Teil io ist oder endgültig Schrott, dann lagern Sie das Teil auf den Nachfolger um und geben den Ausgang des Vorgängers wieder frei.

Wenn das Teil (nicht endgültig) nio ist, dann lagern Sie das Teil auf die Messmaschine (quasi vom Ausgang in den Eingang) um und eine neue Bearbeitung beginnt (+ zählen der Umläufe...):

 

?.inhalt.umlagern(?)

 

Das hat mehrere Vorteile: die Auslastung der Messmaschine wird besser dargestellt, Ihre Ausgangssteuerung kann sehr viel einfacher sein...

 


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


Re: Methode mehrmals durchführen

Guten Tag Steffen_B,

 

ich habe jetzt das Problem, dass meine Station überhaupt keine Teile mehr aufnimmt. Die Teile stauen sich auf der Förderstrecke und blockieren das System. Es findet keine Weitergabe an die Station statt. Ich habe verschieden Formulierungen plus dedailliertere Anweisungen in der Methode ausprobiert und bin nun mit meinem Latein am Ende.

Ich habe wahrscheinlich versehentlich durch die Eingabe irgendetwas so umgestellt, dass die Station, auch nach dem ich die Methoden sowohl in der Eingangssteuerung als auch Ausgangssteuerung entfernt habe, dennoch keine Teile in die Station aufnimmt.

 

 

Meine Eingangsmethode lautet :

 

is
do
 if @.belegt= true then
  vg.ausgangGesperrt:=true;
 else
  vg.ausgangGesperrt:=false;
end;
end;

 

Die Ausgangssteuerung lautet nun:

 

is
 v_Zufall,zahl:real;
 v_Help:integer; 
do
 if @.nio=false then
  zahl:= z_gleich(3,0,1);
  v_Help:=Ausschuss.getRowNo(?);
  v_Zufall:=Ausschuss[1,v_Help];
  if zahl<v_Zufall  then;
   @.nio:= true;
   @.Station5:= true;
   @.Umlauf:= true;
   @.NiO_Zähler:= @.NiO_Zähler+1;
   .Modelle.Netzwerk.NiO:=.Modelle.Netzwerk.NiO+1;
   ?.ausgangGesperrt:=true;
   ?.inhalt.umlagern(?);
  else
   @.nio:= false;
   ?.ausgangGesperrt:=false;
   ?.inhalt.umlagern(.Modelle.Netzwerk.F15);
  end;
 elseif @.nio= true and @.Station5=true and @.Umlauf=true and @.Nachgearbeitet=false and @.NiO_Zähler<3 then 
  zahl:= z_gleich(1,0,1);
  v_Help:=Ausschuss.getRowNo(?);
  v_Zufall:=Ausschuss[1,v_Help];
  if zahl>v_Zufall  then;
   @.nio:= false;
   @.Station5:= false;
   @.Umlauf:= false;
   @.Nachgearbeitet:=false;
   @.NiO_Zähler:=0;
   .Modelle.Netzwerk.NiO:=.Modelle.Netzwerk.NiO-1;
   ?.ausgangGesperrt:=false;
   ?.inhalt.umlagern(.Modelle.Netzwerk.F15);
  else
   @.nio:= true;
   @.NiO_Zähler:= @.NiO_Zähler+1;
   ?.ausgangGesperrt:=true;
   ?.inhalt.umlagern(?);
  end;
 elseif @.nio= true and @.Station5=true and @.Umlauf=true and @.Nachgearbeitet=false and @.NiO_Zähler=3 then 
  ?.ausgangGesperrt:=false;
  ?.inhalt.umlagern(.Modelle.Netzwerk.F15);
  @.Nachgearbeitet:=true;
 end;
end;

 

Was habe ich übersehen?

 

Liebe Grüße und vielen Dank schonmal für Ihre Mühe

 

Hatiaki

Solution
Solution
Accepted by topic author Hatiaki1990
‎02-23-2017 08:50 AM

Re: Methode mehrmals durchführen

[ Edited ]

zuerst allgemein: Sie müssen den Ausgang des Vorgängers entsperren:

 

?.vg.ausgangGesperrt:=false;

 

ohne Ihr Modell ist das etwas schwierig.

 

die Eingangssteuerung könnte die folgt aussehen:

is
do
   ?.vg.ausgangGesperrt:=true;
end;

vereinfachte Ausgangssteuerung:

 

is
 v_Zufall,zahl:real;
 v_Help:integer; 
do 
  zahl:= z_gleich(3,0,1);
  v_Help:=Ausschuss.getRowNo(?);
  v_Zufall:=Ausschuss[1,v_Help];
  if zahl<= v_Zufall  then
     @.nio:= true;
     @.Station5:= true;
     @.Umlauf:= true;
     @.NiO_Zähler:= @.NiO_Zähler+1;
     .Modelle.Netzwerk.NiO:=.Modelle.Netzwerk.NiO+1;
     if @.NiO_Zähler=3 then
	--maximale Anzahl erreicht --> weiter
	@.Nachgearbeitet:=true; 
	@.umlagern(.Modelle.Netzwerk.F15);
	--Vorgänger entsperren
	?.vg.ausgangGesperrt:=false;
 		 
      else
         --nächste runde
	 @.umlagern(?);
      end;
  else
   -- io getestet	  
   @.nio:= false;
   @.umlagern(.Modelle.Netzwerk.F15);
   --Vorgänger entsperren
   ?.vg.ausgangGesperrt:=false;
  end;
end;

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


Re: Methode mehrmals durchführen

Es funktioniert alles so wie es sollte Smiley Happy))

 

Vielen lieben Dank