INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Datenaufnahme über RS422 ruckelt



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!

12.11.2009, 11:35
Beitrag #1

frankne Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Nov 2009

2009
-
de

1069
Deutschland
Datenaufnahme über RS422 ruckelt
Hallo,

ich habe mir dieses kleine Programm zum Testen meines Sensors gebaut.
   

Der Sensor:
hat eine Baudrate von 115200
jeder Messwert hat in ASCII eine Breite von 6bytes
Die Messrate kann sein: 350Hz 700Hz 1000Hz...

Wenn ich den Sensor auf 350Hz einstelle, dann werden die Daten in "Waveform Chart" kontinuierlich dargestellt.
Erhöhe ich jedoch die Rate auf 700Hz oder mehr ruckelt die Darstellung.

Wie kommt das? Reicht die Baudrate nicht aus?

Viele Grüße
Frank
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
12.11.2009, 11:51
Beitrag #2

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.696
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Datenaufnahme über RS422 ruckelt
' schrieb:Erhöhe ich jedoch die Rate auf 700Hz oder mehr ruckelt die Darstellung.
Das ist auch richtig so.
700Hz ist schneller als 2ms. Will sagen, die Anzeige am Bildschirm wird in kürzeren Zeitabständen als 2ms refresht. So schnell kann keiner kucken. Der Graph braucht eine bestimmte Zeit, um "Bilder" am FP anzuzeigen. Diese Zeit vergeht aber im Hintergrund und ohne den Datenfluß anzuhalten (was auch sinnvoll ist)! Kommen jetzt zu schnell neue Daten, kommt der Graph nicht mehr mit Refresh nach - und es ruckelt.

Zitat:Reicht die Baudrate nicht aus?
Dieser Effekt ist von der Baudrate ansich unabhängig.

Du solltest dir Gedanken machen, den Graph z.B. nur alle 100ms zu refreshen.

Außerdem:
Du verwendest ein Array-Element mit der Funktion "An Array anhängen" in einer Whileschleife. Dieses Verfahren ist sehr speicherintensiv und kann ebenfalls zu Laufzeitproblemen führen. Möglicherweise kannst du das durch ein ausreichend langes, initialisiertes Array und der Funktion "In Array ersetzen" ersetzen.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.11.2009, 15:19
Beitrag #3

frankne Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Nov 2009

2009
-
de

1069
Deutschland
Datenaufnahme über RS422 ruckelt
Hallo,

ich glaub ich habe das mit dem Ruckeln ziemlich ungenau beschrieben:
bei 700Hz läuft der Graph anfangs schön durch, dann bleibt er dann für ne halbe Sek stehen und dies wiederholt sich ständig.

Ich denke nich, dass das nur an dem Graphen liegt, denn in einem anderen Programm, welches nur die Daten mit Zeit speichert habe ich den selben Effekt. Es kommen ca 10 Messwerte, dann mehrmals Timeout und dann wieder 10 Messwerte.

VG Frank
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.11.2009, 15:59
Beitrag #4

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.696
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Datenaufnahme über RS422 ruckelt
' schrieb:bei 700Hz läuft der Graph anfangs schön durch, dann bleibt er dann für ne halbe Sek stehen und dies wiederholt sich ständig.
Bezüglich des Graphen gilt noch immer, was ich oben gesagt habe.

Zitat:Ich denke nich, dass das nur an dem Graphen liegt
Richtig. Es liegt nicht nur am Graphen.

Zitat:denn in einem anderen Programm, welches nur die Daten mit Zeit speichert habe ich den selben Effekt.
Auch LV?


Du musst auch folgendes beachten: Die Daten müssen schnell genug aus der Schnittstelle ausgelesen werden!
Normalerweise hat die Schnittstelle einen internen Puffer (dessen Größe man angeben kann). Der Puffer ist notwendig, um Zeitungenauigkeiten zwischen VISA-Treiber und empfangendem Programm auszugleichen. Nichtsdestoweniger muss das empfangende Programm (also z.B. deine obige Schleife) in der Lage sein, den Puffer schneller auszulesen als er beschrieben wird. Ansonsten läuft er nämlich über und es gehen Daten verloren. Möglicherweise musst du dein Programm also umbauen.

Der Umbau läuft darauf hinaus, den Puffer nach LV (also in dein Programm) zu verlagern und somit beliebig zu vergrößern. Eine (parallele) While-Schleife könnte so schnell sie kann, den VISA-Rd-Puffer auslesen und die Daten in eine Queue (das ist dann der eigene, beliebig große Puffer) schreiben und damit zwischenpuffern.

Das bisherige Programm ließt nun diese Queue aus - und kann sich damit beliebig Zeit lassen.

Kannst du mir soweit folgen?

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Datenaufnahme startet zu spät VS_03 4 7.020 20.05.2016 07:44
Letzter Beitrag: rolfk
  Kontinuierliche Datenaufnahme bei einer PCI-6221 Karte skfink 9 9.905 29.09.2008 12:53
Letzter Beitrag: skfink

Gehe zu: