LabVIEWForum.de - Fehlerausgabe bei Verwendung von 4 Modulen

LabVIEWForum.de

Normale Version: Fehlerausgabe bei Verwendung von 4 Modulen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Moin Leute,

nach dem ich langsam dem Ziel näher komme hab ich nun noch den hoffentlich Letzten Fehler.

Es geht darum ich verwendet 4 Module (NI 9225, NI 9246, NI 9221 und NI 9210) im cDAQ 9174.

Der Fehler laute "Fehler- 200022 bei DAQmx Start Task.vi: 7220002"

Mögliche Ursachen:
Die von diesem Task angeforderte Ressource wurde bereits von einem anderen Task reserviert.
Task-Name: _unnamedTask<1F>

Ich bin auf jeden Fall soweit dass es irgendwas mit den Eingängen zu tun hat und sich dabei in die Quere kommen.

Hab dazu auch schon eine Problem Lösungen gefunden,in diesem Forum.
Ich bekomme es aber so nicht hin, zumindest sehe ich nicht was weiter rechts passiert.
Ich hab einfach aus dem DAQ-assistenten den Code schreiben lassen und dann vorne die Virtuellen Eingänge mit eingebaut und trotzdem kommt noch den Fehler.

Ich setze mal Fotos (Foto ''INITfehler_gel_st'' ist das Foto von der Lösung die ich gefunden habe) und vereinfachtes Programm mit an vielleicht kann mir jemand Helfen.
Hallo bachatero,

Zitat: hab ich nun noch den hoffentlich Letzten Fehler.
Glaubst du das mit dem "hoffentlich letzten Fehler" wirklich? Big Grin

Zitat:Mögliche Ursachen:
Die von diesem Task angeforderte Ressource wurde bereits von einem anderen Task reserviert.
Ich bin auf jeden Fall soweit dass es irgendwas mit den Eingängen zu tun hat und sich dabei in die Quere kommen.
Du verwendest für deine 4 Module 3 DAQAssistenten und einen "ordentlichen" DAQmx-Task.
Ich kann dir versichern, dass der Fehler in den DAQAssis zu suchen ist - aber die willst du doch sicherlich auch noch durch "einfache" DAQmx-Funktionen ersetzen, oder?

Zitat:Ich hab einfach aus dem DAQ-assistenten den Code schreiben lassen und dann vorne die Virtuellen Eingänge mit eingebaut und trotzdem kommt noch den Fehler.
Weil auch der konvertierte Code immer noch eine schon benutzte Resource anfordert!

Schau mal in diesen Thread rein…

Zu deinen Bildern:
Warum benutzt du nicht mal AutoCleanup?
Wozu eine Wartezeit von 0ms?
Warum wird der DAQmx-Task in jeder Iteration neu angelegt und wieder gelöscht? Zeigt NI das so in den BeispielVIs zu DAQmx?
Zitat:Glaubst du das mit dem "hoffentlich letzten Fehler" wirklich? Big Grin
also ich hoffe Big Grin

Zitat:u deinen Bildern:
Warum benutzt du nicht mal AutoCleanup?
Wozu eine Wartezeit von 0ms?
Warum wird der DAQmx-Task in jeder Iteration neu angelegt und wieder gelöscht? Zeigt NI das so in den BeispielVIs zu DAQmx?

Gut autocleanup hab ich jetzt nicht benutzt, weil das wie gesagt ein abgespecktes Beispiel ist.

Mit der Wartezeit von 0ms hab ich tatsächlich aus einem Labview Buch Einführung in LabVIEW 6.,erweiterte Auflage Seite 62"Merke: (while-)Schleifen sollten immer mit einem Timing versehen werden" als Begründung steht dabei selbst wenn die Schleife so schnell wie möglich laufen soll, soll man trotzdessen eine Wartezeit von 0 angeben, damit gegebenes Falls das Betriebssystem noch die Möglichkeit hat interne Aufgaben "zwischenzuschieben".

Und tatsächlich ist mir das gar nicht aufgefallen ich zieh die gleich mal aus der Schleife raus, danke. Ne er hat die original nicht in der Schleife drin

Zitat:Weil auch der konvertierte Code immer noch eine schon benutzte Resource anfordert!

Schau mal in diesen Thread rein…

Hab mir den Thread durchgelesen soll das ein Verweis auf deine Signatur sein oder steht da noch irgendwas relevantes für mich drin was ich übersehe?

Eigendlich wollte ich die DAQ assis so lass weil es mit dreien ja funktioniert d.h für mich der 4 den ich jetzt unten als DAQmx dargestellt habe will irgendwas benutzen was einer von den dreien schon benutzt
Hallo bachatero,

Zitat: (while-)Schleifen sollten immer mit einem Timing versehen werden"
Dieses Timing wird durch die DAQmx-Operationen gewährleistet: es dauert eben seine Zeit, Messdaten zu erfassen und abzuliefern (wenn man ein passendes Timing vorgibt)…

Zitat:steht da noch irgendwas relevantes für mich drin was ich übersehe?
Dort hatte ich geschrieben, dass man mehrere AI-Kanäle in nur einem DAQmx-Task zusammenfassen kann.
So wie bei dir mit 3 verschiedenen AI-Modulen…

Zitat:Eigendlich wollte ich die DAQ assis so lass weil es mit dreien ja funktioniert d.h für mich der 4 den ich jetzt unten als DAQmx dargestellt habe will irgendwas benutzen was einer von den dreien schon benutzt
Prima Einstellung!
Das Problem ist, dass die DAQAssis die Einstellungen und Einzelheiten verbergen, die zum Fehler führen. Und deine Lösung soll sein, dass du an dem einzigen klar sichtbaren DAQmx-Task rumfummeln willst? Wall
Ok ich glaub ich habe es verstanden also, die Lösung ist wenn ich alle bzw. es reicht ja wenn ich 2 zusammenziehen AI Eingänge in dem selben DAQmx-Task verarbeite?

Ja muss ich ja jetzt eh alle als DAQmx-Task anzeigen lassen um die alle bzw. 2 im selben zuverarbeiten.

Ich versuch das mal ich gebe auf jeden Fall Feedback ob es geklappt hat.

Danke auf jeden Fall 2hands
Soo tatsächlich hat es geklappt vielen Dank Smile musste aber auch wieder viel Nachlesen und erst verstehen.

Ich hab mich dann gefragt weshalb das im DAQ-assistenten nicht gehen sollte bis ich es gefunden habe und es wäre so leicht gewesen.

Man hätte nur auf schon einem vorhandenen DAQ-Assistenten der auch AI`s hat auf Eigenschaften gehen müssen und einfach auf Kanal hinzufügen gehen können dort kann man das andere Modul mit hinzufügen.

Ich hänge mal die Fotos an damit andere Anfänger nicht so lange suchen oder verzweifeln wie ich.

Auf jeden Fall danke nochmal.
Hallo bachatero,

ich empfehle dir als Einstellung im DAQAssi "1000 Samples lesen bei 10kHz Samplerate" (statt bisher nur 20 Samples)…

Im 2ms-Takt muss man DAQmx nicht quälen (schon gar nicht bei USB-Anbindung)!
ja ist schon doll viel hab ich auch gesehen ich hab das gerade drin, weil ich nicht weiß wie ich die einzelnen Werte die er mir den bei einer kleineren Frequenz raus gibt aufarbeite und in einen Datei schicke.

Sprich in deinem Beispiel würde ich ja 1000 Werte in 100ms takt rausbekommen, nur ich hab keine Ahnung wie ich die weiter verarbeite, damit da eine ordentlich Sinusfunktion rausbekomme.

Bzw. woher ich wissen kann wenn ich nur einen Wert von den 1000 Nehme welcher das ist.

den aktuellen Wert alle 100ms würde mir reichen.
(28.02.2019 12:00 )bachatero18 schrieb: [ -> ]ja ist schon doll viel hab ich auch gesehen ich hab das gerade drin, weil ich nicht weiß wie ich die einzelnen Werte die er mir den bei einer kleineren Frequenz raus gibt aufarbeite und in einen Datei schicke.

Sprich in deinem Beispiel würde ich ja 1000 Werte in 100ms takt rausbekommen, nur ich hab keine Ahnung wie ich die weiter verarbeite, damit da eine ordentlich Sinusfunktion rausbekomme.

Bzw. woher ich wissen kann wenn ich nur einen Wert von den 1000 Nehme welcher das ist.

den aktuellen Wert alle 100ms würde mir reichen.

Ich habe jetzt nicht die Daten der einzelnen Module nachgeschaut, aber gibt es einen Grund dass Du da mit 10 kHz sampelst wenn Du doch eigentlich nur einen Messwert alle 100 ms brauchst? Machte meiner Meinung nach Sinn um diese Samplerate wesentlich zu verkleinern.

Wenn Du einen der Kanäle mit 10 kHz brauchst kannst Du ja immer noch die anderen nur jeweils einen Messwert per 1000 Samples generieren. Aber hier würde ich nicht einfach einen aus den 1000 Samples picken (wahrscheinlich den letzten, weil der der Jüngste ist) sondern eine Mittelwert über alle 1000 Samples berechnen und damit weitermachen.

Wenn aber keiner der Kanäle wirklich 10 kHz nötig hat, würde ich das reduzieren zum Beispiel auf 1 kHz oder 100 He und dann jeweils 100 oder 10 Werte lesen, diese per Kanal mitteln und dann so weiter machen.
Referenz-URLs