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 

Dieses Thema hat akzeptierte Lösungen:

SubVI-Daten auslesen



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!

14.12.2011, 00:10
Beitrag #1

BMTstudent Offline
LVF-Grünschnabel
*


Beiträge: 30
Registriert seit: Oct 2010

2011
2010
DE

98xxx
Deutschland
SubVI-Daten auslesen
Hallo,

ich habe folgendes Problem, weiß einfach nicht weiter und wollte euch mal um Rat fragen.

Ich habe ein Sub-VI geschrieben, in welchem die Temperatur über zwei Widerstandsthermometer Pt100 (angeschlossen an Multimeter) eingelesen wird (Siehe Bild). Aufgrund der langsamen RS-232-Verbindung brauche ich für einen Messvorgang ca. 500-700 ms. Das Sub-VI soll nun in ein Hauptprogramm eingebunden werden, welches Laserspektren misst. Jedesmal, wenn die Spektren gemessen werden, soll auch die Temperatur abgespeichert werden. Das Problem ist, dass die Lasermessung in 10 ms Abständen erfolgt. Ein Sub-VI direkt einbauen, würde alles verlangsamen.
Vielmehr soll der letzte zur Verfügung stehende Temperaturwert mit abgespeichert werden (Dieser Satz ist vermutlich entscheidend in diesem Beitrag).
Des Weiteren soll die Temperatur auf dem Frontpanel ständig aktuallisiert werden (nur zur Kontrolle für den Anwender), deshalb enthält das Sub-VI eine Whileschleife. Ein weiterer Grund, das Sub-VI nicht direkt einzubinden (würde ja alles anhalten, solange die Whileschleife nicht gestoppt wird. Soviel habe ich durch Stöbern in Forum schon herausgefundenBlush).

Nun meine Frage: Wie muss ich die VIs anordnen, damit einerseits die langsame Temperaturmessung vor sich hin läuft, und ich andererseits jederzeit im Main-VI während schnellen Messvorgängen auf die aktuell vorliegenden Temperaturwerte zugreifen kann.
Mit Queues und Notifier komm ich nicht weiter, das würde nur funktionieren, wenn die Temperaturmessung der schnellere Vorgang von beiden wäre. Mit globalen Variablen und Referenzen fehlt mir der nötige Durchblick.

Ich habe versucht, ein Beispiel-Code anzuhängen. Code ist natürlich nicht komplett, sonst würde ich ja jetzt keine Fragen stellen Blush
Wie muss ich das SubVI platzieren und verdrahten/abändern, damit im MainVI bei gedrücktem boolschen Schalter der aktuelle Wert des SubVIs (bei längerem Drücken mehrfach in xy ms Abständen des MainVIs) abgespeichert wird?


Ich hoffe ihr könnt mir Tipps geben,
selbst nach über einem Jahr LabVIEW Erfahrung stoße ich immer noch schnell an neue Grenzen.

Viele Grüße,
Fabian


Angehängte Datei(en) Thumbnail(s)
   

11.0 .vi  SubVI.vi (Größe: 9,45 KB / Downloads: 358)

11.0 .vi  MainVI.vi (Größe: 10,8 KB / Downloads: 358)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
14.12.2011, 07:34
Beitrag #2

NWOmason Offline
Simultator
*****


Beiträge: 1.078
Registriert seit: Dec 2010

2012.SP1
2008
EN

93047
Deutschland
RE: SubVI-Daten auslesen
(14.12.2011 00:10 )BMTstudent schrieb:  Nun meine Frage: Wie muss ich die VIs anordnen, damit einerseits die langsame Temperaturmessung vor sich hin läuft, und ich andererseits jederzeit im Main-VI während schnellen Messvorgängen auf die aktuell vorliegenden Temperaturwerte zugreifen kann.
Mit Queues und Notifier komm ich nicht weiter, das würde nur funktionieren, wenn die Temperaturmessung der schnellere Vorgang von beiden wäre. Mit globalen Variablen und Referenzen fehlt mir der nötige Durchblick.

Hallo,

mit allen erwähnten Mitteln kann dies gelöst werden. Für die aktuelle Anzeige der Temperatur ließe sich folgendes Konstrukt mit Referenzen verwirklichen:

   

Der Indikator wird per Refernez an das parallel laufende Sub-VI übergeben. Dort kann mittels Property-Node der Wert direkt in den Indikator im Main geschrieben werden.

Leider kann ich die VIs nicht öffen, da ich nur LV2010 habe, aber grundsätzlich musst du ja das Sub-VI parallel laufen lassen zur schnellen Main-Schleife, weil das Ganze - wie du schon erwähnt hast - zu langsam wird. Da wirst du dann an das Problem stoßen, dass mit einem Stop-Taster beide (alle) Schleifen gleichzeitig zu beenden sind. Da wird das Thema 'Parallele Schleifen' aufkommen. Dabei wirst du wieder auf die Punkte 'Globale Variable' und 'Queue/Notifier' stoßen. Weswegen es sich an der Stelle schon lohnt die Beispiele dazu nochmal genauer zu studieren Smile

Beste Grüße,
NWO

9 von 10 Stimmen in meinem Kopf sagen: Ich bin nicht verrückt,
die andere summt die Melodie von Tetris
.

NI schrieb:To use the abort button is like using a tree to stop a car!

(20.01.2012 11:02 )NWOmason schrieb:  Getting Started with NI LabVIEW Student Training
http://zone.ni.com/devzone/cda/tut/p/id/7466

Introduction to NI LabVIEW - Learn LabVIEW Basics
http://www.ni.com/gettingstarted/labviewbasics/

Top 5 der Empfehlungen für LabVIEW-Einsteiger
http://www.ni.com/newsletter/51735/de/
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.12.2011, 08:16
Beitrag #3

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
RE: SubVI-Daten auslesen
Wenn es Dir nicht 100% auf die Synchronität ankommt, dann kannst Du auch ganz einfach 2 While-Schleifen parallel laufen lassen und mit lokalen Variablen die Daten hin- und herschieben. Wenn es aber ganz genau synchron sein muss, dann mach es so, wie NWO schon beschrieben hat.

Gruß Markus

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.12.2011, 09:14 (Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2011 13:30 von Lucki.)
Beitrag #4

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: SubVI-Daten auslesen

Akzeptierte Lösung

Die vorgeschlagenen Lösungen funktionieren beide, haben aber jede hat ihren spezifischen Nachteil:
Lokale Variable:
Wertübergabe sehr schnell, du müsstest dich aber dann von der Idee verabschieden, die Temperaturmesung in einem Sub-VI auzulagern.
Referenz:
Wertübergabe ist ca. 100 mal langsamer als mit lokaler Variable. Abfragen über Referenz in einer zeitkritischen Haupschleife sind deshalb nicht unbedingt zu empfehlen.

Wenn es sowohl schnell als auch in einem SubVI erfolgen soll, dann ist die Lösung: Wertübergabe über globale Variable oder FGV (= Funktionale globale Variable = selbsgestricktes VI, welches ein Globale Variable nachbildet. Viele Forum-User meiden GVs und schwören auf FGVs. Ich nicht unbedingt).
Anbei Beispiel. (Schönheitsfehler, es kann 500ms dauern, bis das VI stoppt. Wenn dich das stört: dem kann man abhelfen)
Edit: Version 2011 --> 2010

10.0 .vi  MainVI.vi (Größe: 10,78 KB / Downloads: 619)

10.0 .vi  SubVI.vi (Größe: 7,14 KB / Downloads: 528)

10.0 .vi  Global 1.vi (Größe: 3,81 KB / Downloads: 540)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.12.2011, 13:19
Beitrag #5

Cerub Offline
LVF-Grünschnabel
*


Beiträge: 10
Registriert seit: Nov 2011

2010
2009
EN

94xxx
Deutschland
RE: SubVI-Daten auslesen
Hallo Lucki,

Könntest du die VIs vielleicht noch für Version 2010 hochladen? Würde sie mir gerne auch ansehen. Smile
Danke!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.12.2011, 13:32
Beitrag #6

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: SubVI-Daten auslesen
(14.12.2011 13:19 )Cerub schrieb:  Könntest du die VIs vielleicht noch für Version 2010 hochladen? Würde sie mir gerne auch ansehen. Smile
Habs oben editiert, weiß nur nicht wie die Elemente auf dem FP dann ausschauen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
21.06.2016, 10:39
Beitrag #7

PreVIEW Offline
LVF-Grünschnabel
*


Beiträge: 29
Registriert seit: Dec 2015

2017
2015
DE

98527
Deutschland
RE: SubVI-Daten auslesen
Hallo liebe LabVIEW InGENIEure,
mal wieder ein Newbee am Start^^
Ich hab jetzt schon einiges autodidaktisch gemacht, wahrscheinlich nicht die besten Strukturen etc. aber man wurschtelt sich so durch Wink

Zu meiner Frage ich hab das hier so gelesen da ich vor einem ähnlichen Problem stehe.
Ich habe ein MainVI in dem ich ein SubVI mehrfach aufrufe ( Ablaufinvariante Ausführung ) nun möchte ich die Ergebnisse aus diesen Subs gerne in meinem MainVI zusammenführen - Verrechnen und Anzeigen. Nun stellt sich mir die Frage wenn ich für die Ansteuerung GV verwende. Dann schreiben doch beide Subs in die gleiche GV?

Wie würdet ihr das Problem behandeln?

Danke schon im Voraus für eure Unterstützung
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.06.2016, 17:10
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
RE: SubVI-Daten auslesen
Lade doch mal das VI hoch, auch wenn es nicht funktioniert und nicht vollständig ist. Wichtig wäre die Info, ob die SubVis in der Haupschleife des Main-Vis aufgerufen werden oder parallel arbeiten.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.06.2016, 22:55
Beitrag #9

Trinitatis Offline
LVF-Guru
*****


Beiträge: 1.694
Registriert seit: May 2008

7.1 / 8.0 /2014-1, 18
2002
DE

18055
Deutschland
RE: SubVI-Daten auslesen
(21.06.2016 10:39 )PreVIEW schrieb:  Wie würdet ihr das Problem behandeln?

Das wird wohl auf Queues hinauslaufen. Du musst nur dafür sorgen, dass alle Instanzen der SubVIs synchronisiert in ihre Queues schreiben. Und dann liest du parallel dazu die Queues aus und verrechnest deren Werte zu einem Ergebnis. Ist diese Synchronität für dich irrelevant, dann geht es sicher auch mit einer GV - z.B. als Array, in dem jede VI-Instanz ein Element verändert.


Gruß, Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.06.2016, 07:36
Beitrag #10

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: SubVI-Daten auslesen
(22.06.2016 22:55 )Trinitatis schrieb:  
(21.06.2016 10:39 )PreVIEW schrieb:  Wie würdet ihr das Problem behandeln?

Das wird wohl auf Queues hinauslaufen.
Daran hatte ich auch gedacht, und möglich wäre auch eine einzige Queue für alle Daten. Das Queue-Element müßten dann ein Cluster mit zwei Elementen sein: Das erste Element gibt über die Herkunft der Daten Auskunft gibt, das zweite ist das Datenelement selbst. In der Hauptschleife müßten dann die Daten entsprechend ihrer Herkunft wieder auseinandersortiert werden. Hört sich umständlich an. Aber: die Daten von mehrere Queues in einer einzigen Hautpschleife zu empfangen geht fast überhaupt nicht. Höchstens dann, wenn alle Raten streng synchronisiert sind.
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
  Werte in SubVi entsprechen nicht Werten außerhalb des SubVi Philipp841 5 4.942 13.06.2018 15:12
Letzter Beitrag: GerdW
  Auf Website Daten auslesen myllertym 14 25.953 27.03.2012 15:56
Letzter Beitrag: lukin
  Daten aus externe Anlage auslesen Ninja2602 0 3.933 13.03.2012 10:15
Letzter Beitrag: Ninja2602
  TCP-Communikator: Daten aus Serverprogramm auslesen und in CSV Speichern McAllister 2 7.077 27.04.2011 15:54
Letzter Beitrag: McAllister
  Modbus Daten auslesen Road_Runner 5 11.238 21.12.2010 16:20
Letzter Beitrag: NWOmason
  Automatisch aktuelleste Daten vom FTP(-Push) auslesen Graf_Nasenbär 11 17.457 27.11.2010 09:26
Letzter Beitrag: Y-P

Gehe zu: