Moin Jens,
nochmal vielen Dank für die Erleuterungen und die wertvollen Tipps. Werds heute mal versuchen, mit Queues zu lösen. Is sicherlich die bessere Variante
![Smile Smile](images/smilies/smile.gif)
Hallo,
habs heute wie gesagt mal mit Queues und Meldern versucht. Allerdings eher mit unbefriedigendem Ergebnis...
In den Sub-VIs habe ich als letzten Baustein vor der Error-Out Anzeige jeweils ein Melder Anfordern mit entsprechendem Namensstring und gleich darauf ein Melder Senden (mit Meldung TrueKonstante) eingefügt. Das müssten dann ja eigentlich die letzten Aktionen sein.
Im main.vi setze ich anfangs wieder Melder anfordern mit dem Namensstring und hinter dem Methodenknoten zum Beenden der Sub-VIs ein auf Meldung Warten.
Das Meldung Warten habe ich nun auch noch mit einem Timeout versehen, da es anfangs gar nicht geklappt hat.
Beim Starten des VIs und Klicken durch die Sub-VIs wechseln sich der TimeOut und die Meldung true in unregelmäßigen Abständen ab. D.h. meistens gibt der TimeOut ein True aus und nur selten kommt auch mal die Meldung True an. Den Timeout hab ich wieder mal testweise bis 500ms hoch gemacht, aber es kommt keine Verbesserung.
Muss ich sonst noch Einstellungen berücksichtigen?
Es wahrscheinlch schwer zu sagen ohne VI...
edit: hier trotzdem nochmal das main.vi
Hallo Scuba,
momentan wartet dein MelderLesen genau 10ms. Reagiert dein subVI so schnell auf den QUIT-Befehl?
Also: Melder anlegen.
Melder im subVI beschreiben.
Melder im MainVI auslesen - mit deutlich größerem TimeOut.
Der TimeOut muss größer sein als die maximale Zeit, die das subVI zum Antworten benötigt.
Oder: definierter TimeOut von z.B. 1s und Abfrage in einer Schleife. Nach 10 erfolglosen Abfragen (=TimeOut) wird das subVI dann gewaltsam beendet…
Na, den TimeOut habe ich ja wie im vorigen Post beschrieben schon auf 500ms gehabt und jetzt gerade sogar auf 1000ms oder 2000ms. Da meine SubVIs in ihren Schleifen nur eine wartezeit von 100ms haben, müsste das ja reichen.
Ich muss allerdings nochmal revedieren, dass sich TimeOut und Meldung in unregelmäßigen Abständen abwechseln. Bei genauerer Betrachtung sendet immer nur ein Sub-VI eine Meldung, nämlich das mittlere DoAlpha2Scan. Diese Meldung steht auch sofort an.
Die anderen beiden VIs gehen immer in den TimeOut...wie gesagt haben alle 3 VIs dieselbe Wartezeit. Der einzige Unterschied ist, dass die andern beiden eine Eventstruktur mit 50 ms Timeout haben und DoAlpha2Scan hat keine Eventstruktur.
Uaaarghh, hab den ziemlch dummen Fehler grade gefunden!!
Da ein Messsystem nicht an war, habe ich innerhalb der Sub-VIs eine Visa-Fehlermeldung gekriegt.
Innerhalb des DoAlphaScan hat sich der Fehler dann an anderer Stelle wieder selbst ausradiert, aber in den den Eventstrukturen, is der natürlich im Schieberegister hängen geblieben und so wurde das Melder anforden anscheinend gar nicht aufgerufen
Also tut mir echt leid, dass ich hier noch so lange rumgeschwallt hab!!!
Jetzt sollte es eigentlich klappen...
Danke nochmal für alle Tipps!
Wieder was gelernt. Mit einem anstehenden Fehler in ein Melder oder Queue VI reingehen, nicht gut.
Fast alle VIs werden On-Error nicht ausgeführt. Nur die meisten "Close" VIs machen noch was.
Gruß, Jens
Zitat:Wieder was gelernt. Mit einem anstehenden Fehler in ein Melder oder Queue VI reingehen, nicht gut.
Wieder was gelernt: ErrorHandling betreiben… (Auch bei Test-VIs.)
(28.08.2014 13:18 )GerdW schrieb: [ -> ]Zitat:Wieder was gelernt. Mit einem anstehenden Fehler in ein Melder oder Queue VI reingehen, nicht gut.
Wieder was gelernt: ErrorHandling betreiben… (Auch bei Test-VIs.)
Immerhin wurde offenbar der Error-Cluster weitergegeben, das ist schon ein guter Anfang. Häufig wird das einfach ignoriert. Aber Gerd hat natürlich Recht, zu einer Fehlerweitergabe gehört auch eine passende Verarbeitung.
Gruß, Jens