LabVIEWForum.de
Verrauschtes Stromsignal - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: Verrauschtes Stromsignal (/Thread-Verrauschtes-Stromsignal)

Seiten: 1 2


RE: Verrauschtes Stromsignal - GerdW - 12.09.2013 15:11

Hallo Pukito,

ich habe mir nur kurz "Hysteresemessung angeschaut":
- aufräumen (wer soll da denn durchblicken...)!
- in deiner FOR-Loop hast du 4 DAQmx-Aufrufe, die jeweils nur ein Sample abfragen/schreiben. Jeder Aufruf dürfte im ms-Bereich liegen, d.h. die Schleife wird nie schneller als im 5…10ms-Takt laufen...
- Windows wird sicherlich auch diesen 10ms-Takt zerhauen, wenn ein Virenscanner oder die Festplattendefragmentation sagt, dass sie jetzt arbeiten wollen...
- das ungebremste Ansammeln von Daten in diversen Arrays wird sich auch mit steigender Zeit für einen Schleifendurchlauf bemerkbar machen...
- ich sehe nirgends SampleRate-Definitionen...
- wenn du eine Samplerate definierst: frage nicht mehr Einzelwerte ab, sondern z.B. 10 Samples (ergibt bei einer Samplerate von 1kHz eine Wartezeit von 10ms)...
- versende in den Queues keine Einzelwerte, sondern auch gleich Arrays von Werten...
- ich würde auch nicht mit 5 Queues arbeiten, um Daten zu versenden: eine Queue, die Daten als Array oder in einem Cluster verpackt...

P.S.:
- wozu ArrayToCluster und Unbundle, wenn es auch IndexArray gibt?
- wozu eine FOR-Loop, die nur genau einmal durchläuft?


RE: Verrauschtes Stromsignal - Pukitu - 23.09.2013 06:52

Hallo GerdW,

vielen dank für die Tipps.

Würde es evtl noch etwas bringen wenn ich von einem Einkernprozessor auf einen Quadcore hochrüste bzw. das ganze System aufrüste?

Grüße

Pukitu


RE: Verrauschtes Stromsignal - GerdW - 23.09.2013 07:56

Hallo Pukito,

Zitat:Würde es evtl noch etwas bringen wenn ich von einem Einkernprozessor auf einen Quadcore hochrüste bzw. das ganze System aufrüste?
Jein...
Du kannst dich natürlich an Symptomen abarbeiten - du solltest vorher aber die anderen Punkte oben erledigt haben...

- Windows wird dir weiterhin kein Schleifentiming unter 10ms (reproduzierbar) erlauben.
- MultiCore muss man auch in LabVIEW vernünftig unterstützen - mit (schlechter) DATAFLOW-Programmierung nagelt man sich schnell auf einen Kern fest...

Was hast du denn in der Zwischenzeit an deinem VI verbessert?


RE: Verrauschtes Stromsignal - Pukitu - 23.09.2013 09:01

Hallo,

bin immer wieder fasziniert von den schnellen Antworten. TOP!

hab im VI aufgeräumt und versucht meine Messdaten als Array zu sammeln und über die Qeues auszugeben. Dies hat nicht funktioniert da die Qeues nicht mit dem erstellten Array arbeiten konnen. Confused

Deswegen habe ich das VI vom programmiertechnischen nicht weiter verändert.

Was meinst du mit :
- Windows wird dir weiterhin kein Schleifentiming unter 10ms (reproduzierbar) erlauben.
- MultiCore muss man auch in LabVIEW vernünftig unterstützen - mit (schlechter) DATAFLOW-Programmierung nagelt man sich schnell auf einen Kern fest...

Und sollte das Vi aussehen wenn ich 10 khz abtasten möchte?
Ich komme nicht damit zurecht wie ich das VI verändern muss dass ich eine höhere Abtastrate bekomme...

Vielen Dank schonmal.

Grüße


RE: Verrauschtes Stromsignal - GerdW - 23.09.2013 09:09

Hallo Pukito,

Zitat:Und sollte das Vi aussehen wenn ich 10 khz abtasten möchte?
Es gibt viele mit LabVIEW mitgelieferte Beispiele - auch solche, die zeigen wie man mit 10kHz abtastet. Einfach mal anschauen!
Man verwendet jedenfalls keine Einzelwert-Abfragen...

Zitat:- Windows wird dir weiterhin kein Schleifentiming unter 10ms (reproduzierbar) erlauben.
Windows entscheidet selbst, welcher Prozess wann wieviel Rechenzeit bekommt. Du kannst dir zwar 10ms Takt von einer Schleife wünschen - was Windows dir zugesteht, ist aber etwas ganz anderes...

Zitat:- MultiCore muss man auch in LabVIEW vernünftig unterstützen - mit (schlechter) DATAFLOW-Programmierung nagelt man sich schnell auf einen Kern fest...
LabVIEW unterstützt zwar von Haus MultiCore - aber bei ungünstiger Programmierung wird trotzdem nur ein Core ausgenutzt. Dies sollte man im Hinterkopf haben! (Der Rechner bleibt aber mit Multicore eher bedienbar, wenn man mal einen Core komplett auslastet...)


RE: Verrauschtes Stromsignal - Pukitu - 23.09.2013 14:47

hmmm,


also ich bin mittlerweile am Verzweifeln. Hab jetzt alles was beschrieben wurde ausprobiert aber komme nicht auf unter 10 ms.
Mittlerweile glaube ich dass diese 10ms festgelegt werden wenn ich den Verlauf angebe.
Nur leider finde ich nichts dergleichen.
Denn eigentlich müsste sich ja eine Beschleunigung zeigen wenn ich nur einen Kanal abfrage tut es aber nicht Huh


RE: Verrauschtes Stromsignal - GerdW - 23.09.2013 14:59

Hallo Pukito,

was ist so schwer zu verstehen an:
Zitat:Es gibt viele mit LabVIEW mitgelieferte Beispiele - auch solche, die zeigen wie man mit 10kHz abtastet. Einfach mal anschauen!
Hast du das getan? Wenn ja, welches Beispiel ist dir noch unklar?


RE: Verrauschtes Stromsignal - Pukitu - 24.09.2013 13:57

Hallo noch einmal,


ich habe mir die Beispiele unter DAQmx analoge Spannung erfassen angesehen.

mir ist gerade noch etwas aufgefallen: Mein Vorgänger bestimmt im UnterVI die Zeit in der die Daten eingeschrieben werden über die Schleifenzahl : 100.
Das ist doch eigentlich unsinn da die Dauer einer Schleife ja nicht direkt bestimmt wurde. Ist es richtig wenn ich die Zeit in meinem VI über die Prozessorzeit steuere? Wenn ja wie geht das?
Das übergeben der Werte in einem vorgegebenen Array über die Qeues bekomme ich auch nicht hin da ich nicht weis wie ich es erstellen kann.

Danke schonmal.

Grüße


RE: Verrauschtes Stromsignal - GerdW - 25.09.2013 10:40

Hallo Pukito,

Zitat:Mein Vorgänger bestimmt im UnterVI die Zeit in der die Daten eingeschrieben werden über die Schleifenzahl : 100.
Das ist doch eigentlich unsinn da die Dauer einer Schleife ja nicht direkt bestimmt wurde.
Nein, das ist kein (kompletter) Unsinn!
Du hast in der Schleife andere Funktionen, die die Ablaufzeit bestimmen: DAQmxRead!
Und zwar hast du eine Samplerate von 10kHz eingestellt und fragst in der Schleife 1000 Samples ab: Macht genau 100ms Iterationszeit.
Du musst also statt durch 100 nun durch 10 teilen, um auf deinen Zeitstempel zu kommen.

Anmerkung: diese simple Rechnung funktioniert natürlich nur, solange nicht andere Funktionen in der Schleife womöglich noch länger als DAQmxRead benötigen - und die Schleife deshalb verlangsamen...

Anmerkung 2: Du musst nicht unbedingt ein explizites Wait in der Schleife haben - solange du andere Funktionen nutzt, die ebenfalls warten. Dies kann DAQmxRead sein, aber auch beliebige andere Funktionen, die einen TimeOut unterstützen...