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 

Statemachine zur Erfassung von Messdaten nach ein paar tausend Messwerten sehr langsa



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.09.2011, 10:01
Beitrag #1

nemesismf Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: Feb 2011

2009, 2010 & 2013
2002
DE_EN


Deutschland
Statemachine zur Erfassung von Messdaten nach ein paar tausend Messwerten sehr langsa
Hallo,

Zur Prüfung von Messmodulen (Strom, Spannung) verwende ich eine State Machine, die die Messwerte in Arrays speichert. Die Arrays (Messwertarray (double), Ausgabearray (string)) werden von Schieberegistern immer wieder zum Anfang der State Machine gegeben und im Verlauf aktualisiert bzw. erweitert.
In einem State "Auswertung", den alle Messvorgänge durchlaufen, wird die Nutzeroberfläche mit den Messdaten versorgt (per Referenzen und Eigenschaftsknoten).

Ich habe nun das Problem, daß ein einfacher Durchlauf einer Messung (Ausgabe durch Messgerät --> Messen mit Modul --> Auswerten) am Anfang ca. 60ms dauert. Im Verlauf einer ganzen Messreihe (bis zu 100k Messungen) wird das ganze unerträglich langsam.
Ich vermute, daß es mit dem Schieben, Erweitern und Anzeigen der Arrays zusammenhängt. Allerdings sollen die Messdaten während der Messung in der Tabelle sichtbar sein und auch im Verlauf der Messung im dem Graph angezeigt werden. Sonst könnte man die Auswertung ganz am Schluss machen und sich einen Haufen Aufwand sparen.

Über Tipps, Hinweise oder Beispiele würde ich mich freuen.

Leider darf ich wegen Geheimhaltung das VI nicht posten :-(
... ein paar Bilder sind aber erlaubt.

Vielen Dank für eure Mühe

Mirko


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
19.09.2011, 10:21
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Statemachine zur Erfassung von Messdaten nach ein paar tausend Messwerten sehr langsa
Du hast mehrere Probleme:

1) Ja, dauerndes Vergrößern von Arrays ist ungünstig, da dauernd neuer Speicher alloziert werden muss.
2) Aber einer gewissen Menge von Datenpunkten braucht ein Graph immer länger zum Darstellen der Daten. Das Ganze muss ja gerendert werden. Wie oft macht du diese Updates? Je häufiger, desto schlechter für die Performance.
3) Ganz schlimm ist, dass du alle Werte per PropertyNode setzt. Das Schreiben von PropertyNodes erfolgt nämlich im UI-Thread, und jedes Schreiben löst auch zwingend ein Update des FP aus.

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
19.09.2011, 10:58
Beitrag #3

nemesismf Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: Feb 2011

2009, 2010 & 2013
2002
DE_EN


Deutschland
RE: Statemachine zur Erfassung von Messdaten nach ein paar tausend Messwerten sehr langsa
>>1) Ja, dauerndes Vergrößern von Arrays ist ungünstig, da dauernd neuer Speicher alloziert >>werden muss.
werde ich ändern, so daß gleich das komplette Array initialisiert wird und die entsprechende Stelle wird später nur ersetzt.
>>2) Aber einer gewissen Menge von Datenpunkten braucht ein Graph immer länger zum >>Darstellen der Daten. Das Ganze muss ja gerendert werden. Wie oft macht du diese Updates? >>Je häufiger, desto schlechter für die Performance.
Die Updates werden nach jedem Messdurchgang ausgeführt. D.h. typischerweise 30k-65k in einer Messreihe. Es ist sozusagen günstiger nur die letzten ~ 5000k Messwerte anzuzeigen (mehr als 10k geht sowieso nicht)
>>3) Ganz schlimm ist, dass du alle Werte per PropertyNode setzt. Das Schreiben von >>PropertyNodes erfolgt nämlich im UI-Thread, und jedes Schreiben löst auch zwingend ein >>Update des FP aus.
Wie würdest du die Messwerte für das Userinterface aktualisieren / anzeigen (Link, Beispiel, Bild wenn möglich)?

Danke schön

Mirko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.09.2011, 11:03
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Statemachine zur Erfassung von Messdaten nach ein paar tausend Messwerten sehr langsa
(19.09.2011 10:58 )nemesismf schrieb:  Wie würdest du die Messwerte für das Userinterface aktualisieren / anzeigen (Link, Beispiel, Bild wenn möglich)?
Ganz klar besser ist die Verwendung einer lokalen Variable, besser noch des Terminalanschlusses selber.

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
20.09.2011, 09:10
Beitrag #5

chrissyPu Offline
LVF-Stammgast
***


Beiträge: 467
Registriert seit: Jun 2006

2014 PDS
2006
DE_EN

64283
Deutschland
RE: Statemachine zur Erfassung von Messdaten nach ein paar tausend Messwerten sehr langsa
Hi,

ich hab sowas mal mit ner Producer-Consumer-Struktur gemacht: Producer liest die Daten ein, Consumer speichert die Daten aus der Queue. Die Bildschirmanzeige wird dann nach dem Speichern in festgelegten Intervallen gemacht - 5 Hz reichen da z.B. vollkommen. Dazu lese ich die Daten aus der gespeicherten Datei ein. Wenn man das ganze über die Pfadzuordnung verbindet, hat man auch einen eindeutigen zeitlichen Ablauf. Die Anzeige wird dann nur alle paar Speicherungen getriggert.

Über die Speicherausnutzung kann man streiten, gibt es sicher noch die eine oder andere Optimierungsmöglichkeit. Funzt aber so, auch für längere Messungen und mehrere 100000 Werte... Snippet anbei, Größe ist der Autoaufräumen-Funktion zu verdanken...

Grüße,

ch

Snippet, LV2011
   
Webseite des Benutzers besuchen 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
  Frage zur Architektur: Statemachine und Wait for Events tuhpon 6 4.438 18.03.2024 16:14
Letzter Beitrag: tuhpon
  Statemachine-Projekt… riu14 18 12.328 15.06.2022 13:44
Letzter Beitrag: jg
  Motorsteuerung (VCP) Erfassung Geschwindigkeit und Position JanM 2 3.231 15.06.2021 07:48
Letzter Beitrag: GerdW
  Statemachine mit Notifier hulk 5 4.818 14.12.2017 20:02
Letzter Beitrag: Pronet
  Nach Erfassung: Kanäle frei miteinander verrechnen LichterLichtus 5 5.262 19.05.2017 10:48
Letzter Beitrag: LichterLichtus
  Statemachine programmieren… Granit 8 10.790 30.04.2017 16:42
Letzter Beitrag: Granit

Gehe zu: