Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  Frage zu waituntil

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Frage zu waituntil (2629 mal gelesen)
Zifnab
Mitglied
Student


Sehen Sie sich das Profil von Zifnab an!   Senden Sie eine Private Message an Zifnab  Schreiben Sie einen Gästebucheintrag für Zifnab

Beiträge: 23
Registriert: 11.01.2005

erstellt am: 05. Apr. 2005 08:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Forum,

ich habe da ein kleines Problem mit dem "waituntil" Befehl.
Ich verwende diese Funktion mit der Bedingung, dass eine Tabelle oder Liste nicht leer ist. Oder besser gesagt: waituntil Liste.dim>0 prio 1;
Allerdings funktioniert dies nicht richtig. Ist die Bedingung am Anfang war, macht er weiter. Hält er an und wartet bis sich der Wert ändert, tut sich nichts, obwohl die Liste gefüllt wird. Halt ich dann die Simulation an, schau auf die Liste und starte die Simulatin wieder, macht er korrekt weiter.
Ist .dim vielleicht doch nicht überwachbar, obwohl ein Stern in der Spalte steht, oder was könnte ich noch falsch gemacht haben?
Viele Dank für eure Hilfe.

Viele Grüße
Zifnab

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 05. Apr. 2005 10:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,
also das tabelle.dim ist schon ueberwachbar. Es würde sonst eine Fehlermeldung erscheinen wenn die "waituntil"-Funktion aufgerufen wird.

Mach mal folgendes, dann wird es funktionieren:

init-Methode:

is
do
ref(mwait).methaufr(0.0);
end;


mwait-Methode:

is
do
repeat
waituntil tab.dim >0 prio 1;
print "tabelle dim:",tab.dim ;
tab.loeschen;
until false
end;

sobald etwas in die Tabelle eingetragen wird, werden die Anweisungen nach "waituntil" ausgeführt und die Tabelle geloescht.

Du mußt allerdings mit diesen Endlos-Schleifen etwas aufpassen. Wenn das Ereignis "tabelle.dim > 0" länger andauert, wird die Schleife (ohne Zeitverbrauch) immer wieder ausgeführt. Abbruch ist dann durch STRG+ALT+SHIFT (gleichzeitig) möglich.

Gruss


------------------
DER SIMULATOR  

[Diese Nachricht wurde von Simulator am 05. Apr. 2005 editiert.]

Zifnab
Mitglied
Student


Sehen Sie sich das Profil von Zifnab an!   Senden Sie eine Private Message an Zifnab  Schreiben Sie einen Gästebucheintrag für Zifnab

Beiträge: 23
Registriert: 11.01.2005

erstellt am: 05. Apr. 2005 11:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

danke bei deinem Beispiel gehts. Ich frag mich eben nur, warum die Funktion nicht in meinem Modell an dieser Stelle funktioniert. Hab es auch schon mit "stopuntil" versucht, falls ich die Bedingung vorher wieder ändern sollte. Besonders komisch finde ich allerdings, dass es weiterläuft, sobald ich mir die Tabelle anschaue. So als ob er dann erst wieder die Bedinung überprüft.
Jetzt hab ich es mal mit
repeat wait(1);
until tab.dim>0 or tab2.dim>0;
gemacht. Ist aber leider nicht so gut zum debuggen, weil man dann nicht sieht, an welcher Stelle er hängt, wenn man das Konstrukt zu oft einsetzt, da die Zeit dann weiterläuft. Werd nochmal ein wenig rumtüfteln.
Trotzdem danke für die Hilfe :-)

Gruss
Zifnab

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 05. Apr. 2005 19:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

wie meinst Du das mit dem "nicht so gut debuggen" bzw. die Zeit läuft weiter ?

Du kannst doch in der Methode Haltepunkte setzen, sodaß die Simulation am Haltepunkt anhält und den Debugger aufruft oder ?

Gruss

------------------
DER SIMULATOR 

Zifnab
Mitglied
Student


Sehen Sie sich das Profil von Zifnab an!   Senden Sie eine Private Message an Zifnab  Schreiben Sie einen Gästebucheintrag für Zifnab

Beiträge: 23
Registriert: 11.01.2005

erstellt am: 06. Apr. 2005 08:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ja, das schon. Wenn ich aber nur waituntil verwende und irgendwann blockieren sie sich gegenseitig bzw. die Ergeignisse treten nicht mehr auf, wird die Zeit angehalten und man kann schauen, welche Methoden suspendiert sind. Bei dem repeat-wait;-until Konstrukt läuft die Zeit aber weiter, wenn die Bedingungen nicht erfüllt werden. Er hat ja immer schon wieder die nächste Aktion, die er ausführen muss. wait() eben. Und das macht dann das suchen nach dem Fehler ein wenig aufwendiger. :-)
Hab mich vielleicht ein wenig umständlich ausgedrückt. Sorry :-)
Oder seh ich bei dem Ganzen  irgendwas falsch?

Gruss
Zifnab

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 06. Apr. 2005 12:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

Also mit dem Debugger in eM-Plant kannst Du sehr tief interaktiv in die Simulation eingreifen siehe auch
http://ww3.cad.de/foren/ubb/Forum263/HTML/000008.shtml

und Dir auch Schritt für Schritt das Modellverhalten anschauen.

Gerade für die Untersuchung von "waituntil"-Ereignissen ist er äußerst hilfreich, weil Du bei manchen Modellen  von aussen einfach nicht mehr erkennen kannst wann und vor allem in  welcher Reihenfolge die Ereignisse das "waituntil" aktiviert haben.

Gruss

------------------
DER SIMULATOR     

[Diese Nachricht wurde von Simulator am 06. Apr. 2005 editiert.]

Zifnab
Mitglied
Student


Sehen Sie sich das Profil von Zifnab an!   Senden Sie eine Private Message an Zifnab  Schreiben Sie einen Gästebucheintrag für Zifnab

Beiträge: 23
Registriert: 11.01.2005

erstellt am: 07. Apr. 2005 09:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,

ja, da hast du recht. Der Debugger ist wirklich gut und wird auch schon sehr oft in Anspruch genommen. :-)
Aber gibt es eigentlich die Möglichkeit sich die Methoden anzeigen zu lassen, die durch "wait ()" zurückgestellt wurden? Bei den suspendierten Methoden werden sie bei mir leider nicht angezeigt.
Vielen Dank. :-)

Gruss

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 07. Apr. 2005 22:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

nicht nur bei Dir :-), denn die durch wait(zeitdauer) erzeugte Verzögerungen stellen keine Suspendierung der Methode dar, die unter "suspendierte Methoden" angezeigt werden. Klingt vermutlich jetzt etwas kurios, aber lt. Hilfe werden die durch waituntil bzw. stopuntil "verursachte" Suspendierungen unter "suspendierte Methoden" angezeigt.

Wenn Du die Wait()- Anweisung in eine neue Zeile schreibst, und dort einen Haltepunkt setzt, dann müsste es dort gehen oder ?


Gruss

------------------
DER SIMULATOR 

Zifnab
Mitglied
Student


Sehen Sie sich das Profil von Zifnab an!   Senden Sie eine Private Message an Zifnab  Schreiben Sie einen Gästebucheintrag für Zifnab

Beiträge: 23
Registriert: 11.01.2005

erstellt am: 13. Apr. 2005 08:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,

ja genau, so funktioniert es. Bloss wenn es zu viele sind, kann das setzen von Haltepunkten auch sehr langwierig werden. Bzw. das spätere fortsetzen jeder einzelnen Methode ;-)
Aber ich habe nun leider ein anderes riesiges Problem.
War nun einige Zeit nicht da und als ich mein Modell wieder öffnen wollte, wird mir ein Fehler angezeigt. Egal was ich drücke, eM-Plant wird sofort wieder geschlossen und ich kann gar nichts machen.
Der Fehler lautet:
Ein Laufzeitfehler trat auf:Access Violation
Adresse:MethodeCore::getDericates, methode.cpp
Call Stack:
0:MethodCore::getDerivates
1:MethodCore:: preApplyCodeChanges
2:Interpreter::applyCodeChanges
3:MethodeCore::setSource
4:FreeAttr::setValue
5:SimpleImporter::checkConsistence
6:Node::checkConsistence
7:Place::checkConsistence
8:NwObjFolder::checkConsistence
9:NwObjFolder:checkconsistence

Das Modell wird gesichert als:......

was bedeutet das genau und kann ich mein Modell irgendwie retten??
Wäre schön, wenn da jemand Rat finden würde.

Vielen Dank.

Gruss

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 13. Apr. 2005 12:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

hast Du denn noch die Backup-Datei *.bak ? 
sonst siehst schlecht aus

Gruss

------------------
DER SIMULATOR 

Zifnab
Mitglied
Student


Sehen Sie sich das Profil von Zifnab an!   Senden Sie eine Private Message an Zifnab  Schreiben Sie einen Gästebucheintrag für Zifnab

Beiträge: 23
Registriert: 11.01.2005

erstellt am: 13. Apr. 2005 12:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ja, die habe ich noch, aber wenn ich versuche die zu öffnen kommt genau die selbe Fehlermeldung :-(
Oder kann man da noch etwas anderes mit der Datei machen?
*hoff*

Gruss

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 13. Apr. 2005 12:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

hast Du mal versucht die Datei aufzurufen, die  beim
"Das Modell wird gesichert als:......" nochmals gesichert wird.
Hat die Endung *.spp und dateiname = username.
Ansonsten öffne mal eM-Plant und versuche so die Datei so zu laden.

Gruss

------------------
DER SIMULATOR 

Zifnab
Mitglied
Student


Sehen Sie sich das Profil von Zifnab an!   Senden Sie eine Private Message an Zifnab  Schreiben Sie einen Gästebucheintrag für Zifnab

Beiträge: 23
Registriert: 11.01.2005

erstellt am: 13. Apr. 2005 13:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Simulator,

sagen wir mal ich habe sie gesucht. In dem angegebenen Verzeichnis befindet sich so eine Datei nicht. Auch keine, die auch nur annähernd von der Größe her passen könnte.
Hab dann vorerst mal mit einer alten Datei weitergearbeitet. Zur Mittagszeit gespeichert und geschlossen. Als ich sie dann wieder öffnen wollte, kam genau die selbe Fehlermeldung. Ich versteh das nicht. :-(

Gruss

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 13. Apr. 2005 21:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

hmmm.  mach doch mal folgendes :

Versuche mal die Datei wieder in ein neues Modell zu importieren.

Gruss

------------------
DER SIMULATOR  

[Diese Nachricht wurde von Simulator am 17. Apr. 2005 editiert.]

Zifnab
Mitglied
Student


Sehen Sie sich das Profil von Zifnab an!   Senden Sie eine Private Message an Zifnab  Schreiben Sie einen Gästebucheintrag für Zifnab

Beiträge: 23
Registriert: 11.01.2005

erstellt am: 14. Apr. 2005 12:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,

hab jetzt einfach nochmal einen älteren Stand geladen und ausprobiert, woran es liegen kann, dass der Fehler immer wieder auftritt.
Meine Vermutung:
Ich habe in einer Instanz eine Methode eingeführt, die in der Klasse nicht existiert. Jetzt wollte ich aber diese Methode doch mit in die Klasse einbringen und für die anderen Instanzen übernehmen. Allerdings habe ich die Funktion nicht in der ersten Instanz gelöscht. Füge ich nun diese in die Klasse ein entstehen anscheinend Probleme beim erneuten laden der Datei.
Hab es nun umgangen, indem ich zuerst die Funktion aus der Instanz gelöscht und erst danach in die Klasse eingefügt habe. Danach ging es.
Schade aber nur, dass die andere Datei futsch ist :-(
Aber danke für die Hilfe. :-)

Gruss

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Zifnab
Mitglied
Student


Sehen Sie sich das Profil von Zifnab an!   Senden Sie eine Private Message an Zifnab  Schreiben Sie einen Gästebucheintrag für Zifnab

Beiträge: 23
Registriert: 11.01.2005

erstellt am: 14. Apr. 2005 12:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Mh, sorry ich schon wieder.

merkwürdig ist allerdings, dass dieser Fehler bei kleineren Modellen nicht herbeizuführen ist. Hier weisst das Programm dann beim laden darauf hin, dass Inkonsistenzen aufgetreten sind. Und er öffnet das Modell wenigstens zur Fehlerbehebung.
Aber das nur zur Anmerkung. :-)

Gruss

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 14. Apr. 2005 21:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

ich vermute dieser Fehler hat sich beim spezifischen Modellieren irgendwann eingeschlichen ohne daß Du es gemerkt hast. Denn grundsätzlich ist es schon vorgesehen,Methoden oder spezifische Objekte in die Klassenbiliothek zu transferieren.

Eine Arbeitsweise, die ich mir angeeignet habe - aus denselben Erfahrungen- ist:

regelmässig abspeichern unter einem neuen Index und Methodenentwicklungen hauptsächlich in der Klassenbibliothek durchzuführen.

Gruss

------------------
DER SIMULATOR 

Zifnab
Mitglied
Student


Sehen Sie sich das Profil von Zifnab an!   Senden Sie eine Private Message an Zifnab  Schreiben Sie einen Gästebucheintrag für Zifnab

Beiträge: 23
Registriert: 11.01.2005

erstellt am: 15. Apr. 2005 09:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,

ja ich glaube du hast recht. Werde am Besten in Zukunft besser auf die Vererbung achten.
Aber ich glaube ich weiss nun, warum die waituntil in Verbindung mit der Warteschlange.dim nicht funktioniert. Wenn ich das Beispiel von oben nehme und die Warteschlange(tab) als Benutzerdefiniertes Attribut einfüge, anstatt es in das Netzwerk direkt einzufügen, funktioniert es bei mir nicht mehr. Bitte nicht lachen, wenn das klar war, aber ich arbeite zur Zeit fast nur mit Benutzerdefinierten Attributen und dachte, dass es keinen Unterschied macht, ob ich sie auf die Oberfläche lege, oder eben nicht. :-)
Sorry fürs nerven.

Viele Grüße
Zifnab

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz