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 

Mehrere Queues für mehrere Tasks



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!

20.08.2013, 11:46
Beitrag #1

Gerald85 Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: Aug 2013

2012
2008
DE_EN



Mehrere Queues für mehrere Tasks
Hallo liebes Forum,

ich habe ein kleines großes Problem und wäre wirklich sehr über Hilfe dankbar Rolleyes
Ich bereite gerade eine Messung vor und will hierzu zwei Task mit mehreren Kanälen messen (den einen Task mit ca 10kHz den Anderen mit 1 MHz) und speichern. Ich habe an anderer Stelle des Forums den Tipp bekommen einen Ringspeicher zu benutzen, dies hat mit nur einem einzigen Task super funktioniert aber bei einem zweiten nicht so ganz…
Ich zeige euch am besten mal mein Programm:

Ich erstelle zuerst die verschiedenen Kanäle. Ich benutze zwei Schleifen, da ich ja auch mit zwei unterschiedlichen Abtastraten messen will und es zwei verschiedene Mess-Devices sind. Den oberen Task will ich mit 10 kHz abtasten, den Unteren mit 1Mhz.

   

So und jetzt fangen die Probleme an. Als nächstes lese ich in jeweils zwei Schleifen die zwei verschiedenen Kanalblöcke aus und schicke sie mit je einem Queue zu der jeweiligen Speicher-Schleife. Dort schreibe ich sie in eine TDMS-Datei rein. Damit die nicht allzu groß wird, will ich alle 600 „Umdrehungen“ eine neue Datei erstellen und beschreiben.

   

Mein Problem liegt jetzt darin, dass ich das Gefühl habe, dass nur ein Queue erstellt wird. Ich überwache ebenfalls die Queue-Größe und die eine ist immer Null, während die Andere sehr sehr schnell anwächst.

Daher meine Frage:

1.) Ist es überhaupt möglich zwei Ringspeicher in einem VI zu benutzen?
2.) Wie sorge ich dafür, dass der Ringspeicher nicht so schnell eine sehr große Größe annimmt ohne einen „Out of Memory“-Fehler zu bekommen?


Ich hoffe ich konnte mein Problem einigermaßen verständlich skizzieren... Würde mich wirklich sehr über eine Antwort freuen :-)

Viele Grüße,
Gerald
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
20.08.2013, 12:02 (Dieser Beitrag wurde zuletzt bearbeitet: 20.08.2013 12:06 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Mehrere Queues für mehrere Tasks
Hallo Gerald,

- ich hatte dir schon einmal gesagt, dass die Art und Weise, wie du die DAQ-Task erstellst, höchstgradig "ungewöhnlich" ist und dir eine deutliche Verbesserung genannt!
- du betreibst keinerlei (naja: rudimentäres) Fehlerhandling in den DAQ-Producer-Loops. Gibt es dort Fehlermeldungen?
- Die Queuesize sagt nichts über den Inhalt der Queueelemente aus...
- Eine DAQ-Loop läuft mit 10s-Takt (100k Elemente/10kHz Samplerate), die andere mit 0,1s-Takt (100k Elemente/1MHz Samplerate). Die müssen unterschiedlich schnell Daten liefern...
- Deine Consumer-Loop wartet unbegrenzt (ohne TimeOut) auf neue Daten in beiden Queues. Sie muss also 10s auf ein Datenpaket der einen DAQ-Loop warten - in der Zwischenzeit produziert die andere Loop aber 100 Datenpakete - von denen du aber nur ein einziges aus der Queue liest!

THINK DATAFLOW!

Zu deinen Fragen:
1) Ja. Du kannst auch deutlich mehr als nur 2 Queues benutzen...
2) Queue schneller auslesen oder in der Länge begrenzen. Such dir aus, was dir besser gefällt...

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

Gerald85 Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: Aug 2013

2012
2008
DE_EN



RE: Mehrere Queues für mehrere Tasks
Hallo Gerd,

ich habe die Fehlerbehandlung extra aus dem Skript gestrichen um es für das Forum ein wenig übersichtlicher zu gestalten, ansonsten Danke für die Tipps. Nachdem ich die Taktung angepasst hatte, hat's geklappt :-)
Allerdings hab ich noch eine Andere Frage:

Ich habe in einer ersten Version Zeitschleifen anstatt While-Schleifen benutzt und auch wenn es natürlich mit einer normalen While-Schleife jetzt viel besser klappt vermisse ich die Möglichkeit jeder Schleife einen eigenen Prozessor zuzuordnen.
Gibt es diese Möglchkeit für eine While-Schleife oder kann man eine zeitgesteuerte Schleife mit variabler Periode erstellen?

Grüße,
Gerald
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.08.2013, 11:30
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Mehrere Queues für mehrere Tasks
Hallo Gerald,

Zitat:Gibt es diese Möglchkeit für eine While-Schleife
Jein. Für die While-Schleife direkt nicht, aber du könntest eine While-Loop in einer TWL verpacken...

Zitat:oder kann man eine zeitgesteuerte Schleife mit variabler Periode erstellen?
Ja. Du kannst über die Ein-/Ausgangsknoten der TWL die Parameter beeinflussen.

Ist dieses Feature wirklich nötig? Wenn du die Loops auf einen Core festpinnst, nimmst du LabVIEW die Möglichkeit, die Last selbst zu verteilen...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.08.2013, 13:18
Beitrag #5

Gerald85 Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: Aug 2013

2012
2008
DE_EN



RE: Mehrere Queues für mehrere Tasks
Naja wirklich "nötig" nicht, aber fand es ganz schön :-)
Danke auf jeden Fall für die Hilfe, werde mir mal ein paar Gedanken machen....aber es wahrscheinlich einfach lassen ;-)
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
  Mehrere Signale von NI-6009 erfassen braendy 12 8.347 10.01.2022 22:28
Letzter Beitrag: Kiesch
  DAQ mehrere Signaltypen parallel erfassen serge_franke 1 3.819 22.01.2018 14:06
Letzter Beitrag: GerdW
  DAQmx - Mehrere Tasks - Zeitüberschreitung mmmm 2 4.845 02.11.2017 18:04
Letzter Beitrag: mmmm
  Mehrere Messungen Hintereinander Darstellen. LV_Vladi 20 13.970 06.12.2015 10:57
Letzter Beitrag: LV_Vladi
  Mehrere Signale in einem Schaubild darstellen Fuchsi 6 6.170 19.11.2015 14:28
Letzter Beitrag: Fuchsi
  Ni PXI / DAQmx - mehrere Analogkanäle gleichzeitig samplen blaubarschbube 4 5.504 19.12.2014 12:30
Letzter Beitrag: blaubarschbube

Gehe zu: