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 

Cluster-Eigenschaft in SubVI and MainVI übergeben



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.11.2007, 01:02 (Dieser Beitrag wurde zuletzt bearbeitet: 02.12.2007 13:33 von jg.)
Beitrag #1

mctommson Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 99
Registriert seit: Mar 2007

8.6
2007
de

1210
Oesterreich
Cluster-Eigenschaft in SubVI and MainVI übergeben
Hoi!

Ich hab folgenden Aufbau:
1. VI: Cluster (generiert einen Cluster)
2. VI: SubVI (Hat den Cluster als Eingang, rechnet irgendwas und deaktiviert dabei den kompletten Cluster)
3. VI: MainVI (Hier wird das SubVI aufgerufen, im realen Fall sind das 5 Stück)

Im 2. VI (SubVI) wird nun unter bestimmten Voraussetzungen der komplette Cluster solange deaktiviert, bis ein gewisser Wert von ner Schnittstelle gelesen wird. Die deaktivierung des Clusters und die Berechnungen finden alle hier statt.

Ich hätte nun gerne, dass im 3. VI, in dem das SubVI aufgerufen wird und welches als Bedienungselemente den Cluster hat, ebenfalls der Cluster deaktivert wird, wenn er gerade im 2. VI deaktivert ist. Im 2. VI wird der Cluster per Eigenschaftsknoten deaktivert mit einer Sequenz, zB Deaktivere Cluster -> warte 5000ms -> Aktiviere Cluster. Da jedoch sowohl die Deaktivierung als auch die Aktivierung im 2. VI stattfinden, kriegt das 3. VI wahrscheinlich gar nicht mit, dass da was deaktiviert wurde...wie kann ich dem 3. VI sagen: "Deaktiviere bitte den Cluster genau dann, wenn er im 2. VI auch deaktiviert ist und aktivier ihn wieder wenn er aktiviert ist?

Ich kann jeden Falls die Berechnungen und Aktivierung/Deaktivierung im 3. VI NICHT vornehmen, das wäre die einzige Voraussetzung.

Habe 3 VIs hochgeladen, die das ganze Problem vereinfacht darstellen...im Debug-Modus sieht man, dass nach Drücken einer Boolschen Taste im 2. VI alles deaktiviert wird, das 3. VI deaktiviert den Cluster jedoch nicht.
mainvi ruft subvi auf, subvi ruft cluster auf.

Wie kann man das noch lösen?

Danke für eure Antworten!
Lg,
Tommy!

(VIs LV 8.0)


Angehängte Datei(en)
Sonstige .vi  mainvi.vi (Größe: 8,14 KB / Downloads: 290)

Sonstige .vi  subvi.vi (Größe: 14,8 KB / Downloads: 255)

Sonstige .vi  cluster.vi (Größe: 8,47 KB / Downloads: 247)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
23.11.2007, 10:09
Beitrag #2

monoceros84 Offline
LVF-Stammgast
***


Beiträge: 445
Registriert seit: Oct 2006

2011
2006
EN


Deutschland
Cluster-Eigenschaft in SubVI and MainVI übergeben
Du musst einen weiteren Eingang in deinem SubVI schaffen, an den du die Referenz zum Cluster in Main.vi übergibst. Diese Referenz kannst du dann einem weiteren Eigenschaftsknoten übergeben, mit dem du dann auch das Cluster im Main.vi deaktivieren kannst.

Im Main.vi selber erstellst du die Referenz zum Cluster mit der Funktion Programming -> Application Control -> VI Server Reference. Deren Ausgang dann einfach an den Eingang des SubVI legen.

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

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Cluster-Eigenschaft in SubVI and MainVI übergeben
Das Ganze ist recht seltsam, um nicht zu sage wirr. Du rufst das Cluster.Vi vom Subvi.vi aus auf. Das Cluster.VI ist einige µs aktiv und liefert einen Zahlenwert zurück In Anhängigkeit von Zahlenwert wird das Bedienelement "Cluster" deaktiviert/aktiviert.
Und nun frage ich: was soll es für einen Sinn machen, auch die Clusteranzeige des "Cluster.vi" zu deaktivieren, zu einem Zeitpunkt, in dem dieses VI überhaup nicht mehr im Spiel ist und es seine "Dienstleistung" längst erbracht hat?
Es machst auch keinen Sinn, das Cluster-VI überhaupt geöffent zu halten, denn bedient werden soll und kann dort gar nichts bzw. das hätte keinen Einfluss, wenn es dann als Sub-vi aufgerufen wird.
Hinweis: Die beiden Cases "2" und "3" lassen sich zu einem Case "2,3" zusammenfassen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.11.2007, 13:02
Beitrag #4

mctommson Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 99
Registriert seit: Mar 2007

8.6
2007
de

1210
Oesterreich
Cluster-Eigenschaft in SubVI and MainVI übergeben
' schrieb:Das Ganze ist recht seltsam, um nicht zu sage wirr. Du rufst das Cluster.Vi vom Subvi.vi aus auf. Das Cluster.VI ist einige µs aktiv und liefert einen Zahlenwert zurück In Anhängigkeit von Zahlenwert wird das Bedienelement "Cluster" deaktiviert/aktiviert.
Und nun frage ich: was soll es für einen Sinn machen, auch die Clusteranzeige des "Cluster.vi" zu deaktivieren, zu einem Zeitpunkt, in dem dieses VI überhaup nicht mehr im Spiel ist und es seine "Dienstleistung" längst erbracht hat?
Es machst auch keinen Sinn, das Cluster-VI überhaupt geöffent zu halten, denn bedient werden soll und kann dort gar nichts bzw. das hätte keinen Einfluss, wenn es dann als Sub-vi aufgerufen wird.
Hinweis: Die beiden Cases "2" und "3" lassen sich zu einem Case "2,3" zusammenfassen

Das Problem ist, dass ich mehrere dieser SubVIs habe, das ClusterVI wird also mehrmals (ablaufinvariant) aufgerufen. Das ClusterVI stellt also eine Art Bedienungsoberfläche für mehrere verschiedene SubVIs dar. Darum rufe ich in jedem SubVI das ClusterVI auf, Verbinde die notwendigen Ausgänge des Clusters mit den Funktionen im SubVI (im realen Fall hat der Cluster ja 22 Bedienelemente, wobei ich für jedes SubVI unterschiedliche Bedienelemente benötige, insgesamt aber den gleichen Aufbau benötige) und diese SubVIs werden im MainVI aufgerufen, das ja auch normalerweise anders aussieht. Ich hab hier nur mal schnell was gebastelt, da ich das eigentliche Projekt nicht online stellen wollte. (Somit wird das Casezusammenfassen von 2 und 3 auch hinfällig, aber trotzdem danke für den Hinweis, wurde aber eh beachtetWink).

@monoceros84: Ich werde das gleich mal ausprobieren und melde mich wieder;)Danke schonmal für die Hilfe!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.11.2007, 14:38
Beitrag #5

mctommson Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 99
Registriert seit: Mar 2007

8.6
2007
de

1210
Oesterreich
Cluster-Eigenschaft in SubVI and MainVI übergeben
Ok, also ich schaffs nicht eine Referenz als Eingang von dem SubVI festzulegen. Liegt wahrscheinlich daran, dass ich noch nie mit Referenzen gearbeitet hab ^^

Ich hab im Forum noch was gefunden:
Da wird per Melder eine Nachricht an alle "Auf Melder warten" versendet. Allerdings kann ich da mit nem Cluster nicht in die String-Meldenachricht rein.

Kannst du mir eventuell erklären, wie ich die Referenz im SubVI als Eingang festlegen kann? (Referenz wurde mit: rechte Maustaste auf Cluster, Referenz erstellen erstellt)

Ich nehme an, dass man hier noch irgendwo sagen muss: "Öffne den Cluster über die Referenz", aber weder "Applikations-Referenz öffnen" noch "VI-Referenz öffnen" funktionieren.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.11.2007, 15:16 (Dieser Beitrag wurde zuletzt bearbeitet: 02.12.2007 13:34 von jg.)
Beitrag #6

monoceros84 Offline
LVF-Stammgast
***


Beiträge: 445
Registriert seit: Oct 2006

2011
2006
EN


Deutschland
Cluster-Eigenschaft in SubVI and MainVI übergeben
Also so richtig werd' ich nciht schlau, was du machst, nicht machen kannst oder was nicht geht...
Ich habe das einfach mal für dich gemacht, siehe Anhang.

Wenn du meinst, wie man Elemente auf dem Frontpanel als Eingänge eines VIs festlegen kann: Rechtsklick auf das VI-Icon rechts oben im Frontpanel -> Show Connector. Dann einfach auf den gewünschten Connector klicken und anschließend auf das Element im FP klicken. Speichern. Fertig.

Was du allerdings mit dem Melder (du meinst sicherlich Notifier - weiß nicht, ob das in Deutsch so übersetzt ist) vorhast, weiß ich nicht. Sicher kannst du mit dem Melder nachrichten aller Art verschicken - Cluster und Referenzen eingeschlossen. Aber dann musst du auch den Melder in jedem VI kontinuierlich überwachung und die entsprechenden Aktionen dorthin verlegen... Habe zwar nicht ganz verstanden, was dein Programm im Ende machen soll, aber z.Z. siehts ja nicht so aus, als ob du das willst...

(VIs LV 8.2)

Sonstige .vi  mainvi.vi (Größe: 8,72 KB / Downloads: 293)


Sonstige .vi  subvi.vi (Größe: 18,21 KB / Downloads: 281)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
23.11.2007, 15:35 (Dieser Beitrag wurde zuletzt bearbeitet: 23.11.2007 15:38 von IchSelbst.)
Beitrag #7

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.696
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Cluster-Eigenschaft in SubVI and MainVI übergeben
' schrieb:Ich hab im Forum noch was gefunden:
Da wird per Melder eine Nachricht an alle "Auf Melder warten" versendet. Allerdings kann ich da mit nem Cluster nicht in die String-Meldenachricht rein.
An Melder und Queue hab ich auch schon gedacht.

Das HauptVI - das ist das, in dem sich die tatsächlichen Bedienelemente (also der Cluster) befinden - sendet per Melder an alle (ablaufinvarianten) SubIVs den aktuellen Zustand der Bedienelemente. Die SubVIs lesen dieses Status aus, ohne den Melder zu löschen. So hat jedes dieser SubVIs immer den aktuellen Stand. Jedes der SubVIs sendet per Queue (Melder ist für diese Richtung prinzipiell ungeeignet) einen Befehl an das HauptVI. Das HauptVI disabled bzw. enabled jetzt je nach Aufforderung den Bediencluster. Das Arbeiten mit Melder und Queue ist aufwändiger (da bedarf eine u.U. eines Polling-Codes oder eines Eventmechanismusses sowohl bei HauptVI als auch bei SubVI) als das Arbeiten mit einer Referenz. Dafür ist das mit der Queue wesentlich flexibler: Was tun, wenn ein SubVI enablen will ein anderes aber disablen? Was tun, wenn hier ein Zeitversatz besteht? Den Befehl vom SubVI zum HauptVI kann mal so anpassen, dass solche Probleme nicht auftreten.

Mit einem Merker bzw. einer Queue kannst du beliebige Daten verschicken. Lediglich der Typ muss von vorne herein feststehen.

Die Frage ist, ob die Applikation den Aufwand eines Melders und einer Queue rechtfertigt. Aber wenn du sagst, mehrere (bis viele) ablaufinvariante SubVIs und ein einziges HauptVI, dann würde ich sagen ohne die Applikation zu kennen der Aufwand lohn sich.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.11.2007, 16:33
Beitrag #8

mctommson Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 99
Registriert seit: Mar 2007

8.6
2007
de

1210
Oesterreich
Cluster-Eigenschaft in SubVI and MainVI übergeben
' schrieb:Was tun, wenn ein SubVI enablen will ein anderes aber disablen?
Das wird sogar oft vorkommen! Aber dadurch, dass die SubVIs ja nur Klone des ClusterVIs aufrufen (da ablaufinvariant) dachte ich mir, dass sich die gegenseitig nie im Wege stehen können. Liege ich da falsch?

Ich hab mich am Anfang vielleicht auch falsch ausgedrückt: Mir is egal, was im SubVI passiert...da laufen nur Berechnungen...wichtig war mir nur, dass, falls eine Berechnung einen gewissen Wert ausgibt, das Clusterbedienelement im main-VI für den Benutzer deaktiviert wird, damit der da nicht dazwischen funkt mit einer weiteren Eingabe (bzw. kann er nicht dazwischen funken, weil sich eh nix tut...ich wollt das halt grafisch darstellen, in dem ich den Cluster deaktiviere und ausgraue).

Ich hab das von monoceros jetzt übernommen und die Deaktivierung des Clusters im SubVI rausgelöscht, da mir das ja wirklich egal sein kann (ich glaube, dass er das in seinem 1. Post meinte). Jetzt wird nur noch der Cluster im MainVI Deaktiviert und das genügt ja logischer Weise.

Funktioniert einwandfrei!

Danke nochmal an alle und an IchSelbst für die Erklärung mit den Meldern und der QueueWink
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.11.2007, 17:57 (Dieser Beitrag wurde zuletzt bearbeitet: 02.12.2007 13:34 von jg.)
Beitrag #9

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Cluster-Eigenschaft in SubVI and MainVI übergeben
' schrieb:Danke nochmal an alle und an IchSelbst für die Erklärung mit den Meldern und der QueueWink

Mit Meldern und Queues kann es so überhaupt nicht funktionieren. Denn eine Voraussetzung für einen solchen Datenaustausch ist, daß sich beide Vis im Zustand "running" befinden. Das ist hier nicht der Fall, im Cluster-VI gibt es keine Schleife zur Dauerausführung, beim Aufruf ist es nur wenige µs aktiv.

Eine Möglichkeit ohne all das: Das VI Cluster von übergeordneten VI drei mal aufrufen:[list=1]
[*]Aufruf: Übergabe Cluster, Rückgabe Zahl.<>
[*]Aufruf: Deaktivierung der Anzeige<>
[*]Aufruf: Aktivierung der Anzeige<>
[st]Funktioniert allerding nicht ohne weiteres bei reentranten Cluster-VI, da dann jedes Mal ein anderer Clon aufgerufen wird. Dagegen läßt sich aber etwas machen.

(VIs LV 8.2)


Angehängte Datei(en)
Sonstige .vi  cluster.wa.vi (Größe: 12,02 KB / Downloads: 226)

Sonstige .vi  subvi.wa.vi (Größe: 18,1 KB / Downloads: 219)
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
  Elemente Cluster in Cluster ansprechen simcum 3 3.727 02.10.2023 10:49
Letzter Beitrag: th13
  MainVI sucht nach gelöschter .lvlib Bibliothek kwz 5 4.089 04.05.2021 16:11
Letzter Beitrag: kwz
  Kommunikation/Datenaustausch MainVI und SubVI THenry14 13 9.234 09.03.2018 08:46
Letzter Beitrag: GerdW
  Eigenschaftsknoten korrigiert Eigenschaft nicht Ksanto 10 8.188 24.03.2017 18:38
Letzter Beitrag: Ksanto
  Element in Cluster of Array of Cluster ausblenden R.Fuertig 4 7.289 26.09.2016 07:47
Letzter Beitrag: GerdW
  Wechsel SubVI/MainVI, FP öffnen/schließen; LV2010 m.werle 4 4.678 12.10.2015 12:54
Letzter Beitrag: m.werle

Gehe zu: