Event-Auslösung funktioniert nicht - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Event-Auslösung funktioniert nicht (/Thread-Event-Ausloesung-funktioniert-nicht) |
Event-Auslösung funktioniert nicht - Moe19 - 20.06.2013 14:24 Hallo, ich habe folgendes Problem: Ich erstelle ein Labview-Programm, mit dem ich Messungen mache. Das funktioniert auch alles soweit. In einem SubVI werden mehrere Messungen hintereinander ausgeführt und ich möchte solange, dass bei jedem Durchlauf eine Anzeige in meinem Main-VI aktualisiert wird, sodass klar ist, wie weit die Messung schon gekommen ist (dauert bischen länger sowas). Ich erstelle dazu Events, welche bei jedem Schleifendurchlauf aktiviert werden. Ich habe exemplarisch mal meine Struktur in VIs dargestellt. Meine Idee war halt, die Werte (die sich in meinen wirklichen VIs ändern können, hier vereinfacht dargestellt) für einen Slide zu übergeben (Maximum, Minimum, Inkrement und Wert, wo der gerade stehen soll) und dann eben bei Eventauslösung anzupassen. Vielleicht hat jemand eine Idee und kann mir weiterhelfen. Grüße RE: Event-Auslösung funktioniert nicht - jg - 20.06.2013 14:30 THINK Dataflow! Wie soll dein Main-VI ein neues Event abarbeiten, wenn es zwecks Datenfluss noch im Event Messung hängt (denn dort ist dein Messung-VI gerade in Abarbeitung). Gruß, Jens RE: Event-Auslösung funktioniert nicht - Moe19 - 20.06.2013 14:32 Ist das denn nicht genau der Sinn von Events, dass ich die aus SubVIs auslösen kann und der die dann im Main VI nebenläufig bearbeiten kann? Und wie kann ich das besser lösen? Der Sinn ist halt, dass man immer weiß, welchen Status die Messung gerade hat. RE: Event-Auslösung funktioniert nicht - jg - 20.06.2013 14:54 Again THINK Dataflow! So arbeitet LabVIEW aber nicht. Jegliche (Sub)struktur wird erst dann beendet, wenn alle Knoten / SubVIs / etc., die darin enthalten sind, abgearbeitet sind. In deinem speziellen Bsp lautet das: Das Event "Messung" wird erst dann beendet und verlassen, wenn das SubVI beendet ist. Danach startet der nächste Durchlauf der While-Loop und es kann das nächste Event abgearbeitet werden. Schau dir z.B. mal die Producer-Consumer Struktur an, unter File -> New... Und verinnerliche das Datenfluss-Prinzip, wenn du das nicht verstehst, wirst du mit LabVIEW nicht weit kommen. Gruß, Jens RE: Event-Auslösung funktioniert nicht - Achim - 21.06.2013 05:59 http://zone.ni.com/reference/en-XX/help/371361J-01/lvhowto/caveatsrecmndtnsevnts/ "Langer" Code (insbesondere in (While-) Schleifen hat in einem Eventcase NICHTS verloren! Wenn du das beherzigst, kommst du automatisch zu dem Punkt "ich muss auf eine Producer/Consumer"-Architektur umsteigen"...und dann wird alles gut A. RE: Event-Auslösung funktioniert nicht - Lucki - 21.06.2013 08:05 (20.06.2013 14:32 )Moe19 schrieb: Ist das denn nicht genau der Sinn von Events, dass ich die aus SubVIs auslösen kann und der die dann im Main VI nebenläufig bearbeiten kann? So etwas machen Interrupts, und das Problem, so auch hier, ist, dass oftmals geglaubt wird, Events seinen das Gleiche wie Interrupsts. Ein Event löst zwar tatsächlich einen sofortigen Interrupt aus, aber der macht nichts anderes, als das Event in eine Wartschlange einzutragen. Die Abbarbeitung des Events im Event-Case erfolgt dann aber erst, wenn die Eventstruktur ganz normal bei der Abarbeitung des Programms an der Reihe ist. Ein Programmcode sollte möglichst so konzipiert sein, das Programm so oft wie möglich an der Eventruktur auf ein Event wartet. In diesem Fall findet die Ausführung des Events sofort statt, so, als wäre es ein Interrupt. In allen anderen Fällen wird es später ausgeführt, bis hin zu sehr viel später - oder überhaupt nicht. RE: Event-Auslösung funktioniert nicht - Moe19 - 25.06.2013 11:17 Hey, erst mal ein fettes Dankeschön für alle Antworten. Ich musste leider ein paar Tage weg und kann mich erst jetzt wieder damit beschäftigen. Ganz offensichtlich ist mir so einiges noch nicht klar gewesen! Ich hatte das eigentlich in einem anderen SubVI ähnlich gelöst, da hat es funktioniert, dass in dem MainVI die Anzeige aktualisiert wurde. Allerdings bestand da auch die Zeit, die Warteschleife abzuarbeiten. Ich arbeite mich dann mal tiefer ins Thema ein und melde mich nochmal, wenn ich nicht weiter komme oder es geschafft habe. Grüße Moe |