LabVIEWForum.de - Dynamischen Array erstellen

LabVIEWForum.de

Normale Version: Dynamischen Array erstellen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo erstmal.

Über meine Messkarte erfasse ich Daten von vier Kanälen. Diese Daten schreibe ich fortlaufend in einen Array hinein (jeder Kanal in eine Spalte). Nach einem Zeitraum, den ich nicht kenne, soll von den letzten 20 aufgenommenen Werten der Mittelwert ausgegeben werden (pro Kanal).

Das Problem ist die größe des Arrays, die ich im Vorraus nicht kenne.

Frage: Kann man einen Array erstellen, der nach 20 geschrieben Zeilen einfach die erste Zeile löscht, so dass alles "nach oben rutscht" und die 20. Zeile frei für die nächsten Daten wird? Wie ein Bus, der nur 20 Plätze hat und wenn der 21. Fahrgast kommt schiebt er alle Fahrgäste einen Platz weiter, so dass der 1. Fahrgast aus dem Bus fällt. Rolleyes

Hat von euch einer eine Idee? Ich wäre sehr dankbar dafür.

Ciao
Du kannst eine QUEUE benutzen. Da kannst du dann die Größe (20) angeben und die verhält sich genau so wie du es beschrieben hast.

LG
Torsten
Einfach Ringpuffer selber anlegen. Guckst du hier:
http://forum.ib-berger.com/index.php?showtopic=92
Eine Queue halte ich hierfür als etwas zu viel des Guten...

Gruß, Jens
HISmile

Vielen Dank für eure schnellen Antworten.

Das Beispiel von Jens ist echt gut. Doch wenn ich das ganze in mein bis jetzt erstelltes VI integrieren möchte, dann wird es kompliziert. Schaut doch mal bitte in das VI hinein. Wie kann ich da den Ringpuffer einbauen, um den Array konstant auf 20 Datensätze zu begrenzen?

Gruß Jens

Lv86_img
Offtopic2
Der Link mag von mir sein, aber das Bsp ist von i2dx aka Christian.

Gruß, Jens
Zum Thema Rinpuffer gibt es hier einen ganzen Thread

Wenn Du aber sowieso ein Signalverlaufsdiagramm verwendest und Dich mit der Historienlänge 20 abfinden kannst, dann wird alles ganz einfach. Einfach von den gespeicherten Daten im Ringpuffer des Signalverlaufsdiasgramms den Mittelwert bilden:
[attachment=17443]

Lv86_img[attachment=17444]
Ein weitere einfache Möglichket, bei der man keinen Ringpuffer basteln muß, ist der Verwendung eines FIR-Filters zur Mittelwertbildung. Die Vorwärtskoeffizienten bei Mittelwertbildung über die letzten 20 Werte sind: 20 Koef. mit Wert 0.05.
Der FIR Filter funktioniert nicht mit beliebig vielen Koeff, aber mit 20 geht es noch.
[attachment=17438]Lv86_img[attachment=17446]
Hallo Lucki,

vielen Dank für deine Arbeit. Ich habe das TemperatureTEST-VI von dir mal an meine Bedürfnisse angepasst. Das dumme ist nur, dass ich die Funktionalität, dass eben immer nur 20 Zeilen in meinem Array stehen irgendwie außer Funktion gesetzt. Jetzt bekomme ich wieder ein ewig langes Array.

Weißt du da einen Rat?

Gruß Jens

LabVIEW-Version: 8.6
Eine weitere Frage Lucki, zu deinem TemperatureTEST.vi. Wo fließt der Wert 20 für die Festlegung der Mittelwertbildung ein?

Gruß Jens
Offtopic2
Die Icons für die LV-Version brauchst du nicht runterladen und wieder als Anhang hochladen, die sind als Icons hier in der Forensoftware unter den Smilies eingebaut.
Lies noch mal hier:
http://www.LabVIEWforum.de/LV-Version-hoch...d39s-t7949.html

z.B. l_v70 (ohne Unterstrich) eingeben ->Lv70_img
Seiten: 1 2
Referenz-URLs