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 

ökonomisches Aufteilen in Anzeigeprozess und Speichernprozess



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!

23.06.2015, 19:23
Beitrag #1

Hasenfuss Offline
LVF-Stammgast
***


Beiträge: 331
Registriert seit: Dec 2012

2012
2012
DE



ökonomisches Aufteilen in Anzeigeprozess und Speichernprozess
Guten Abend!

Ich habe ein Messerfassungssystem, von dem ich Werte auslesen kann. Zu Simulationszwecken erzeuge ich mir ein entsprechendes Array mit zwei geschachtelten for-Schleifen.

Die Daten sollen in einer Anzeige angezeigt werden, wenn sie eingeschaltet ist, und abgespeichert werden, wenn der SpeichernProzess gestartet wurde. Die Graphenanzeige sowie der Abspeichernproess laufen in zwei anderen VIs. Das Datenholen wird vom Hauptprogramm aus gestartet und läuft immer parallel. Werden die Anzeige oder das Abspeichern eingeschaltet, dann wird das jeweils empfangene Array in eine Queue geschrieben. Das Bild zeigt dieses Datenholen und das Weiterleiten des Arrays mittels Queues.

Ich würde gerne wissen, ob dies eine "gute" Lösung ist oder ob es noch andere Alternativen gibt, die besser sein könnten?


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
24.06.2015, 07:52 (Dieser Beitrag wurde zuletzt bearbeitet: 24.06.2015 07:52 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.427
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: ökonomisches Aufteilen in Anzeigeprozess und Speichernprozess
Hallo Hasenfuss,

Zitat:Ich würde gerne wissen, ob dies eine "gute" Lösung ist oder ob es noch andere Alternativen gibt, die besser sein könnten?
Eine "gute" Lösung wird es, sobald du dein VI mal aufräumst und zumindest einige der CoercionDots entfernst… Big Grin

Im Ernst:
- Wenn es dir nur um eine Momentanwertanzeige geht, kannst du auch einen Notifier verwenden und hier auf die Case-Struktur verzichten.
- Je nachdem, wie wichtig dir das Abspeichern ist, könntest du auch eine längenbegrenzte Queue verwenden und auf die Case-Struktur im MainVI verzichten. Die Speicherroutine entscheidet dann "selbständig", ob gespeichert wird oder nicht…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.06.2015, 19:32
Beitrag #3

Hasenfuss Offline
LVF-Stammgast
***


Beiträge: 331
Registriert seit: Dec 2012

2012
2012
DE



RE: ökonomisches Aufteilen in Anzeigeprozess und Speichernprozess
Hallo GerdW,

vielen Dank für Deine Hinweise.

>>Eine "gute" Lösung wird es, sobald du dein VI mal aufräumst und zumindest einige der CoercionDots entfernst…

Danke für den Hinweis, daran hab ich nicht gedacht und ich habe sie jetzt überall da, wo machbar, entfert :-)

>>Wenn es dir nur um eine Momentanwertanzeige geht, kannst du auch einen Notifier verwenden und hier auf die
>>Case-Struktur verzichten.

Welchen Vorteil hat denn die Verwendung von Notifers anstelle von Queues? Wären die in diesem Fall weniger speicherintensiv?

>>Je nachdem, wie wichtig dir das Abspeichern ist, könntest du auch eine längenbegrenzte Queue verwenden und auf
>>die Case-Struktur im MainVI verzichten. Die Speicherroutine entscheidet dann "selbständig", ob gespeichert wird
>>oder nicht…

Ich weis nicht, ob das bei mir funktionieren würde - warum?

Folgendes ähnliches Beispiel, was das Problem erklären könnte -> Ich habe einen Motor, der am Laufen ist und es werden z.B. el. Leistung, Drehzahl, Drehmomente und Temperaturen gemessen. Ich möchte einmal in einer Graphenanzeige die Messwerte anzeigen. Dann besteht die Möglichkeitn, einen Versuch durchzuführen, in dem ich den Versuch starte. An den Versuch ist die Messaufzeichnung gekoppelt.

Ich bekomme von dem Messerfassungssystem Messwerte, die ich einmal zum Abspeichern und dann an die Graphenanzeige weiterleiten muss. Mein Konstrukt sieht bis jetzt so aus - ich habe 4 VIs.

- Hauptprogramm
- Messwerte holen und verteilen
- SpeichernProzess
- Graphenanzeige

Sobald das Hauptprogramm gestartet wird, beginnt der Prozess "Messwerte holen und verteilen" und läuft kontinuierlich im Hintergrund. Meine Messerfassung hat einen Fifo. In den Fifo werden pro Prozesstakt Messwerte in einer Reihenfolge in den Messerfassungsfifo hineingeschrieben:

1 2 3 4 5 ... 1 2 3 4 5 ...

Insgesamt habe ich knapp 40 Kanäle an meiner Messerfassung dran.

Ich muss also wissen, wo der erste Wert ist, damit ich die Daten richtig zuordnen kann, wenn ich sie lese, darum läuft der Messwerte-Holen-Prozess immer. Ist nun die Graphenanzeige aktiv (ein VI, dass via Subpanel im Hauptprogramm eingebunden wird), dann sollen die Messwerte dort angezeigt werden. Ich möchte die Graphenanzeige aber auch mal anhalten können, um z.B. Verläufe mir kurzfristig anzusehen, mal hineinzoomen ...

Beim Abpspeichern-Prozess genauso - das ist ein SubVI, dass gestartet wird, denn ich einen Versuch starte und die Messwerte aufzeichnen muss. Dann muss ich die Messwerte aus dem VI "Messwerte holen" an "SpeichernProzess" senden. Ich hatte gedacht, dass eine Queue eine gute Möglichkeit sei, um dann Messwerte von einem VI in das andere zu transportieren. Und was mir noch gefallen hat ist die Funktion Queue warten auf..., so dass ich keine Schleife bauen muss, die ständig pollt.

Ich habe hier mal mein Abspeichern-Prozess als Bild angefügt. Ich muss das eindimensionale Array noch etwas bearbeiten, damit ich es den einzelnen Kanälen zuordnen und dann in die TDMS-Datei hineinschreiben kann. Dieses VI wird gestartet, wenn ich den Versuch starte. Dann wartet die Funktion solange, bis in die Queue Daten reingeschrieben werden.

Falls Du mir noch ein paar Tipps geben kannst, würde ich mich riesig drüber freuen.


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
  Eine Datenreihe aufteilen Gahlunke 2 3.240 21.06.2012 16:16
Letzter Beitrag: Gahlunke
  String aufteilen mike8080 9 9.538 03.12.2010 13:01
Letzter Beitrag: mike8080
  Arraydarstellung aufteilen illson 8 6.116 03.12.2009 22:12
Letzter Beitrag: unicorn
  String Binär in Bytes aufteilen VisionaryS 14 12.983 27.11.2009 10:07
Letzter Beitrag: M Nussbaumer
  4Byte Datenstrang aufteilen Schandmaul 17 13.563 06.03.2009 07:41
Letzter Beitrag: rolfk
  Aufteilen von Werten in ein 1D Array olmethn 3 3.669 11.07.2008 10:23
Letzter Beitrag: Y-P

Gehe zu: