Per Standardeinstellung konfiguriert LabVIEW VIs für die ablaufvariante Ausführung. Wenn ein VI bei der ablaufvarianten Ausführung simultan von anderen VIs aufgerufen wird, kann nur einer dieser Aufrufe das SubVI ausführen. LabVIEW stellt sicher, dass Aufrufer des ablaufvarianten SubVIs das SubVI abwechselnd verwenden. Ein ablaufvariantes VI hat nur einen Datenbereich zum Speichern der Parameter seiner Aufrufer, sowie der temporären Werte, die während der Ausführung berechnet wurden, und der Zustände, die das ablaufinvariante VI zwischen Aufrufen annimmt. Wenn ein VI dagegen für die ablaufinvariante Ausführung konfiguriert wird, kann LabVIEW das ablaufinvariante VI von allen Aufrufern aus simultan ausführen. Bei der ablaufinvarianten Ausführung weist LabVIEW verschiedene Instanzen (Kopien) des Datenbereichs zu, so dass jede Aufrufstelle bzw. Verwendung eines SubVIs auf dem Blockdiagramm des Aufrufers simultan und parallel ausgeführt werden kann. Jede Aufrufstelle verwendet eine eigene Kopie des Datenbereichs.

Hinweis (FPGA-Modul) FPGA-VIs sind per Voreinstellung ablaufinvariant.

Arten der ablaufinvarianten Ausführung

In LabVIEW gibt es die folgenden Arten von ablaufinvarianten VIs:

  • Ablaufvariante Ausführung—LabVIEW weist für alle Instanzen des SubVIs einen einzigen Datenraum zu.
  • Ablaufinvariante Ausführung mit gemeinsam genutzter Kopie—LabVIEW stellt einen Pool mit Kopien des Datenraums her, der ursprünglich von einer Kopie belegt wurde. Dadurch können ihn mehrere Aufrufer gemeinsam nutzen. Wenn ein Aufrufer eine gemeinsam genutzte VI-Kopie aufruft, wird diese aus dem Pool entnommen und nach Abschluss der Ausführung wieder zurückgegeben. Wenn der Pool beim Aufrufen einer gemeinsam genutzten VI-Kopie leer ist, wird für diesen Aufruf eine neue Kopie erstellt und nach Abschluss der Ausführung in den Pool gegeben. Der Pool wird dadurch erweitert.
  • Ablaufinvariante Ausführung mit vorbelegter Kopie—LabVIEW weist für jede Verwendung des SubVIs eine separate, nicht gemeinsam nutzbare Kopie des Datenraums zu.

Die Einstellungen zur Ablaufinvarianz für ein VI können auf der Seite Ausführung im Dialogfeld Eigenschaften für VI vorgenommen werden.

Auswahl der Art der ablaufinvarianten Ausführung

Hinweise Ablaufvariante Ausführung Ablaufinvariante Ausführung mit gemeinsam genutzter Kopie Ablaufinvariante Ausführung mit vorbelegter Kopie
Bietet die Möglichkeit zum Erhalten von Zuständen, z. B. in nicht initialisierten Schieberegistern Bewahrt eine einzelne Instanz des Datenraums und nutzt seinen Zustand in allen Aufrufstellen. Bewahrt nicht den Zustand—Jede Aufrufstelle ruft nach dem Zufallsprinzip den Datenraum einer Kopie aus dem Pool von Kopien auf. Dabei ist es möglich, dass mehrere Aufrufstellen einen Zustand teilen. Erhält den Zustand für jede Aufrufstelle—Jede Aufrufstelle hat ihre eigene separate und spezifische Kopie.
Determinismus für mehrere gleichzeitig aufrufende VIs Aufrufstellen können von simultanen Aufrufern in eine Warteschlange verwiesen werden—Die für eine Instanz eines SubVIs benötigte Zeit bis zur Ausführung variiert je nach Anzahl der anderen Instanzen, die zuvor ausgeführt werden müssen. Mögliche Wartezeit—Aufrufstellen müssen möglicherweise auf die Erstellung einer neuen Kopie warten, wenn der Kopien-Pool leer ist. Wenn der Pool nicht leer ist, kann das Entnehmen und Zurücklegen der Kopie zu nichtdeterministischen Verzögerungen führen. Keine Wartezeit—Vor der Ausführung wird jeder Aufrufstelle eine Kopie zugewiesen. Dies ermöglicht eine deterministische Speicherauslastung und Ausführungsgeschwindigkeit.
Overhead ohne simultan aufrufende VIs Medium—LabVIEW muss auf simultane Aufrufer prüfen. Am höchsten—LabVIEW muss Kopien atomisch (komplett oder gar nicht) aus dem Pool entnehmen und in diesen zurückgeben. Aufrufe müssen warten, bis LabVIEW eine Kopie in den Pool eingefügt hat. Am geringsten—LabVIEW hat bereits eine Kopie für jede Aufrufstelle vorausbestimmt.
Speicherauslastung Am geringsten—LabVIEW weist nur einen Datenraum für das SubVI zu. Mittel—LabVIEW muss nur für die maximale Anzahl simultan ausführender Instanzen Kopien zuweisen. Am höchsten—LabVIEW muss eine Kopie des Datenraums für jede Instanz des SubVIs zuweisen.
Hinweis (FPGA-Modul) Gemeinsam genutzte Kopien ablaufinvarianter VIs und vorbelegte Kopien ablaufinvarianter VIs verhalten sich in FPGA-VIs identisch.

Asynchrones Aufrufen mehrerer Instanzen eines ablaufinvarianten VIs

Weitere Informationen zum asynchronen Aufrufen von ablaufinvarianten VIs finden Sie im Abschnitt Asynchrones Aufrufen mehrerer VI-Instanzen zur parallelen Ausführung.

Anzeigen des Frontpanels der Kopie eines ablaufinvarianten VIs

Jede Kopie hat ein individuelles Frontpanel. Zur Anzeige des Frontpanels, wenn die Kopie nicht ausgeführt wird, klicken Sie doppelt auf die entsprechende Instanz des SubVIs. Sie können das ablaufinvariante VI auch so einstellen, dass das Frontpanel während der Ausführung geöffnet wird. In der Titelleiste des SubVIs steht (Kopie), um anzuzeigen, dass es sich bei dem VI um eine Kopie und nicht das Original handelt. Das Original-VI kann durch Auswahl von Ansicht»Beziehungen ermitteln»Ablaufinvariante Objekte in der Kopie aufgerufen werden. Zum programmatischen Öffnen der Frontpanel von Kopien während der Ausführung können Sie auch die Methode Frontpanel:Öffnen im SubVI verwenden. In der Titelleiste des SubVIs steht (Kopie), um anzuzeigen, dass es sich bei dem VI um eine Kopie handelt.

Sie können mit dem Frontpanel eines ablaufinvarianten VIs ganz ähnlich wie mit dem Frontpanel eines ablaufvarianten VIs arbeiten. Dafür gibt es folgende Möglichkeiten:

Beispiele für ablaufinvariante Ausführung

Die folgenden zwei Abschnitte beschreiben Beispiele für ablaufinvariante VIs, die warten und Daten nicht gemeinsam nutzen.

Sicherstellen der simultanen Ausführung von SubVI-Instanzen

Im folgenden Blockdiagramm wird der Benutzer über die Mittagszeit und Pausenzeit informiert. Die VI-Einstellungen zur Ablaufinvarianz für das VI "Alarm Timer" sind kritisch für die Ausgabe korrekter Ergebnisse.

Der Benutzer gibt eine Mittagszeit und eine Pausenzeit an. Für dieses Beispiel sei angenommen, dass Mittagszeit 12 Uhr und Pausenzeit 10 Uhr ist.
Das VI "Alarm Timer" wartet auf die angegebene Zeit. Da sich die Instanzen des VIs "Alarm Timer" in parallelen Blockdiagrammabschnitten befinden, kann nicht bestimmt werden, welche Instanz zuerst ausgeführt wird. Es sei angenommen, dass der Timer für Mittagszeit zuerst ausgeführt wird.

Wenn das VI "Alarm Timer" für die ablaufvariante Ausführung konfiguriert ist, kann der Timer Pausenzeit erst um 12 Uhr ausgeführt werden, da er warten muss, bis die Ausführung von Mittagszeit beendet ist. Diese Verzögerung verhindert, dass der Timer Pausenzeit einen Alarm um 10 Uhr auslöst. Um sicherzustellen, dass beide Instanzen des SubVIs gleichzeitig ausgeführt werden und den Alarm zur entsprechenden Zeit auslösen können, muss das VI "Alarm Timer" für eine Art der ablaufinvarianten Ausführung konfiguriert werden.

Speichern von Daten zwischen mehreren Aufrufen jeder Instanz eines SubVIs

Um den Zustand zwischen Aufrufen von einer bestimmten Aufrufstelle an ein SubVI aufrechtzuerhalten, muss die ablaufinvariante Ausführung mit vorbelegter Kopie verwendet werden. Erstellen Sie z. B. ein SubVI "ExpAvg", das den laufenden exponentiellen Mittelwert der letzten vier Messwerte, die an das VI weitergeleitet wurden, berechnet. LabVIEW kann die letzten vier Messwerte als Zustand in einem nicht initialisierten Schieberegister in einer While-Schleife mit einer Iteration aufrechterhalten.

Das SubVI "ExpAvg" wird in einem weiteren VI zur Bestimmung des laufenden Mittelwerts von zwei Datenerfassungskanälen genutzt. Das VI überwacht die Spannungswerte an zwei Punkten und gibt den laufenden exponentiellen Mittelwert in einem Streifendiagramm aus. Das Blockdiagramm des VIs enthält zwei Instanzen des SubVIs "ExpAvg". Die Aufrufe erfolgen abwechselnd – einer für Kanal 0 und einer für Kanal 1. Kanal 0 wird zuerst ausgeführt. Ist das SubVI "ExpAvg" nicht ablaufinvariant, verwendet der Aufruf von Kanal 1 den Mittelwert, der durch den Aufruf von Kanal 0 ermittelt wurde, und der Aufruf von Kanal 0 verwendet den Mittelwert, der durch den Aufruf von Kanal 1 ermittelt wurde. Wird das SubVI "ExpAvg" ablaufinvariant erstellt, kann jeder Aufruf unabhängig ausgeführt werden, ohne Daten auszutauschen.

Überschreiben von Einstellungen zur Ablaufinvarianz für SubVIs in zeitgesteuerten Strukturen

(Real-Time, Windows) Sie können LabVIEW so konfigurieren, dass Kopien eines ablaufinvarianten VIs in einer zeitgesteuerten Schleife oder Sequenz entweder vorbelegt oder gemeinsam genutzt werden. Sie können z. B. beim Einfügen eines ablaufinvarianten VIs mit gemeinsam genutzten Kopien in eine zeitgesteuerte Schleife oder Sequenz diese so einstellen, dass Kopien für Instanzen des ablaufinvarianten VIs, die in der Struktur aufgerufen werden, vorbelegt werden. Instanzen von ablaufinvarianten VIs, die außerhalb der Struktur aufgerufen werden, verwenden Kopien weiterhin gemeinsam. Zum Festlegen der Zuweisung eines VIs in einer zeitgesteuerten Schleife oder Struktur klicken Sie mit der rechten Maustaste auf die Struktur und wählen Sie Zuweisung gemeinsam genutzter Kopien und dann eine der folgenden Optionen aus:

  • Automatisch—LabVIEW entscheidet je nach Kontext der Struktur, ob die Einstellung Vorbelegen oder Nach Bedarf zuweisen lautet. LabVIEW hängt die Kontextmenüoption an, die für die ausgewählte Einstellung steht. Wenn z. B. Vorbelegen ausgewählt ist, heißt der Menüpunkt Automatisch (Vorbelegen).
  • Vorbelegen—LabVIEW erstellt eine VI-Kopie für jeden Aufruf des ablaufinvarianten VIs in der Struktur. In der zeitgesteuerten Schleife oder Struktur wird das Symbol angezeigt, um zu verdeutlichen, dass Kopien für ablaufinvariante VIs in der Struktur vorbelegt werden.
  • Nach Bedarf zuweisen—LabVIEW erstellt erst dann eine VI-Kopie, wenn das ablaufinvariante VI in der Struktur aufgerufen wird. In der zeitgesteuerten Schleife oder Struktur wird das Symbol angezeigt, um zu verdeutlichen, dass Kopien für ablaufinvariante VIs in der Struktur gemeinsam benutzt werden.

Fehlersuche bei ablaufinvarianten VIs

Zur Fehlersuche in einem ablaufinvarianten VI wählen Sie Datei»VI-Einstellungen, um das Dialogfeld Eigenschaften für VI anzuzeigen. Wählen Sie dann aus dem Pulldown-Menü Ausführung aus und aktivieren Sie die Option Fehlerbehandlung aktiviert.

Zur Fehlersuche in einer bestimmten Instanz eines VIs mit vorbelegten Kopien öffnen Sie diese Instanz des SubVIs. Sie können die VI-Kopie zwar nicht bearbeiten, aber Sie können das Blockdiagramm der Kopie zur Fehlersuche verwenden. Dazu können Sie zum Beispiel Haltepunkte, Sonden, die Highlight-Funktion oder die Einzelschrittausführung verwenden.

Zur Fehlersuche in einer Instanz eines VIs mit gemeinsam genutzten Kopien müssen Haltepunkte, Sonden und die Highlight-Funktion im Quell-VI und nicht in der VI-Kopie verwendet werden. VI-Kopien speichern diese Einstellungen nicht zwischen Aufrufen.

Hinweis Bei Anwendungen und DLLs können keine ablaufinvarianten Frontpanel auf Fehler untersucht werden, die von der Funktion VI-Referenz öffnen erstellt wurden. Ebenso wenig können ablaufinvariante Frontpanel geprüft werden, die als Einstiegspunkte für LabVIEW-DLLs dienen.