03.05.2019, 22:26
Beitrag #2
|
|
|
04.05.2019, 07:48
Beitrag #3
|
IchSelbst
LVF-Guru
Beiträge: 3.689
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
RE: Messdaten Performance
(03.05.2019 21:07 )simcum schrieb: Das Vi
Heißt das, dass es nur in einziges VI gibt? Würde ich nicht machen: Pro parallelem Ablauf ein VI.
Zweitens:
Lesen und Schreiben gleichzeitig in bzw. aus demselben File? Da blockieren sich aber zwei.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
04.05.2019, 17:08
(Dieser Beitrag wurde zuletzt bearbeitet: 04.05.2019 17:14 von simcum.)
Beitrag #4
|
simcum
LVF-Gelegenheitsschreiber
Beiträge: 113
Registriert seit: May 2015
2016
2010
DE
Deutschland
|
RE: Messdaten Performance
Danke für die Antworten, das Beste wird sein das Vi Hochzuladen.
Werde es kommenden Montag tun.
Bis dann
(03.05.2019 22:26 )Trinitatis schrieb: ..also das Auslesen von 3000 Messwerten aus einer queue sollte in "unmessbar" kurzer Zeit erledigt sein. Daran sollte es nicht liegen. Für mich liest sich deine Beschreinung so, dass das Problem in der weiteren Verarbeitung / Darstellung liegt. Das könntest du ja mal auskommentieren und prüfen, ob es dann läuft.
Der Rest ist für mich zu viel rumrätseln. So ohne VI wird es wohl schwer mit der Hilfe..
Gruß, Marko
ja, das Auslesen der Queueelemente wird wahrschrinlich aufgrund der Grafischen Darstellung verlangsamt.
(04.05.2019 07:48 )IchSelbst schrieb: (03.05.2019 21:07 )simcum schrieb: Das Vi
Heißt das, dass es nur in einziges VI gibt? Würde ich nicht machen: Pro parallelem Ablauf ein VI.
Zweitens:
Lesen und Schreiben gleichzeitig in bzw. aus demselben File? Da blockieren sich aber zwei.
Werde am montag mal die Schleife zum speichern und Grafische Darstellung voneinander trennen.
Wie würdet ihr sowas denn generell Programmieren?
Mir reicht ein simples Beispiel, damit ich eine Basis habe.
|
|
|
08.05.2019, 19:16
Beitrag #5
|
|
|
09.05.2019, 06:39
(Dieser Beitrag wurde zuletzt bearbeitet: 09.05.2019 06:41 von GerdW.)
Beitrag #6
|
GerdW
______________
Beiträge: 17.465
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Messdaten Performance
Hallo simcum,
Zitat:so könnt ihr euch ein besseres Bild davon machen (LabView2016).
, wenn du jetzt LabVIEW2016 verwendest!
Dein MainVI ist viel zu groß, da hat man keinen Überblick! Erstelle mehr subVIs!
Es fehlt eine Projektdatei! Wie willst du so dein LabVIEW-Projekt verwalten?
Deine subVIs haben keine aussagekräftigen Icons…
Zuviele unnötige CoercionDots…
IMHO Probleme beim DATAFLOW, wenn Controls außerhalb von Schleifen liegen…
Fehlende Typdefinitionen für Cluster etc.
Umständliche Arrayoperationen mit DeleteFromArray anstatt IndexArray…
Und: Parallel in ein und derselben Datei schreiben und lesen geht gar nicht!
In deiner Darstellungsschleife wird 6mal (inkl. Disabled-Struktur 8mal) lesend auf das TDMS zugegriffen und jedesmal am Offset/Datalength rungefummelt…
|
|
|
09.05.2019, 11:58
Beitrag #7
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: Messdaten Performance
(09.05.2019 06:39 )GerdW schrieb: Und: Parallel in ein und derselben Datei schreiben und lesen geht gar nicht!
In deiner Darstellungsschleife wird 6mal (inkl. Disabled-Struktur 8mal) lesend auf das TDMS zugegriffen und jedesmal am Offset/Datalength rungefummelt…
Da widerspreche ich: Gerade die TDMS-API gibt das her. Hier ein Beispiel von der NI-Seite: https://forums.ni.com/t5/Example-Program...anguage=en
Besonders effektiv ist das aber nicht, du hast die Rohdaten schon im Speicher beim TDMS-Write. Ich würde mir an dieser Stelle ein Ringbuffer-FGV erstellen für die Übertragung der Daten an die Graphen.
5000 Werte pro Kanal ergibt übrigens bei 200 S/s (und nur die gemittelten Werte schreibst du weg) eine Anzeigelänge von 25 Sekunden. Bei 96 Kanälen hältst du somit grob 500000 Datenpunkte im Speicher, da hat ein XY-Graph schon zu tun. Diesen Vorgang (also das Neuzeichnen aller Graphen) versuchst du mit derselben Rate aufzurufen wie die Datenspeicherung, und das sind bei den Einstellungen am Frontpanel (Sampleanzahl Sp = 500 bei 100 kHz) alleine schon 200 S/s. Mehr als 20 Hz Aktualisierungsrate bei einem Graphen macht aber gar keinen Sinn.
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.
|
|
|
09.05.2019, 15:48
Beitrag #8
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: Messdaten Performance
Oder anders ausgedrückt:
1) Speichern seltener auslösen, 200 mal pro Sekunde ist auch schon viel.
2) Darstellung der Graphen NICHT so hart an den Speichertakt koppeln. Max. 10x pro Sekunde aktualisieren langt in der Regel.
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.
|
|
|
09.05.2019, 23:15
Beitrag #9
|
simcum
LVF-Gelegenheitsschreiber
Beiträge: 113
Registriert seit: May 2015
2016
2010
DE
Deutschland
|
RE: Messdaten Performance
(09.05.2019 11:58 )jg schrieb: (09.05.2019 06:39 )GerdW schrieb: Und: Parallel in ein und derselben Datei schreiben und lesen geht gar nicht!
In deiner Darstellungsschleife wird 6mal (inkl. Disabled-Struktur 8mal) lesend auf das TDMS zugegriffen und jedesmal am Offset/Datalength rungefummelt…
Da widerspreche ich: Gerade die TDMS-API gibt das her. Hier ein Beispiel von der NI-Seite: https://forums.ni.com/t5/Example-Program...anguage=en
Besonders effektiv ist das aber nicht, du hast die Rohdaten schon im Speicher beim TDMS-Write. Ich würde mir an dieser Stelle ein Ringbuffer-FGV erstellen für die Übertragung der Daten an die Graphen.
5000 Werte pro Kanal ergibt übrigens bei 200 S/s (und nur die gemittelten Werte schreibst du weg) eine Anzeigelänge von 25 Sekunden. Bei 96 Kanälen hältst du somit grob 500000 Datenpunkte im Speicher, da hat ein XY-Graph schon zu tun. Diesen Vorgang (also das Neuzeichnen aller Graphen) versuchst du mit derselben Rate aufzurufen wie die Datenspeicherung, und das sind bei den Einstellungen am Frontpanel (Sampleanzahl Sp = 500 bei 100 kHz) alleine schon 200 S/s. Mehr als 20 Hz Aktualisierungsrate bei einem Graphen macht aber gar keinen Sinn.
Gruß, Jens
Hallo Jens,
danke für die Anmerkungen. Werde Ringpuffer-FGV mal ausprobieren.
FÜr mich zum Verständnis, wenn die Aktualisierungsrate in einem Graphen reduziert wird, muss dann nicht aufgrund der unveränderten Anzahl an Messdaten, mehr Daten bei der Aktualisierung übertragen werden?
Ist das von der Performance besser?
Also verstehe ich das richtig, dass bei bei Aktualisierung der Daten im XY Graph alle Werte neu eingelesen werden.
Gibt es denn keine Möglichkeit nur die aktuell ausgelesenen Werte anzuhängen ohne alles neu einzulesen?
Wir setzen zum Beispiel auch andere Messsoftware ein, mit der Problemlos simultan 24 Kanäle mit 40Mhz Abtastung und 400000S/S als Trenddiagramm über mehrere Tage dargestellt werden können.
Es muss doch mit Labview bessere Möglichkeiten geben.
|
|
|
10.05.2019, 06:40
(Dieser Beitrag wurde zuletzt bearbeitet: 10.05.2019 06:41 von GerdW.)
|
GerdW
______________
Beiträge: 17.465
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Messdaten Performance
Hallo simcum,
Zitat:Es muss doch mit Labview bessere Möglichkeiten geben.
Ja klar! Aber die muss man eben programmieren…
Zitat:Wir setzen zum Beispiel auch andere Messsoftware ein, mit der Problemlos simultan 24 Kanäle mit 40Mhz Abtastung und 400000S/S als Trenddiagramm über mehrere Tage dargestellt werden können.
Diese Software wird aber nicht 1Kanal*40MS/s*3Tage*24h*3600s=10.4*10^12 Samples in einem Graph mit nur 600 Pixeln Breite darstellen!
Da wird sich jemand Gedanken gemacht haben, welche Datenmenge sinnvoll ist für die Darstellung…
Und diese Gedanken musst du dir eben auch mal machen! (Tipp: Bei einem Graph mit 600 Pixeln Breite sind mehr als ~1200 Werte pro Plot nicht sinnvoll…)
|
|
|
| |