|
Autor
|
Thema: Simulation unterbrechen (1660 mal gelesen)
|
uobeg2 Mitglied
 Beiträge: 4 Registriert: 17.01.2011 emPlant 9.0
|
erstellt am: 17. Jan. 2011 14:15 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich möchte gerne einen externen Optimierer mit meinem Simualtionsmodell koppeln. Dafür simuliert die Simulation eine gewisse Zeit und soll dann eine Datei in einen Ordner schreiben. Der Optimierer überprüft, ob die Datei vorhanden ist und beginnt dann seine Rechnungen (ca. 5 min) und endet damit eine neue Datei in den Ordner zu legen. Wenn diese neue Datei vorhanden ist, soll die Simulation diese einlesen und wieder starten. Wie kann ich meine Simualtion für eine bestimmte Zeit anhalten und dann wieder starten lassen? (Die Simulationszeit soll in dieser Zeit nicht weiterlaufen) Kann mir da jemand helfen? - waituntil existsFile(Name) prio 1 krieg ich nicht zum Laufen (error: "der Ausdruck enthält keine externen Abhängigkeiten" , ich denke das geht nur mit internen Bausteinen/Methoden) - ref(obj).methcall(10) - geht auch nicht, da in diesem Fall die Simulation weiterläuft Habt ihr sowas schon mal gemacht? Habt Ihr Ideen? Bin dankbar für jede Art der Problemlösung! Vielen Dank! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
math4fun Mitglied
 
 Beiträge: 167 Registriert: 12.12.2005
|
erstellt am: 18. Jan. 2011 12:10 <-- editieren / zitieren --> Unities abgeben:          Nur für uobeg2
Hi Uobeg2, Plant Simulation soll beispielsweise 2 Sekunden warten und dann wieder nachsehen, ob der Optimierer fertig ist und eine Datei geschrieben hat. Probiere die Methode sleep aus. Etwa so: repeat sleep(2); until existsFile(Name); ------------------ PM www.math4fun.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
uobeg2 Mitglied
 Beiträge: 4 Registriert: 17.01.2011 emPlant 9.0
|
erstellt am: 18. Jan. 2011 17:20 <-- editieren / zitieren --> Unities abgeben:         
Danke math4fun, deine Version funktioniert in folgender Weise: repeat sleep(2,true) until existsFile(pfad); ich habe noch eine zweite Möglichkeit gefunden, auch in Form einer Endlossschleife, die bei den ersten Langzeitsuchvorgängen ein wenig stabiler läuft boole := existsFile("C:\text.txt"); boole := NOT(boole); root.Ereignisverwalter.stop; while boole loop print "noch nicht"; boole := existsFile("Z:\PPlanTimpeGeschrieben2.txt"); boole := NOT(boole); end; root.Ereignisverwalter.start; Vielen Dank!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| | Ingenieur als Expertin oder Experte Prüfstatik und Nachrechnung (w/m/d) | Eine funktionierende Autobahninfrastruktur ist der Garant dafür, dass Deutschland mobil ist. Damit das so bleibt, brauchen wir Ihre Expertise als Ingenieurin oder Ingenieur. Tausende Brücken, hunderte Tunnel und unzählige Nebenanlagen müssen regelmäßig geprüft, gewartet und erneuert werden. Auch die Steuerung des Verkehrs sowie die Koordination des Betriebsdienstes gehören zu den abwechslungsreichen und spannenden Aufgaben unserer Mitarbeitenden.... | | Anzeige ansehen | Feste Anstellung |
|
tsx Mitglied
 
 Beiträge: 103 Registriert: 06.03.2010
|
erstellt am: 18. Jan. 2011 18:20 <-- editieren / zitieren --> Unities abgeben:          Nur für uobeg2
Der Ansatz ist ganz gut, aber machs doch lieber so. Vorteil: Plant Simulation braucht weniger Ressourcen, da die Endlosschleifen nur im Sekundenrythmus checkt, ob die Datei da ist. Code:
is boole:boolean do boole := existsFile("C:\text.txt"); boole := NOT(boole); root.Ereignisverwalter.stop; while boole loop print "noch nicht"; boole := existsFile("Z:\PPlanTimpeGeschrieben2.txt"); boole := NOT(boole); sleep(1); end; root.Ereignisverwalter.start; end;
------------------ Grüße, tsx  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |