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 

Datenerfassung - unterschied zwischen Samplerate und Tick Count



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!

22.10.2020, 11:51
Beitrag #1

fritenschmiede Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Apr 2016

14, 18 & 19
2015
EN


Deutschland
Datenerfassung - unterschied zwischen Samplerate und Tick Count
Hallo zusammen,

ich bin gerade dabei einen kleinen Versuchsstand aufzubauen. Dabei verwende ich LV 2019 und ein NI cDAQ 9174 mit folgenden Einschüben:
• NI 9222 4 Kanal Analoginput
• NI 9217 4 Kanal Temperaturmessung
• NI 9269 4 Kanal Analogoutput

Über den Analogoutput gebe ich einen Druck vor. Daraufhin werden 3 Signale (2x Druck, 1x Geschwindigkeit) über die analogen Spannungseingänge + die Temperatur gemessen. Die Messdaten inklusive Tick Count schreibe ich mittels einer While-Schleife und einem Schieberegister in ein Array, welches ich mir nach Beendigung der Messung in eine Textdatei schreibe. Soweit funktioniert alles prima - so wie es soll.

Meine Timingeinstellung für die AI sind eine kontinuierliche Datenerfassung mit 100 zu lesenden Werten und einer Abtastrate von 1000Hz, welche ich über einen Task im NI Max festgelegt habe.

Wenn ich nun die geschriebene Textdatei öffne, sehe ich das alle 2 ms zwei Werte geschrieben wurden, kann mir einer sagen woran das liegt? Hängt das mit dem Tick Count zusammen? Ist meine Schleife zu langsam, wenn ja wie könnte ich noch schneller werden? Fragen über Fragen. Blink

Alternativ hatte ich auch schon eine zeitgesteuerte Schleife probiert. Darüber hatte ich dann meinen 1ms Schritt für die 1000Hz erreicht, allerdings waren dann sehr oft dieselben Daten hintereinandergestanden, was darauf hinweist das die Schleife nicht fertig durchlaufen werden konnte.

Ich hoffe mir kann jemand weiter helfen.


Angehängte Datei(en) Thumbnail(s)
   

19.0 .vi  MainPermeabilität_while.vi (Größe: 273,49 KB / Downloads: 178)

0.0 .txt  Test.txt (Größe: 310,28 KB / Downloads: 206)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
22.10.2020, 12:13
Beitrag #2

Martin.Henz Offline
LVF-Team
LVF-Team

Beiträge: 429
Registriert seit: Jan 2005

2.5.1 bis 20
1992
kA

74363
Deutschland
RE: Datenerfassung - unterschied zwischen Samplerate und Tick Count
Hallo fritenschmiede,

das Timing für die Messwerte kommt von der Hardware. Du schreibst zusätzlich noch irgend einen anderen Zeitstempel in deine Datei - der hat aber reichlich wenig mit den Messwerten zu tun.
Baue das Ganze um und mache alles etwas langsamer. Es gibt keinen Grund bei 1kHz Sample Rate wie wild Sample für Sample einzulesen. Verwendet "Multiple Channels, Multiple Samples" und lese die Daten ganz gemütlich ein. Als Zeitstempel schreibst du nicht die Ticks, sondern die 1/SampleRate * SampleNummer * 1000ms/s, also bei 1kHz Sample Rate einfach die Sample Nummer (1,2,3,4,5 usw.).

Martin Henz
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.10.2020, 12:16 (Dieser Beitrag wurde zuletzt bearbeitet: 22.10.2020 12:18 von GerdW.)
Beitrag #3

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Datenerfassung - unterschied zwischen Samplerate und Tick Count
Hallo schmiede,

Zitat:Dabei verwende ich LV 2019
Dann bitte Profil_ergaenzen!

Zitat:Meine Timingeinstellung für die AI sind eine kontinuierliche Datenerfassung mit 100 zu lesenden Werten und einer Abtastrate von 1000Hz, welche ich über einen Task im NI Max festgelegt habe.
Wenn ich nun die geschriebene Textdatei öffne, sehe ich das alle 2 ms zwei Werte geschrieben wurden, kann mir einer sagen woran das liegt?
Leider sieht man von deinen Timingeinstellungen überhaupt nichts im VI!
Genauer: dein VI kümmert sich überhaupt nicht um deine Taskeinstellungen, sondern liest immer nur ein Sample pro Iteration. Das kombinierst du mit einem Tickcount, der nur auf eine Miilisekunde auflöst und evtl. weniger genau ist…

Wenn dein VI deine Timingeinstellungen respektieren soll, dann solltest du bei DAQmxRead auf "N channels N samples" umstellen und gleich 100 Samples abfragen - dann kommst du auf eine (üblicherweise empfohlene) Iterationszeit von 100ms!

Dein ganzes VI sollte auch noch etwas überarbeitet werden:
- Im ersten Frame läuft die Schleife so schnell es nur geht: musst du wirklich so oft den exakt gleichen Wert auf den AO schreiben und dabei auf Userinput warten?
- Im zweiten Frame solltest du auf das Erstellen eines möglicherweise riesigen Arrays verzichten. Und wenn du schon ein "Array bauen" willst, dann verwende bitte auch BuildArray statt InsertIntoArray!
- Die Sequenzstruktur ist übrigens komplett unnötig - THINK DATAFLOW!
- Der Tickcount ist übrigens nicht die "Systemzeit", sondern ein einfacher Millisekundenzähler. Wenn du die "Systemzeit" wissen willst, solltest du GetDateTimeInSeconds verwenden!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.10.2020, 08:50
Beitrag #4

fritenschmiede Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Apr 2016

14, 18 & 19
2015
EN


Deutschland
RE: Datenerfassung - unterschied zwischen Samplerate und Tick Count
Vielen Dank für den ganzen Input. Ich habe das mal versucht umzusetzen.
Durch die NChannels NSamples wird die Schleife deutlich schneller, dass hatte ich so nicht auf dem Schirm. Den Tick Count habe ich mir jetzt gespart und die Schleife mit einer 1 ms Wartezeit versehen – was dann den 1000Hz Samplerate entspricht – so hatte ich Martin.Henz verstanden. Das mit der Iterationszeit von 100 ms und 100 Sampels abfragen, so wie GerdW beschrieben hat, habe ich irgendwie nicht hinbekommen.

Ich möchte trotzdem nochmal nachfragen, nur damit ich es abschließend verstehe: Wenn ich in die Schleife jetzt nochmal Tick Count oder „High resolution relative seconds“ einbaue, dann ist der Zeitabstand ja trotzdem nicht immer genau die 1ms – woran liegt das? Kommt das aus der Diskrepanz zwischen Hardwaretakt und Quelle des Tick Count bzw. „High resolution relative seconds“?

Beste Grüße
Fritenschmiede

PS: ich habe gerade gesehen in dem Array habe ich noch einen Datentypfehler.


Angehängte Datei(en) Thumbnail(s)
       

19.0 .vi  MainPermeabilität.vi (Größe: 274,09 KB / Downloads: 170)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.10.2020, 09:04 (Dieser Beitrag wurde zuletzt bearbeitet: 23.10.2020 09:06 von GerdW.)
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Datenerfassung - unterschied zwischen Samplerate und Tick Count
Hallo schmiede,

Zitat:Das mit der Iterationszeit von 100 ms und 100 Sampels abfragen, so wie GerdW beschrieben hat, habe ich irgendwie nicht hinbekommen.
Ist doch ganz einfach:
   
Hast du dir mal die ganzen DAQmx-BeispielVIs im Beispielfinder angeschaut?

Zitat:Wenn ich in die Schleife jetzt nochmal Tick Count oder „High resolution relative seconds“ einbaue, dann ist der Zeitabstand ja trotzdem nicht immer genau die 1ms – woran liegt das? Kommt das aus der Diskrepanz zwischen Hardwaretakt und Quelle des Tick Count bzw. „High resolution relative seconds“?
Ja, unter anderem.
Windows wird dir nie und nimmer eine stabile Iterationszeit von 1ms garantieren - das wird selbst auf einem RT-System nicht zu 100% garantiert! Windows macht da einfach zu viel im Hintergrund…

Außerdem fragst du alle Samples ab, die gerade im DAQmx-Buffer vorhanden sind: das können bei jeder Iteration unterschiedlich viele sein! IMHO ist das für die spätere Weiterverarbeitung von Daten aber eher ungünstig - mit konstanten Blockgrößen kann man viel effizienter arbeiten!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.10.2020, 09:33
Beitrag #6

Martin.Henz Offline
LVF-Team
LVF-Team

Beiträge: 429
Registriert seit: Jan 2005

2.5.1 bis 20
1992
kA

74363
Deutschland
RE: Datenerfassung - unterschied zwischen Samplerate und Tick Count
Hallo Gerd,

(23.10.2020 09:04 )GerdW schrieb:  
Zitat:Das mit der Iterationszeit von 100 ms und 100 Sampels abfragen, so wie GerdW beschrieben hat, habe ich irgendwie nicht hinbekommen.
Ist doch ganz einfach:
...

nicht ganz - das Problem liegt vor allem dort:

   

Das funktioniert so nicht, denn in dem Array stehen dann pro Messkanal nur ein Wert drin und nicht die etwa 100 Messwerte (je Kanal).

