LabVIEWForum.de
Temperaturwerte bedingt abspeichern - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Temperaturwerte bedingt abspeichern (/Thread-Temperaturwerte-bedingt-abspeichern)

Seiten: 1 2


Temperaturwerte bedingt abspeichern - riske - 12.10.2010 01:42

Hey Leute

Ich hab hier ein Temperatur-Messgerät vor mir. Und das soll mir jede Sekunde anzeigen, was für eine Temperatur gerade herrscht. Das klappt soweit.
Jetzt möchte ich aber noch, dass mir das Programm alle aufgenommenen Werte des 1.Kanals (Variable: CH1-Wert) in ein Array speichert und zwar nur dann, wenn der START Knopf gedrückt ist (so dass ich die Werte nach der Messung auswerten kann).


Temperaturwerte bedingt abspeichern - riske - 12.10.2010 02:33

Achja... die Analyse des Arrays soll außerhalb der Event-Struktur erfolgen, da die Werte noch mit Variablen verrechnet werden, die aus einer Event-Struktur kommen, die parallel zu der hier ausgeführt wird.


Temperaturwerte bedingt abspeichern - GerdW - 12.10.2010 08:12

Hallo riske,

der konsequente Einsatz von lokalen Variablen ist schon beeindruckend:)Und natürlich auch noch Sequenzen, wo eine FOR-Loop hingehört... Ironie

Schon mal über dein Einsatz von Shiftregistern nachgedacht? Um Werte von einer Iteration/einem Case in den nächsten weiterzuleiten?
So könntest du Messwerte in einem SR sammeln, wenn der Start-Knopf gedrückt ist. Wenn der Knopf zurückgesetzt wird, werden die gesammelten Werte gespeicheert und das SR wieder gelöscht...


Temperaturwerte bedingt abspeichern - riske - 12.10.2010 13:03

Hey Gerd,

Du bist also auch der Meinung, dass lokale Variablen Mist sind. Ich hab sie eingesetzt, weil die Meinungen im Forum ja weit auseinandergehen... deshalb weiß ich halt auch nicht, was korrekter ist. Ich versuche es dennoch mal zu ändern
Und warum sind Sequenzen schlecht? Soll ich da jetzt alle in FOR-Loops umändern oder nur einen Teil?

' schrieb:So könntest du Messwerte in einem SR sammeln, wenn der Start-Knopf gedrückt ist. Wenn der Knopf zurückgesetzt wird, werden die gesammelten Werte gespeicheert und das SR wieder gelöscht...
Das versteh ich nicht so wirklich... Könntest Du mir das mal bitte näher erläutern?


Temperaturwerte bedingt abspeichern - GerdW - 12.10.2010 13:27

Hallo riske,

anbei ein Beispiel inLv85_img.

Zu den FOR-Loops: du rufst in den stacked sequences jeweils 4 Geräte/Kanäle auf. Diese Aufrufe könnte/sollte man in einer Schleife erledigen: der einzige Parameter, der sich ändert, ist schließlich der Kanalcount (=Iterationszähler)...


Temperaturwerte bedingt abspeichern - riske - 13.10.2010 03:02

OK... hab das Programm jetzt noch mal komplett verändert... sieht jetzt wesentlich übersichtlicher aus. Ein paar lokale Variablen musste ich aber lassen (mir ist da nichts eingefallen, wie ich das anders lösen könnte).
Lv86_img[attachment=29921]
Das mit dem START-Knopf hab ich aber noch nicht integriert.
In Deinem Beispiel-Programm befindet sich das Werte-erzeugende Element außerhalb der Event-Schleife. Bei mir ist sie aber innerhalb. Und ich weiß echt nicht, wie ich da innerhalb der Schleife mit Shift-Registern arbeiten soll, weil ich ja den Shift-Registern für jeden Event-Case einen Wert zuordnen muss.
Und wie gesagt... das Programm soll auch Werte ausgeben (aber nicht abspeichern), wenn der START-Knopf nicht gedrückt ist.


Temperaturwerte bedingt abspeichern - GerdW - 13.10.2010 08:01

Hallo riske,

anbei eine etwas überarbeitete Version (Lv86_img). Wenn man Arrays für die diversen Ein-/Ausgaben verwendet, wird's noch viel übersichtlicherSmile

Bei den 2 SR für die Handles bin ich mir nicht sicher, ob man das nicht mit einem SR erledigen könnte, da ich die DLL nicht kenne. Höchstwahrscheinlich wird aber immer das gleiche Handle weitergereicht, da darüber der Zugriff aufs Gerät verwaltet wird...


Temperaturwerte bedingt abspeichern - riske - 14.10.2010 02:16

Coole Sache...

Deine Version hat nicht funktioniert... da war irgendein Fehler mit den "handles". Hab es überarbeitet und noch weiter vereinfacht (man kann die "handles" mit einem Shift Register abarbeiten).

Rausgekommen ist das hier:
Lv09_img2[attachment=29945]

Ich hätte aber noch ein paar Fragen:
1.) Warum hast Du beim Property Node (Value Signaling) den Error Out mit dem Case Selector verbunden?
2.) Bei Deinem Programm steht der "Update Settings"-Knopf immer auf ON. Ich hab das mal mit einem Property Node (Value) wieder zurückgesetzt. Ist das so richtig?
3.) Gibt es einen Unterschied zwischen Property Node (Value) und Lokale Variable?
4.) Kann man die x-Achse des Waveform-Charts irgendwie reseten oder müsste man stattdessen den XY-Graph verwenden?
5.) Wie holt man die Werte "T mittel", "T Stdabw", "T max" und "T min" aus der Event-Schleife? Ich möchte die Werte in eine Datei schreiben sobald die Messung fertig ist. In die Datei sollen auch noch Werte einer anderen Event-Schleife (läuft parallel dazu) geschrieben werden. Deshalb bin ich der Meinung dass man das Schreiben der Datei außerhalb der Event-Schleifen erledigen müsste.
6.) Gibts sonst noch irgendwelche Verbesserungsvorschläge?Smile


Temperaturwerte bedingt abspeichern - Schü - 14.10.2010 07:27

Hallo auch =),

ich versuch mal ein paar Fragen zu beantworten und hoffe es hilftWink

1. vermutlich soll der ErrorOut noch mit dem "Display Message to User" im False-Case verbunden werden?
2. überspringe ich gekonnt
3. da hilft schon mal die Kontexthilfe
Property Node:
Zitat:Legt den Wert des Bedienelements fest und erzeugt ein Ereignis des Types "Wertänderung" - Hinweis: Schreiben
Globale Variable:
Zitat:Mit lokalen Variablen können Werte an Bedient- oder Anzeigeelemente übergeben oder von Bedien- und Anzeigeelementen empfangen werden
gilt also mit dem Property Node erzeugst du gleichzeitig noch eine Wertveränderung
4. ich versteh nicht ganz wie du das meinst, da das Programm nicht bei mir läuft, aber wenn die x-Achse "hochzählt", dann könnte man das doch über den
Eigenschaftsknoten "X-Achse > Bereich > Min/Max" wieder zurücksetzen? (Oder bin ich hier auf dem Holzweg?)
5. und 6. überspringe ich nochmal gekonnt (hab kein LV2009 und kann das letze VI nich öffnen)

hoffe es hat geholfen, ansonsten sag ich mal: "Der Wille, Gutes zu tun, zählt":D

Liebe Grüße Schü


Temperaturwerte bedingt abspeichern - GerdW - 14.10.2010 08:23

Hallo riske,

anbei dein VI, ganz leicht verändert... lv2009

- PropertyNode per ErrorCluster verbinden: Dadurch wird die Case-Struktur erst nach der PropertyNode ausgeführt. Sequenzierung per Dataflow...
- Punkt 2: Ich setze "Update" per "Value signal", um eine Abarbeitung des Update-Events zu erzwingen: du willst ja schließlich dein USB-Gerät nach dem Start mit den richtigen Einstellungen versehen! Dann den Knopf im Event zurücksetzen und nicht schon vor der While-Schleife...
- Unterschied Property/Local: die lokale Variable erzeugt eine Datenkopie im Speicher, die PropertyNode erzwingt einen Thread-Wechsel und ist deshalb wesentlich langsamer...
- Punkt 4: Ein Chart hat eine Historienlänge. Mehr Werte merkt er sich nicht - und die X-Achse passt sich immer den Werten im Historienspeicher an... Für alles andere Graphen verwenden...
- Punkt 5: Genauso wie du die Einzelwerte im Event Start/Stopp ausliest, kannst du sie auch nach Verlassen der Schleife am SR-Ausgang auswerten. Ich habe da mal nur einen ArrayIndicator hingepackt.
- Punkt 6: IndexArray kann man auf mehrere Ausgänge erweitern und fängt automatisch bei Index 0 an zu indizieren - siehe VI. Bedienelemente, die man per ValueChange-Event ausliest, sollten sich im Eventcase befinden: dies ist besonders wichtig bei Latched-Buttons, da diese sonst nicht zurückgesetzt werden!