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 

Speicher 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.02.2011, 09:02 (Dieser Beitrag wurde zuletzt bearbeitet: 03.02.2011 09:07 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
Speicher läuft voll
Liebe Gemeinde!

Wie ihr im Anhang ersehen könnt, plotte ich mir Graphen in zwei Diagramme. Hierbei ist die Anzahl der Graphen sowie die Anzahl der Messpunkte zufällig gewählt. So wie es bei einer realen Messreihe sein könnte. Vorallem auf die Anzahl der Messpunkte je Messung habe ich keinen Einfluss.

Dabei plottet mir das eine Diagramm XY-Graphen, während die Messreihe noch läuft (Das macht z. B. Sinn, wenn meine Messungen 10h laufen und ich die angefallenen Graphen währenddessen vergleichen will (auch farblich)). Und das andere Diagramm gibt mir alle Graphen am Ende der Messreihe wieder (was ich eigentlich nicht möchteSmile).

Zum Problem: Das Ganze ist nicht elegant programmiert. Das kann man daran erkennen, dass, wenn ich die Anzahl der Messungen und Messpunkte signifikant erhöhe, mir der Speicher vollläuft. Wie kann ich geschickt die Graphen in "ein" Array platzieren?

Lv10

Bitte könnt Ihr Lösungsvorschläge inlv86senden (an der Uni haben wir nur 8.6)

LG Marcel

Edit: Sorry, wenn das hier thematisch nicht ganz passt.


Angehängte Datei(en) Thumbnail(s)
   

Sonstige .vi  Speicher_l_uft_voll.vi (Größe: 112,48 KB / Downloads: 225)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.02.2011, 10:56
Beitrag #2

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Speicher läuft voll
Das Volllaufen des Speichers ist im XY-Express-Graph von NI schlichtweg so vorprogrammiert. Der XY-Express-Graph funktioniert ja wie das Signalverlaufsdiagramm. d.h. er vergißt die alten Werte nicht, wenn man neue Punkte hinzufügt. Während aber aber beim SV-Diag. ein Ringpuffer mit einstellbarer Historienlänge zuständig ist und damit der Speicher in der Länge begrenzt ist, fehlt so etwas beim Express-Graph. Wenn man den nicht ab und zu rücksetzt, wird es bei genügend langem kontinuierlichem Betrieb immer zum Pufferüberlauf kommen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.02.2011, 11:39 (Dieser Beitrag wurde zuletzt bearbeitet: 03.02.2011 11:40 von Meinhart_E.Steil.)
Beitrag #3

Meinhart_E.Steil Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jan 2011

8.6.1
2010
de


Deutschland
Speicher läuft voll
Hallo Lucki!

Das ist ja richtig, sehe ich auch vollkommen ein. Ich glaube aber nicht, dass dies hier das Problem ist. Das Problem ist eher was an den XY-Express-Graph übergeben wird.

Also wenn ich 1000 Messungen mit 1000 x und y Werten generiere, habe ich, wenn ich mein Programm richtig verstehe, 1000 Arrays mit 1000 Spalten x 1000 Werten (und in einer einzigen Spalte steht was anderes drin als nullSmile). Klar geht da der Speicher in die Knie.

Mir gehts halt darum, wie ich es anders machen kann.Wink

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

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.700
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Speicher läuft voll
' schrieb:wenn ich mein Programm richtig verstehe, 1000 Arrays mit 1000 Spalten x 1000 Werten (und in einer einzigen Spalte steht was anderes drin als nullSmile).
Wacko[*OhneKommentar*]

Pack die einzelnen Arrays, also die einer (1) Messung in ein Cluster. Der Graph kann Array of Cluster of Messung(X,Y) anzeigen. Die Cluster-Variante hat den Vorteil, dass die einzelnen Arrays (die der Messung) unterschiedlich lang sein können.

Kommt mein Muster deinen Wünschen irgendwie nahe?

Lv85_img


Angehängte Datei(en) Thumbnail(s)
   

Sonstige .vi  Muster.vi (Größe: 16,94 KB / Downloads: 231)

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
03.02.2011, 14:23
Beitrag #5

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Speicher läuft voll
Ich weiß auch nicht, worauf das Progamm hinausläuft, insbesondere was die Sache mit den vielen Nullen betrifft.
Ein Express-Graph macht hauptsächlich Sinn, wenn man im Programm bereits das Datenfomat "Signal" als Output von anderen Express-VIs hat. Hier jedoch würde ich die Verwendung normaler Graphen empfehlen. Bei äquidistantem dt müßte es übrigens kein XY-Graph sein - man spart dann die Hälfte an Speicherplatz.

Es gibt bei jedem Graphentypen mehrere mögliche Eingabefomate. Beim XY-Graph ist ein Plot entweder ein Cluster aus X-und Y-Array, oder aber ein Array aus Punkten (Punkt = Cluster [x;y]). Bei mehrere Plots können die Plotlängen aber in beiden Formaten unterschiedlich sein, IchSelbst hat in dieser Hinsicht nicht ganz recht. Das Punktformat ist logisch klarer, aber leider fallen die Daten meist nicht dieser Form an, so daß man mit dem anderen Format meist etwas weniger Code hat.

NB: Ein Graph ist ein FP-Element und kann mehrere Plots enthalten. Ein Satz wie ".. die bei der Messung anfallenden Graphen.." tut meinen Augen schon sehr weh.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.02.2011, 15:11
Beitrag #6

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.700
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Speicher läuft voll
' schrieb:Ich weiß auch nicht, worauf das Progamm hinausläuft, insbesondere was die Sache mit den vielen Nullen betrifft.
Der Anwender hat nicht bedacht, dass das Aneinanderreihen von Arrays bewirkt, dass die bereits bestehenden Arrays entsprechend erweitern werden. Daher kommen die vielen Nuller. LV kennt keine 2D-Arrays mit unterschiedlichen Längen in der zweiten Dimension.

Ein Aneinanderreihen ist natürlich in so fern sinnvoll, weil die einzelnen Messungen aneinandergereiht werden sollen - zweck gleichzeitiger Anzeige. Die Frage ist eben wie macht man das am geschicktesten: Beschreibung lesen, welches Datenformat ein Graph kann. In einem Falle wie diesem wird wohl alles auf ein Array of Cluster hinauslaufen (ob nun Cluster of (Arr,Arr) oder Cluster of (Xo,dX,YArr) überlass ich mal dem Anwender).

Noch ein Gedanke:
Für eine Onlineanzeige ist ein Graph eigentlich schlechter als ein Signalverlauf. Bei einem Graph muss man immer alle Daten an das Element übergeben. Das heißt aber, dass die Daten im eigenen Programm aufsummiert werden müssen (Schieberegister und Array-Addition). Einem Signalverlauf muss man immer nur die aktuellen Daten übergeben. Der macht dann das Aufsummieren selbständig. (Ob ein Signalverlauf im vorliegenden Falle überhaupt geeignet ist, muss noch entschieden werden)

Und dass man Express-VIs nicht verwenden soll, muss ich ja nicht mehr sagen.

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
Anzeige
03.02.2011, 15:29
Beitrag #7

Meinhart_E.Steil Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jan 2011

8.6.1
2010
de


Deutschland
Speicher läuft voll
Vielen Dank für die Lösung. Obwohl ich immer noch nicht nachvollziehen kann, was ich wirklich gemacht habe? Habe das jetzt so verstanden, dass ich ein bestehendes Array fortwährend erweitere und dazu ein neues Array erstellen.

Muss das Ganze noch mal auf mich wirken lassen.

ALso vielen Dank nochmals für die Lösung
VG Marcel

PS: Die aktuelle Messung lasse ich mir natürlich auch in "Echtzeit" mittels Signalverlauf zeigen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.02.2011, 17:51 (Dieser Beitrag wurde zuletzt bearbeitet: 04.02.2011 07:38 von Lucki.)
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
Speicher läuft voll
' schrieb:Noch ein Gedanke:
Für eine Onlineanzeige ist ein Graph eigentlich schlechter als ein Signalverlauf. Bei einem Graph muss man immer alle Daten an das Element übergeben. Das heißt aber, dass die Daten im eigenen Programm aufsummiert werden müssen (Schieberegister und Array-Addition). Einem Signalverlauf muss man immer nur die aktuellen Daten übergeben. Der macht dann das Aufsummieren selbständig. (Ob ein Signalverlauf im vorliegenden Falle überhaupt geeignet ist, muss noch entschieden werden)

Man beachte auch die weiteren Unterschiede von Graph und Diagramm:
Graph: Plotpunkte äquidistant (dT=konst), aber jeder Plot kann anderes t0, dt und andere Länge haben.
Diagr: jeder Plotpunkt kann anderes t0 (dt nicht äquidistant) haben, aber bei mehreren Plots müssen die Punkte aller Plots übereieinanderliegen (gleiches t) und die Plots gleiche Länge haben.
Graph: Kursoren möglich. Stapelplot nicht möglich
Diagr: Kursoren nicht möglich, Stapelplot möglich.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.02.2011, 21:06
Beitrag #9

Meinhart_E.Steil Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jan 2011

8.6.1
2010
de


Deutschland
Speicher läuft voll
' schrieb:Es gibt bei jedem Graphentypen mehrere mögliche Eingabefomate. Beim XY-Graph ist ein Plot entweder ein Cluster aus X-und Y-Array, oder aber ein Array aus Punkten (Punkt = Cluster [x;y]). Bei mehrere Plots können die Plotlängen aber in beiden Formaten unterschiedlich sein
NB: Ein Graph ist ein FP-Element und kann mehrere Plots enthalten. Ein Satz wie ".. die bei der Messung anfallenden Graphen.." tut meinen Augen schon sehr weh.


' schrieb:Der Anwender hat nicht bedacht, dass das Aneinanderreihen von Arrays bewirkt, dass die bereits bestehenden Arrays entsprechend erweitern werden. Daher kommen die vielen Nuller. LV kennt keine 2D-Arrays mit unterschiedlichen Längen in der zweiten Dimension.
Ein Aneinanderreihen ist natürlich in so fern sinnvoll, weil die einzelnen Messungen aneinandergereiht werden sollen - zweck gleichzeitiger Anzeige. Die Frage ist eben wie macht man das am geschicktesten: Beschreibung lesen, welches Datenformat ein Graph kann. In einem Falle wie diesem wird wohl alles auf ein Array of Cluster hinauslaufen (ob nun Cluster of (Arr,Arr) oder Cluster of (Xo,dX,YArr) überlass ich mal dem Anwender).

Ich habs gefressen!Smile
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
  Speicher läuft voll maxil 4 4.089 16.09.2019 07:54
Letzter Beitrag: maxil
  Waveform verkleinern, Speicher läuft voll matze4711 1 4.474 20.10.2010 19:49
Letzter Beitrag: jg

Gehe zu: