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 

Reentrant aber was ist mit den subVIs?



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!

06.07.2009, 17:01
Beitrag #1

gottfried Offline
LVF-Guru
*****


Beiträge: 1.735
Registriert seit: Mar 2007

2019
2004
EN

20**
Oesterreich
Reentrant aber was ist mit den subVIs?
Verstehe ich das richtig. Ich definiere ein SubVI als reentrant und kann mich daruf verlassen, dass die internen Variablen zwischen den Calls nicht verändert werden (nebenbei... sonst noch was ?). Jetzt wir es für mich komplizier: was ist mit den SubVIs dieses SubVIs? Wenn ich scharf nachdenke, müssen die auch reentrant sein falls sie interne Variable haben? Jetzt wird es für mich noch komplexer: was ist mit den vorhandenen VIs? Ich verwende z.B. BesselFilterPtByPt - das muss eine intere Variable (und nicht nur eine haben). OK, ich habe nachgesehen die ist reentrant damit habe ich eine halbe Unklarheit weniger, denn denselben Datenstrom filtere ich beim Start wenn die Daten aus der Datenbank kommen an der Stelle A und wenn die Messung läuft an der Stelle B - fein, meiner Überlegung nach weiss also das zweite BesselFilterPtByPt nichts von seinem Vorgänger und baut mir einen Hacker in die liebliche Kurve - stimmt das? Zusätzlich habe ich nicht nur einen Datenstrom sondern vier und die treten meist in einer Schleife auf.

So, meiner Meinung nach habe ich mein eigenes FilterSubVI (das die Besselfunktion verwendet) der Einfachheit halber so umzuschreiben, dass es gleich ein ganzes Array von Datensätzen verarbeiten kann - fertig? Nein, die zweite Stelle im Programm, wo ich dasselbe machen möchte ist ahnungslos, dass in den Besselfunktionen schon interne Werte sind - oder?

Habe ich mich hinreichend umständlich ausgedrückt?


Phase Lesen aus der Datenbank: Laufende Verarbeitung:
Messwertstrom 1 -> BesselFilter Messwertstrom 1 -> BesselFilter
Messwertstrom 2 -> BesselFilter Messwertstrom 2 -> BesselFilter
Messwertstrom 3 -> BesselFilter Messwertstrom 3 -> BesselFilter
Messwertstrom 4 -> BesselFilter Messwertstrom 4 -> BesselFilter

Danke

Gottfried

mein wöchentlicher (eigenwilliger) Beitrag zur Innovation
http://innovation1.wordpress.com/
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
06.07.2009, 17:29
Beitrag #2

Kvasir Offline
LVF-Freak
****


Beiträge: 642
Registriert seit: May 2006

10
2004
DE_EN

0000
Oesterreich
Reentrant aber was ist mit den subVIs?
Ich habs nicht verstandenWink

Ich probier mich trotzdem:

Definierst du ein Vi als Reentrant, dann wird für jeden Aufruf (also jedes Erscheinen im BD) eine eigene Instanz aufgerufen, die unabhängig von jedem anderen Aufruf die Variablen speichert. Ein SubVi innerhalb einer Schleife zählt dabei jedoch nur als eine Instanz pro Schleife, nicht pro Durchlauf!
Konsequenterweise sind auch alle Vi's und Funktionen innerhalb eines Reentrant SubVis dadurch automatisch reentrant vom Standpunkt des übergeordneten SubVis, da für jede Instanz des SubVis auch eine Instanz der Funktion / des Vis im betreffenden SubVi aufgerufen wird.

Demnach ist die zweite Stelle völlig ahnungslos, dass in der Funktion schon Werte sind.

So ... somit stimme ich mit dir völlig überein (soweit ich dich richtig verstehe) und du hast das auch schon erkannt. Stellt sich nun die Frage, ob du nur sicherheitshalber gefragt hast, oder ob es in deinem Fall sich anders verhält, was mich stark wundern würdeSmile

Grüße

A few weeks of developement and testing can save a WHOLE afternoon in the library!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.07.2009, 18:40
Beitrag #3

schrotti Offline
LVF-Freak
****


Beiträge: 842
Registriert seit: Feb 2008

2009 - 2011
2006
kA

70180
Deutschland
Reentrant aber was ist mit den subVIs?
' schrieb:Definierst du ein Vi als Reentrant, dann wird für jeden Aufruf (also jedes Erscheinen im BD) eine eigene Instanz aufgerufen, die unabhängig von jedem anderen Aufruf die Variablen speichert. Ein SubVi innerhalb einer Schleife zählt dabei jedoch nur als eine Instanz pro Schleife, nicht pro Durchlauf!
Dazu muss dem VI aber auch ein eigener Speicherberiech zugewiesen werden. Da dies die Standardeinstellung ist fällt es vielleicht nicht auf.
' schrieb:Konsequenterweise sind auch alle Vi's und Funktionen innerhalb eines Reentrant SubVis dadurch automatisch reentrant vom Standpunkt des übergeordneten SubVis, da für jede Instanz des SubVis auch eine Instanz der Funktion / des Vis im betreffenden SubVi aufgerufen wird.
Da muss ich dir wiedersprechen. Es ein leichtes, mittels einer FGV Daten zweier Instanzen eines ablaufinvarianten VIs einem zweiten VI zur Verfügung zu stellen. Würde alle aufgerufenen SubVI ebenfalls ablaufinvariant sein, ginge das nicht. Anbei ein Beispiel.

Lv86_img
Sonstige .zip  Ablaufinvariant.zip (Größe: 17,9 KB / Downloads: 271)

Lv85_img
Sonstige .zip  85.zip (Größe: 17,49 KB / Downloads: 192)

Ist so natürlich nicht gerade sinnvoll, aber es wird klar, was ich sagen will.

Gruß Julius
Empfehlungen: expressionflow, LavaG , mooregoodideas, OpenG, JKI Blog
Tipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.07.2009, 16:10 (Dieser Beitrag wurde zuletzt bearbeitet: 07.07.2009 16:13 von gottfried.)
Beitrag #4

gottfried Offline
LVF-Guru
*****


Beiträge: 1.735
Registriert seit: Mar 2007

2019
2004
EN

20**
Oesterreich
Reentrant aber was ist mit den subVIs?
Danke für Eure Mühe,

ich (glaube) ich habs verstanden ... (oder?)
Nein ich verstehe das Beispiel nicht - bitte um eine Denkanleitung

Danke

Gottfried

mein wöchentlicher (eigenwilliger) Beitrag zur Innovation
http://innovation1.wordpress.com/
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.07.2009, 17:12
Beitrag #5

schrotti Offline
LVF-Freak
****


Beiträge: 842
Registriert seit: Feb 2008

2009 - 2011
2006
kA

70180
Deutschland
Reentrant aber was ist mit den subVIs?
Naja, wenn alle aufgerufenen SubVIs eines ablaufinvarianten VIs ebenfalls ablaufinvariant wären, würde eine FGV dort gar nicht erst funktionieren. Wie du im Beispiel siehst, rufen die zwei Instanzen eines ablaufinvarianten VIs eine FGV auf. Sie holen von der FGV den alten Wert, inkrementieren bzw dekremtieren ihn und übergeben ihn wieder der FGV. Das Main ruft die ebenfalls FGV auf, um an diese Daten zu kommen. Würde nun für jede Sub eine neue Instanz der FGV und eine für das Main in den Speicher geladen, würde das Beispiel so wohl nicht funktionieren.

Gruß Julius
Empfehlungen: expressionflow, LavaG , mooregoodideas, OpenG, JKI Blog
Tipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.07.2009, 08:29
Beitrag #6

gottfried Offline
LVF-Guru
*****


Beiträge: 1.735
Registriert seit: Mar 2007

2019
2004
EN

20**
Oesterreich
Reentrant aber was ist mit den subVIs?
habs verstanden

danke

mein wöchentlicher (eigenwilliger) Beitrag zur Innovation
http://innovation1.wordpress.com/
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.07.2009, 08:57 (Dieser Beitrag wurde zuletzt bearbeitet: 08.07.2009 09:00 von Lucki.)
Beitrag #7

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Reentrant aber was ist mit den subVIs?
' schrieb:Phase Lesen aus der Datenbank: Laufende Verarbeitung:
Messwertstrom 1 -> BesselFilter Messwertstrom 1 -> BesselFilter
Messwertstrom 2 -> BesselFilter Messwertstrom 2 -> BesselFilter
Messwertstrom 3 -> BesselFilter Messwertstrom 3 -> BesselFilter
Messwertstrom 4 -> BesselFilter Messwertstrom 4 -> BesselFilter
Wenn die 4 Messwertströme ein Array bilden, und Du willst die Bessel-Filterung in einer For-Schleife machen, dann muß jeder Index in der for-Schleife sein eigenes Besselfilter-Ikon haben. Also so, wobei jeder Case identisch ist:
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.07.2009, 09:09
Beitrag #8

gottfried Offline
LVF-Guru
*****


Beiträge: 1.735
Registriert seit: Mar 2007

2019
2004
EN

20**
Oesterreich
Reentrant aber was ist mit den subVIs?
danke - ist schon positive Geschichte (mit Eurer Hilfe)

mein wöchentlicher (eigenwilliger) Beitrag zur Innovation
http://innovation1.wordpress.com/
Webseite des Benutzers besuchen 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
  Reentrant VI´s debuggen NoWay 2 6.356 07.07.2015 13:59
Letzter Beitrag: Kiesch
  non-reentrant Sub-VIs in unabhängigen Applikationen Nordvestlys 2 2.510 02.03.2015 11:44
Letzter Beitrag: Nordvestlys
  Verständnisfrage zu reentrant VI´s NoWay 1 3.977 27.05.2014 09:50
Letzter Beitrag: gottfried
  reentrant und subpanel raeuberfisch 4 3.738 01.03.2013 06:56
Letzter Beitrag: raeuberfisch
  reentrant Frage gottfried 3 5.148 07.09.2010 08:37
Letzter Beitrag: gottfried
  Reentrant Vis und Netzwerkvariablen zusammen nutzbar? phoenics 3 5.760 08.04.2010 06:59
Letzter Beitrag: cb

Gehe zu: