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 

Nur 1 Datenpaket aus der Queue lesen



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!

15.01.2018, 13:37
Beitrag #1

MarcoRe Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Dec 2017

2017
2017
DE



Nur 1 Datenpaket aus der Queue lesen
Guten Tag zusammen,

ich möchte gerne nur 1 Datenpaket aus der Queue lesen und in eine Datei schreiben lassen. Aktuell wird in 0.001s Takt geschrieben und diesen zeitlichen Abstand möchte ich abändern.

Daher nutzte ich 2 While Schleifen.
1. Daten auslesen in bestimmter Taktung
2. Daten schreiben in bestimmter Taktung unter Nutzung der Queue.

Im Anhang seht ihr den Auslese loop, obwohl hier ein "elapsed Time.vi" eingebaut wurde schreibt er mir die Daten im 0,001ms Abstand. Ich denke das liegt daran , dass er eben alle gesammelten Daten nimmt und in die Datei schreibt.
Wie kann ich das ändern?


Grüße
Marco


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.01.2018, 14:22 (Dieser Beitrag wurde zuletzt bearbeitet: 15.01.2018 14:38 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Nur 1 Datenpaket aus der Queue lesen
Hallo Marco,

Zitat:ich möchte gerne nur 1 Datenpaket aus der Queue lesen und in eine Datei schreiben lassen.
Aber genau das machst du doch schon!
Es wird genau ein Datenpaket aus der Queue gelesen und in eine Datei gespeichert…

Zitat:Aktuell wird in 0.001s Takt geschrieben und diesen zeitlichen Abstand möchte ich abändern.
Welchen zeitlichen Abstand möchtest du ändern?
Meinst du den Sample-Takt?
Meinst du den Takt, mit dem Daten in die Queue geschrieben werden?
Meinst du den Takt, mit dem Daten aus der Queue gelesen werden?
Meinst du den Takt, mit dem Datenpakete in die Datei geschrieben werden?

Vielleicht solltest du deine Aufgabe genauer beschreiben - dann könnte auch dir vielleicht die Lösung klarer werden… Big Grin

Zitat:Ich denke das liegt daran , dass er eben alle gesammelten Daten nimmt und in die Datei schreibt. Wie kann ich das ändern?
Indem du einfach nicht ALLE Daten in die Datei speicherst?

Allgemeiner Hinweis:
Das Problem mit Screenshots ist, dass sie sich mit LabVIEW so schlecht debuggen lassen.
Das Problem mit ExpressVIs ist, dass ihre Einstellungen nur sichtbar sind, wenn man ein VI zum Debuggen hat…

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

MarcoRe Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Dec 2017

2017
2017
DE



RE: Nur 1 Datenpaket aus der Queue lesen
Hallo Gerd und alle Mitleser,

vielen Dank für deine Antwort. Im Anhang ist mein VI. ( ich freue mich auch über allgemeines Feedback zum Aufbau da ich doch recht Neu in diesem Thema bin ).Angel_not

Kurz zum VI und was es macht bzw. machen soll.

1. Hardware initialisieren
2. Task initialisieren
3. Daten auslesen ,Daten anzeigen, Daten speichern

Ich möchte also a) Die Daten in 0,5s Schritten anzeigen ( das funktioniert ja über den TIMER in der obersten Messchleife )
und b) die Daten Speichern und zwar in n*1s Schritten. In der Datei sollen also nur Daten zu den definierten Zeitpunkten stehen
0s .....DATEN 1
1s ....DATEN2
2s.....DATEN 3
3s......DATEN 4

Die Daten dazwischen möchte ich weglassen.

Vielen Dank und Grüße Marco Big Grin


Angehängte Datei(en)
16.0 .vi  Main_Meassurements.vi (Größe: 153,89 KB / Downloads: 208)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.01.2018, 11:53
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Nur 1 Datenpaket aus der Queue lesen
Hallo Marco,

um mal gleich etwas zu mosern:
- Bitte NIE bei Controls/Indicators das Label löschen! Immer ein Label vergeben und notfalls im Frontpanel ausblenden!
- Bitte erstmal die ganzen (unsinnigen) Umwandlungen nach DDT entfernen!
- Im Consumer sieht es sehr "komisch" aus, wenn du ein Array of Waveforms mit jeweils mehreren Samples über den Umweg DDT in ein 1D-Array umwandelst: kommt da überhaupt was Sinnvolles bei raus?

Nach diesen Umarbeitungen bitte dein VI nochmal anhängen…

Was genau funktioniert jetzt in deinem VI nicht?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.01.2018, 16:01
Beitrag #5

MarcoRe Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Dec 2017

2017
2017
DE



RE: Nur 1 Datenpaket aus der Queue lesen
Und nochmals Danke für dein Feedback.


Die DDT Umwandlungen habe ich so weit wie möglich rausgeschmissen ( die Ergebnisse daraus waren allerdings auch plausibel ).Um die Labels kümmere ich mich noch.

Was ich letztendlich haben möchte ist folgendes Speicherformat wenn die Messung beispielhaft um 15:00:00 anfängt:

Zeit Daten1 Daten2 usw...
15:00:00
15:00:01
15:00:02
15:00:03
15:00:04

aktuell speichert es mir auch die Daten die einen zeitlichen Abstand von 0,001s haben.
Ich möchte somit JEDE Sekunde die AKTUELLEN Werte haben, ohne die Zwischenwerte in 0,001s Schritten.

Noch eine Frage in die Runde, ist es sinnvoller Notifications oder Queue zu nutzen?

Grüße
Marco


Angehängte Datei(en)
16.0 .vi  Main_Meassurements.vi (Größe: 117,96 KB / Downloads: 219)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.01.2018, 22:54
Beitrag #6

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Nur 1 Datenpaket aus der Queue lesen
Du musst alle Werte aus der Queue auslesen.Wenn Du nur jeden 1000ten Wert brauchst, dann immer 999 Werte wegwerfen und nur jeden 1000ten verwenden. Lösung: Um das VI "Element entfernen" eine For-Schleife mit N=1000 legen.
   
Zu Deiner Frage: Eine Queue kann mehrere Sender haben, aber nur 1 Empfänger. Ein Melder kann auch mehrere Empfänger haben, und da kann es logischerweise keine Queue geben - was wegen fehlender Datenpufferung ein Nachteil ist. Ein Melder ist auch komplizierter bezüglich der möglichen einstellbaren Optionen. Ich würde also, wenn Du nicht den vorgenannten Spezialfall hast, immer Queues verwenden.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
22.01.2018, 12:59
Beitrag #7

MarcoRe Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Dec 2017

2017
2017
DE



RE: Nur 1 Datenpaket aus der Queue lesen
Vielen Dank für deine Antwort,

da ich gerne einen Anzeigeloop ( Consumer 1 ) und einen Speicherloop ( Consumer 2 ) verwenden möchte, werde ich die Notifier verwenden.

Zum eigenen Verständnis:
Ich habe 14 Kanäle in einem Waveform Datentyp gespeichert. Stimmt es dann, dass jede "Spalte" einen meiner Kanäle repräsentiert und jede Reihe ist 1 Sample?

Wenn ich also die Daten aus dem Notifier bekomme, bsp. 1000 Samples pro Schleifendurchgang, dann hat mein Waveform Array die Größe von

Kanäle * Samples = 14 * 1000 = 140000 Werte in meinem Array?

Wenn das der Fall ist, wie kann ich dann bsp. einfach immer das erste Sample ( also die erste Reihe ) aus dem Array lesen? Wenn ich das jede Sekunde mache, dann sollte ich ja mein gewünschtes Speicherfomat mit einem Abstand zwischen den Messwerten von 1s hinbekommen. Also der zeitliche Abstand zwischen meinen Messwerten dt steht gerade bei 0,001 und ich möchte die Daten mit einem dt von 1 abspeichern.

Grüße Marco
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.01.2018, 15:12
Beitrag #8

MarcoRe Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Dec 2017

2017
2017
DE



RE: Nur 1 Datenpaket aus der Queue lesen
Hallo zusammen,

ich denke ich habe nun endlich die Lösung gefunden. Die Vorgehensweise ist dabei folgende:

Ich nehme mein Waveform array/ Cluster - nehme die Y Werte heraus ( -> Array mit den Werten ) und letztendlich nehme ich davon nur das erste Element. Danach wird das wieder in ein Waveformarray/ Cluster gepackt um die Daten abzuspeichern. Mithilfe des Zeitintervalls, welches meinen Loop steuert, kann ich die zeitlichen Abstände einstellen.

Im Anhang das Blockschaltbild.


Falls ihr noch einen Fehler finden solltet, freue ich mich über euer Feedback. Ansonsten Danke für den Support.

Grüße
Marco R.


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Messdaten per queue in .tdms ralph_schuster 12 11.670 12.07.2012 14:09
Letzter Beitrag: ralph_schuster
  Sensordaten mit Queue verarbeiten? Benjamin Fuchs 2 4.623 11.09.2007 07:09
Letzter Beitrag: Benjamin Fuchs
  Probleme mit zu großen Datenpaket DextersLab 0 3.058 27.07.2006 07:46
Letzter Beitrag: DextersLab

Gehe zu: