LabVIEWForum.de
Timed loop dauert länger als vorgegeben - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Timed loop dauert länger als vorgegeben (/Thread-Timed-loop-dauert-laenger-als-vorgegeben)



Timed loop dauert länger als vorgegeben - AnnaGT - 07.11.2012 12:53

Hallo!

Ich habe vor kurzem mit LabVIEW angefangen, um ein Messprogramm für eine Modellgasturbine zu schreiben.
Ich habe dafür ein fertiges Programm als Unterstützung bekommen.

Das Programm soll zwei Erfassungsmodi haben. Im normalen Fall soll das Programm sekündlich die Anzeige am Frontpanel aktualisieren und Werte erfassen. Wenn eine Messung gestartet wird, sollen die Abtasfrequenz und Messwertanzahl einstellbar sein.

Um die Schleifendauer zu definieren, war es in diesem vorgegebenen Programm so, dass es über die Abtastfrequenz eingestellt werden kann.
Ich habe jetzt folgendes Problem, die Anzeige ändert sich trotz Angabe unterschiedlicher Abtastfrequenzen immer ungefähr jede 9 Sekunden.
Woran liegt das?

Ich habe schon in ein paar Einträge gelesen, dass es daran liegen kann, dass im timed loop Dateien gespeichert werden.
Aber ich bin mir nicht sicher was die beste Lösung wäre (ob Queues, getrennte Schleifen...Confused), deswegen würde ich gerne ein paar Tips von erfahrenere Leute hören.

Danke für eure Hilfe!

Lg, Anna


RE: Timed loop dauert länger als vorgegeben - GerdW - 07.11.2012 13:09

Hallo Anna,

wenn deine TWL langsamer als gewünscht läuft, dürfte dies daran liegen, dass die subVIs einfach nicht schnell genug fertig werden...

Bevor eine neue Iteration beginnen kann, muss die aktuelle abgearbeitet sein!
Und ja, parallele Schleifen kann man nutzen, um "schnelle" und "langsame" Aufgaben voneinander zu trennen...


RE: Timed loop dauert länger als vorgegeben - AnnaGT - 09.11.2012 13:44

Hi!

Ok danke!

Aber bin mir noch nicht sicher, wie ich es lösen soll.

Ist es besser wenn ich statt die timed while loop direkt in den Express Vis zur Messwertaufnahme die Zeit definiere? (Siehe Anhang)
(Dabei kriege ich aber eine Fehlermeldung: Possible reason(s):
NI Platform Services: The specified resource is reserved. The operation could not be completed as specified.
Task Name: _unnamedTask<92>)

Oder würde zum Bespiel mehr Sinn machen kein Express Vi zu benutzen und das Öffnen und Schließen der Messwertaufnahme außerhald der Schleife zu machen?

Danke nochmal!

Lg, Anna


RE: Timed loop dauert länger als vorgegeben - GerdW - 09.11.2012 13:49

Hallo Anna,

Zitat:Oder würde zum Bespiel mehr Sinn machen kein Express Vi zu benutzen und das Öffnen und Schließen der Messwertaufnahme außerhald der Schleife zu machen?
Spätestens wenn man wie du 6 DAQ-Assis parallel laufen lassen will und dabei (verständlicherweise) dauernd Fehlermeldungen bekommt, sollte man sich mal mit den DAQmx-Funktionen auseinandersetzen. Ist leichter als du denkst!

Zitat:Ist es besser wenn ich statt die timed while loop direkt in den Express Vis zur Messwertaufnahme die Zeit definiere?
1) Die TWL kann nicht schneller laufen als der Schleifeninhalt.
2) Solange man Hardware-Timing beim DAQ nutzen kann, sollte man darauf zurückgreifen.
Ergo: Nutze das Timing deiner DAQ-Hardware!


RE: Timed loop dauert länger als vorgegeben - AnnaGT - 15.11.2012 12:21

Hallo,

Ich habe jetzt die Initialisierung und das Schließen der Karte außerhalb von der Schleife gemacht und habe auch die Abtastfrequenz und die Anzahl der Messwerte gleich im Sample Clock definiert.
Es hat dann auch mit dem Einhalten der Zeit funktioniert. Danke!

Ich habe es gespeichert und jetzt funktioniert es nicht mehr. Die Daten werden nicht mehr sekündlich im Frontpanel aktualisiert. Und zwar glaube ich liegt es daran, dass im Input (Devices_Read.vi) kommt am Ausgang der Read Funktionen ein Error: -200077.

Ich habe Info über diesen Fehler gesucht und habe aber nichts hilfreiches gefunden. Ich habe auch den Datentyp am Ausgang verändert aber es liegt anscheinend nicht daran Confused.

Weißt ihr was ich machen konnte oder woran es liegen konnte?

(Das SubVI ist noch nicht fertig, aber ich wollte erstmal die Anzeige in der Zeit hinkriegen)

Viele Grüße,

Anna


RE: Timed loop dauert länger als vorgegeben - GerdW - 15.11.2012 12:56

Hallo Anna,

Zitat:glaube ich liegt es daran, dass im Input (Devices_Read.vi) kommt am Ausgang der Read Funktionen ein Error: -200077.
Bei welchem DAQmx-Aufruf? Du hast mehrere im VI...
Der Fehler sagt: die gewünschte Einstellung wird vom Gerät nicht unterstützt. Du musst schon gucken, ob das, was du da einstellst, auch von der Hardware unterstützt wird!

Weiterhin unsinnig:
[attachment=42235]
Wozu überhaupt die InitArray-Funktion? Und warum dann ein Array mit NULL Elementen (d.h. leer!) erzeugen?
Wozu überhaupt die Messschleife, wenn alle Messergebnisse weggeworfen werden???

Diese ganze Umwandel-Orgie nach und von DDT ist auch nicht hilfreich. Auch hier schleichen sich schnell Fehler ein!


RE: Timed loop dauert länger als vorgegeben - AnnaGT - 15.11.2012 16:43

Ja das mit dem Array hatte ich schon agenfangen zu ändern (siehe Anhang), weil ich am Anfang nicht wusste wie man aus alle Elementen der For-Schleife ein Array zu machen. Ich dachte die Null war die erste Indizierungsnr.

Ich wollte halt am Ende ein Array mit allen Messwerten bekommen.

Aber diese Fehlermeldung verstehe ich nicht, weil die vorher nicht da war und die Hardware hat sich nicht geändert. Die kommt nach allen DAQmx-Read (Analog...) Kann es nicht an was anderes liegen?
Ich habe auch zuerst die Fehlermeldung 200088 bekommen.


RE: Timed loop dauert länger als vorgegeben - GerdW - 15.11.2012 16:47

Hallo Anna,

"-200088" bedeutet: Task ungültig.
"-200077" bedeutet: gewünschte Eigenschaften nicht unterstützt.

Da du uns nicht zeigst, wie die Tasks konfiguriert werden, kann man da wenig helfen. Musst du selbst suchen!
(Sind alle Referenzen richtig zugeordnet?)


RE: Timed loop dauert länger als vorgegeben - jg - 15.11.2012 19:36

Laut der Doku in deinem VI hast du 3x USB-9211-Module verwendet.
Dieses Modul lässt sich laut Specs auf ni.com mit einem Software-Takt von maximal 14S/s auslesen, hier also einen Hardware-Takt mit Sample-Clock zu konfigurieren muss fehlschlagen. Das sollte die Ursache für den "-200077" Fehler sein.

Gruß, Jens