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 

Messwerte flott in einen Graphen darstellen



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!

28.06.2015, 14:01 (Dieser Beitrag wurde zuletzt bearbeitet: 28.06.2015 14:15 von Hasenfuss.)
Beitrag #1

Hasenfuss Offline
LVF-Stammgast
***


Beiträge: 331
Registriert seit: Dec 2012

2012
2012
DE



Messwerte flott in einen Graphen darstellen
Hallo,

ich möchte gerne Messwerte effizient in einem Graphen darstellen. Damit der PC nicht so langsam wird, möchte ich die Graphenanzeige nur einmal pro Sekunde aktualisieren.

Ich habe mir ein kleines Testprogramm geschrieben, dass mir Messwerte erzeugt, wie ich sie von meinem Datenerfassungsgerät bekomme. Diese Messwerte werden in einer FGV zwischengespeichert. Die FGV ist dabei als Fifo angelegt.

Im Fifo liegen die Messwerte für meherere Kanäle als 1D-Array vor. Für den Graphen muss ich das Datenarray neu umformen und transponieren.

In meinem richtigen Programm sind Datenerfassung (also Schreiben in die FGV) und das Anzeigen in einem Graphen (also Lesen von der FGV) in unterschiedlichen VIs.

Könntet ihr mir ein paar Tipps geben, wie ich mein Programmentwurf verbessern könnte? Gibt es Stellen, an denen ich etwas falsch gemacht habe? Ich würde mich sehr darüber freuen.


Angehängte Datei(en)
14.0 .vi  fifoFGV.vi (Größe: 16,14 KB / Downloads: 325)

14.0 .ctl  fifoFGV_CTL.ctl (Größe: 4,21 KB / Downloads: 310)

14.0 .vi  testprogramm.vi (Größe: 17,76 KB / Downloads: 296)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
29.06.2015, 13:19
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Messwerte flott in einen Graphen darstellen
Hallo Hasenfuss,

Zitat:Könntet ihr mir ein paar Tipps geben, wie ich mein Programmentwurf verbessern könnte?
- In deiner FGV das Befehls-Enum ebenfalls als Typdefinition anlegen. So viele CoercionDots machen mich immer nervös… Big Grin
- Um mehrere Messkanäle in einem Graph anzuzeigen, sollten die Daten als 2D-Array vorliegen. Du dagegen mixt die Samples mehrerer Kanäle in einem 1D-Array zusammen. Leg doch in der FGV gleich einen 2D-Buffer an...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.06.2015, 14:16
Beitrag #3

Hasenfuss Offline
LVF-Stammgast
***


Beiträge: 331
Registriert seit: Dec 2012

2012
2012
DE



RE: Messwerte flott in einen Graphen darstellen
Hallo GerdW,

vielen Dank für Deine Antwort.

>> So viele CoercionDots machen mich immer nervös…
Das hab ich noch nicht richtig intus, ich werde mich bemühen, in Zukunft besser darauf zu achten. Schade, dass sich nicht das ganze VI-Bild lila oder so färbt, sondern nur ein winzig kleiner Punkt erscheint, wenn die Datentypen verschieden sind.

>>- In deiner FGV das Befehls-Enum ebenfalls als Typdefinition anlegen
Normalerweise mach ich das auch, weil ich vor längerer Zeit mal viel Arbeit hatte, als ich die Befehle für die FGV geändert hatte und dann manuell in zig VIs das Enum neu anhängen musste, weil Änderungen nicht übernommen wurden. Diese FGV mit dem Testprogramm ist noch im Entwicklungsmodus, aber ich werde auf alle Fälle daraus auch eine strikte Typdefinition machen.

>>Leg doch in der FGV gleich einen 2D-Buffer an...
Ich habe es bisher noch nicht hinbekommen, einen 2D-Buffer zu erstellen. Ich werde nochmal meinen Kopf etwas anstrengen und es versuchen, aber ich war schon mal dran gescheitert.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.06.2015, 18:12
Beitrag #4

Hasenfuss Offline
LVF-Stammgast
***


Beiträge: 331
Registriert seit: Dec 2012

2012
2012
DE



RE: Messwerte flott in einen Graphen darstellen
Hallo GerdW,

kannst Du mir vielleicht mal einen Tipp geben, wie man gut ein 2D-Array rotiert, also z.B. Spalten nach links oder rechts verschiebt? Ich habe jetzt von OpenG eine Funktion Reverse2DArray.VI gefunden. Die Funktion gefällt mir aber nicht so gut. Würdest Du diese Funktion zum Rotieren von 2D-Arrays benutzen oder hättest Du eine andere Idee?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.06.2015, 20:29
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Messwerte flott in einen Graphen darstellen
Hallo Hasenfuss,

2D-Array rotiert man zeilen-/spaltenweise per Autoindizierung und FOR-Loop…

Du hast doch eine FGV: da kannst du doch Datenkapselung betreiben ("OOP-light") und in der FGV für jeden Masskanal ein eigenes 1D-Array verwalten. Ich mache sowas gern mit Variantattributen, da bekommt man gleich noch eine Referenzierung über den Messstellennamen frei Haus dazu…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.06.2015, 21:20
Beitrag #6

Hasenfuss Offline
LVF-Stammgast
***


Beiträge: 331
Registriert seit: Dec 2012

2012
2012
DE



RE: Messwerte flott in einen Graphen darstellen
Hallo GerdW,

vielen Dank für Deine Tipps.

>> 2D-Array rotiert man zeilen-/spaltenweise per Autoindizierung und FOR-Loop…

Meinst Du das so, wie in dem Bild - ich hab jetzt einfach eine indizierte for-Schleife genommen und dort das 1D-Rotatations-VI eingebastelt (siehe Bild mit dem blauen Kringel). Ich hab versucht, das gleiche auch mal mit dieser inplace-Struktur hinzubekommen, weil ich da gelesen habe, dass die vielleicht besser sein sollen? Aber ich hab das nicht hinbekommen.

>> Du hast doch eine FGV: da kannst du doch Datenkapselung betreiben ("OOP-light") und in der FGV für jeden
>> Masskanal ein eigenes 1D-Array verwalten.

Leider hab ich das noch nicht richtig verstanden. Also, ich erzeuge mir für jeden Messkanal ein eigenes 1D-Array.

Ich hab das mal grad versucht umzusetzen, die beiden Bilder dazu heissen FGV_1 und FGV_2. Geht das so in die richtige Richtung, wie Du es meinst? Beim case Init habe ich auch mal einen Wert mit dabei geschrieben. Ich weis nur nicht, ob diese Information bei write dann ggf. wieder verloren geht?


Angehängte Datei(en) Thumbnail(s)
           
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
29.06.2015, 21:46 (Dieser Beitrag wurde zuletzt bearbeitet: 29.06.2015 21:48 von GerdW.)
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Messwerte flott in einen Graphen darstellen
Hallo Hasenfuss,

Zitat:Meinst Du das so, wie in dem Bild - ich hab jetzt einfach eine indizierte for-Schleife genommen und dort das 1D-Rotatations-VI eingebastelt (siehe Bild mit dem blauen Kringel).
Ja, so macht man das…

Zitat:Ich hab versucht, das gleiche auch mal mit dieser inplace-Struktur hinzubekommen, weil ich da gelesen habe, dass die vielleicht besser sein sollen?
Inwiefern sollen die "besser" sein? "Besser" sollte man in Bezug auf Software immer genau (besser Big Grin) definieren…

Zitat:Aber ich hab das nicht hinbekommen.
Und warum wohl?
Mit dieser InPlace-Struktur indizierst du ein einzelnes Arrayelement - und wunderst dich, warum du das dann nicht mehr rotieren kannst…

Etwas nicht durch entsprechende Links belegbares Halbwissen:
Die Inplace-Struktur wurde eingeführt, als LabVIEW noch einen anderen Compiler nutzte. Damals hatte sie wirklich Vorteile!
Mittlerweile wurde der Compiler geändert und wesentlich besser auf LabVIEW "trainiert": er erkennt jetzt selbständig "in place"-Operationen und optimiert diese entsprechend. Als ich das letzte mal Benchmarks damit durchführte, war die Kombination IndexArray/ReplaceArraySubset jedenfalls schneller als die Inplace-Struktur…

Zum Vorschlag mit den Variant-Attributen kann ich dieses Nugget empfehlen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.06.2015, 22:19
Beitrag #8

Hasenfuss Offline
LVF-Stammgast
***


Beiträge: 331
Registriert seit: Dec 2012

2012
2012
DE



RE: Messwerte flott in einen Graphen darstellen
Hallo GerdW,

vielen Dank für die vielen Antworten von Dir. Ich habe versucht, jetzt eine neue FGV zu erstellen mit einem Minitestprogramm. Die FGV ist nicht so schön geworden, weil sie noch im Versuchsstadium ist (z.B. die Ein- und Ausgänge für den Fehlercluster oder die noch nicht als strikte TypDef gesetzte Befehls-Enum-Elementestruktur). Aber ich kann Daten aus der Datenstruktur herausholen und in einen Graphen schreiben und ich kann mit der von Dir genannten Funktion mit den Variantattributen Namen z.B. in einen Plot setzen. Und das Einfügen von Daten klappt auch.

Geht das so schon in die Richtung, wie Du das auch machst? Ich hab die beiden VIs mal angehängt an diese Message. Mit test.vi wird datafgv.vi getestet.

>> Zum Vorschlag mit den Variant-Attributen kann ich dieses Nugget empfehlen…
Dieses Nougat lese ich mir morgen mal in Ruhe durch, vielen Dank für den Link.


Angehängte Datei(en)
12.0 .vi  datafgv.vi (Größe: 19,28 KB / Downloads: 278)

12.0 .vi  test.vi (Größe: 15,23 KB / Downloads: 276)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.06.2015, 08:00
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Messwerte flott in einen Graphen darstellen
Hallo Hasenfuss,

Zitat:Geht das so schon in die Richtung, wie Du das auch machst?
Nein. Lies dir das Nugget aufmerksam durch: Es wird nichts im Variant selbst gespeichert, nur die Attribute nehmen Daten auf!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.07.2015, 08:18
Beitrag #10

Hasenfuss Offline
LVF-Stammgast
***


Beiträge: 331
Registriert seit: Dec 2012

2012
2012
DE



RE: Messwerte flott in einen Graphen darstellen
Hallo GerdW,

vielen Dank für Deine Antwort.

Ich habe mal eine Frage zu einem Array, dass in einem Attribut gespeichert ist, bearbeitet wird und die Änderungen wieder gespeichert werden. Ich habe dazu mal ein kleines Testprogramm geschrieben. In dem Block in der Funktion mit dem blauen Kringel wird an den Stellen 1 und 2 das Array gelesen und wieder neu gesetzt.

Meine Frage dazu ist jetzt - wird dazu das Array komplett aus dem Speicher "entfernt" und durch ein neues Array ersetzt - also ein langsamer Prozess, weil eine Kopie des Array im Speicher erzeugt wird? Oder ist das so eine gute Vorgehensweise, um ein Array, dass als Variantattribut vorliegt, bearbeitet wird? Ich habe mir das Nugget mehrmals durchgelesen und bin mir nicht sicher, ob ich es richtig umgesetzt habe an der Stelle, ich würde mich deshalb sehr über eine Antwort von Dir freuen.

(PS - ich weis, dass die Datentypen nicht konstant sind in dem Array - einmal sind es Integerwetere, dann mal wieder Double - aber das liegt daran, dass ich aus Testgründen kurz das [i] aus den for-Schleifen darangehängt habe).


Angehängte Datei(en) Thumbnail(s)
   
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
  3D-Messwerte darstellen Luki97 6 5.405 09.08.2022 09:53
Letzter Beitrag: Luki97
  Messwerte als Tabelle und grafisch darstellen Manfred 20 23.479 11.01.2021 17:18
Letzter Beitrag: Manfred
  Darstellen eines definierten Bereiches in einem XY-Graphen in einer laufenden Messung Poepsken 7 9.356 23.03.2016 15:49
Letzter Beitrag: Lucki
  Wie große Menge an Messwerten flott speichern? Hasenfuss 3 4.325 30.04.2015 11:32
Letzter Beitrag: Lucki
  Messwerte mit Datum in XY Graph darstellen PeterF 5 6.303 28.04.2015 06:51
Letzter Beitrag: GerdW
  Messwerte in Tabelle darstellen Stefan2302 17 14.011 28.03.2015 12:05
Letzter Beitrag: GerdW

Gehe zu: