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 

Konstante Messfrequenz



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!

19.04.2011, 10:21 (Dieser Beitrag wurde zuletzt bearbeitet: 19.04.2011 10:24 von Meinhart_E.Steil.)
Beitrag #1

Meinhart_E.Steil Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jan 2011

8.6.1
2010
de


Deutschland
Konstante Messfrequenz
Hallo Gemeinde!

Ich habe eine Erzeuger-Verbraucher-Struktur, wobei mehrere Erzeuger mir kontinuierlich Daten erzeugen, die ich in der Verbraucherstruktur mit einer Frequenz aufzeichne und anschließend als Messfile abspeichern möchte.

Das Problem welches dabei auftritt: Meine Verbraucherschleife nimmt mit zunehmender Datenmenge eine geringere Frequenz an.
Wie kann ich dieses Problem umgehen? Sollte ich die Daten zwischenspeichern? Wenn ja, wie geht das, ohne dass ich die die aktuelle Messung beeinflusse.

Liegt das am Speicher der vollläuft? Falls ja, könnte man auch die Speichergröße vorher festlegen und so das Problem umgehen?

VG Marcel

Lv86_img
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
19.04.2011, 10:45
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Konstante Messfrequenz
(19.04.2011 10:21 )Meinhart_E.Steil schrieb:  Liegt das am Speicher der vollläuft?
Damit hast du sehr wahrscheinlich den Nagel auf den Kopf getroffen.

Genaue Empfehlungen sind aber schwierig, da ich die Struktur deines Programmes nicht kenne. Aber es ist generell tödlich, bei langen Messungen alle Daten im RAM des Computers zu halten.

Übliche Lösungen beinhalten das Abspeichern der Daten und die Verwendung eines Ringpuffers.

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
21.04.2011, 08:38
Beitrag #3

Meinhart_E.Steil Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jan 2011

8.6.1
2010
de


Deutschland
RE: Konstante Messfrequenz
(19.04.2011 10:45 )jg schrieb:  Genaue Empfehlungen sind aber schwierig, da ich die Struktur deines Programmes nicht kenne. Aber es ist generell tödlich, bei langen Messungen alle Daten im RAM des Computers zu halten.

Übliche Lösungen beinhalten das Abspeichern der Daten und die Verwendung eines Ringpuffers.

Gruß, Jens

Danke für die Antwort. Ein Beispiel kann ich gerade nicht geben, da ich im Urlaub verweile. Smile

Ich benutze als Verbraucher eine While-Schleife in der lokale Variablen die Daten aus den Erzeugerschleifen liefern und sammle die Daten dort bis die Messung durch ein Ereignis beendet wird. Für mich stellt sich jetzt die Frage, wie kann ich während der Messung die Daten aus der Schleife in einer Datei sammeln und somit die While-Schleife leeren. Mit dem Ringpuffer kann ich da nicht wirklich etwas anfangen?!

Hier im Forum habe ich beim stöbern auch nicht ähnliches gefunden oder es auch einfach nicht verstanden.

VG Marcel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.04.2011, 07:24
Beitrag #4

Der_Elch Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 93
Registriert seit: Jan 2010

2014
2009
DE

4xxx
Oesterreich
RE: Konstante Messfrequenz
(21.04.2011 08:38 )Meinhart_E.Steil schrieb:  Danke für die Antwort. Ein Beispiel kann ich gerade nicht geben, da ich im Urlaub verweile. Smile

Ich benutze als Verbraucher eine While-Schleife in der lokale Variablen die Daten aus den Erzeugerschleifen liefern und sammle die Daten dort bis die Messung durch ein Ereignis beendet wird. Für mich stellt sich jetzt die Frage, wie kann ich während der Messung die Daten aus der Schleife in einer Datei sammeln und somit die While-Schleife leeren. Mit dem Ringpuffer kann ich da nicht wirklich etwas anfangen?!

Hier im Forum habe ich beim stöbern auch nicht ähnliches gefunden oder es auch einfach nicht verstanden.

VG Marcel

Habe ich das richtig verstanden? Du schreibst in der Erzeuger die Daten holst sie im Verbrauch wieder über eine Lokale Variable wieder raus? Das schreit ja schon nach Queues Smile
Danach kannst du die Daten im Verbraucher mittels Schieberegister speichern.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.05.2011, 13:59
Beitrag #5

Meinhart_E.Steil Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jan 2011

8.6.1
2010
de


Deutschland
RE: Konstante Messfrequenz
(22.04.2011 07:24 )Der_Elch schrieb:  Habe ich das richtig verstanden? Du schreibst in der Erzeuger die Daten holst sie im Verbrauch wieder über eine Lokale Variable wieder raus? Das schreit ja schon nach Queues Smile
Danach kannst du die Daten im Verbraucher mittels Schieberegister speichern.

Mein Problem ist, dass ich mit den Daten des Erzeugers/Verbrauchers eine Maschine in "Echtzeit" regeln muss. Ich bewege einen Tisch und messe gleichzeitig die auftretenden Kräfte sowie noch mehrere andere elektrische Komponenten. Die gemessenenen Kräfte schalten die Maschine z. B. bei Überlastung ab.
Ich benutze mehrere Erzeugerschleifen (geht nich anders, da sonst die Buffer einiger Geräte volllaufen würde), die alle mit an sich gleichen aber doch leicht unterschiedlichen Frequenzen laufen. Wenn ich die in eine Queue eingebe, crasht meine Maschine früher oder später, da die Verarbeitung einfach irgendwann zeitverzögert stattfindet. Und die Verbraucherstruktur müsste schneller laufen als dier Erzeugerstruktur und die einlaufende Anzahl an Elementen gleichgroß sein, was die Queue in dem Falle sinnfrei machen würde. Mir kommt es letztendlich nicht auf ein paar verloren Datenpunkte an.

Habe das obengenannte Problem durch permanentes Schreiben der Daten in eine Datei aus dem Verbraucher gelöst. Das senkt natürlich meine Messfrequenz und erhöht damit meinen Datenverlust.

Bin für weitere theoretische Erörterungen stets offen. Smile

Viele Grüße
Marcel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.05.2011, 10:43 (Dieser Beitrag wurde zuletzt bearbeitet: 15.05.2011 12:23 von Lucki.)
Beitrag #6

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Konstante Messfrequenz
Meinhart_E.Steil schrieb:  Das Problem welches dabei auftritt: Meine Verbraucherschleife nimmt mit zunehmender Datenmenge eine geringere Frequenz an.
Das hat aber nichts mit der größeren Datenmenge an sich zu tun, sondern mit der Art, wie die größeren Datenmengen oftmals - um nicht zu sagen bei Anfängern immer - gesammelt werden.
Die Verlangsamung tritt ein, wenn die neuen Daten jedesmal als neue Elemente an das bestehende Datenarray angehängt wird, so daß sich das Datenarray jedesmal vergrößert. Das ist jedesmal mit einer aufwändigen Reorganisation des Datenspeichers verbunden.
Die Lösung ist: Ein hinreichend großes Array, z.B mit NaN-Werten, vordefinieren und dann die Elemente ersetzen. Beim Abpeichern dann die noch nicht ersetzten Werte löschen.
Oder ab Ver. 9 noch einfacher: Statt while-Schleife for-Schleife mit Bedingungsanschluß verwenden. An die For-Schleife eine genügend große Konstante an N anschließen, Sammeln der Daten mit dem Index-Ausgang. Abbruch immer wann man will wie bei der While-Schleife mit dem Bedingungsanschluß

Zur Frage Pufferüberlauf/Verlangsamung der Erzeugung:
Das schließt sich normalerweise gegenseitig aus.
Entweder: Die Daten werden unabhängig vom PC erzeugt, kommen also von einer Messkarte mit eigenem Timer, einem µC-System oder einem externem Gerät - Dann droht die Gefahr eines Puffer-Überlaufes bei nicht genügend schneller Verarbeitung. Die Datenrate bleibt aber aufrechterhalten.
Oder: Die Daten werden softwaremäßig vom PC getriggert oder erzeugt. Dann kann die Datenrate bei nicht genügend schneller Verarbeitung verlangsamt werden, man hat aber dann wahrscheinlich keinen Puffer-Überlauf.
Welche Art der Datenerzeugung bei Dir vorliegt - darüber häslt Du dich leider bedeckt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
15.05.2011, 12:34
Beitrag #7

Meinhart_E.Steil Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jan 2011

8.6.1
2010
de


Deutschland
RE: Konstante Messfrequenz
(15.05.2011 10:43 )Lucki schrieb:  Das hat aber nichts mit der größeren Datenmenge an sich zu tun, sondern mit der Art, wie die größeren Datenmengen oftmals - um nicht zu sagen bei Anfängern immer - gesammelt werden.
Die Verlangsamung tritt ein, wenn die neuen Daten jedesmal als neue Elemente an das bestehende Datenarray angehängt wird, so daß sich das Datenarray jedesmal vergrößert. Das ist jedesmal mit einer aufwändigen Reorganisation des Datenspeichers verbunden.
Die Lösung ist: Ein hinreichend großes Array, z.B mit NaN-Werten, vordefinieren und dann die Elemente ersetzen. Beim Abpeichern dann die noch nicht ersetzten Werte löschen.
Oder ab Ver. 9 noch einfacher: Statt while-Schleife for-Schleife mit Bedingungsanschluß verwenden. An die For-Schleife eine genügend große Konstante an N anschließen, Sammeln der Daten mit dem Index-Ausgang. Abbruch immer wann man will wie bei der While-Schleife mit dem Bedingungsanschluß

Idea Gute Idee, ich weiß zwar momentan noch nicht wie lange meine Versuche laufen, ich muss aber letztendlich immer die Frequenz und die Zeitdauer des Versuches parametrisieren und daraus lässt sich ja bequem nen ausreichend dimensioniertes Array vorab erstellen.

(15.05.2011 10:43 )Lucki schrieb:  Zur Frage Pufferüberlauf/Verlangsamung der Erzeugung:
Das schließt sich normalerweise gegenseitig aus.
Entweder: Die Daten werden unabhängig vom PC erzeugt, kommen also von einer Messkarte mit eigenem Timer, einem µC-System oder einem externem Gerät - Dann droht die Gefahr eines Puffer-Überlaufes bei nicht genügend schneller Verarbeitung. Die Datenrate bleibt aber aufrechterhalten.
Oder: Die Daten werden softwaremäßig vom PC getriggert oder erzeugt. Dann kann die Datenrate bei nicht genügend schneller Verarbeitung verlangsamt werden, man hat aber dann wahrscheinlich keinen Puffer-Überlauf.
Welche Art der Datenerzeugung bei Dir vorliegt - darüber hält Du dich leider bedeckt.

Hm, momentan laufen im PC aus drei Kraftmessverstärkern Daten über drei RS232 Schnittstellen ein. Ich habe generell zwei Möglichkeiten die Daten dort auszulesen: Der Kraftmessverstärker liefert mir auf Anfrage den letzten erfassten Wert (was aus irgendeinem Grund aber nicht funktioniert) oder es werden alle Werte (momentaner Zustand) per vi erfasst.

Wenn ich jetzt alle Daten in einer Schleife sammle, sammeln sich halt unterschiedlich große Datenmengen an.

VG Marcel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Messfrequenz erhöhen DeMasch 2 4.670 07.05.2011 14:52
Letzter Beitrag: DeMasch
  Counter mit definierter Periode / Messfrequenz abfragen Robka 6 7.545 19.05.2010 11:46
Letzter Beitrag: Robka
  Messfrequenz wird nicht übernommen Der_Elch 3 4.104 02.02.2010 14:44
Letzter Beitrag: Der_Elch

Gehe zu: