LabVIEWForum.de
Wert aus Eventstruktur - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Wert aus Eventstruktur (/Thread-Wert-aus-Eventstruktur)

Seiten: 1 2 3


Wert aus Eventstruktur - creo_123 - 26.10.2013 20:46

Hallo,

noch eine kleine (hoffe ich zumindestWink) Frage am Abend:

Ich führe per Schalter eine Eventstruktur aus, in der ich Messwerte generiere. Diese Messwerte möchte ich nach Abschluss
des Events gerne weiter verarbeiten. Per lokaler Variable schaffe ich es den Messwert "nach draußen zu funken". Das ist aber
mit Sicherheit nicht die eleganteste Lösung. Daher meine Frage, ob man das irgendwie anders bewerkstelligen kann.

In meinem Beispiel-VI hab ich die Messung durch einen numerischen Wert ersetzt, den ich gerne nach Beenden des Events bis
zum nächsten Start verwenden möchte.

Vielen Dank und noch einen schönen Abend!


RE: Wert aus Eventstruktur - Lucki - 27.10.2013 09:27

Eine gute Methode ist z.B. eine eigene Schleife zur Ereignisbehandlung und Übertragung der Werte in die Arbeitschleife über ein Queue.
Gruß Ludwig
[attachment=46964]


RE: Wert aus Eventstruktur - creo_123 - 27.10.2013 10:08

Danke für die AntwortSmile

Könnte man das auch so abändern, dass die untere Schleife immer wieder durchlaufen wird, nachdem das Event ausgeführt wird. Eventuell
möchte ich Filter oder ähnliches auf meine Messwerte anwenden, die ich hinzu- und wegschalten möchte. Um diese Änderungen anzupassen,
müsste ja die Schleife immer wieder abgearbeitet werden. Wenn es dann noch eine Möglichkeit gibt die Auswertungsschleife zu pausieren,
während der Messwertaufnahme, wäre das echt perfektSmile


RE: Wert aus Eventstruktur - GerdW - 27.10.2013 12:42

Hallo creo,

bei Nutzung von Queues wartet die Verbraucherschleife immer auf neue Werte in der Queue! Deine "Wartezeiten" erhälst du damit automatisch bei Nutzung einer Queue...


RE: Wert aus Eventstruktur - creo_123 - 27.10.2013 14:50

Das ist ja schonmal gut.. nur wie könnte ich es denn hinbekommen, dass ich in dem Beispiel von Lucki die Zufallszahl nach abgeschlossener Messung weiter verarbeiten kann? Also beispielsweise mit verschiedenen Faktoren multiplizieren.. momentan würde
er diese Änderung ja nur übernehmen, wenn ich erneut messe.

Danke für die Unterstützung sogar am SonntagSmile


RE: Wert aus Eventstruktur - GerdW - 27.10.2013 18:58

Hallo creo,

Zitat:dass ich in dem Beispiel von Lucki die Zufallszahl nach abgeschlossener Messung weiter verarbeiten kann?
Nach Abschluss einer Messung wird der Wert in die Queue geschrieben. In der Verbraucher-Schleife kommt der Wert aus dem Queue und du kannst ihn verarbeiten, wie du willst. Wo ist das Problem?

Zitat:momentan würde er diese Änderung ja nur übernehmen, wenn ich erneut messe.
Wieso?
Wenn deine Verbraucherschleife mit einem (mehr oder weniger) festen Takt arbeiten soll, solltest du dem Dequeue einen TimeOut vorgeben: wenn TimeOut dann verwende vorigen Messwert (aus einem Schieberegister) ansonsten nimm neuen Messwert (und speichere diesen im Schieberegister)...


RE: Wert aus Eventstruktur - creo_123 - 27.10.2013 20:32

Danke für den Tipp.. das Problem ist, dass ich irgendwie selbst noch nicht auf sowas komme, obwohl es ja eigentlich total logisch ist, wenn man es hört bzw. liest^^

habe das jetzt so umgesetzt mit dem Timeout und dem Schieberegister.. jetzt ist nur noch die letzte Sache.. ich möchte ja in meiner Messung die Schleifen möglichst schnell durchlaufen, um Messwerte in kurzen Zeitabständen zu erhalten. Wenn ich
jetzt aber immer gleichzeitig noch die Auswertungsschleife durchlaufe, wird mein Programm doch langsamer. Deshalb würde ich gerne die Auswertung aussetzten, während ich messe. Oder spielt das keine (große) Rolle, wenn die beiden Abläufe in verschiedenen Schleifen stattfinden?


RE: Wert aus Eventstruktur - Lucki - 28.10.2013 08:00

(27.10.2013 10:08 )creo_123 schrieb:  Danke für die AntwortSmile
Könnte man das auch so abändern, dass die untere Schleife immer wieder durchlaufen wird, nachdem das Event ausgeführt wird.
Gar kein Problem. Einfach an die Funktion "Element aus Queue entfernen" einen Timeout-Wert anschließen:
[attachment=46969]


RE: Wert aus Eventstruktur - creo_123 - 31.10.2013 22:29

Ich habe das Vi jetzt mal noch etwas mit den Funktionen, die für mich später wichtig sind, erweitert. Zur besseren Übersichtlichkeit
möchte ich Bedienelemente ausgrauen, wenn bestimmte Schalter betätigt werden (wenn ich Messung 1 nicht durchführe, sollen auch die Bedienelemente dazu nicht aktiv sein). Andere Werte möchte ich erst nach abgeschlossener Messung einmalig in die Auswertung übernehmen.
Ein späteres Umstellen soll die Auswertung nicht beeinflussen. Andere Werte wiederum sollen auch nach abgeschlossener Messung in der Auswertung anpassbar sein. Das funktioniert alles so wie es soll.

Ein kleines Problem habe ich aber noch mit einer Abbrechen-Funktionalität. Ich möchte die Messung jederzeit abbrechen können,
was mir in meinem Beispiel VI über Melder gelingt. In meinem richtigen Programm gibt es sehr viele Messschleifen, weshalb ich
auch dementsprechend viele Melder benötige. Der Einfachheit halber habe ich daher jedem "Melder-Ausgeben" ein Sub-VI spendiert, in
dem genau die Elemente enthalten sind, die im Beispiel-VI in den Messschleifen liegen.

Ich weiß nicht, ob das der perfekte Ansatz ist und habe auch den Eindruck, dass die Melder meine Messschleifen langsamer machen.
Kann das sein? Eine andere Vermutung von mir ist, dass das Programm allgemein sehr langsam ist, weil die Auswertung immer
wieder durchlaufen wird. Wenn man um die Auswertung ein Event legen könnte, so dass diese nur nach abgeschlossener Messung oder nach Wertänderung eines Bedienelements innerhalb der Auswertung durchlaufen wird (im Beispiel "Schalter und Faktor Auswertung"),
wäre das perfekt. Leider gelingt es mir nicht wirklich, eine "oder-Verknüpfung" (hier: "Messung abgeschlossen" oder "Wertänderung Schalter" oder "Wertänderung Faktor") in ein Event zu integrieren.

Vielleicht habt ihr ja die ein oder andere Idee für michSmile

Danke jedenfalls schonmal im Voraus!!!


RE: Wert aus Eventstruktur - GerdW - 01.11.2013 08:45

Hallo creo,

Zitat:Der Einfachheit halber habe ich daher jedem "Melder-Ausgeben" ein Sub-VI spendiert, in dem genau die Elemente enthalten sind, die im Beispiel-VI in den Messschleifen liegen. ... habe auch den Eindruck, dass die Melder meine Messschleifen langsamer machen. Kann das sein?
Ja! "Einfachheit" ist zwar zu begrüßen, aber zu einfach sollte es dann auch nicht werden...
Wenn du dauernd neue Melder anforderst, ohne die vorigen Referenzen zu schließen, muss dein Programm ja langsamer werden!
Mögliche Lösungen:
- Melder-Referenz nur einmal anfordern (beim Start des subVIs, vor einer Schleife) und korrekt schließen (am Ende eines subVIs, nach der Schleife)
- stattdessen mit einer FGV arbeiten, die die CANCEL-Bedingung speichert...

Zitat:Eine andere Vermutung von mir ist, dass das Programm allgemein sehr langsam ist, weil die Auswertung immer wieder durchlaufen wird.
Daten ständig erneut durchzurechnen hat noch nie geholfen...

Zitat:Wenn man um die Auswertung ein Event legen könnte, so dass diese nur nach abgeschlossener Messung oder nach Wertänderung eines Bedienelements innerhalb der Auswertung durchlaufen wird (im Beispiel "Schalter und Faktor Auswertung"), wäre das perfekt.
Du sendest Daten per Queue vom Producer zum Consumer. Warum ist es dir nicht möglich, einen weiteren Wert mit der Queue zu versenden, der signalisiert, ob "neue Messdaten" vorliegen, ob eine "Benutzereingabe" vorgenommen wurde, oder etc.? Man könnte ein passendes Enum mitsenden...

Zitat:Leider gelingt es mir nicht wirklich, eine "oder-Verknüpfung" (hier: "Messung abgeschlossen" oder "Wertänderung Schalter" oder "Wertänderung Faktor") in ein Event zu integrieren.
Eine ODER-Verknüpfung ist super-einfach: man konfiguriert mehrere Events, auf die der Event-Case reagieren soll...

P.S.: Kannst du mal die unnötigen Zeilenumbrüche in deinen Botschaften weglassen?