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 / functional Vi's



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!

17.11.2008, 17:51 (Dieser Beitrag wurde zuletzt bearbeitet: 17.11.2008 17:52 von Kvasir.)
Beitrag #1

Kvasir Offline
LVF-Freak
****


Beiträge: 642
Registriert seit: May 2006

10
2004
DE_EN

0000
Oesterreich
Reentrant / functional Vi's
Hallo,

es ist wieder einmal soweit, dass mich ein Problem(chen) quält, das eurer Hilfe bedarf.

Folgende skizzenhafte Problemstellung:
Ich habe ein Programm geschrieben, das im Wesentlichen ein Eingangssignal über eine Filterbank mehrerer Bandpassfilter in verschiedene Frequenzbereiche aufspaltet. Mit diesen typischerweise 10-12 Signalen arbeite ich dann weiter.
Das ganze läuft online - ich bekomme also ständig (soll heißen kontinuierlich) Signale, die ich filtere und verarbeite.

Dabei ergibt sich:

a) Filterfunktionen und einige andere Operationen in meiner Signalverarbeitung erfordern für den korrekten Betrieb einige Werte aus dem vorherigen Durchlauf.
b) die Filterbank muss auf jeden Fall variabel sein. Dies führt dazu, dass ich die Filter Vis in eine For Loop packe (muss?!). Das ist prinzipiell ja kein Problem, aber ich kann dadurch meine Signalverarbeitung nicht mehr einfach auf Reentrant stellen, da innerhalb einer ForSchleife nicht für jeden Durchlauf eine Instanz erstellt wird.

Ich löse das zur Zeit mit Hilfe von funktionalen Vi's. Das klappt auch. Allerdings bin ich damit nicht ganz glücklich, da meine Anzahl von nichtinitialisierten Schieberegistern (zur Datenübergabe) irgendwie ins (gefühlte) unendliche steigt.
Wenn ich pro Kanal 2 1d Arrays speichern muss, dann sind das schon 2 2dim Arrays zur Speicherung. (1d array x Anzahl Kanal = 2d array)

Meine Frage also: Gibt es irgendeine elegante Lösung, die ich hier anwenden könnte? Kann man reentrant innerhalb einer Forschleife aktivieren? Wie würdet ihr sowas angehen?

Anbei ein Screenshot von einem typischen functional Vi bei mir. In diesem Fall ein 2d Array, der die Daten mitschleift.

Besten Dank mal im VorausSmile


Angehängte Datei(en) Thumbnail(s)
   

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
17.11.2008, 18:17 (Dieser Beitrag wurde zuletzt bearbeitet: 17.11.2008 18:23 von eg.)
Beitrag #2

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Reentrant / functional Vi's
Diese Frage hat mich auch sehr gequält. Ich glaube wenn du ein VI als reentrant definierst, wird nur beim Erstaufruf eine neue Instanz erzeugt, bei weiteren Aufrufen (am selben Platz im Block Diagramm) wird diese Instanz weiter benutzt.
Ansonsten würden die ganzen Filter, die uninitialisierten Schieberegister benutzen und dabei reentrant sind nicht funktionieren.
Kann das jemand bestätigen?

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.11.2008, 18:40
Beitrag #3

Kvasir Offline
LVF-Freak
****


Beiträge: 642
Registriert seit: May 2006

10
2004
DE_EN

0000
Oesterreich
Reentrant / functional Vi's
Ja genau. Ich denke auch, dass das so funktioniert.

Mein Problem ist eben nur, dass ich in einer Schleife arbeite und sozusagen für jeden Index eine Instanz brauche.

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
17.11.2008, 18:55
Beitrag #4

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Reentrant / functional Vi's
' schrieb:Ja genau. Ich denke auch, dass das so funktioniert.

Mein Problem ist eben nur, dass ich in einer Schleife arbeite und sozusagen für jeden Index eine Instanz brauche.

Geht es vielleicht damit? Es nennt sich Call Setup.


Angehängte Datei(en) Thumbnail(s)
   

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.11.2008, 19:53
Beitrag #5

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.695
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Reentrant / functional Vi's
' schrieb:wenn du ein VI als reentrant definierst, wird nur beim Erstaufruf eine neue Instanz erzeugt, bei weiteren Aufrufen (am selben Platz im Block Diagramm) wird diese Instanz weiter benutzt.
Genau davon geht ich aus. So soll es meiner Meinung nach ja auch sein.

Hab ihr schon mal versucht, das ganze über VI-Server zu machen? Array mit Referenzen auf das eine VI. Da die Referenzen unterschiedlich sind, sollten auch trotz "Einmaligkeit im BD" mehrere Instanzen geöffnet werden.

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
18.11.2008, 10:01
Beitrag #6

Kvasir Offline
LVF-Freak
****


Beiträge: 642
Registriert seit: May 2006

10
2004
DE_EN

0000
Oesterreich
Reentrant / functional Vi's
' schrieb:Genau davon geht ich aus. So soll es meiner Meinung nach ja auch sein.

Hab ihr schon mal versucht, das ganze über VI-Server zu machen? Array mit Referenzen auf das eine VI. Da die Referenzen unterschiedlich sind, sollten auch trotz "Einmaligkeit im BD" mehrere Instanzen geöffnet werden.

Mit Vi-Server hab ich mich überhaupt noch nicht befasst. Werde das morgen (wenn ich wieder am LV Arbeitsplatz bin) mal ansehen.

Wie sieht es denn dort mit Performance aus? Bin schon recht knapp mit Ressourcen. Viel langsamer darf meine Signalverarbeitung nicht mehr werden.

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
18.11.2008, 10:29
Beitrag #7

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.695
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Reentrant / functional Vi's
' schrieb:Wie sieht es denn dort mit Performance aus? Bin schon recht knapp mit Ressourcen.
Keine Ahnung. Bin immer nicht so knapp mit Ressourcen. Tongue

Ich gehe aber davon aus, dass das Management im VI-Server unerheblich ist.

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
18.11.2008, 12:03
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
Reentrant / functional Vi's
Also das Problem hatte ich auch, aber da habe ich nicht lange herumgrübelt, sondern einfach dafür gesorgt, daß in der Forschleife jeder Kanal sein eigenes Filter-Ikon bekommt - und schon funktionierts.
    <div align='center'></div>
Wenn die Kanalzahl variabel ist, muß man natürlich zumindest wissen, wie viele Kanäle maximal zu erwarten sind und entprechend viele Cases einrichten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.11.2008, 15:11
Beitrag #9

Kvasir Offline
LVF-Freak
****


Beiträge: 642
Registriert seit: May 2006

10
2004
DE_EN

0000
Oesterreich
Reentrant / functional Vi's
' schrieb:Also das Problem hatte ich auch, aber da habe ich nicht lange herumgrübelt, sondern einfach dafür gesorgt, daß in der Forschleife jeder Kanal sein eigenes Filter-Ikon bekommt - und schon funktionierts.
[attachment=42934:temp2.png]<div align='center'></div>
Wenn die Kanalzahl variabel ist, muß man natürlich zumindest wissen, wie viele Kanäle maximal zu erwarten sind und entprechend viele Cases einrichten

Das ist wirklich ein cleverer Ansatz. Auf die Idee wär ich nicht gekommen.
Die maximale Anzahl kann ich schon angeben, daran wirds nicht scheitern.

Vielen Dank für den Tip.

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
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Reentrant VI´s debuggen NoWay 2 6.789 07.07.2015 13:59
Letzter Beitrag: Kiesch
  non-reentrant Sub-VIs in unabhängigen Applikationen Nordvestlys 2 2.754 02.03.2015 11:44
Letzter Beitrag: Nordvestlys
  Verständnisfrage zu reentrant VI´s NoWay 1 4.260 27.05.2014 09:50
Letzter Beitrag: gottfried
  reentrant und subpanel raeuberfisch 4 4.107 01.03.2013 06:56
Letzter Beitrag: raeuberfisch
  reentrant Frage gottfried 3 5.453 07.09.2010 08:37
Letzter Beitrag: gottfried
  functional global mit Bild gottfried 3 4.000 13.07.2010 21:48
Letzter Beitrag: gottfried

Gehe zu: