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 

Zugriff auf Queues und Daten eines SubVI



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!

12.04.2012, 09:26
Beitrag #1

Dande Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Apr 2012

LV2011
2009
DE_EN


Deutschland
Zugriff auf Queues und Daten eines SubVI
Hallo zusammen,

ich habe ein paar Fragen bzgl. dem Ansprechen von Queues und Daten eines SubVIs aus einem Haupt VI heraus. Hintergrund der Frage ist, dass ich eine etwas umfangreichere Ansteuerung für einen Messaufbau in Labview schreibe. Das Ganze wird als Event-driven Queued State Machine aufgebaut. Eine Producer Schleife nimmt die Benutzereingaben entgegen und verteilt sie auf die entsprechenden Queues. Die einzelnen Teile sind alle schon mehr oder weniger vorhanden. Also alles eigentlich kein großes Hexenwerk sondern im Wesentlichen Fleißarbeit. Dummerweise weiss ich seit gestern, dass mein VI später einmal auch als SubVi verwendet werden soll (der Messaufbau für den ich grade ein VI schreibe soll Teil eines grösseren Aufbaus werden der dann ebenfalls über LabView gesteuert werden soll). Ich habe gestern lange gegoogelt und versucht herauszufinden wie ich das am besten bewerkstellige. Die Steuerbefehle für mein VI werden sich aus dem großen Messaufbau ergeben. Es ist also keine direkte Benutzerinteraktion mit meinem VI notwendig, es muss nur permanent laufen um seine Steuer-, Überwachungs- und Messaufgaben zu erfüllen. Ich muss eigentlich nur Steuerbefehle weiterreichen und ein paar Daten abgreifen.

Kann ich (wenn mein VI als SubVI verwendet wird) aus dem HauptVI Einträge in die Queues meines VIs reinschreiben? Evtl. in dem ich die Queue einfach über ihren Namen referrenziere? Bekomme ich Probleme wenn mein VI zweimal als SubVi verwendet wird (evtl. wird der Messaufbau zweimal verwendet)?

Eine zweites Problem ist, dass ein Teil der Messdaten aus meinem VI im HauptVI benötigt werden (vorraussichtlich zwei Arrays zur Weiterverarbeitung der Messwerte und zwei Graphen um dem Anwender den aktuellen Zustand des Systems zu zeigen). Diese müssen zur Laufzeit zur Verfügung stehen, d.h. es reicht nicht sie am Ende über die Connectors des SubVI auszugeben. Gibt es da irgendeine elegantere Lösung als globale Variablen? Insbesondere da ich keine Ahnung habe wie ich das mit den globalen Variablen machen soll, wenn mein VI zweimal als SubVI verwendet wird.

Vielen Dank schon mal für eure Hilfe
Daniel

PS: Verwendet wird LabView 2011 lv11_img
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.04.2012, 10:11
Beitrag #2

THL Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 111
Registriert seit: May 2011

2012
2009
EN


Deutschland
RE: Zugriff auf Queues und Daten eines SubVI
(12.04.2012 09:26 )Dande schrieb:  Kann ich (wenn mein VI als SubVI verwendet wird) aus dem HauptVI Einträge in die Queues meines VIs reinschreiben? Evtl. in dem ich die Queue einfach über ihren Namen referrenziere?
Das ist ohne Probleme möglich.

Zitat: Bekomme ich Probleme wenn mein VI zweimal als SubVi verwendet wird (evtl. wird der Messaufbau zweimal verwendet)?
In deinem SubVI wird ja die Queue ausgewertet, d.h. wenn du diese VI zweimal identisch verwendest, gibt es zwei "Queue-Auswerter", die miteinander konkurrieren, was nur Murks ergibt. Mit anderen Worten: die Queue-Namen müssen sich unterscheiden. Eine mögliche Lösung: Den Queue-Namen nicht fest verdrahten, sondern per Variable vom Hauptprogramm übergeben, á la "Messaufbau1" und "Messaufbau2".

Zitat:Eine zweites Problem ist, dass ein Teil der Messdaten aus meinem VI im HauptVI benötigt werden (vorraussichtlich zwei Arrays zur Weiterverarbeitung der Messwerte und zwei Graphen um dem Anwender den aktuellen Zustand des Systems zu zeigen). Diese müssen zur Laufzeit zur Verfügung stehen, d.h. es reicht nicht sie am Ende über die Connectors des SubVI auszugeben. Gibt es da irgendeine elegantere Lösung als globale Variablen? Insbesondere da ich keine Ahnung habe wie ich das mit den globalen Variablen machen soll, wenn mein VI zweimal als SubVI verwendet wird.
Vorschlag: Erledige das dann doch auch per Queue. Diesmal liest dein Hauptprogramm die Queue aus und deine SubVIs schreiben rein.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.04.2012, 10:13
Beitrag #3

M Nussbaumer Offline
Zarathustra
****


Beiträge: 654
Registriert seit: Sep 2009

2009 SP1
2009
EN

6300
Schweiz
RE: Zugriff auf Queues und Daten eines SubVI
(12.04.2012 09:26 )Dande schrieb:  Hallo zusammen,

ich habe ein paar Fragen bzgl. dem Ansprechen von Queues und Daten eines SubVIs aus einem Haupt VI heraus. Hintergrund der Frage ist, dass ich eine etwas umfangreichere Ansteuerung für einen Messaufbau in Labview schreibe. Das Ganze wird als Event-driven Queued State Machine aufgebaut. Eine Producer Schleife nimmt die Benutzereingaben entgegen und verteilt sie auf die entsprechenden Queues. Die einzelnen Teile sind alle schon mehr oder weniger vorhanden. Also alles eigentlich kein großes Hexenwerk sondern im Wesentlichen Fleißarbeit. Dummerweise weiss ich seit gestern, dass mein VI später einmal auch als SubVi verwendet werden soll (der Messaufbau für den ich grade ein VI schreibe soll Teil eines grösseren Aufbaus werden der dann ebenfalls über LabView gesteuert werden soll). Ich habe gestern lange gegoogelt und versucht herauszufinden wie ich das am besten bewerkstellige. Die Steuerbefehle für mein VI werden sich aus dem großen Messaufbau ergeben. Es ist also keine direkte Benutzerinteraktion mit meinem VI notwendig, es muss nur permanent laufen um seine Steuer-, Überwachungs- und Messaufgaben zu erfüllen. Ich muss eigentlich nur Steuerbefehle weiterreichen und ein paar Daten abgreifen.

Kann ich (wenn mein VI als SubVI verwendet wird) aus dem HauptVI Einträge in die Queues meines VIs reinschreiben? Evtl. in dem ich die Queue einfach über ihren Namen referrenziere? Bekomme ich Probleme wenn mein VI zweimal als SubVi verwendet wird (evtl. wird der Messaufbau zweimal verwendet)?

Eine zweites Problem ist, dass ein Teil der Messdaten aus meinem VI im HauptVI benötigt werden (vorraussichtlich zwei Arrays zur Weiterverarbeitung der Messwerte und zwei Graphen um dem Anwender den aktuellen Zustand des Systems zu zeigen). Diese müssen zur Laufzeit zur Verfügung stehen, d.h. es reicht nicht sie am Ende über die Connectors des SubVI auszugeben. Gibt es da irgendeine elegantere Lösung als globale Variablen? Insbesondere da ich keine Ahnung habe wie ich das mit den globalen Variablen machen soll, wenn mein VI zweimal als SubVI verwendet wird.

Vielen Dank schon mal für eure Hilfe
Daniel

PS: Verwendet wird LabView 2011 lv11_img

Hallo Daniel

Ja prinzipiell kannst du die VI's über die Namen referenzieren, oder (datenflusstechnisch schöner) den Queue als Eingang bzw Ausgang definieren.

Dein Hauptproblem scheint aber beim doppelt verwendeten SubVI zu liegen. Damit wir dir dort weiterhelfen können wäre es hilfreich zu wissen was du damit genau anstellen willst. Soll es quasi als eigenständige Instanz laufen oder sich an seinen anderen Aufruf "erinnern"? Weshalb könnte der Messaufbau 2x aufgerufen bzw. verwendet werden? Werden die beiden Instanzen des SubVI seriell oder parallel abgearbeitet?

Gruss Marc
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.04.2012, 10:40
Beitrag #4

Dande Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Apr 2012

LV2011
2009
DE_EN


Deutschland
RE: Zugriff auf Queues und Daten eines SubVI
Danke schon mal für die Antworten. Hier nochmal zum kurzen Verständniss des Aufbaus (in abstrahierter Form um euch nicht mit den Details zu langweilen):
  • "Mein" Messaufbau kann wunderbar alleine betrieben werden und erfüllt dabei auch seinen Zweck.
  • Wird er betrieben so muss permanent gemessen, geregelt und überwacht werden. D.h. das Steuer VI muss permanent laufen.
  • Der Messaufbau ist aber auch für einen größeren Messaufbau als Teilmessung interessant, auch mehrfach an verschiedenen Stellen. Da die einzelnen Messungen unabhängig voneinander sind, muss das VI also mehrfach unabhängig nebeneinander laufen und darf sich nicht von anderen Instanzen beeinflussen lassen.

Ich denke THL hat die Lösung schon beschrieben. Die Queuenamen per Eingang an das VI weiterreichen, das VI über die Queues steuern und die Daten per (ebenfalls übergebener Queue) wieder herausholen. Ich werde das Ganze mal so umsetzen und dann vom Ergebniss berichten.

Vielen Dank euch Beiden
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.04.2012, 07:42
Beitrag #5

Vrijdag Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Feb 2012

2010
2011
DE_EN

33xxx
Deutschland
RE: Zugriff auf Queues und Daten eines SubVI
Hi Dande,
ich hab ein ähnliches Problem wie du. Ich entprelle Lichtschranken eines Systems, und je nach Modul kommen unterschiedlich viele Lichtschranken zum Einsatz. Habe ein VI zum betreiben einer Lichtschranke erstellt. Hast du schon eine möglichkeit gefunden das VI öffters auszuführen. Hast du es über einen Queue realisiert (vielleicht ein Beispiel)?
Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.04.2012, 07:53
Beitrag #6

Dande Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Apr 2012

LV2011
2009
DE_EN


Deutschland
RE: Zugriff auf Queues und Daten eines SubVI
Also ich kann viel weniger Zeit in das Projekt stecken als ich gerne hätte, sprich ich vom Endausbau bin ich noch meilenweit entfernt, aber ein paar Erkenntnisse hab ich schon:
Also auf die Queues eines SubVI zuzugreifen funktioniert, wenn man die Queue einfach über den Namen referenziert.
  • Also auf die Queues eines SubVI zuzugreifen funktioniert, wenn man die Queue einfach über den Namen referenziert.
  • Wenn man das VI einfach zweimal in ein HauptVI reinlegt, kommen sich die Queues in die Quere. Sie heissen ja auch gleich. Das hab ich gelöst, in dem ich an die VI einen Queue Name Prefix übergebe. Schon hat jede Instanz des VIs seine eigene Queue.
  • Wenn man ein Programm zweimal ausführt, scheinen sich die Queues nicht in die Quere zu kommen (Wir haben ein paar Programme die Queues verwenden per Application Buildes zu ausführbaren Programmen gemacht und die kann man problemlos mehrfach laufen lassen).
  • Mein VI dynamisch n-fach als SubVI zu starten hab ich noch nicht ausprobiert.
Ich hoffe das hilft dir schon mal ein wenig weiter.
Daniel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
24.04.2012, 08:16
Beitrag #7

Vrijdag Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Feb 2012

2010
2011
DE_EN

33xxx
Deutschland
RE: Zugriff auf Queues und Daten eines SubVI
Danke, das ging super schnell!
Ich werde das bei Gelegenheit auf jeden Fall auch versuchen, so zu realisieren.
Denk daran, wenn du ein erstelltes VI als SubVI nutzen möchtest und mehrfach einsetzt, es in den VI-Einstellungen als ablaufinvariante einzustellen.
Gruß Robert
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.04.2012, 13:32
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: Zugriff auf Queues und Daten eines SubVI
Habe jetzt den Thread kurz gelesen, mir fällt dazu noch ein Hinweis ein.
Es gib außer Queues noch Melder, und ein wesentlicher Unterschied ist:
Aus einer einer Queue kann nur einmal gelesen werden. Nach dem Lesen aus der Queue ist das Element nicht mehr in der Queue.
Anders beim Melder: Das Element kann mehrere Male gelesen werden. Das Element wird nicht durch Lesen, sondern durch Überschreiben mit einem neuen Element gelöscht.
Die Synchonisation funktioniert trotzdem: Das mehrfache Lesen funktioniert nur einnmal pro Ikon "Auf Meldung warten" , also salopp gesagt nur einmal pro empfangendes SubVI. Ansonsten wartet der Melder auf den Empfang eines neues Elementes.

Man kann sogar sagen: Melder haben mehr Funktionalität als Queues. Aber der logisch unvermeidbare Preis dafür ist eben, daß keine Datenpufferung über mehr als das eine Element möglich ist.
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
  Probleme mit Queues und Programmaufbau stefan1312 6 5.414 30.10.2018 17:08
Letzter Beitrag: NoWay
  Drei Queues in einer While-Schleife mit case-Struktur EinVolvic 12 13.163 17.05.2017 20:25
Letzter Beitrag: EinVolvic
  2D Arrays per Queues abfragen Jan S. 3 3.983 16.01.2016 08:56
Letzter Beitrag: Lucki
  Frage zu Message Queues, Queue Cluster mehrfach aufschlüsseln dali4u 8 8.053 11.12.2014 09:07
Letzter Beitrag: Lucki
  Nachrichten-Queues, Exit wird nicht an andere Schleifen weitergereicht dali4u 4 6.170 28.10.2014 11:48
Letzter Beitrag: jg
  Synchronisation mit Queues Masterg4941 9 8.140 25.09.2013 12:24
Letzter Beitrag: GerdW

Gehe zu: