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 

Buffer läuft voll



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!

03.05.2010, 14:53
Beitrag #1

B033el Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 105
Registriert seit: Mar 2009

2016
2009
DE

66***
Deutschland
Buffer läuft voll
Hallo,

Ich habe wieder ein Problem bei dem ich nicht weiter komme.
Ich nutze für die Datenerfassung einen Mikrocontroler der die serielle Schnittstelle mit meinem Rechner Verbunden ist.

Wenn ich die Erfassung starte Schickt mein µC immer 3 Byte pro Channel über die Serielle Schnittstelle.

Das erste Byte nutze ich immer um die Channelnummer zu prüfen. In den andern 2 Byte steht meine Information die ich brauche.

Im Klartext. im µC ist eine Schleife die mir immer nacheinander die Infos von 3 channels Schickt also immer 3 x 3 Byte pro Durchlauf.

Im die Daten mit LV einzulesen nutze ich eine Producer - Consumer - Struktur.

Das läuft anfangs noch recht gut. Nur irgendwann läuft mein Puffer voll (ich verliere Bytes) und meine Infos kommen durcheinander. Bzw gehen verloren.

Ich hab leider keine Ahnung warum am Anfang alles gut geht und dann später mein VISA read nicht mehr nachkommt.

ich hänge mal mein Programm an und hoffe mir kann jemand weiter helfen.

Anhang:

Wenn ich den String "S" Schicke fängt mein µC an zu senden mit "D" hört er auf.

ich hoffe ich hab mein Problem verständlich erklärt und hoffe mir kann in dieser Sache jemand weiter helfen.

MfG Michael

LV vers 8.5


Angehängte Datei(en)
Sonstige .vi  Seriel_read_Prod_Cons.vi (Größe: 140,99 KB / Downloads: 271)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.05.2010, 15:02
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Buffer läuft voll
Du schreibst alle Daten in die XY-Graphen, und wunderst dich, dass irgendwann dein Speicher überläuft? Das wird so nichts.

Du musst schon die Datenmenge in den Graphen begrenzen (Stichwort: Ringpuffer). Und je mehr Daten im XY-Graph sind, desto länger dauert ein Update desselben, und genau das dürfte dein Programm ausbremsen.

Wie wäre es außerdem, gleich alle 3 Kanäle in einem VISA-Read einzulesen. Oder wie schnell kommen die Daten? Was sind denn so die Loop-Times? Alles unter 10 ms fände ich sehr heftig und sehr prozessorbelastend.

Gruß, 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!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.05.2010, 15:08
Beitrag #3

B033el Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 105
Registriert seit: Mar 2009

2016
2009
DE

66***
Deutschland
Buffer läuft voll
Die Daten schicke mit mit 9600 bits / s .

Ich danke dir schon mal für deine schnelle Antwort und erkundige mich mal über diesen "Ringbuffer":).

Meinst du ich soll also mit einem VISA read gleich 9 Bytes einlesen und dann meine Infos daraus ziehen ?? geht das schneller als 3 x 3 zu lesen ?

Mfg Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.05.2010, 15:27 (Dieser Beitrag wurde zuletzt bearbeitet: 03.05.2010 15:39 von Lucki.)
Beitrag #4

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Buffer läuft voll
Die einfachste Art, zu einem Rinpuffer zu kommen, ist die Verwendung eines Signalverlaufsdiagramms - dort ist der Rinpuffer bereits eingebaut. (Historienlänge mir rechter Maustaste einstellbar).
Mit dem Signalverlaufsdiagramm lassen sich auch Signalveräufe mit nicht äquidistantem dt darstellen. Es ist allerdings etwas Tricksy, dehalb sei Dir hier verraten wie es geht:
   
Also einfach die Express-VIs hierdurch ersetzen:
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.05.2010, 15:33
Beitrag #5

B033el Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 105
Registriert seit: Mar 2009

2016
2009
DE

66***
Deutschland
Buffer läuft voll
Vielen dank wird direkt ausprobiertSmile

Mfg Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.05.2010, 15:57
Beitrag #6

B033el Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 105
Registriert seit: Mar 2009

2016
2009
DE

66***
Deutschland
Buffer läuft voll
ich hab das mal versucht. (nur mit 1 channel)

Also erstens lese ich jetzt erst mal 9 Bytes ein und zieh dann meine Infos daraus.

Im Moment ist jetzt das Problem, dass ich immer nur einen Datenpunkt angezeigt bekommen (den aktuellen) und den immer bei t=0.

Muss ich meine Daten in ein Array schreiben ?? wenn ja hab ich das Problem dass ich vorher ja garnicht weiß wie groß dieses dann sein muss also wieviele daten ich aufnehme.

MfG Michael


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
03.05.2010, 15:59
Beitrag #7

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Buffer läuft voll
' schrieb:Die Daten schicke mit mit 9600 bits / s .
Also grob 1000 Ascii-Zeichen / s. Bei 3 Zeichen, die du ausliest, also 3 ms pro Lesevorgang. Damit läuft deine Lese-Loop also mit grob 330 Hz, und da du jedes diese jeweils 3 bytes auch in deiner Consumer-Loop einzeln ausliest, läuft auch die mit 330 Hz. Und sooft schreibst du auch was in die Graphen, das finde ich schon heftig.
' schrieb:Meinst du ich soll also mit einem VISA read gleich 9 Bytes einlesen und dann meine Infos daraus ziehen ?? geht das schneller als 3 x 3 zu lesen ?
Insgesamt natürlich nicht, die Senderate kommt schließlich von deinem µC, aber deine Lese-Loop würde "nur noch" mit 100 Hz laufen. Besser.

Wenn du dann noch in deiner Consumer-Loop die Eigenschaft der Queue ausnutzt und nicht jedes Element einzeln ausliest, sondern durch geschickte Verzögerung z.B. immer 10 Datensätze, dann könntest du diese Schleife z.B. auf ca. 10 Hz drücken, das langt für das Update der Graphen völlig aus. Dann noch Charts, wenn du auf die Zeit-Info verzichten kannst (Bemerkung: Die kommt momentan sowieso nicht korrekt in deiner Consumer-Loop an, zwecks Race-Condition durch deine lokale Variable), und das ganze sollte schon besser laufen.

Gruß, 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!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.05.2010, 18:00 (Dieser Beitrag wurde zuletzt bearbeitet: 03.05.2010 19:09 von jg.)
Beitrag #8

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Buffer läuft voll
' schrieb:Im Moment ist jetzt das Problem, dass ich immer nur einen Datenpunkt angezeigt bekommen (den aktuellen) und den immer bei t=0.
Du mußt natürlich die Waveform Chart (das Signalverlaufsdiagramm) nehmen und nicht den Waveform Graph
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
  Serielle Schnittstelle: Unterschied zwischen FIFO-Buffer und VISA-Buffer Exle 4 7.085 23.01.2019 08:07
Letzter Beitrag: Ratio
  RS232 Buffer flush Jochen 7 9.813 06.08.2012 15:57
Letzter Beitrag: Soean
  Keithley 2000 Buffer füllen und auslesen Tobbel 2 6.292 13.04.2010 18:46
Letzter Beitrag: Tobbel
  Fehler beim write buffer Nati 5 6.200 18.06.2008 11:10
Letzter Beitrag: rolfk
  CAN-Buffer löschen jejo 1 3.795 19.04.2007 20:38
Letzter Beitrag: Y-P
  Lese-Buffer löschen LabView Neuling 1 8.779 23.12.2005 12:35
Letzter Beitrag: A.Berndsen

Gehe zu: