| 
Autor
 | 
Thema:  Problem beim Umlagern (1455 mal gelesen)
 | 
 
 
                        first_edition Mitglied Student
  
        Beiträge: 3 Registriert: 15.12.2004 
                         | 
                        
                         
                                                 
                        erstellt am: 27. Dez. 2004 09:20       <-- editieren / zitieren -->           Unities abgeben:           
                        
  Hallo Forum, Meine Bearbeitungsstation besteht aus einem Sortierer und einer Einzelstation. Möchte ich nun vom Sortierer auf die Einzelstation umlagern, hängt sich eM-plant vollständig auf. Ich weiß auch, wo der Fehler liegt, was ich leider nicht weiß ist, wie man diesen vermeiden kann. Beispiel: repeat J12_aj_größer_bj[1,1].umlagern; Objekt:= J12_aj_größer_bj[1,1]; until myES1.inhalt = Objekt; J12_aj_größer_bj.entferneZeile(1); Die repeat-Schleife befindet sich in der Ausgangssteuerung des Sortierers. Diese habe ich eingefügt, damit sichergestellt ist, dass das BE auch tatsächlich umgelagert ist, bevor die Zeile gelöscht wird. Ist die Einzelstation allerdings belegt, verlässt er die repeat-Schleife nicht mehr, da das BE auf der Einzelstation die Ausgangssteuerung der ES gar nicht mehr aufruft. Was kann ich tun? Ganz herzlichen Dank für Eure Mithilfe!!! Gruß first_edition Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  |  
                        
                           Ex-Mitglied
  
                           | 
                          
                           
                           
                          erstellt am: 27. Dez. 2004 11:20       <-- editieren / zitieren -->       
                          
  Hallo first_edition, mit welcher Version arbeitest Du ? Kannst Du nochmal beschreiben, was der Sortierer in Verbindung mit der Einzelstation genau machen soll Anbei ein paar Info´s vorab. Bedingte Repeat-Schleifen sind gefährlich und in Ausgangssteuerungen seeehr gefährlich! Hier hast Du eine Schleife ohne Zeitverbrauch (Zeitdauer 0 Sekunden!) d.h. in diesem Fall "wartet" der Ereignisverwalter bis die Schleife abgearbeitet ist.  Wie Du auch festgestellt hast, läuft beim 1. fehlgeschlagenen Umlagerungsversuch Deine Repeat-Schleife endlos durch weil Deine Abbruchbedingung nicht erfüllt wird. Aus der Schleife kommst Du aber mit der Tastenkombination STRG+ALT+SHIFT (gleichzeitig) heraus. Was ist da noch für eine Ausgangssteuerung auf der ES=Einzelstation (siehe letzten Absatz) oder meinst Du vermutlich damit doch den Sortierer(=ES?). Was für BE´s stehen in der Tabelle <j12_aj_größer_bj[..,..]> ? ist das BE "J12_aj_größer_bj[1,1]" das aktuelle  "= @" ?  Gruß
 
 
 ------------------ DER SIMULATOR     |  
                          
                        first_edition Mitglied Student
  
        Beiträge: 3 Registriert: 15.12.2004 
                         | 
                        
                         
                                                 
                        erstellt am: 27. Dez. 2004 13:54       <-- editieren / zitieren -->           Unities abgeben:           
                        
  Hallo Simulator, erstmal ganz herzlichen Dank für Deine Antwort! ich arbeite mit der Version 7.0 (Studentenversion). Ich versuche, die Prioritätsregeln nach Jackson zu programmieren. Vorgabe ist, dass 4 verschiedene Auftragstypen existieren, die auf zwei Maschinen bearbeitet werden, also: Typ 1: erst auf Maschine 1 dann auf Maschine 2 Typ 2: erst auf Maschine 2 dann auf Maschine 1 Typ 3: nur auf Maschine 1 Typ 4: nur auf Maschine 2 Meine Vorgehensweise ist wie folgt: In der Ausgangssteuerung der Quelle (Quelle_Ausgang) werden die Typen 1-4 zufällig erzeugt und eine zufällige Bearbeitungszeit zugewiesen. Das funktioniert. Weiterhin werden die Typen in Quelle_Ausgang entsprechenden Tabellen zugewiesen. Die Typen 1 und 3 werden zuerst auf Maschine 1 bearbeitet, daher Zuweisung in Tabelle J12_aj_kleiner_bj bzw. J12_aj_größer_bj. Zuweisung zu J12_aj_kleiner_bj erfolgt, wenn die Bearbeitungszeit auf Maschine 1 kleiner der Bearbeitungszeit auf Maschine 2 ist. Trifft das nicht zu, wird J12_aj_größer_bj zugewiesen. Analoges gilt für die Typ 2 und 4, sowie für die Tabellen J21_*** Das funktioniert auch. Anschließend werden die Typen auf den Sortierer der entsprechenden Maschine umgelagert (eine Maschine besteht aus einem Sortierer und einer Einzelstation). Bei Eintritt in den Sortierer werden die Tabellen J12_aj_kleiner_bj, J21_aj_kleiner_bj aufsteigend und J12_aj_größer_bj, J21_aj_größer_bj absteigend sortiert. Das stellt sicher, dass entweder das Objekt mit der größten bzw. kleinsten Bearbeitungszeit in Zeile 1 steht. Jetzt kommt die Ausgangssteuerung des Sortierers (Sortierer_Ausgang). Das ist die, die mir Probleme bereitet. Hier soll überprüft werden, welcher Auftrag die höchste Priorität hat und dieser soll dann auf die nachfolgende Einzelstation umgelagert werden. Das kann das aufrufende BE sein, muss aber nicht. Am besten ist, ich schreibe mal den Quellcode für den Sortierer1 nachfolgend auf: is 	Objekt: object; do if J12_aj_kleiner_bj[2,1] /= 0 then repeat J12_aj_kleiner_bj[1,1].umlagern; Objekt:= J12_aj_kleiner_bj[1,1]; until myES1.inhalt = Objekt; J12_aj_kleiner_bj.entferneZeile(1); 			 elseif J12_aj_größer_bj[2,1] /= 0 then repeat J12_aj_größer_bj[1,1].umlagern; Objekt:= J12_aj_größer_bj[1,1]; until myES1.inhalt = Objekt; J12_aj_größer_bj.entferneZeile(1); 				 else repeat Warteschlange21[1,1].umlagern; Objekt:= Warteschlange21[1,1]; until myES1.inhalt = Objekt; Warteschlange21.entferneZeile(1); end;								 end; Das Problem ist, wie Du gesagt hast, dass wenn einmal die repeat-Schleife betreten ist, diese auch nicht mehr verlassen wird, wenn die nachfolgende Einzelstation belegt ist. Hier habe ich die Beobachtung gemacht, dass das BE, das auf der nachfolgenden Einzelstation sitzt, die Ausgangssteuerung der Einzelstation überhaupt nicht mehr aufruft. Ich weiß jetzt nicht, ob Du den Quellcode für diese Ausgangssteuerung (ES_Ausgang) auch gerne sehen möchtest?!  Mit der repeat-Schleife möchte ich vermeiden, dass die Tabellenzeile vor der tatsächlichen Umlagerung auf die Einzelstation gelöscht wird. Ich hoffe, ich habe mein Problem einigermaßen verständlich dargestellt. Auf jeden Fall möchte ich mich nochmal für Dein Interesse und Deine Mithilfe bedanken! Viele Grüße first_edition 		 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  |  
                        
                        first_edition Mitglied Student
  
        Beiträge: 3 Registriert: 15.12.2004 
                         | 
                        
                         
                                                 
                        erstellt am: 27. Dez. 2004 19:46       <-- editieren / zitieren -->           Unities abgeben:           
                        
  Hallo Simulator, das mit dem Zeitverbrauch hat funktioniert, das Programm hängt sich jetzt wenigstens nicht mehr auf. Funktionieren tut es zwar noch nicht, wie ich das möchte, sollte ich aber hinbekommen. Zu Deiner Frage: es handelt sich um den eM-Plant Baustein. Was der genau macht? Eigentlich sortiert er die Tabellen und soll dann entsprechend umlagern je nach dem, welches BE die höchste Priorität hat (gemäß Tabelle). Man braucht in dieser Form sicherlich keinen Sortierer, da hast Du recht. Du weißt nicht zufällig, ob es in eM-Plant einen vordefinierten Jackson-Algorithmus gibt?!? :-) Tschüss und viele Grüße, first_edition Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  |  
                       
   
 | | Baulogistikleiter:in (m/w/d) |  Als Teil der weltweit tätigen STRABAG SE und Nummer eins im deutschen Hoch- und Ingenieurbau bauen wir bei ZÜBLIN laufend am Fortschritt. Einzigartigkeit und individuelle Stärken kennzeichnen dabei unsere Projekte und jede:n Einzelne:n von uns. Ob im Hoch- und Ingenieurbau, Spezialtiefbau, Tunnel-, Stahl- und Holzbau, in der Bauwerkserhaltung oder Baulogistik ? wir denken Bauen weiter, um der innovativste und nachhaltigste Bautechnologiekonzern Europas zu werden....  |  | Anzeige ansehen | Feste Anstellung |  
  |  
 
                           Ex-Mitglied
  
                           | 
                          
                           
                           
                          erstellt am: 27. Dez. 2004 20:21       <-- editieren / zitieren -->       
                          
  Hi first_edition, das mit dem wait(1) war nur als Zwischenlösung (quick & dirty) gedacht damit Du schnell weiterarbeiten kannst, denn sie macht die Simulation erzwungenermaßen langsam. Wenn Du anscheinend keine sortiererspezifischen Funktionen nutzt kannst Du den Sortierer mit einem Puffer austauschen, dann kannst Du mal dies probieren (ist etwas sauberer und schneller ): is 	Objekt: object; do 	waituntil ES1.leer prio 1; 	 	if J12_aj_kleiner_bj[2,1] /= 0 then			 		J12_aj_kleiner_bj[1,1].umlagern; 		J12_aj_kleiner_bj.entferneZeile(1); 	elseif J12_aj_größer_bj[2,1] /= 0 then 		J12_aj_größer_bj[1,1].umlagern; 		J12_aj_größer_bj.entferneZeile(1); 	else 		Warteschlange21[1,1].umlagern; 		Warteschlange21.entferneZeile(1); 	end;  end;  Nun zum Jackson-Algorithmus: wenn überhaupt dann in der shop-library, aber ich weis nicht ob Du (Studenten-Lizenz) da Zugriff darauf hast. Aber ich vermute mal nicht.
  Gruß
 ------------------ DER SIMULATOR     |  
                          
 | Anzeige.:
  Anzeige: (Infos zum Werbeplatz >>)
    |