Hallo liebe LabVIEW-Freunde,
zur Versuchsauswertung werden insgesamt 9 Spannungssignale über ein NI9220 als TDMS aufgezeichnet - die gesamte Messung umfasst mehrere Zyklen die wiederum in einzelne Sequenzen aufgeteilt sind.
Um den aktuellen Zustand der Anlage festzustellen werden in den ersten beiden Kanälen 5 Volt Schaltsignale ausgewertet ("Operate" startet und beendet den jeweiligen Zyklus, "Sequenz" gibt den derzeitigen Status im aktuellen Zyklus aus).
Da die einzelnen Zyklen eine unterschiedliche Dauer haben, soll im TDMS die aufgelaufene Zykluszeit (Summieren "dt") und die zugehörige Sequenz-Nummer mitgeschrieben werden, zudem wird dadurch die anschließende Auswertung in Excel für meine Kollegen ermöglicht.
Das VI habe ich in Producer-Consumer-Struktur über mehrere Queues und Melder aufgebaut:
- Producer Loop (Analog, NChan, NSamp), kontinuierlich Messung, 1000 Samples/s → im Anhang vereinfacht als Schieberegler
- Analysis Loop (wertet die Schwellwerte aus und bereitet die Daten zum schreiben in TDMS auf)
- Logging Loop (schreibt die Daten in TDMS) → im Anhang vereinfacht als Anzeige
- Display Loop (Bildschirmanzeige von Graphen)
Leider wird in meinem VI nur alle N-Samples auf den nächsten Zyklus / Sequenz weitergezählt (Maximalwert Array größer 5 Volt), das komplette durchsuchen des Arrays nach Werten > 5V mittels Schleife war leider zu langsam. Gibt es hier eine schnellere Auswertung des Schwellwerts (z.B. über "einfache Triggererkennung") und wie kann ich dies ohne Zeitverzögerung an TDMS-Write weitergeben?
Cycles, Cycletime und Sequence rechne ich derzeit mit einer "For-Schleife" auf die Anzahl Samples hoch, damit ich sie in der TDMS mitschreiben kann - gibt es hier eine bessere Möglichkeit?
Sind so viele einzelne Queues und Melder überhaupt ratsam?
Wäre es vielleicht leichter, die aktuellen Zustände der Anlage über ein NI9375 ohne größere Zeitverzögerung zu erfassen und auszuwerten (Analog- und Digital-Modul befinden sich jedoch leider in getrennten Netzwerk-Chassis)?
Ich hoffe, ihr entschuldigt meine wahrscheinlich sehr laienhafte Programmierweise und könnt mir trotzdem gute Tipps geben.
Danke und schöne Grüße,
Gerhard