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
:
Bearbeitet durch User
Johannes M. schrieb: > ein PXI-Digitalmultimeter > NI-PXI-4071. 7 ½ Stellen ist natürlich der Hammer. Brauchst Du es wirklich so super genau oder reichen nicht 3..4 Digits völlig aus? Vermutlich kommt der Jitter durch die interne Meßzeit des Boliden.
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.
:
Bearbeitet durch User
Johannes M. schrieb: > Die Messwerterfassung erfolgt über > ein PXI-Matrix-Schaltmodul NI-PXI 2533 und ein PXI-Digitalmultimeter > NI-PXI-4071 Welches PXI Chasis verwendest du?
Du kannst dir zum Einstieg mal das hier ansehen https://www.ni.com/de-de/innovations/white-papers/10/timing-and-synchronization-in-ni-labview.html
Johannes M. schrieb: > von 1000ms eingestellt wird, die reale > Looptime relativ stark schwankt. Ich bin dann in einem Bereich von 975ms > bis 1025ms. Für eine reine Softwarelösung auf einem normalen Windows ist das schon SEHR genau.
Not-Aus schrieb: > Du kannst dir zum Einstieg mal das hier ansehen > https://www.ni.com/de-de/innovations/white-papers/10/timing-and-synchronization-in-ni-labview.html Und was lernen wir daraus? Außer, daß es da eine 1ms Taktquelle gibt? Über die REALEN Probleme und Jitter findet man in dem Artikel kein Wort.
> 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.
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.
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
Bei LabView ist es wichtig, in die Hauptschleife eine Wartefunktion einzubauen. Dazu nimmt man nicht "delay" sondern diese: https://zone.ni.com/reference/en-XX/help/371361R-01/glang/wait_till_next_ms_multiple/ Damit erhält man das best mögliche Timing.
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"?
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.
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.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.