(28.10.2014 10:30 )jg schrieb: Unschönheit:
Da dein Dequeue-Message-VI einerseits nicht reentrant ist, andererseits aber unendlich auf ein Dequeue wartet, kannst du nicht parallel an alle Consumer-Loops Nachrichten verschicken.
Bsp: Das Dequeue VI gerade in der Loop Fehlerbehandlung aktiv, und du schickst jetzt was an Kalibrierung. FAIL.
Hi Jens,
arbeite das erste Mail mit einem solchen Aufbau, daher noch Versuchsstadium und
offen für alle Vorschläge. Schande über mein Haupt, aber "reentrant" sagt mir nicht
wirklich was. Habe zwar gelesen was es bedeutet aber wie mich das betrifft weiß ich
nicht.
In der Schleife Kalibrierung wird eine Statemaschine auflaufen die immer wieder
mit anderen Vorgaben und Abäufen gestartet werden sollte. Es wird rund 40-50 verschiedene
States geben aus denen rund 10-15 genutzt werden, wenn ein bestimmte Kalibrierrezept
gestartet wird. Bei einem anderen Kalibrier-Rezept können dass ganz andere sein.
Aus Kalibrierung heraus, wenn die über die Nachrichten-Queue "Start" erhält.
-> State: Druckänderung ein bestimmten Druckwert, z.B. 100mbar und warten bis Druckwert erreicht wird
-> State: Kalibrierung durchführen
-> State: Kalibrierwerte protokollieren und speichern
-> State: und mit anderem Druck weiter...
.. alle States durchlaufen und IDLE Mode. Ein Durchlauf der gewünschen States kann mehrere Stunden dauern
und rund 5 bis 10 mal werden Daten an die Protokollierung gesendet, nicht öfter. Zeitgleicher Aufruf ist ausgeschlossen.
Druckregelung:
-> hier läuft eine Statemaschine mit PID Regelung.
-> "Init" Voreinstellungen laden
-> "Start" PID Druckregelung läuft in einer Schleife, die Schleife kann NICHT über die
Nachrichten-Queue gestoppt werden. Ob das alles so geht muss ich noch testen.
Das wird vermutlich nicht funktionieren, oder? Die Nachrichten-Queue der Druckregelung
muss ich dann löschen und durch eine reine Statemaschine ersetzen, vermutlich besser.
Fehlerbehandlung:
-> hier sollten alle Fehler auflaufen und in einer Tabelle angezeigt werden, mehr nicht, soll
nur das Debug erleichtern. Das Dequeue kann hier unendlich warten bis ein neuer Fehler mit den
Nachrichtendaten übertragen wird und in der Tabelle angezeigt werden soll.
Danke
Stefan
(28.10.2014 10:21 )Morpheus schrieb: Das Problem ist, dass du beim Drücken des "Exit" Buttons den Loop mit dem Event-Handler nicht beendest.
Und der User-Event (Stop Event), den du auslöst, wird ebenfalls nicht abgehandelt!
Ups, den hatte ich vergessen. Danke