LabVIEWForum.de - Mit Wertänderung eine Case-Struktur ansteuern

LabVIEWForum.de

Normale Version: Mit Wertänderung eine Case-Struktur ansteuern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

aktuell versuche ich mittels LabVIEW ein Programm zur Regelung der Temperatur eines beiheizbaren Messaufbaus zu schreiben.

Dabei möchte ich im Falle der Änderung der Zieltemperatur (Eingabe über numerisches Bedienelement) einen Booleansches-True ausgeben um eine Case-Struktur anzusteuern.

Mein aktueller Ansatz ist über eine Ereignisstruktur (siehe Anhang). Jedoch erhalte ich als Ausgabe durchgehend des Wert "False".


Kann mir hier jemand weiterhelfen?


Gruß Christoph
Kannst du dein VI mal posten? Sicher, dass du bei Wertänderung kein TRUE erhälst? Oder siehst du es einfach nicht, weil dein Timeoutcase schneller ist, als du gucken kannst? Du gibst jede Millisekunde ein False aus.

VG,
Torsten
Anzeige des Zeitpunkts des Ereignisses ist auch eine schöne Debug-Möglichkeit:
[attachment=56566]
Gruß, Jens
Da ich das Programm immer nur in einzelnen Zyklen laufen lasse dürfte sich da eigentlich nicht ändern.

Ich hoffe das VI ist soweit verständlich, auch wenn der Algorithmus wahrscheinlich viel komplizierter ist als er sein müsste. Aktuell ist es auch nur eine Simulation.


Wenn ich die Zeit angeben lasse bleibt der Wert bei 0 egal wie oft ich die Zieltemperatur ändere.


Schonmal vielen Dank für die Hilfe.
Hmm Das VI läuft einmal durch, wie soll es da eine Wertänderung durch den Benutzer mitbekommen?

Gruß, Jens
Die Ereignisstruktur arbeitet folgendermaßen:

wenn der Datenfluss von LabVIEW bei der Ereignisstruktur ankommt, wartet diese, bis eines der Eingetragenen Ereignisse eintritt. In deiner Programmierung sind die Eregnisse Timeout und Wertänderung der Temperatur eingetragen. Ich bin mir zimelich sicher, dass als erstes eine Millisekunde verstreicht, bevor du überhaupt eine Wertänderung (zur Laufzeit) vornehmen kannst. Schaue dir mal die Beispiele in LabVIEW zu Ereignisgesteuerter Programmierung an.

Alternativ, wenn du tatsächlich immer nur einen Zyklus durchlaufen magst, müsstest du den alten Temperaturwert irgendwo speichern und einen Abgleich machen. Vielleicht über eine Funktionale Globale Variable (FGV). Auch dazu gibt es Beispiele.
Nur für mein Verständnis:

Die Ereignisstruktur detektiert das Ereignis nur, wenn es innerhalb der angegebenen Zeit stattfindet?

Ich dachte es würde vergleichen ob es eine Änderung zu dem vorherigen Wert gibt.
Die Ereignisstruktur arbeitet erst dann, wenn der Datenfluss bei ihr angekommen ist (alle Eingänge der Struktur müssen bedient sein). In deinem Fall ist das ziemlich am Anfang des Programms so, es muss vorher lediglich der Eintritt in die Sequenz erledigt werden.

Sobald die Ereignisstruktur arbeitet, wartet sie bis eines der Ereignisse auftritt. Das macht sie aber nicht vorher sonder wirklich erst dann, wenn sie dran ist.
Wenn die Änderung also während des restlichen Vorgangs eintritt, so wird sie nicht als Änderung wahrgenommen?
da dann die Ereignisstruktur schon abgearbeitet ist, und du sie nicht als parallelen Prozess in einer Schleife ausführst: nein, die bekommt nichts mit!
Referenz-URLs