Analogausgang kontinuierlich schreiben, während der - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ) +---- Thema: Analogausgang kontinuierlich schreiben, während der (/Thread-Analogausgang-kontinuierlich-schreiben-waehrend-der) |
Analogausgang kontinuierlich schreiben, während der - Moes - 08.12.2015 13:46 Hallo, ich wollte mal fragen ob man die schreibt Performance der zwei Analogausgänge die nicht Zeit veränderliche Signale abgeben steigern könnte. Zuerst wurde versucht einen zweite DAQmx Task einzufügen (nur das funktioniert nicht richtig, schreibt die Werte gar nicht erst) :-( "DAQmx Write, Analog 1D N-Kanal 1 Sample" in der gleichen While Schleife führt zu Problemen, wenn man den "Do not allow Regeneration" Modus eingeschaltet hat. Die beiden oberen Ausgänge schreiben ein Zeit veränderliches Signal, jeweils ein Rechteck und ein Sinus und mit den unteren kontrolliere ich einfach einen kleinen Motor. Leider ist die Ausgabe sehr träge, wenn mann immer alle 1000 Datenpunkte Generieren muss, Samples senken zerstört einem aber dann den Sinus verlauf letztlich Bin für jeden Tipp dankbar! Gruß Moritz PS: die beiden Sub.vi's sind die Standard Funktionsgeneratoren aus Labview.... RE: Analogausgang kontinuierlich schreiben - GerdW - 08.12.2015 13:52 Hallo Moritz, Zitat:Leider ist die Ausgabe sehr träge, wenn mann immer alle 1000Tsd Datenpunkte Generieren muss, Samples senken zerstört einem aber dann den SinusKannst dud as nochmal mit ordentlicher Grammatik (& Rechtschreibung) formulieren? - 1000Tsd = 1Mio - wie groß ist deine Samplerate? Wie groß ist #s/Sampleanzahl? - was an deinem Code braucht am meisten Zeit? - die unterste FOR-Loop ließe sich durch ein InitArray ersetzen… - die Waveforms, die du generierst, haben nicht die gleichen Einstellungen: die unteren zwei FOR-Loops generieren nur Y-Daten, es fehlt die korrekte Zuordnung der dt-Werte! - Bilder sind nett, VIs sind aussagekräftiger: man könnte vielleicht noch mehr Ungereimtheiten finden… RE: Analogausgang kontinuierlich schreiben, während der - Moes - 13.12.2015 14:44 Also ich hab einfach die vi's nicht angehängt denn man kann sie später ja nicht mehr löschen und ich war mir nicht sicher ob ich die veröffentlichen darf. Im Grunde genommen fand ich es einfach schade dass man nicht für jede "Aufgabe" einen DAQmx Task verwenden kann, ohne das gleich Probleme beim schreiben auftauchen. Mein erster Versuch bestand ja auch darin "Parallel" zu schreiben und dann mal gucken ob Labview das von sich aus macht. Auch ein Grund warum ich nicht die Warte/Zeitfunktionen angerührt hatte, ein einsetzen von einem Warten führt dazu dass keine weitere Ausgabe mehr stattfindet. Oder eben das Signal unsauber ausgegeben wird, Sprünge und Abreißen der Signalform. Die beiden anderen Analogausgänge werden einfach hin und wider einmal geschrieben, mit sehr hohen Pausen da der Benutzer ja auf seiner Oberfläche recht langsam ist. Selbst bei sehr kleinen Frequenzen vom Sinus Generator, also z.B. 0,5Hz bekomme ich schon Stufen auf dem Oszilloskop angezeigt. Der angehängte Programmcode rennt "neben" der Benutzeroberflächen While Schleife. Die Benutzeroberfläche schreibt alle 500ms die aktuelle Benutzereingabe als Lokale Variablen in die Frontpanel Elemente. RE: Analogausgang kontinuierlich schreiben - GerdW - 13.12.2015 18:30 Hallo Moes, Zitat:Im Grunde genommen fand ich es einfach schade dass man nicht für jede "Aufgabe" einen DAQmx Task verwenden kann, ohne das gleich Probleme beim schreiben auftauchen.Das hängt mit der verwendeten Hardware zusammen: du verwendest verschiedene Kanäle auf einem Modul und musst diese leider in einem Task verwalten… Zitat:Die beiden anderen Analogausgänge werden einfach hin und wider einmal geschrieben, mit sehr hohen Pausen da der Benutzer ja auf seiner Oberfläche recht langsam ist.Gibt es Fehlermeldungen? Wie sehen die Plots in der graphischen Anzeige aus? Was heißt "hin und wieder"? Wie oft erfolgt die Ausgabe mittels DAQmxWrite? Zitat:Die Benutzeroberfläche schreibt alle 500ms die aktuelle Benutzereingabe als Lokale Variablen in die Frontpanel Elemente.Wie oft läuft die Ausgabeschleife bzw. wie schnell iteriert sie? Kann man hier auf ein schönes Producer-Consumer-Schema umstellen? Das subVI ist jedenfalls unangenehm wenig aufgeräumt, scheint aber (zu großen Teilen?) von NI zu stammen… Meine Fragen zielen darauf ab, dass ich das anders gelöst hätte: ich würde in einer Schleife immer die nächsten 100-500ms an Signaldaten berechnen und ausgeben lassen. Der Rechenaufwand scheint überschaubar zu sein, sodass man schneller sein sollte, als die Ausgabe benötigt. Und man kann hinreichend schnell auf User-Eingaben reagieren… Zitat:ein einsetzen von einem Warten führt dazu dass keine weitere Ausgabe mehr stattfindet.Der Zusammenhang erschließt sich mir nicht (direkt)… RE: Analogausgang kontinuierlich schreiben, während der - Moes - 17.12.2015 13:49 Gibt es Fehlermeldungen? Manchmal startet die Hauptschleife nicht und LabView blinkt am Innenrand der Schleife. Meine Beobachtung dazu ist eben das mein CAN Bus, also die NI-XNET komponeten die Performance stark senken. Die DAQmx Ausgabe erfolgt kontinuierlich. Der DAQmx Task schreibt kontinuierlich da die Ausgabe "DAQmx-Timing: Neugen Modus auf DO Not Allow Regeneration steht. Ich war anders nicht in der Lage einen Signal Zeit kontinuierlich zu schreiben und gleichzeitig eine Anpassung der Ausgangswerte durch den Benutzer zu ermöglichen. Aktuell ist in der (Analog ausgebenden) While Schleife eine "zu Warten" von 250ms eingestellt. Test-weise erhöhen bis 1000ms zeigt keine Veränderung des Ausgangssignal, bringt aber spürbar kein Performance zuwachs Aktuelle Wartezeiten: 1.500ms Whileschleife, Benutzereingabe 2.300ms Whileschleife, Analogausgabe 3. 10ms, Whileschleife, Analog Eingänge, 4 Stck, 10 Samples. Analog 2D DBL NKanäle NSamples 4. 5ms, Whileschleife, Counter, Digitaleingang zum Flanken Zählen mit Counter (höhere Wartezeit hat hier Probleme verursacht, Inhalt ist aber sehr spartanisch) 5. 5ms, Whileschleife, NI XNET CAN Bus, hier hole ich mir 3 Werte aus dem CAN BUS und zeige diese direkt auf dem Frontpanel an. Problem ist eher das die Analogausgabe manchmal abreißt, also sprünge hat und die Benutzeroberfläche etwas "ruckelt". Ich dachte ggf. senke ich die Schleife 1. auf 100ms dann sieht man das mit dem Auge nicht mehr RE: Analogausgang kontinuierlich schreiben, während der - jg - 17.12.2015 13:58 Wo kommt jetzt auf einmal CAN her? Davon schreibst du zum ersten Mal, auch in deiner Signatur ist davon nicht die Rede. Gruß, Jens RE: Analogausgang kontinuierlich schreiben, während der - GerdW - 17.12.2015 15:12 Hallo Moes, Zitat:Manchmal startet die Hauptschleife nicht und LabView blinkt am Innenrand der Schleife.Wie kann LabVIEW (mit großem "IEW") blinken? Da ich davon ausgehe, dass du vom BD deines VI sprichst: was da blinkt, ist üblicherweise ein Breakpoint. Hast du etwa einen in deinem VI? RE: Analogausgang kontinuierlich schreiben, während der - Moes - 18.12.2015 09:09 (17.12.2015 13:58 )jg schrieb: Ach ich hatte mir einfach noch ein weiteres Modul eingesteckt um noch mehr Messwerte mitlesen zu können. Das CAN Modul wir zwar parallel ausgelesen, nur die Werte verarbeite ich noch nicht. Zu Testzwecken ist das schon mal mit dabei nur die Messwerte werden nicht weiter eingespeichert. Mein LabView Programm enthält eigentlich keinen "Breakpoint" im Blockdiagramm, ich dachte die Meldung entstand weil LabView erst meine Haupt-schleife startet und dann wird in Lokale Variablen geschrieben dessen Bedienelement noch nicht erstellt wurde? Mir ist aufgefallen das die parallele Schleife mit z.B. einem DAQmx Task und dessen Bedienelement länger zum "Starten" oder beginnen benötigt als eine Schleife mit nur einfachen Frontpanel Elementen. Schade ist einfach das die Signalausgabe eine recht hohe Auslastung des Computers bedingt :-( |