LabVIEWForum.de
"Ringbuffer overflow" bei Synchronisation von analog und digital Signal - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: "Ringbuffer overflow" bei Synchronisation von analog und digital Signal (/Thread-Ringbuffer-overflow-bei-Synchronisation-von-analog-und-digital-Signal)

Seiten: 1 2


"Ringbuffer overflow" bei Synchronisation von analog und digital Signal - MNLF - 12.01.2014 12:44

Hallo LabVIEWForum,

seit kurzem beschäftige ich mich mit Labview (was anfänglich auch relativ gut funktioniert hat), doch nun bin ich an einem Punkt wo ich nicht wirklich weiter komme.

Kurz zu meinem Vorhaben:

Ich möchte mittels eines Laser-Sensors der Firma Micro-Epsilon, Typ optoNCDT 1402 die Veränderung eines Abstandes messen. Der Laser-Sensor ist über einen USB to RS-422 CONVERTER mit dem PC verbunden. Die Implementierung des Sensors in Labview erfolgt mittels eines von Micro-Epsilon zur Verfügung gestellten VI's.
Gleichzeitig möchte ich mit dem Thermoelement-Eingangsmodul NI 9213, welches ich in dem Chassis cDAQ-9171 betreibe eine Temperatur messen.
Bei der Messungen ist es für mich wichtig das Abstands- und Temperaturmessung synchron laufen. Realisiert habe ich dies mittels einer "Zeitgesteuerten Schleife". Einen Sceenshot vom VI habe ich angehängt (Bild: VI).

Bis jetzt genügte es den Abstand mit 50 S/s und die Temperatur mit 5 S/s zu messen. Jetzt würde ich aber gerne den Abstand mit 1000 S/s und die Temperatur mit 100 S/s messen, was auch direkt zu meinem Problem führt. Während der Messung bekomme ich die Fehlermeldung: "Ringbuffer overflow". Ich habe einen Sceenshot hierzu angehängt (Bild: Fehlermeldung).

Woran liegt dies?
Ist es nicht richtig dies mit einer "Zeitgesteuerten Schleife" zu realisieren?

Habe hier im Forum bei ähnlichen Problemen gelesen, dass so etwas mittels Occurences oder Rendezvous gelöst werden kann.
Mittels Occurences und Rendezvous habe ich es ausprobiert, jedoch ohne Erfolg.

Des Weiteren habe ich des häufigeren gelesen, dass es unpraktisch ist, bzw. das es zu Problemen führen kann, so etwas wie den von mir benutzten DAQ-Assistent zu verwenden. Kann dies bei mir ein Problem sein?

Weiß nicht wie ich weiter vorgehen soll...wäre super dankbar wenn Ihr mir weiterhelfen könnt.


RE: "Ringbuffer overflow" bei Synchronisation von analog und digital Signal - jg - 12.01.2014 21:20

Der Fehler kommt ja aus der Kommunikation zu deinem Laser-Sensor. Ist es überhaupt möglich, über die RS485 hier 1000 Werte/s zu übertragen? Hast du das schon alleine getestet? Was sagt das Handbuch dazu?

Gruß, Jens


RE: "Ringbuffer overflow" bei Synchronisation von analog und digital Signal - MNLF - 13.01.2014 10:54

Die Übertragung von 1000 S/s ist möglich, das funktioniert auch. Sobald ich versuche Abstands- und Temperaturmessung zu synchronisieren tritt dieser Fehler auf. Darum denke ich, das Problem steckt in der Synchronisation, da mache ich irgendetwas falsch.
Wenn ich den Laser-Sensor und die Temperaturmessung jeweils in einer While-Schleife laufen lasse (siehe Bild) funktioniert es einwandfrei.

Jetzt ist nur das Problem wie bekomme ich die beiden Messungen synchron?

An dieser Stelle war mein Ansatz eine "Zeitgesteuerte Schleife" zu verwenden, was aber zu dem Problem des Ringbuffer overflows führt.

Gibt es andere Möglichkeiten zu synchronisieren?


RE: "Ringbuffer overflow" bei Synchronisation von analog und digital Signal - jg - 13.01.2014 11:06

Die Screenshots vom Blockdiagramm helfen leider nicht sonderlich bei der Fehlersuche.

Untersuche mal:
1) Durchlaufzeiten der Schleifen, wenn du sie parallel programmierst. (s. http://www.labviewforum.de/Thread-Schleifengeschwindigkeit-in-sekunden-messen?pid=161256#pid161256 )
2) Wie viele Element enthält das "Micro-Epsilon"-Array?
3) Welche Einstellungen hast du im DAQ-Assi vorgenommen?

Gruß, Jens


RE: "Ringbuffer overflow" bei Synchronisation von analog und digital Signal - MNLF - 13.01.2014 14:36

Erstmal danke für deine Mühe.

Habe das VI mal angehängt.
Hoffe das es geöffnet werden kann, da es auf eine Bibliothek zugreift.
Desweiteren habe ich einen Screenshot vom DAQ-Assistent angehängt.

Bei der Untersuchung der Durchlaufzeiten der Schleifen sehe ich, wenn ich es richtig gemacht habe, dass diese stark schwanken.


Vielen Dank

Manuel


RE: "Ringbuffer overflow" bei Synchronisation von analog und digital Signal - jg - 13.01.2014 15:09

(13.01.2014 11:06 )jg schrieb:  2) Wie viele Element enthält das "Micro-Epsilon"-Array?
Und??
(13.01.2014 14:36 )MNLF schrieb:  Habe das VI mal angehängt.
Hoffe das es geöffnet werden kann, da es auf eine Bibliothek zugreift.
Ja, aber hilft nicht viel weiter, da wohl die allerwenigsten deine ME-SubVIs installiert haben. Wo kann man da Scanrate und Anzahl der Werte pro Abfragezyklus einstellen?
(13.01.2014 14:36 )MNLF schrieb:  Bei der Untersuchung der Durchlaufzeiten der Schleifen sehe ich, wenn ich es richtig gemacht habe, dass diese stark schwanken.
Und, wie sind die Ergebnisse konkret, also in Zahlen bzw. Zeiten? Besteht ein Zusammenhang zur Anzahl der zurückgemeldeten Werte?

Gruß, Jens


RE: "Ringbuffer overflow" bei Synchronisation von analog und digital Signal - MNLF - 14.01.2014 14:34

- das Micro-Epsilon Array enthält 50 Elemente

Durchlaufzeiten der Schleifen:

- Temperaturmessung: 1000ms +/- 4ms
- Abstandsmessung: es ist bei den Werten zu sehen, dass diese stark um 50ms schwanken --> 50ms +/- 40ms


Zu deiner Frage: Wo kann man da Scanrate und Anzahl der Werte pro Abfragezyklus einstellen?

Bis dato habe ich dies entweder über teach-in am Sensor oder über ein separates Programm von Micro-Epsilon gemacht.
So wie ich das in einem der Sub-VI's sehe, werden 50 Werte pro Abfragezyklus abgefragt.
Sehe ich das richtig das dies zu den Elementen des Arrays passt?


RE: "Ringbuffer overflow" bei Synchronisation von analog und digital Signal - jg - 14.01.2014 14:58

Aha, jetzt wird einiges klar, fassen wir zusammen:

Das Mikro-Epsilon-Read VI gibt dir immer 50 Werte zurück.

Wenn du also per externer Software oder am Laser-Sensor selbst eine Erfassungsrate von 1 kHz einstellst, muss das VI im Schnitt 20x pro Sekunde laufen, um nachzukommen. Dass dabei die Durchlaufzeit pro Abfrage ziemlich stark schwankt, wundert mich zwecks RS-485 Anbindung nicht sonderlich.

In deinem ersten VI hast du bei der zeitgesteuerten Schleife aber eine Durchlaufzeit von 1s eingetragen, kein Wunder also, dass du irgendwann einen Buffer-Overflow vom Sensor erhälst, schließlich fragst du nur 50 anstatt 1000 Werte ab.

Gruß, Jens


RE: "Ringbuffer overflow" bei Synchronisation von analog und digital Signal - MNLF - 14.01.2014 16:58

Achso, du hast recht:

Habe gerade ausprobiert, nur den Sensor in der zeitgesteuerten Schleife laufen zu lassen:

- wie vorher mit 1s gleiche Fehlermeldung wie mit der Temperaturmessung
- dt auf 20ms eingestellt: !!!keine Fehlermeldung!!!

Vielen Dank erstmal bis hierhin!


Jetzt die Frage: Wie binde ich jetzt die Temperaturmessung wieder mit ein?

Gehe ich her und setze im DAQ-Assistent:

zu lesende Werte: 5
Rate (Hz) : 5

oder was macht da sinn?


Viele Grüße

Manuel


RE: "Ringbuffer overflow" bei Synchronisation von analog und digital Signal - jg - 14.01.2014 17:42

(14.01.2014 16:58 )MNLF schrieb:  Gehe ich her und setze im DAQ-Assistent:

zu lesende Werte: 5
Rate (Hz) : 5
Überleg mal, wie lange dauert es, bei 5 Hz Erfassungrate 5 Werte auszulesen?

Gruß, Jens