LabVIEWForum.de - Problem mit Ereignisstruktur und Cluster !?

LabVIEWForum.de

Normale Version: Problem mit Ereignisstruktur und Cluster !?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,

ich möchte, dass nur einmalig der zusammengestellte Wert an „CAN-Bus“ übertragen wird, wenn eine Werteänderung im Cluster „DO1“ vorliegt. Leider passiert bei der Ereignisstruktur gar nichts?! Zum Testen habe ich noch den Button „0“ eingebaut, wenn dieser betätigt wird, dann funktioniert die Ereignisstruktur wie gewünscht! Was mache ich denn falsch mit dem Cluster?!


Grüße
Carsten
Verdrahtungsfehler... du hast 2 Boolsche Ausgänge aus der Eventstruktur.
Oh, das war natürlich ein blöder Fehler, wollte mein Problem in ein möglichst kleines VI einbringen...

Hier im Anhang nun das Hauptprogramm und das Unterprogramm zusammen. Die Ereignisstruktur will einfach nichts machen!!
die Struktur ist zwar hier nicht direkt in einer While-Schleife, aber dafür läuft doch das Hauptprogramm in einer solchen!! Wenn das der Urpsung meines Porblems ist, wie kann ich das denn dann umgehen?!

Grüße
Carsten
(19.05.2011 13:37 )CarstenH schrieb: [ -> ]Oh, das war natürlich ein blöder Fehler, wollte mein Problem in ein möglichst kleines VI einbringen...

Hier im Anhang nun das Hauptprogramm und das Unterprogramm zusammen. Die Ereignisstruktur will einfach nichts machen!!
die Struktur ist zwar hier nicht direkt in einer While-Schleife, aber dafür läuft doch das Hauptprogramm in einer solchen!! Wenn das der Urpsung meines Porblems ist, wie kann ich das denn dann umgehen?!

Grüße
Carsten

Du kannst keine Wertveränderung feststellen, weil schlichtweg keine 2hands stattfindet 2hands Eine Veränderung des Clusters im Hauptprogramm ist KEIN Value-Change Event im SubVI!

Wenn du eine Eventverarbeitung in deinem SubVI verwenden willst, musst du mit dynamischen Events arbeiten. Beispiel folgt sobald ich Zeit dafür habeBlush

Gruss Marc
(19.05.2011 13:37 )CarstenH schrieb: [ -> ]Hier im Anhang nun das Hauptprogramm und das Unterprogramm zusammen. Die Ereignisstruktur will einfach nichts machen!!
die Struktur ist zwar hier nicht direkt in einer While-Schleife, aber dafür läuft doch das Hauptprogramm in einer solchen!! Wenn das der Urpsung meines Porblems ist, wie kann ich das denn dann umgehen?!

Doch die Erreignisstruktur macht schon was. Und zwar wird sie einmalig bei jedem Aufruf ausgeführt, da der Timeoutcase mit 0 verbunden ist. Ergo wird die Ereignisstruktur sofort beim Aufruf mit dem Timeoutcase abgearbeitet. Danach wird der Rest abgearbeitet und das Subvi ist beendet. Beim nächsten Aufruf aus dem Main-Vi aus das gleiche.

Btw. die Ereignisstruktur des Sub-Vis reagiert nur auf die FP-Elemente des Sub-VIs, nicht auf die des Main-VIs.


Alternativ zu den von Mark angesprochenen dynamischen Events, kann man das ganze auch mittels eines Dialoges realisieren. Sub-Vi als Dialog aufrufen, erforderliche Einstellungen vornehmen. Dialog mit 'OK'-Taster beenden lassen und somit den Cluster an das Main-Program zurückschreiben.


Beste Grüße,
NWO
Hier noch wie versprochen ein Beispiel für die dynamischen Events:

[attachment=33855]
[attachment=33856]

Hoffe das hilft dir weiter!

Gruss Marc
Also der letzte Stand ist der: Wenn sich der Wert ändert, wird der neue Wert 1 Mal an die CAN-Anzeige ausgegeben. Aber in der Zwischenzeit wird mit unendlichfacher Rate (Wegen fehlender Wartefunktion) immer wieder der Standardwert der Sub-VI-Anzeige an die CanBus-Anzeige im Hauptprogramm ausgegeben. Ich kann mit nicht vorstellen, daß das so gewünscht sein könnte. Man muß verhindern, daß die Anzeige im Hauptprogramm beim Fehlen neuer Werte überhaupt bedient wird. Z.B. so:

[attachment=33861]
Der aktuelle Stand (zumindest der entscheidende Ausschnitt aus dem Gesamtprogramm) ist nun im Anhang.

Die Daten sollen nicth zyklisch auf den Bus gesendet werden, sondern nur dann, wenn eine Änderung der Eingabefelder (True/False) vorliegt.
Zur Zeit habe ich das wie im Anhang zu sehen mit Variablen gelöst, welche einfach den alten wert speichern. Das hat allerdings den Nachteil, dass ich das Sub-VI so nicht mehrfach einsetzen kann, weil offensichtlich alle auf die gleichen Variablen zugreifen. Die Sache mit der Ereignisstruktur scheint daher deutlisch besser geeignet zu sein!

Vielen Dank an M Nussbaumer, das ganze funktioniert Smile !!

Ist denn die Ereignisstruktur genau das richtige Tool dafür, oder sollte ich lieber etwas anderes verwenden?!



Schönes Wochenende!!

Carsten
Ogottogott...
Diese Änderungserkennung
[attachment=33874]
mit 150 cm² dichtbepackten Code könnte man z.B. einfachst auf 2 cm² Code reduzieren.
Ja, wenn man weiß wie, dann geht das sicherlich... deswegen hab ich mich ja hier registriert, weil ich leider nicht weiß wie es geht Smile

@ M Nussbaumer: wie hast du es denn eingerichtet, dass man als dynamisches erreignis "DO1-test" auswählen kann?! wenn ich das alles genau so aufbaue, kann ich bei dynamischen ereignissen nichts auswählen ?!
Seiten: 1 2
Referenz-URLs