Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
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?!
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:49 (Dieser Beitrag wurde zuletzt bearbeitet: 19.05.2011 13:49 von M Nussbaumer.)
(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 stattfindet 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 habe
(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
9 von 10 Stimmen in meinem Kopf sagen: Ich bin nicht verrückt,
die andere summt die Melodie von Tetris.
NI schrieb:To use the abort button is like using a tree to stop a car!
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:
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 !!
Ist denn die Ereignisstruktur genau das richtige Tool dafür, oder sollte ich lieber etwas anderes verwenden?!
Ja, wenn man weiß wie, dann geht das sicherlich... deswegen hab ich mich ja hier registriert, weil ich leider nicht weiß wie es geht
@ 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 ?!