Martin Henz
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
23.10.2020, 12:36 (Dieser Beitrag wurde zuletzt bearbeitet: 24.10.2020 09:30 von Martin.Henz.)
Beitrag #7

Martin.Henz Offline
LVF-Team
LVF-Team

Beiträge: 429
Registriert seit: Jan 2005

2.5.1 bis 20
1992
kA

74363
Deutschland
RE: Datenerfassung - unterschied zwischen Samplerate und Tick Count
Hallo Fritenschmiede,

hmm, also eigentlich ist es ja deine Aufgabe das Ganze etwas in Ordnung zu bringen. Anstatt nun aber wortreich zu beschreiben, was du tun kannst, habe ich ein dein VI nebenbei etwas verändert. Dem Gerd habe ich noch genug zum meckern übrig gelassen Angel_not

Mein Ansatz geht jetzt so, dass das Kram mit dem Dateiheader vor der While-Schleife in die Datei geschrieben wird und die Messdaten innerhalb der While-Schleife in die Datei geschrieben werden. Wenn du erst die Messdaten komplett sammelst, dann platzt irgendwann dein Rechner wenn die Messzeit sehr lange ist. Außerdem ist ja jede Menge Zeit bis die nächsten etwa 100 Samples gemessen wurden.


Angehängte Datei(en)
17.0 .vi  MainPermeabilität-a.vi (Größe: 25,05 KB / Downloads: 177)

Martin Henz
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.10.2020, 12:58 (Dieser Beitrag wurde zuletzt bearbeitet: 23.10.2020 12:59 von GerdW.)
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Datenerfassung - unterschied zwischen Samplerate und Tick Count
Hallo ihr zwei,

Zitat:Dem Gerd habe ich noch genug zum meckern übrig gelassen
Sieht doch schon deutlich netter aus!

Ich würde nur unbedingt beim DAQmxRead eben die "100 samples to read" vorgeben und dafür die Wartezeit in der Schleife entfernen. Eine kontinuierliche Datenerfassung verträgt sich eher weniher mit festen Wartezeiten: DAQmx kann hier selbst für das akkurate Timing sorgen…

Ansonsten ein Tipp:
Statt riesiger ConcatString-Nodes verwende ich lieber ein FormatIntoString mit einem ordentlichen Formatstring…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.10.2020, 14:52 (Dieser Beitrag wurde zuletzt bearbeitet: 23.10.2020 14:52 von fritenschmiede.)
Beitrag #9

fritenschmiede Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Apr 2016

14, 18 & 19
2015
EN


Deutschland
RE: Datenerfassung - unterschied zwischen Samplerate und Tick Count
Hallo ihr zwei,

das schaut wirklich sehr gut aus. Vorallem mit dem kontinuierlichen wegschreiben der Daten gefällt mir.
Allerdings war in der Ausgabe noch ein Fehler, da im Ausgabe Array bei Martin irgendwann 100 Werte pro Zeile geschrieben wurden. Ich hab das nun so angepasst das jeder Messwerte in einer Spalte ausgegeben wird. Die Wartezeit habe ich wie Gerd gesagt hat entfernt und durch die "100 Samples to read" ersetzt.

Das läuft jetzt richtig gut. Vielen Dank für euren Support.

Beste Grüße und nochmal vielen Dank
Fritenschmiede


Angehängte Datei(en)
19.0 .vi  MainPermeabilität-LVF.vi (Größe: 39,82 KB / Downloads: 179)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.10.2020, 18:15
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Datenerfassung - unterschied zwischen Samplerate und Tick Count
Hallo schmiede,

Zitat:Das läuft jetzt richtig gut.
Prima!

Noch ein Vorschlag:
Beim Chart "Druck 1&2" solltest du davor ein BuildArray anstatt des Bundle verwenden: ein Array of Waveform ist ein typische Datentyp für einen Chart! (Bei deinem Bundle bekommst du einen CoercionDot…)

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
  Datenerfassung cDAQ + NI9203 keine synchrone Datenerfassung dieseldunst 5 6.574 24.06.2016 14:49
Letzter Beitrag: jg
  NI 9423 Flankenzähler(Edge Count) Oscar234 5 7.313 14.02.2014 10:56
Letzter Beitrag: Oscar234
  DAQ Verständnisproblem mit Channels und Samplerate etc MartinLoreck 5 7.198 19.09.2012 12:40
Letzter Beitrag: MartinLoreck
  Samplerate wird nicht exakt übernommen taktbar 6 6.172 04.03.2012 15:41
Letzter Beitrag: Lucki
  DAQmx SampleRate erhöhen Mari0 1 5.504 22.09.2011 09:48
Letzter Beitrag: Mari0
  Unterschied DAQmx clear & stop Task gottfried 4 6.611 02.08.2011 08:48
Letzter Beitrag: gottfried

Gehe zu: