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 

Ändern/Auslesen von Bedienelementen eines Hauptprogramms mittels eines Unterprogramms



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!

10.10.2010, 09:50
Beitrag #1

aptiva Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 53
Registriert seit: Sep 2009

2010
2009
kA

80331
Deutschland
Ändern/Auslesen von Bedienelementen eines Hauptprogramms mittels eines Unterprogramms
Hallo,
habe zur Zeit ein Problem, für welches mir keine Lösung einfällt. Ich habe ein Hauptpgrogramm, welches diverse Unterprogramme aufruft. Diese Unterprogramme müssen jedoch ohne die klassische Variablenübergabe vom Hauptprogramm aufs Unterprogramm durch eine Verdrahtung auf Variablen im Hauprogramm zugreifen können, defakto lesen und überschreiben können.
Die Unterprogramme sind auch unbedingt erforderlich, da die behandelten Funktionen jedes Blockdiagramm sprengen würden. Im Unterprogramm müssen außerdem die Anzeigen des Hauptprogrammes ständig überschrieben werden, damit der Anwender immer die aktuellen Prozessparameter im Auge behalten kann.
Hat jemand eine Idee, wie ich dies relativ einfach realisieren kann?
Vielen Dank im Vorraus
Aptiva
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.10.2010, 10:35 (Dieser Beitrag wurde zuletzt bearbeitet: 10.10.2010 10:38 von Lucki.)
Beitrag #2

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Ändern/Auslesen von Bedienelementen eines Hauptprogramms mittels eines Unterprogramms
Ja das geht alles wunderbar, Du kannst auf jedes Bedien/Anzeigeelement eines laufenden Sub-Vis schreibend/lesend zugreifen. Das Element muß nicht einmal einen Anschluß haben. Das zu erklären ist nur am Sonntag zu viel verlangt, ich poste hier mal nur ein Bild aus einem meiner VIs, damit Du ein Vorahnung bekommst wie es geht:
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.10.2010, 14:02
Beitrag #3

macmarvin Offline
CLA
***


Beiträge: 445
Registriert seit: Sep 2006

2014
2004
EN

81373
Deutschland
Ändern/Auslesen von Bedienelementen eines Hauptprogramms mittels eines Unterprogramms
Im SubVI brauchst du die Referenzen deiner Controls/Indicators vom Hauptprogramm.
Anbei in kleines Beispiel.

Sonstige .zip  refs_test.zip (Größe: 21,44 KB / Downloads: 279)
LV2009
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.10.2010, 15:38
Beitrag #4

aptiva Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 53
Registriert seit: Sep 2009

2010
2009
kA

80331
Deutschland
Ändern/Auslesen von Bedienelementen eines Hauptprogramms mittels eines Unterprogramms
Danke für die Antworten. Hier meine vereinfachte Lösung für das Problem. Ich übergebe den Pfad des aufrufenden Programms an das Unterprogramm und suche mir in diesem die Variable raus, die ich lesen/überschreiben möchte. In dem großen Programm, sind die Variablen natürlich als strikte Typdefinitionen gespeichert Big Grin
Das Programm ist strikt linear aufgebaut, das heißt, es ist in ihm nicht möglich, das Variablen gleichzeitig gelesen/geschrieben werden. Oder habt ihr noch irgendwelche Bedenken bei meiner Lösung?

Sonstige .zip  TestLV.zip (Größe: 19,28 KB / Downloads: 262)
Lv09_img2
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.10.2010, 16:03 (Dieser Beitrag wurde zuletzt bearbeitet: 10.10.2010 16:06 von macmarvin.)
Beitrag #5

macmarvin Offline
CLA
***


Beiträge: 445
Registriert seit: Sep 2006

2014
2004
EN

81373
Deutschland
Ändern/Auslesen von Bedienelementen eines Hauptprogramms mittels eines Unterprogramms
Wenn du anstatt des Pfades, die "This VI"-Referenz übergeben würdest, könntest du dir im SubVI das "Open VI Ref" und falls du dich später dafür entscheidest, daß du mehrere Instanzen des MainVI brauchst, hast du es dann auch deutlich einfacher.
BTW. Den Pfad kannst du dir auch komplett sparen. Einfach aus der Callchain im SubVi den VI-Namen deines Parent nehmen und damit auf das Open VI Ref gehen.
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.10.2010, 07:45 (Dieser Beitrag wurde zuletzt bearbeitet: 11.10.2010 07:57 von aptiva.)
Beitrag #6

aptiva Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 53
Registriert seit: Sep 2009

2010
2009
kA

80331
Deutschland
Ändern/Auslesen von Bedienelementen eines Hauptprogramms mittels eines Unterprogramms
Wenn ich das mit der Call-Chain mache, dann kommt ne Fehlermeldung, das die entsprechende Variable nicht gefunden wurde...
Werd mal ausprobieren, was passiert, wenn ich nicht die erste, sondern die nullte Stelle aus dem Array nehme

Edit: Sry habe in nem Unterprogram,m versehentlich die nullte Stelle aus dem Array abgerufen, also kein Wundern das Es nicht funktioniert hat
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.10.2010, 09:26
Beitrag #7

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
Ändern/Auslesen von Bedienelementen eines Hauptprogramms mittels eines Unterprogramms
Da ich kein LV2009 habe kann ich nicht in deine Architektur schauen. Wenn dein Hauptprogramm mittles des Producer/Consumer PAtterns aufgebaut ist, würde ich es vorziehen die Daten in die Consumer Queue zu schieben. Dort können diese an die Userinterface-Queue weitergeleitet werden. Somit behälst du einen konsistenten Programmablauf.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.10.2010, 09:59
Beitrag #8

aptiva Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 53
Registriert seit: Sep 2009

2010
2009
kA

80331
Deutschland
Ändern/Auslesen von Bedienelementen eines Hauptprogramms mittels eines Unterprogramms
Habe in allen Programmen das Fehlerregister durchgezogen und es kann nicht gleichzeitig in eine Variable geschrieben werden und diese ausgelesen werden, da ich in den Cases in denen das der Fall sein könnte, eine flache Sequenzstruktur verwendet habe.
Das Beschrieben der Variable wollte ich im Hauptprogramm verhindern, da diese mittels einer Case-Struktur beschrieben werden müssen und dieses auf dem Panel zu viel Platz wegnimmt.

Vielen Dank für eure Hilfe
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
Music FGEN Erzeugung eines Signalverlaufs anhand einer Mathematischen Funktion DavidStefan 11 7.565 29.05.2021 07:03
Letzter Beitrag: GerdW
  Taktung eines Ausgangssignals Bubble68 5 4.079 28.03.2021 18:28
Letzter Beitrag: GerdW
  Asynchroner Aufruf eines VIs klappt nicht in der EXE Msengxxl 4 3.802 09.03.2021 16:09
Letzter Beitrag: Msengxxl
  Probleme mit Kommunikation eines alten Gerätes Friedolin 7 4.229 25.02.2021 15:44
Letzter Beitrag: Friedolin
  Datentyp eines Elements herausfinden Mrindfleisch 15 10.763 12.02.2021 08:26
Letzter Beitrag: Mrindfleisch
  Suche Ideen für den Aufbau eines neuen Programms TpunktN 4 3.827 17.12.2020 11:23
Letzter Beitrag: MScz

Gehe zu: