Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Ich hab folgendes Problem. Mein Programm nimmt von zwei analogen Eingängen Daten auf über DAQ. Das soll es alle 500ms machen. hab auch schon 1000 probiert, aber das bringt auch nichts. Nach etwa 5-6 Minuten werden aus den 500 dann 1s, dann 2s usw.
Ich glaube, nachdem ich hier schon mal geschaut hab, dass es daran liegt, dass ich in der Schleife die Datenerfassung immer neu starte und wieder schließe. Aber wenn ich für beide Eingänge die Initialisierung nach draußen lege, bekomme ich ne Fehlermeldung. Soweit ich weiß, kann man ja immer nur einen Kanal/Task zur Zeit ansteuern. Im Grunde müsste ich also noch eine Abfrage machen, wann der erste Kanal fertig gemessen hat und der zweite starten kann. Dann würde ja aber wieder alles in einer Schleife sein.
Versteht jemand mein Problem und weiß ne Lösung? Oder liegt der Fehler woanders?
Anbei mal das Programm, wie es momentan ist:
...oder auch nicht. Klappt hier nicht mit dem hochladen, probiers zuhause dann mal
1. Sammelst du Daten per Build-Array Funktion & Shift-Register? Das führt bei längerer Ausführung zur Fragmentierung des Speichers, da LV dauerd neuen Speicher allocieren muss für das immer größer werdende Array.
2. Wieso fasst du nicht die Erfassung der beiden Kanäle in ein Task zusammen? Dann brauchst du nicht dauernd die Tasks zu starten und zu stoppen.
MfG, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Äh...nein, eigentlich wandel ich die Daten in Strings um und schreib sie dann in ein Spreadsheet(?). Und zusammenfassen wollte ich sie nicht, da ich damit mal Probleme hatte.
Ah ja, du hast im Prinzip doch ein sich dynamisch vergrösserndes Array, nämlich das String-Array, das du am Ausgang der While-Loop per AutoIndex sammelst. Da LabVIEW bei der While-Loop natürlich nicht im voraus weiss, wie gross das Array, hast du wohl ebenfalls (ähnlich wie bei Build-Array) das Problem mit der Defragmentierung des Speichers.
Dann die Frage: Du willst also jede halbe Sekunde einen Messwert von Kanal ai4 und Kanal ai5 erfassen. Wieso dies nicht per Hardware-Timing? Und immer beide Kanäle. Dann übernimmt der DAQmx-Treiber sowie die DAQ-Karte (Zwischenfrage: welche?) für dich das korrekte Timing. Und du musst nicht die Tasks neu starten und stoppen.
Beispiele dazu im NI-Examplefinder sind die Continous-Acquisations-VI's mit Internal Clock.
MfG, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Hallo, hier mal ein Bsp zur Erfassung der 2 Kanäle mit 2 Hz:
[attachment=38242:Read2AI.vi] EDIT: Anhang gelöscht, da Datei offenbar korrupt.
Die Wandlung in Strings würde ich erst nach Abschluss der Messung machen (was erwartest du denn so als Maximaldauer?).
Ich habe das mal mit "simulierter DAQKarte" laufen lassen, hatte nach halber Stunde noch keine Probleme. Nachteil des Bsp: Auch hier wird dynamisch die Waveform immer weiter vergrößert, was auf Dauer nicht gerade das ideale für den Speicher des Computers ist.
MfG, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
Mein Programm wird immer langsamer
Ich kann die Fehlermeldung bestätigen. Lad' das VI doch bitte nochmal hoch, Jens.
Gruß Markus
' schrieb:Hallo Jens,
danke für das VI, aber mein LabVIEW mag das nicht aufmachen. Es gibt ne Fehlermeldung: "The File is not a resource File. ...not valid" (sinngemäß).
Ich hab mal mit den Beispielen rumgespielt und da kam auch was bei rum. Werds nachher mal hochladen, weil das hier auf der Arbeit nicht funktioniert.
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------