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 

DAQmx schreiben mit NSamples



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!

03.08.2017, 10:56
Beitrag #1

Niwo Offline
LVF-Grünschnabel
*


Beiträge: 10
Registriert seit: Jun 2017

2017
2015
DE


Deutschland
DAQmx schreiben mit NSamples
Hallo,

ich stecke schon seit mehreren Tagen an einem relativ simplen Problem fest und hoffe, dass mir hier kann jemand auf die Sprünge helfen kann.
Ich habe ein cDaq Chassis mit dem ich mehrere Signale lese, berechne, mir anzeigen lasse und speichere. Das alles funktioniert soweit, allerdings möchte ich einen Kanal zusätzlich wieder an einem analogen Ausgang ausgeben. Eingang und Ausgang sind jeweils Spannungen. Die Ausgangsspannung möchte ich für das Ist-Signal eines externen PID Reglers nutzen, der nichts mit LabVIEW zu tun hat. In dem angehängten Beispiel soll zusätzlich ein Kanal für das Soll Signal ausgegeben werden. Die Datenerfassung erfolgt zur Zeit mit 500 Hz und 50 Samples, deshalb wollte ich auch beim Schreiben wieder 50 Samples ausgeben. Mit der Hilfe in LabVIEW bin ich leider nicht weiter gekommen: http://zone.ni.com/reference/de-XX/help/...tfunction/

Das Beispiel ist mit LabVIEW 2017 erstellt.


Gruß
Nico


Angehängte Datei(en) Thumbnail(s)
   

17.0 .vi  Test_Output_Samples.vi (Größe: 33,97 KB / Downloads: 267)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.08.2017, 11:39
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: DAQmx schreiben mit NSamples
Hallo Nico,

wo genau ist jetzt dein Problem? Irgendwelche Fehlermeldungen?

Warum startest und stoppst du den AO-Task immer wieder?
Warum müssen es 50 Samples für den AO sein? Würde nicht auch ein Sample pro Iteration ausreichen?
Was passiert, wenn du den AO-Task in eine eigene parallele Schleife packst?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.08.2017, 12:55
Beitrag #3

Niwo Offline
LVF-Grünschnabel
*


Beiträge: 10
Registriert seit: Jun 2017

2017
2015
DE


Deutschland
RE: DAQmx schreiben mit NSamples
Danke für deine Antwort,

das Problem ist, dass keine Samples geschrieben werden. Ich wollte die gleiche Anzahl an Samples nutzen wie bei der Messdatenerfassung, was meiner Meinung nach auch Sinn macht.
Ich hatte schon den Task an jeder möglichen Stelle stehen, allerdings ohne Erfolg. Aktuell erscheint folgende Fehlermeldung beim Beenden des VI: Error -200088 occurred at DAQmx Start Task.vi:7220002.

Meinst du bei einem Sample pro Iteration, dass nur 1 Sample von den ursprünglichen 50 bei einem Durchlauf der Schleife ausgegeben werden soll.? Ich hatte so etwas schon zuvor implementiert und hat auch gut funktioniert. Allerdings ist dann mein zeitabhängiges Signal von der Quantität abhängig von der Sample-Anzahl, was für die Regelung nicht sonderlich gut ist (z.B. bei 500 Hz und 50 Samples wäre das dann nur 10 Hz für den Ausgang). Wozu gibt es dann bei dem VI DAQmx-Write, die Möglichkeit n-Samples auszuwählen, wenn es doch nicht so einfach funktioniert?

Das mit der parallelen Schleife hört sich gut an, allerdings weiß ich noch nicht so genau wie du es meinst, bzw. wie ich es am besten ausführen sollte.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.08.2017, 14:00 (Dieser Beitrag wurde zuletzt bearbeitet: 03.08.2017 14:02 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: DAQmx schreiben mit NSamples
Hallo Niwo,

Zitat:Das mit der parallelen Schleife hört sich gut an, allerdings weiß ich noch nicht so genau wie du es meinst, bzw. wie ich es am besten ausführen sollte.
LabVIEW bringt jede Menge Beispiel-VIs und auch -Projekte mit, einfach dort mal nach Producer-Consumer schauen!

Zitat:Error -200088
Die Fehlerbeschreibung lautet: "Task ist ungültig oder existiert nicht"…

Zitat:z.B. bei 500 Hz und 50 Samples wäre das dann nur 10 Hz für den Ausgang
Dann probiere doch 500Hz mit 10 Samples für 50Hz…
(Was soll der externe PID denn regeln und wie schnell?)

Ein Problem bei deinem Ansatz oben im Bild ist, dass das Starten und Stoppen des AO-Task eben auch Zeit benötigt - zusätzlich zur eigentlichen Ausgabe.
Der AO-Task wird deshalb immer langsamer arbeiten wie der AI-Task in der Schleife, sodass dessen Buffer irgendwann überläuft (und du schon vorher veraltete Samples einliest).

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.08.2017, 09:00
Beitrag #5

Niwo Offline
LVF-Grünschnabel
*


Beiträge: 10
Registriert seit: Jun 2017

2017
2015
DE


Deutschland
RE: DAQmx schreiben mit NSamples
Ich habe mein größeres VI schon im Producer-Consumer-Layout angelegt, nur hatte ich die Eingang - Ausgang Tasks in einer Schleife, weil ich gedacht hatte, dass ich dadurch weniger Verzögerung bekomme. Das Test-VI habe ich nur erstellt um die Ausgabe zu testen.
Naja, ich kann dem nicht so zustimmen, dass es viele Beispiele in Labview gibt. Hatte vorher viel in Matlab gearbeitet und dort war immer zur Erklärung ein Beispiel in der Hilfe angehängt. LabVIEW hat meiner Meinung nach da große Lücken...
Kannst du vielleicht kurz drüber schauen ob ich in der neuen Version einen Fehler gemacht habe? Fehlermeldung war, dass ein Inputparameter nicht erlaubt sein soll. Eigentlich sollte es ja nicht allzu exotisch sein, Samples zu schreiben, die zuvor in einer Schleife berechnet wurden. Die Samples-Anzahl und die Sample Rate zu reduzieren bringt auch nichts. Es wird noch nicht einmal ein Sample-Paket geschrieben Confused


Angehängte Datei(en) Thumbnail(s)
   

17.0 .vi  Test_Output_Samples.vi (Größe: 36,9 KB / Downloads: 238)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.08.2017, 09:09
Beitrag #6

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: DAQmx schreiben mit NSamples
Das Problem an deinem VI (Screenshot) ist, dass du 2x die Queue zerstörst, mit ziemlicher Sicherheit das erste Mal nach Beendigung der oberen Schleife. Dann will die untere Schleife aber noch ein Dequeue ausführen - aber die Queue ist nicht mehr vorhanden. Folge: Fehler 1.

Entweder ignorierst du diesen Fehler programmatisch (es ist schließlich zu erwarten, dass er auftritt), oder du sorgst per Dataflow dafür, dass die Queue erst dann zerstört wird, wenn sie nicht mehr gebraucht wird, z.B. so:
   

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.08.2017, 09:14 (Dieser Beitrag wurde zuletzt bearbeitet: 04.08.2017 09:14 von GerdW.)
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: DAQmx schreiben mit NSamples
Hallo Niwo,

Zitat:Naja, ich kann dem nicht so zustimmen, dass es viele Beispiele in Labview gibt. Hatte vorher viel in Matlab gearbeitet und dort war immer zur Erklärung ein Beispiel in der Hilfe angehängt. LabVIEW hat meiner Meinung nach da große Lücken...
Zwei Wege zum "Beispiel":
- Kontexthilfe immer geöffnet haben: Maus auf die gesuchte Funktion, dann auf "Ausführliche Hilfe" klicken - so kommst du direkt in die LabVIEW-Hilfe hinein. Dort findest du manchmal (aber eben nicht immer) BeispielVIs verlinkt zu den Funktionen (tendenziell eher bei den Signalverarbeitungs-Funktionen)
- Hilfe-Menü -> Beispielfinder: dort findest du jede Menge zu DAQmx…

Zitat:Fehlermeldung war, dass ein Inputparameter nicht erlaubt sein soll.
Ich gehe davon aus, dass der Fehler angezeigt wird, wenn du dein VI beendest: Nach der Producer-Schleife zerstörst du die Queue-Referenz. Dummerweise wartet die Consumer-Schleife aber noch auf Daten dieser Queue und meldet dann eben "Referenz ist nicht mehr gültig"! (Dies ist aber trotzdem ein üblicher Weg, um die Consumer-Schleife zu beenden. Man muss eben nur etwas Fehlerbehandlung programmieren und dies nicht allein LabVIEW überlassen…)

Zitat:Kannst du vielleicht kurz drüber schauen ob ich in der neuen Version einen Fehler gemacht habe?
Wieso startest und stoppst du den AO-Task nach der Consumer-Schleife? Da sollte doch gar nichts mehr passieren?!

Schau doch mal in den Beispielfinder nach einem Beispiel für genau deine Aufgabe: AI lesen und einen Wert an AO weiterreichen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.08.2017, 13:36
Beitrag #8

Niwo Offline
LVF-Grünschnabel
*


Beiträge: 10
Registriert seit: Jun 2017

2017
2015
DE


Deutschland
RE: DAQmx schreiben mit NSamples
Hi,

die Hilfe ist mir vertraut, finde sie meistens aber auch nicht sehr hilfreich.
Ich habe das VI einmal umgebaut, allerdings wird die zweite Schleife nicht ausgeführt und ich komme nicht drauf wieso.

Hat jemand eine Idee?


Angehängte Datei(en) Thumbnail(s)
   

17.0 .vi  Test_Output_Samples.vi (Größe: 38,25 KB / Downloads: 268)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.08.2017, 13:57 (Dieser Beitrag wurde zuletzt bearbeitet: 10.08.2017 13:59 von GerdW.)
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: DAQmx schreiben mit NSamples
Hallo Niwo,

Zitat:allerdings wird die zweite Schleife nicht ausgeführt und ich komme nicht drauf wieso.
Hast du mal etwas (Highlight-)Debugging ausprobiert? Da sieht man sowas meist sehr schnell…

Zitat:Hat jemand eine Idee?
Na klar!
THINK DATAFLOW!
Du hast eine "data dependency" zwischen den beiden Schleifen geschaffen, die dazu führt, dass die zweite Schleife erst nach der ersten ausgeführt wird. Wie schon gesagt: THINK DATAFLOW!

Ich glaube nicht, dass das mitgelieferte Producer-Consumer-Beispiel so programmiert wurde… Smile

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.08.2017, 08:28
Beitrag #10

Niwo Offline
LVF-Grünschnabel
*


Beiträge: 10
Registriert seit: Jun 2017

2017
2015
DE


Deutschland
RE: DAQmx schreiben mit NSamples
Aha, dann stimmt aber das Beispiel von Jens nicht, weil ich es 1:1 übernommen habe. Das Problem lag auch an der Wartefunktion und an der Reaktion des Stop-Buttons.
Wenn ich es in einer Schleife ausführe funktioniert es jetzt:


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
  DAQmx schreiben und lesen Sakis 2 4.764 06.09.2018 09:36
Letzter Beitrag: Sakis
  DaQ Task Messwerte auslesen Nsamples Programm stürzt ab csnuebi 7 7.266 24.03.2014 10:40
Letzter Beitrag: csnuebi
  DAQmx Messwerte schreiben Maurice 8 12.550 15.11.2010 18:04
Letzter Beitrag: Maurice
  Werte auf DAQmx schreiben m.wiederer 12 12.059 15.03.2010 10:15
Letzter Beitrag: Y-P

Gehe zu: