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 

mehrere Instanzen von VIs bzw VISA



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!

22.05.2011, 11:43
Beitrag #1

birdfire
Unregistered


 







mehrere Instanzen von VIs bzw VISA
Hallo,

ich möchte mit folgendem Treiber mehere Multimeter parallel auslesen:
http://sine.ni.com/apps/utf8/niid_web_di...el_id=5217

Ich hab ein Projekt mit allen sub-VIs erstellt und lasse zwei Instanzen der SubVIs in While-Schleifen zum Auslesen der Seriellen Schnittstelle ablaufen. (siehe Example.vi

Öffne ich jetzt das subVi "Read" so stelle ich fest, dass dieses Sub-VI ständig zwischen den Com-Ports hin und her springt.
Ich dachte, dass mehrere Instanzen von Sub-VIs unabhängig von einander ausgeführt werden.....oder hängt das mit VISA zusammen?!

Achja, ich bin blutiger Anfänger.....Blush


Angehängte Datei(en)
2010 .zip  Gesamtprojekt.zip (Größe: 82,08 KB / Downloads: 169)
Diese Nachricht in einer Antwort zitieren to top
Anzeige
22.05.2011, 15:53
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: mehrere Instanzen von VIs bzw VISA
(22.05.2011 11:43 )birdfire schrieb:  Ich dachte, dass mehrere Instanzen von Sub-VIs unabhängig von einander ausgeführt werden.....
Oh nein, da unterliegst du einem Irrtum. Mehrere Instanzen eines Sub-VIs können in der Regel NICHT parallel und unabhängig voneinander ausgeführt werden. Es wird immer nur eine Instanz desselben Sub-VIs ausgeführt. Das ist auch gut so, sonst würden solche Sachen wie FGV (Funktionale Globale Variable) nicht funtionieren.

Ausnahme: Du stellst das Sub-VI in den VI-Eigenschaften auf Reentrant.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.05.2011, 16:40
Beitrag #3

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: mehrere Instanzen von VIs bzw VISA
Instanzen werden per se immer parallel ausgeführt.

Platziert man ein und das selbe SubVI (auf LabVIEW-Deutsch: nicht reentrant) mehrere Male auf einem Blockdiagramm, so ist das nur eine einzige Instanz. Demzufolge dürfen diese SubVIs nicht parallel ausgeführt werden. In textorientiert heißt das: Eine Instanz entspricht der Deklaration einer "Variablen". Alleine das Hinschreiben des Namens der Instanz (das entspricht nämlich dem Positionieren eines SubVIs auf einem BD), erstellt noch keine weitere Instanz.

Instanzen werden in LabVIEW durch den Parameter "Reentrante Ausführung" beeinflusst. Ist ein SubVI als reentrant definiert, dann wird bei jedem Platzieren (beachte: bei jedem Plazieren) des SubVIs eine Instanz erzeugt.

Außerdem muss beachtet werden, dass der Reentrant-Status nur für das "Main-SubVI" gilt, nicht für die SubVIs, die innerhalb dieses "Main-SubVIs" aufgerufen werden. Muss aus applikationstechnischen Gründen die gesamte VI-Hierarchie (ggf. auch nur Teile der SubVIs) reentrant sein, so muss der Reentrant-Status bei jedem entsprechendem SubVI eingestellt 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
22.05.2011, 19:04 (Dieser Beitrag wurde zuletzt bearbeitet: 22.05.2011 19:07 von Lucki.)
Beitrag #4

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: mehrere Instanzen von VIs bzw VISA
(22.05.2011 16:40 )IchSelbst schrieb:  Platziert man ein und das selbe SubVI (auf LabVIEW-Deutsch: nicht reentrant) mehrere Male auf einem Blockdiagramm, so ist das nur eine einzige Instanz. Demzufolge dürfen diese SubVIs nicht parallel ausgeführt werden.

Jens sagt aber, sie können gar nicht parallel ausgeführt werden, d.h Labview tut so etwas nicht. Das entpricht auch meinen Erfahrungen.

Ich würde für das permanenten Auslesen in einer Schleife erst mal das dauernde Öffnen und Schließen der Schnittellen aus den Schleifen herausnehmen. (Wenn ich ein Computer wäre und mir würde das angetan, ich müßte den Verstand verlieren)

Was ich mit Entsetzen gesehen habe: Beide Schnittstellen sind auf COM1 eingestellt. Das darf doch nicht wahr sein, oder?

Es sei noch angemerkt, daß die beiden Fragen reentrant oder nicht und gleichzeitige Auführung ja oder nein eigentlich nichts miteiander zu tun haben.
Wenn ein Subvi nicht reeantrant ist und es anthält Merker, z.B in Form nicht initialisierter Schieberegister, dann kommt es in der Regel zur Katastrophe, wenn das Ikon in einem VI mehrere Male vorkommt. Und das, obwohl beide sicher nicht gleichzeitig ausgeführt werden.

Eine sichere Methode, daß sich die beiden Reads nicht ins Gehege kommen: die sequentielle Ausfürung erzwingen:

   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.05.2011, 20:29
Beitrag #5

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: mehrere Instanzen von VIs bzw VISA
(22.05.2011 19:04 )Lucki schrieb:  
(22.05.2011 16:40 )IchSelbst schrieb:  Platziert man ein und das selbe SubVI (auf LabVIEW-Deutsch: nicht reentrant) mehrere Male auf einem Blockdiagramm, so ist das nur eine einzige Instanz. Demzufolge dürfen diese SubVIs nicht parallel ausgeführt werden.
Jens sagt aber, sie können gar nicht parallel ausgeführt werden, d.h Labview tut so etwas nicht. Das entpricht auch meinen Erfahrungen.
Können nicht ... - Dürfen nicht ... - das ist doch im Prinzip egal. Wichtig zu wissen ist: Ein SubVI, das NICHT reentrant definiert ist, wird immer nur einmal gleichzeitig ausgeführt, egal wie oft es innerhalb einer ganzen Programmhierachie vorkommt, selbst wenn es vom Code her mehrfach parallel ausgeführt werden könnte.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
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
  VISA: (Hex 0xBFFF0015) bei VISA read und im VISA Test Panel rick 3 13.363 10.11.2013 12:16
Letzter Beitrag: Y-P
  Mehrere Schleifen - Auslesen über VISA de_pablo 1 3.721 28.10.2010 08:55
Letzter Beitrag: GerdW
  mehrere ACSII Befehle mit VISA Write verknüpfen!? abdelo 11 11.236 26.10.2010 13:51
Letzter Beitrag: Lucki
  visa write; visa read zeitgesteuert ThomasDipl 8 10.398 20.11.2008 06:46
Letzter Beitrag: Achim

Gehe zu: