Labview zeitliche Schwankung der Schleife

#7010058
Lesenswert?

Hallo liebe Community,

Ich habe eine Schleife in der in festen Zeitabständen Messwerte 
ausgelesen werden. Ich habe das mit einer "Timed Structure" umgesetzt. 
Allerdings habe ich das Problem, dass wenn beispielsweise eine Looptime 
(Durchlaufzeit der Schleife) von 1000ms eingestellt wird, die reale 
Looptime relativ stark schwankt. Ich bin dann in einem Bereich von 975ms 
bis 1025ms. Gibt es von Labview Möglichkeiten die Looptime präziser 
festzulegen bzw. einen Weg dass sie nicht so stark schwankt? Oder ist 
die starke Schwankung nicht zu verhindern? Bzw. könnte mir jemand 
erklären warum das überhaupt so ist? Die Messwerterfassung erfolgt über 
ein PXI-Matrix-Schaltmodul NI-PXI 2533 und ein PXI-Digitalmultimeter 
NI-PXI-4071.
Solltet ihr mehr Infos brauchen gebt bescheid. Vielen Dank für eure 
Hilfe.

Mit freundlichen Grüßen
Johannes
#7010125
Lesenswert?

Labview laeuft auf einem Betriebssystem. Dieses Betriebsystem hat eine 
Zykluszeit von glaub 20ms fuer Windows Client (normales Windows), und 
glaub 50ms fuer Windows Server. Das ist das Zeitraster, bedeutet aber 
nicht, dass der Thread dann auch dran kommt. Wenn die Garbage Collection 
anspringt dauerts laenger.
Fuer praezisere Timings sollte man sich eher etwas mit einem Controller 
ueberlegen. Ohne Linux und dergleichen natuerlich.
Gast #7010436
Lesenswert?

> von 1000ms eingestellt wird, die reale
> Looptime relativ stark schwankt. Ich bin dann in einem Bereich von 975ms
> bis 1025ms.

Ich schätze die Schwankungen kommen vom Windows selbst, weil die Tasks 
im Windows in etwa mit 20ms gewechselt werden.
Gast #7011287
Lesenswert?

Ohne deine VI zu kennen, kann man nichts dazu sagen.

Vorab:
LabView Loops kann man auf einige ms genau per Software takten. Meistens 
scheitert es an ganz anderen Sachen. Der häufigste Fehler ist das 
Ausführen der Wait (ms) VI. Schau mal noch ob du irgendwo ein wait for 
25ms in deiner VI hast. Das würde das Verhalten erklären. Auch beliebt 
sind Open Com Port und Close Com Port im selben Loop.
#7013220
Lesenswert?

Vielen Dank für eure ganzen Hinweise. Ich hab den relevanten Teil des 
Programms mal hochgeladen. Vielleicht sieht ja jemand einen 
Grundlegenden Fehler, den ich gemacht habe.
Einer der VIs ist dafür verantwortlich, dass die Loop schwankt. Denn 
nimmt man die VIs zur Messwertauslese heraus, so läuft es mit der 
exakten Looptime durch. Es existiert auch keine Waitfunktion.

Als Chassis verwende ich das NI PXI 1033.

LG Johannes
Angehängte Dateien:
Gast #7013800
Lesenswert?

Johannes M. schrieb:
> Ich hab den relevanten Teil des Programms mal hochgeladen.

Programme als JPG?
Das ist so ziemlich das blödeste Format dafür.
Das "P" steht für "Picture" und damit sind Fotos gemeint, wie sie aus 
eine Kamera herauskommen. Genau darauf ist dieses Format optimiert, 
einschließlich der verlustbehafteten Kompression.

Was meinst du, warum unter "Wichtige Regeln - erst lesen, dann posten!" 
der Hinweis auf Bildformate gegeben wird und dort explizit steht: 
"Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen"?
Gast #7017603
Lesenswert?

Du verwendest einen Softwaretakt (Timed Loop) und einen Hardwaretakt. 
Das kann so nicht funktionieren. Wie zwei Schlagzeuger die unsynchron 
spielen. Da kommt der Rest der Band ganz schön ins schwitzen.

Der Timed Loop möchte die Schleife (nach 1000ms?) beenden, kann sie aber 
noch nicht beenden weil die Hardware noch am messen ist. Die zusätzliche 
Zeit wird dann beim nächsten Durchgang abgezogen und die Schleife früher 
beendet. Daher kommen deine Schwankungen.

Schmeiß den Timed Loop raus und lass die Hardware den Takt vorgeben. Ob 
du dann den Mittelwert bildest(?), kann mir meine Glaskugel nicht sagen.
#7018474
Lesenswert?

Likeme schrieb:
> Labview war und ist immer schon einen Klickel oder Kastl
> Programmer
> Software für Dinge wo es nicht so genau sein soll. Präzise Timing
> Aufgaben lagert man besser in die Hardware aus.

Likeme, nicht LabVIEW ist das Problem, sondern das drunter liegende 
Betriebssystem, welches keine Realtime Programmierung zulässt! LabVIEW 
bringt sogar seine eigenen Timer mit, die mit 1KHz recht präzise 
verwendet werden können - das ist schon besser als so manche andere 
Programmiersprache mit onboard Timer kann.

Was meinst Du wohl, warum man teure aufwendige PXI Multimeter in einem 
aufwendigen PXI Mainframe nutzt.
Was meinst Du warum auf der Backplane des Mainframe ein 10MHz 
Referenzsignal geführt wird, auf der sich die Einschubkarten mit einem 
Jitter von 250ps genau triggern lassen?
Was meinst Du warum LabVIEW die Hardwaretrigger konfiguriert, selber 
aber den Takt nicht vorgeben muß.

Deine Aussage zu LabVIEW ist unfug. In meinem letzten Projekt habe ich 
synchron 18 Spannungskanäle auf 9 PXI Einschubkarten mit pro Kanal 4 
Msample/s über Zeiträume von 30 Sekunden ausgelesen. Die Einscubkarten 
wurden in einem PXI Mainframe von NI unter LabVIEW mit einer 
Synchronabweichung von +-10ns von Kanal zu Kanal über die 30 Sekunden 
ausgelesen. PXI ist die Hardware, die präzises Timing zulässt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren