Hallo!
Habe die USB-6211-Messkarte im Einsatz. Zweck des Einsatzes ist eine Regelung.
Bei kleinen Anfangsversuchen habe ich bemerkt, dass ich mit einer einfachen Schleife zur Datenerfassung (Spannung einlesen)
nur eine sehr geringe Abtastrate erreichen kann (nicht einmal 50Hz).
Gibt es eine Möglichkeit mit dem Gerät auch mit sehr hoher Frequenz abzutasten? Evtl. sogar mehrmals pro Sekunde oder ist
dazu dann etwas echtzeitfähiges notwendig?
Falls es mit meiner Messkarte nicht möglich ist, wäre es super wenn vielleicht für erweitertes Verständnis auch noch der Grund dafür
genannt werden könnte!
Danke schon vorab!
Hallo lvanf,
also
NI sagt was von 250kS/s - reicht dir das nicht?
Zitat:einfachen Schleife zur Datenerfassung
Hier dürfte das Problem liegen, alles weitere ist aber
- deshalb einfach mal dein VI hochladen oder das BD zeigen...
:lol:250kS/s wären mehr als genug!
So wie ich das ganze aber verstehe, kann ich diese Rate nur erreichen, wenn ich mehrere Samples aufnehme und diese dann auf einen Schwung übertrage!
Stimmt das?
Was ich möchte oder benötige ist:
Einen Wert messen, anhand von diesem Wert den nächsten Stellwert berechnen und diesen dann auch ausgeben.
Dann wird wieder die aktuell anliegende Spannung gemessen, usw....
Das bedeutet ich benötige einen Messwert pro Schleifendurchlauf, mit dem ich das ganze auf dem Sollwert halten möchte.
Hallo lvanf,
wenn du wirklich schnellstmöglich regeln willst, könntest du über diesen Ansatz nachdenken:
- 2 unabhängige Schleifen für Ein- und Ausgabe
- Eingabeschleife liest im Dauerbetrieb ein (z.B. 100 Samples/Read bei 10kHz Samplerate) und legt die Werte in einer FGV ab
- Ausgabeschleife holt sich im benötigten Takt die Daten aus der FGV und generiert einen neuen Ausgabewert
Manchmal hilft es, nicht nur stur geradeaus zu denken
Vielen Dank schonmal!
Das hört sich nicht schlecht an - kann es jedoch nicht ausprobieren, da ich die Messkarte im Moment nicht hier habe
Wie funktioniert das mit der FGV?
Ergibt sich daraus dann ein Datenstrom und die Daten werden FIFO entnommen - d.h. es kommt wahrscheinlich nur noch darauf an, wie schnell ich mit der zweiten Schleife die Messdaten wieder entnehmen und verrechnen kann?
Warum funktioniert denn meine Lösung nicht? Ist das durch das "Framework" bedingt, variiert die mögliche Abtastrate je nach verwendetem PC?
Ich möchte mich für die vielen Fragen entschuldigen, es ist mein erster Kontakt mit Labview...
Hallo lvanf,
Zitat:Warum funktioniert denn meine Lösung nicht?
Wenn du die mal zeigen würdest, müsste man nicht raten... (Rateversuch: du liest nur einzelne Samples und nutzt womöglich ExpressVIs.)
Zitat:Wie funktioniert das mit der FGV?
FunctionalGlobalVariable: einfach mal hier im Forum suchen und lesen.
FGV ersetzen erstmal nur "normale" globale Variablen. Welche Funktionalität du dann noch hinzufügst (siehe "
Functional"), bleibt dir überlassen!
Die von GerdW vorgechlagene Lösung mit FGV hat man Schwierigkeiten mit der Synchronisation der Schleifen. D.h die Ausgabescheife weiß nicht, ob sich in der FGV beim näch nächsten Durchlauf noch der alte, schon einmal benutzte Wert befindet.
Ich habe mal diese Lösung für eine Regelung mit dem (nicht echtzeitfähigen Windows) gesehen, die mir gut gefiel: In der Ausgabeschleife werden pro Durchlauf alle im Empfangspuffer befindlichen Werte mit DAQmxRead direkt gelesen (ich setze hier kontinuierliche Datenerfassung voraus) . In der Regel sollte das ein Wert sein. Ist noch kein Wert drin, dann wartet DAQmxRead, bis ein Wert eingetroffen ist - die Schleife synchronisiert sich also von selbt mit der Datenerfassung.
Nun kann es aber passieren, daß Windows sich ab und zu mit sich selbst beschäftigt. In diesem Fall kommt es vor, daß sich, wenn die Ausgabeschleife schließlich wieder behandelt wird, zwei oder mehr Werte im Empfangspuffer angesammelt haben. Was tun? Die Lösung ist: nur den aktuellsten Wert verwenden, aber - wenn es z.B zwei Werte waren - im Differentiator und Integrator des Reglers nicht dt, sondern 2*dt verwenden. Das ist natürlich nicht so ideal wie ein Echtzeit-System, aber immerhin werden damit grobe Fehler des Reglers vermieden.