Buffer überlauf durch NI 9263 - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ) +---- Thema: Buffer überlauf durch NI 9263 (/Thread-Buffer-ueberlauf-durch-NI-9263) |
Buffer überlauf durch NI 9263 - Golan - 13.03.2012 10:55 Hallo, ich hab mal wieder ein Problem mit meinem zu verarbeiteten Samples. Ich gebe eine Spannung (0-10V) mittels cDAQ und der NI 9263 Messkarte an einen Frequenzumricht aus und messe von diesem FU zwei Spannungen mit der NI 9201 (welche proportional zum Ausgangsstrom bzw. Frequenz zum Motor ist). Solang ich das Programm mit Simulierten Messkarten starte gibt es keine Probleme, wenn ich jedoch per cDAQ die Werte ausgebe, gibt es nach ein paar Sekunden einen Bufferüberlauf an der Spannungs-Input-Messkarte. Dies geschieht nur wenn das Output-Signal auch per cDAQ ausgegeben wird, mit einer simulierten Karte passiert dieser Fehler nicht. Ich bin ein bischen Ratlos wieso es Simuliert geht aber sobald ich über den cDAQ das Programm starte nicht (ich weiss Simulation ist nicht Wirklichkeit aber mir fällt einfach keine Lösung ein). Die NI 9263 Messkarte sollte ansich 2 kHz Abtastrate können da 100 kS/s möglich sein sollten. Anbei Screen (ich hab das obere VI "Virtuellen Kanal erstellen" schon geändert in AO) und Programm. Grüße Christian RE: Buffer überlauf durch NI 9263 - GerdW - 13.03.2012 11:09 Hallo Golan, wenn sich die Geschwindigkeiten von AO und AI (stark) unterscheiden, würde ich es mit 2 parallelen Schleifen probieren... RE: Buffer überlauf durch NI 9263 - Lucki - 13.03.2012 11:39 In den Puffer gelangen 2k Samples/s. Und dann liest Du jede Sample einzeln aus und updatest die Anzeige auf dem FP mit der Frequenz von 2000 Hz. D.h. es wird versucht, das ist aber nicht zu schaffen. Erhöhe also die Samplezahl pro Lesevorgang auf z.B 200, dann läuft es normal. RE: Buffer überlauf durch NI 9263 - Golan - 13.03.2012 12:06 Damit wird aber die Schleife langsamer (glaub dass dürften dann 1 Schleifendurchlauf in 100 ms sein) und ich muss eine Abtastrate von mindestens 800 Hz gewährleisten. RE: Buffer überlauf durch NI 9263 - Achim - 13.03.2012 12:33 (13.03.2012 12:06 )Golan schrieb: Damit wird aber die Schleife langsamer ... und ich muss eine Abtastrate von mindestens 800 Hz gewährleisten. Was in aller Welt hat die Schleifendurchlaufzeit mit der Abtastrate zu tun? Die AI-Rate hast du ja sowieso auf kontinuierliche 2k gestellt... Wie ändert sich denn die AO-Spannung? Muss die kontinuierlich neu geschrieben werden? A. RE: Buffer überlauf durch NI 9263 - Golan - 13.03.2012 12:41 Später soll eine Kennlinie ausgegeben werden d.h. nach 10 Sekunden 5V diese 5 Sekunden halten in 2 Sekunden auf 6 Volt steigen usw. Ich dachte, indem ich eine feste Schleifendurchlaufzeit (wie bei 2000 Hz eine Zeit von 0,5 ms) nehme kann ich die Zeit angeben wann ich was ausgebe. Die Kennlinie sieht auch so aus, dass angegeben wird zu welchen Zeitpunkten welche Spannung vorhanden sein soll. In einem kleinen Sub-VI, dass vor der Schleife ausgeführt wird, werden diese kleine Anzahl von Punkten (vielleicht 10-20) auf das 1000-fache Vergrößert um die Steigung genauer hinzubekommen. Dies mache ich derzeit, indem ich die es über die Taktrate berechne. RE: Buffer überlauf durch NI 9263 - Achim - 13.03.2012 13:04 (13.03.2012 12:41 )Golan schrieb: Ich dachte, indem ich eine feste Schleifendurchlaufzeit (wie bei 2000 Hz eine Zeit von 0,5 ms) nehme kann ich die Zeit angeben wann ich was ausgebe. Hm...ich würde sagen..."falsch gedacht"...du siehst ja, das es so nicht so doll funzt! Der richtige Ansatz wäre... ...(eventuell) die Schleifen zu trennen, damit das Einlesen kontinuierlich läuft, und zwar so schnell wie nötig, damit bei der gewählten Abtastrate kein Pufferüberlauf auftritt ...die Ausgabe mit einem Timer ("Aktuelle Zeit - Startzeit = Verstrichene Zeit"...da gibt's sogar ein Express-VI dafür) zu versehen, der z.B. ein Array von Zeiten abarbeitet. Wenn Zeit n abgelaufen ist, wird der Timer neu initialisiert und die Zeit n + 1 abgearbeitet! Das ganze wird beendet, wenn keine Schritte mehr im Array sind, und dann wird auch das Einlesen beendet. A. |