LabVIEWForum.de
In Array nacheinander kontinuierlich schreiben - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: In Array nacheinander kontinuierlich schreiben (/Thread-In-Array-nacheinander-kontinuierlich-schreiben)

Seiten: 1 2


In Array nacheinander kontinuierlich schreiben - Viewer2000 - 22.12.2009 12:55

Hallo,

Ich arbeite an einem Problem an dem ich nicht weiterkomme: Ich möchte gern nacheinander eintreffende Werte in ein Array schreiben, um damit eine Art fortlaufende Zwischenauswertung zu ermöglichen, die insbesondere das Kriterium für ein Messende dann erkennt.

Die Daten werden vom DAQ-Assistenten bereitgestellt (ich weiss, nicht professionell...). Ich scheitere nun am Versuch z.B. die letzten 10 Werte dynamisch, quasi wie ein Schieberegister, in einem Array zur Auswertung vorzuhalten. Hat hier jemand ne Idee.

Vielen Dank im Voraus!!


In Array nacheinander kontinuierlich schreiben - dimitri84 - 22.12.2009 13:21

Das was du suchst nennt sich Ringpuffer. Dazu gibt es einige threads. Hier was zum nachmalen und reindenken:
[attachment=23316]
Erzähl' mal wie dein Kriterium für ein Messabbruch aussieht.


!!Edit: Das Schieberegister der For-Schleife muss durch normale Tunnel ersetzt werden !!


In Array nacheinander kontinuierlich schreiben - Viewer2000 - 22.12.2009 13:25

hey Danke für die schnelle Antowrt.

Ich werte Temperaturen an einem Messstand aus. Wenn sich der Temperaturverlauf nur noch unwesentlich ändert, also zum Beispiel 10 aufeinanderfolgende Werte sich um weniger als 0,5 Grad unterscheiden, soll die Messung beendet werden.


In Array nacheinander kontinuierlich schreiben - Viewer2000 - 22.12.2009 13:33

...also ich hab mich bisher auf die Konvertierung dynamischer Daten nach DBL konzentriert, um in dem dann erscheinenden Menü "1D-Array mit Skalaren - automaisch" nützen zu können. Aber leider bisher ohne Erfolg...


In Array nacheinander kontinuierlich schreiben - dimitri84 - 22.12.2009 13:36

' schrieb:Ich werte Temperaturen an einem Messstand aus. Wenn sich der Temperaturverlauf nur noch unwesentlich ändert, also zum Beispiel 10 aufeinanderfolgende Werte sich um weniger als 0,5 Grad unterscheiden, soll die Messung beendet werden.

Vielleicht kommst du dann auch mit 2 gewöhnlichen Schieberegistern zurecht:
Schick einfach jede Schleifeniteration den aktuellen Messwert in ein SR und überprüfe jedes Mal das deltaT (aktueller Wert zum letzten Wert). Wenn das deltaT kleiner 0.5 ist dann inkrementierst du ein zweites Schieberegister (Counter). Ist der Counter bei 10 angekommen, so ist deine Abbruchbedingung erfüllt. Wenn delta mal größer 0.5 musst du den Counter wieder auf Null setzten. Es macht allerdings einen Unterschied, ob alle 10 Werte in einem gewissen Bereich liegen müssen (Ringpuffer nötig) oder ob 10 Mal hintereinander das detltaT kleiner Grenzwert ist. Musst du abwegen.

Aber da du ja noch mehr auswerten willst, kommst du wohl an so einem Puffer nicht vorbei.


Gruß dimitri


In Array nacheinander kontinuierlich schreiben - Viewer2000 - 22.12.2009 13:44

Super, genau das war meine Idee der Umsetzung. Deiner Beschreibung zufolge wär für mein Problem die SR-Lösung ausreichend. Nun habe ich in der Suche bereits nach möglichen fertigen Modulen zu Schieberegistern / shifting register erfolglos gesucht, auch meine intensiven Bemühungen selbst eines zu generieren blieben erfolglos. LabVIEW akzeptiert wohl nicht ohne Weiteres Rückkopplungen wie mir scheint... Hast du mir hierzu einen Tipp?


In Array nacheinander kontinuierlich schreiben - dimitri84 - 22.12.2009 13:56

' schrieb:Nun habe ich in der Suche bereits nach möglichen fertigen Modulen zu Schieberegistern / shifting register erfolglos gesucht, auch meine intensiven Bemühungen selbst eines zu generieren blieben erfolglos.

rechte Maustaste auf einen Schleifenrand (for oder while, egal) -> Shiftregister hinzufügen.

Es gibt auch einen Rückkopplungsknoten der genau dasselbe macht, den finde ich aber nicht so anschaulich.


In Array nacheinander kontinuierlich schreiben - Viewer2000 - 22.12.2009 14:32

ah ok, Danke. Aber was ist der "schiebende" Impuls dieses Registers. Die Zählvariable in Kombi mit einer Verzögerung, oder bereits automatischerweise ein neuankommender Wert? Und wie kann ich bei einem zweiten Register den Inkrementschritt der Zählvariable auslösen??

Wär für ne Antwort sehr dankbar.


In Array nacheinander kontinuierlich schreiben - dimitri84 - 22.12.2009 14:42

Wie ein Schieberegister funktioniert kannste in der Hilfe nachschauen.
Inkrementieren kannst du mit dem Inkrementieren.VI (Numerisch Palette).
Das Überprüfen und das Rücksetzten auf Null machst du mit normalen Case-Strukturen.

Ein bisschen was selber überlegen musst man auch; so lernt man am schnellsten.


In Array nacheinander kontinuierlich schreiben - Viewer2000 - 22.12.2009 16:53

Stimmt, da hast wohl recht Rolleyes

Aber eines ist mir nach wie vor unbegreiflich. Ich kann jetzt einen Messwert seinem Vorgänger gegenüberstellen (Leitung durch eine bis 1 zählende For-Schleife als Schieberegister, die gerade um Dauer der Messwertabstände verzögert ist) ABER, ich kann diese Werte nicht voneinander subtrahieren.

Die Multiplikation geht, Addition auch (wenn ich einen Summand mit -1 multipliziere, dann wieder nicht...) sehr komisch.

offensichtlich muss das was mit dem Datenformat zu haben, weis hier jemand wichtige Restriktionen???