LabVIEWForum.de
Messwerte bei Ereignis in Array schreiben - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Messwerte bei Ereignis in Array schreiben (/Thread-Messwerte-bei-Ereignis-in-Array-schreiben)

Seiten: 1 2


Messwerte bei Ereignis in Array schreiben - js89 - 14.08.2013 16:46

Hallo Zusammen,
seit ein paar Wochen beschäftige ich mich jetzt schon mit Labview, bin also noch ein ziemlicher Anfänger.
Im Forum hier habe ich schon mehrmals einen passenden Beitrag gefunden, der mir bei einem Problem weitergeholfen hat.
Jetzt habe ich aber einen Fall, wo ich irgendwie nicht weiter komme, wäre nett wenn mir da jemand weiterhelfen könnte.

Ich habe ein Programm erstellt das bei einem Ereignis (schalten eines Sensors) 2 Messwerte (Strings) einließt. Diese werden dann sofort mit der Funktion: In Textdatei schreiben in ein zuvor erstelltes txt Dokument gespeichert. Das funktioniert auch soweit.

Jetzt möchte ich dies aber ändern so dass die Strings anstatt in die txt Datei in ein Array geschrieben werden. Außerdem will ich die letzten 5 Messwerte immer auf dem Frontpanel angezeigt bekommen.
Bis jetzt hab ich es nur hinbekommen die Werte per While Schleife in ein Array zu schreiben (will aber eigentlich nur bei einem Ereignis in das Array schreiben). Außerdem werden mir nach dem 5. Wert nicht mehr die aktuellen Werte angezeigt sondern das Array wird einfach weiter nach unten beschrieben.
Habe hierzu mal ein kleines Beispiel gemacht.

Wäre nett wenn mir jemand ein paar Tipps geben könnte wie ich das Problem lösen kann.

Gruß
Js89


RE: Messwerte bei Ereignis in Array schreiben - Trinitatis - 14.08.2013 16:59

Hallo JS89,

hier mal dein VI auf die Schnelle angepasst, so dass immer 5 Werte im Array stehen - der neueste Wert steht dabei in der ersten Zeile.
Die Art, das mit einem 2D-Array zu machen, kann allerdings bei vielen Daten recht schnell recht langsam werden --> Da ist die LossyQueue sicher besser geeignet.


Gruß, Marko
Hier nochmal die LossyQueue-Variante (nun allerdings anders herumBig Grin)

Gruß, Marko


RE: Messwerte bei Ereignis in Array schreiben - js89 - 14.08.2013 18:13

Hallo Marko,

vielen dank schon mal, die LossyQueue Variante sieht schon mal sehr gut aus.

Bin aber immer noch am Rätseln wie ich das hinbekommen soll dass z.B. nur bei einem Tastendruck die Werte ins Array geschrieben werden.
Wäre für weitere Hilfe echt dankbar.

Gruß


RE: Messwerte bei Ereignis in Array schreiben - GerdW - 14.08.2013 18:28

Hallo js,

du willst also so etwas haben:
Code:
IF Bedingung THEN
   Wert ins Array schreiben
ENDIF
Ich würde eine Case-Struktur verwenden...


RE: Messwerte bei Ereignis in Array schreiben - Trinitatis - 14.08.2013 18:57

Hallo js,

hier mal ein Vorschlag.

Gruß, Marko


RE: Messwerte bei Ereignis in Array schreiben - js89 - 14.08.2013 20:06

Hallo,
erst mal danke euch beiden.

hab es jetzt mal nach dem Vorschlag von GerdW mit einer Case-Struktur aufgebaut, funktioniert auch ganz gut.

Jetzt will ich auch noch das Array auf Tastendruck in eine txt Datei schreiben, hab das auch schon mal mit der Funktion In Tabellenkalkulationsdatei schreiben ausprobiert, jedoch scheint das noch nicht zu funktionieren, hat mir noch jemand einen Tipp wie das gehen könnte?

Gruß


RE: Messwerte bei Ereignis in Array schreiben - GerdW - 14.08.2013 20:36

Hallo js,

das Programm macht genau das, was du programmiert hast! Das es nicht das macht, was du im Sinn hattest, kannst du nicht dem VI anlasten... Big Grin

Einfache Lösung: Guck dir an, was das VI macht - und zwar mit Highlight-Debugging!

Tipp1: Wenn du "Speichern in TXT" aktivierst, ist leider nicht "Speichern in Array" aktiv...
Tipp2: Daten speichert man sehr effektiv in Schieberegistern!
Tipp3: Einer Polling-Schleife tut etwas Bremsen mit Wait sehr gut!


RE: Messwerte bei Ereignis in Array schreiben - js89 - 15.08.2013 09:59

Hallo GerdW,

mit Hilfe deiner Tipps hab ich es soweit hinbekommen das die Werte in eine txt Datei geschrieben werden. Jedoch habe ich jetzt noch das Problem das nur die letzten 5 Werte reingeschrieben werden, also die die auch auf dem Frontpanel angezeigt werden.

Will zwar nur die letzten 5 Werte auf dem Frontpanel sehen, jedoch sollen natürlich alle Werte abgespeichert werden.

Wäre für weitere Tipps echt dankbar.

Gruß


RE: Messwerte bei Ereignis in Array schreiben - GerdW - 15.08.2013 11:08

Hallo js,

Zitat:Will zwar nur die letzten 5 Werte auf dem Frontpanel sehen, jedoch sollen natürlich alle Werte abgespeichert werden.
Und warum verbindest du dann den Draht, der nur die letzten 5 Werte speichert, mit der Write-Funktion? Hmm

Pragmatische Lösung: Im Schieberegister werden alle Daten gesammelt (für die Speicherung), die Queue übernimmt das Puffern der letzten 5 Werte für die Anzeige...


RE: Messwerte bei Ereignis in Array schreiben - Trinitatis - 15.08.2013 11:08

Hallo JS,

zum einen verwendest du ein uninitialisiertes Shiftregister, was bei Mehrfachaufrufen dieses VIs zu (wahrscheinlich) unerwünschten Resultaten führt. Und zum anderen speicherst du im Shiftregister immer nur die letzten 5 Werte - du könntest z. B. jeden gelesenen Wert in die Datei schreiben (Haken bei "an Datei anhängen) machen. Dann würde ich dir aber nicht zu diesem VI raten, da es die Datei immer wieder öffnet und schließt, sowas gehört außerhalb der Schleife.


Gruß, Marko