INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Auswertung von Schwellwerten / Aufzeichnung in TDMS



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

11.08.2019, 10:42
Beitrag #1

ZwergNase Offline
LVF-Neueinsteiger


Beiträge: 2
Registriert seit: Aug 2019

2016
2013
DE


Deutschland
Question Auswertung von Schwellwerten / Aufzeichnung in TDMS
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.
lv16_img

Danke und schöne Grüße,
Gerhard


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.08.2019, 07:11
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Auswertung von Schwellwerten / Aufzeichnung in TDMS
Hallo Nase,

Zitat:Producer Loop (Analog, NChan, NSamp), kontinuierlich Messung, 1000 Samples/s
Dein Producer erzeugt momentan 10kS/s…

Leider wird in meinem VI nur alle N-Samples auf den nächsten Zyklus / Sequenz weitergezählt (Maximalwert Array größer 5 Volt),
Wie soll es denn anders funktionieren?
Du sendest einen Block von Samples an die Auswertung und prüfst, ob dein Trigger (mindestens einmal) erreicht wurde. Du prüfst nicht, wie oft der Trigger erreicht wurde…

Zitat:das komplette durchsuchen des Arrays nach Werten > 5V mittels Schleife war leider zu langsam.
Wie bitte?
Das Durchsuchen von 1000 Samples in einer Schleife ist zu langsam? Was hast du denn für einen Rechner?

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?
Da dt anscheinend fest definiert ist, kann man auch eine Rampe mit dt multiplizieren, statt Sample für Sample eine einzelne Addition für CycleTime durchzuführen…
(Du kennst dt und die Anzahl der Samples pro Block!)

Zitat:Sind so viele einzelne Queues und Melder überhaupt ratsam?
Ja.
(Ich verwende geschätzt 100-200 Queues in meiner Prüfstandssoftware…)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.08.2019, 17:47
Beitrag #3

ZwergNase Offline
LVF-Neueinsteiger


Beiträge: 2
Registriert seit: Aug 2019

2016
2013
DE


Deutschland
RE: Auswertung von Schwellwerten / Aufzeichnung in TDMS
Hallo Gerd,

vielen lieben Dank für deine schnelle Antwort!
Stimmt, die Wartezeit ist beim Producer momentan Faktor 10 zu kurz, habe ich nur für's Forum so gesetzt, damit's mit dem Schieberegler flüssiger läuft...

Tja, das mit dem Rechner ist in der Firma leider wirklich etwas schwierig - aktuell ist es noch ein Core-Duo, aber demnächst bekomme ich zumindest einen i5 mit SSD (allerdings leider wieder nur ein klassischer "Office-PC"), seufz.
Mir ist bewusst, dass mit der bisherigen Funktion (Maximalwert Array) nur jeder komplette Block von Samples einmal ausgewertet und im Gesamten geschrieben wird, aber damit eine positionsgenaue Schwellwertfindung überhaupt Sinn macht, muss ich ja im Anschluss auch alle restlichen Kanäle des Blocks jeweils an der richtigen Stelle teilen, um die relevanten Werte zu loggen.
Habe im Anhang ein Beispiel-VI zum Teilen des Blocks mit zwei Varianten zusammengestellt - welche ist im Prinzip die ressourcensparendste (Thema Rechnerleistung)? Oder gibt es insgesamt eine bessere Lösung dafür?

Das mit der Rampe ist eine gute Idee, werde ich mal versuchen, dankeschön!
Zumindest bin ich schon mal mit den Queues nicht direkt auf dem Holzweg...


Schöne Grüße,
Gerhard


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.08.2019, 19:57
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Auswertung von Schwellwerten / Aufzeichnung in TDMS
Hallo Gerhard,

Zitat:Habe im Anhang ein Beispiel-VI zum Teilen des Blocks mit zwei Varianten zusammengestellt - welche ist im Prinzip die ressourcensparendste (Thema Rechnerleistung)?
Das ist eine schlecht formulierte Frage: welche Resource willst du sparen, CPU-Leistung oder RAM?

Ich würde Variante 2 bevorzugen:
- besser lesbar
- die Schleife kann man parallelisieren
- die Konstante "9" gehört da nicht hin, dafür gibt es Autoindizierung!
   

Zitat: Oder gibt es insgesamt eine bessere Lösung dafür?
Das hängt von deinen genauen Requirements ab…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Auswertung Drehgeber mit NI 9401 BenutzernameNO 6 6.594 29.08.2016 13:25
Letzter Beitrag: GerdW
  Datenerfassung und Auswertung Rajesh 9 7.945 09.06.2015 07:40
Letzter Beitrag: wladimir s
  Laufzeitprobleme; Auswertung Lifter 7 6.264 27.11.2013 21:33
Letzter Beitrag: jg
  Datenerfassung und Auswertung Aue 5 7.236 02.01.2013 14:42
Letzter Beitrag: Lucki
  Auswertung von zwei Inkrementalgebern RabenFlug 9 9.392 18.10.2012 10:13
Letzter Beitrag: Sundypha
  Daten schreiben + lesen (inkl. Auswertung) Leo1 1 4.229 26.02.2011 21:22
Letzter Beitrag: Richard

Gehe zu: