Umfangreiche LabVIEW-Anwendungen mit dem Projekt-Explorer optimal verwalten

Überblick

Dieser Artikel beschreibt die Funktionen des LabVIEW-Projekts und zeigt auf, wie Sie Ihre LabVIEW-Anwendungen optimal verwalten und organisieren. Daraus lassen sich Richtlinien und Abläufe für die Anwendungsentwicklung ableiten. So wird gewährleistet, dass eine Anwendung für eine große Anzahl an VIs und für mehrere Entwickler skalierbar ist.

Inhalt

Definition und Identifikation von Anwendungsdateien

Das Erstellen von Richtlinien zum Speichern und Verwalten von Dateien setzt voraus, dass bekannt ist, wie die Anwendung strukturiert sein wird, wie die Funktionalität aufgeteilt wird und welche Dateien zusätzlich zum Quellcode verwaltet werden sollen. Deshalb sollte man sich genug Zeit für die Strukturierung der Anwendung nehmen. Auch die Abstimmung mit den einzelnen Entwicklern ist wichtig, um Speicherorte für den Quellcode und zusätzliche Dateien oder Ressourcen festzulegen.

Organisation von Dateien auf der Festplatte

Die Organisation von Dateien auf der Festplatte sollte keinesfalls erst nachträglich bedacht werden. Mangelhafte Planung großer Anwendungen führt dazu, dass Zeit damit vertan wird, Dateien während der Entwicklung zu verschieben und umzubenennen. Wenn eine große Zahl von Dateien im Spiel ist, können solche Operationen zudem die Integrität von Links innerhalb von LabVIEW-Anwendungen gefährden und so auch das Verhalten der ganzen Anwendung beeinträchtigen. Werden also entsprechende Vorgehensweisen so früh wie möglich festgelegt, kann das Risiko, das das Verschieben großer Datensätze zu einem späteren Zeitpunkt mit sich bringt, minimiert werden. Außerdem wird damit sichergestellt, dass Entwickler bestimmte Dateien leicht finden und stets wissen, wo neue Dateien abzulegen sind.

Viele Softwareentwickler wenden bereits solche Methoden und Systeme an, um die Datenablage effizient zu gestalten. Dafür kommen verschiedene Möglichkeiten in Frage. Die folgenden Praktiken werden häufig genutzt und haben sich auch für große Anwendungen bewährt. Die Ablage von Dateien in einem einzigen Stammverzeichnis garantiert, dass sie alle leicht zugänglich sind. Durch eine standardisierte Vergabe von Dateinamen wissen Anwender, wo sie bestehende Dateien finden und neue ablegen können. Oft werden auf der Festplatte Ordner genutzt, um Dateien zu gruppieren oder zu kategorisieren, so dass SubVIs von aufrufenden VIs getrennt werden. Umgekehrt erschweren allzu flache Verzeichnisstrukturen das Auffinden von Dateien oder Top-Level-VIs und sind bereits bei einer kleineren Anzahl von VIs nicht empfehlenswert. Die Kriterien, die meist für die Gruppierung solcher Dateien verwendet werden, sind eine Kombination aus Dateifunktionalität, Typ und hierarchischer Ebene in der Anwendung. Die Organisation auf der Festplatte sollte die Beziehung von Dateien und Programmcode in der Anwendung widerspiegeln.

Abbildung 1: Dieser Screenshot zeigt eine Beispielanwendung, die ohne den Projekt-Explorer aus LabVIEW auf der Festplatte angelegt wurde

Abbildung 1 zeigt Konzepte, wie die Organisation aller Dateien in einem Stammverzeichnis und die Trennung von Top-Level- und SubVIs erfolgt und verschiedene Kriterien, nach denen Dateien einzelnen Ordnern zugeordnet werden.

Empfohlene Vorgehensweisen

  • Speichern aller Dateien in einem Stammverzeichnis
  • Aufteilung der Anwendung in logische Abschnitte handlicher Größe
  • Logische und beschreibende Vergabe von Namen
  • Trennung der Top-Level-VIs von anderem Quellcode
  • Beginn mit einem High-Level-Blockdiagramm, das die Hauptkomponenten der Anwendung enthält (z. B. separate Rahmen für Konfiguration, Erfassung, Analyse, Datendarstellung, Datenprotokollierung und Fehlerbehandlung)
  • Gruppierung oder Anordnung von Dateien anhand im Vorfeld festgelegter Kriterien

Sonderfälle: dynamische Abhängigkeiten und verteilter Code

Dynamisch geladene Dateien stellen eine zusätzliche Herausforderung dar. Da auf diese Dateien nicht statisch von aufrufenden VIs in der Anwendung verlinkt wird, können sie leicht vergessen werden, wenn der Speicherort gewechselt oder Pfade zu Dateien in irgendeiner Weise verändert werden. Dies fällt dann unter Umständen erst sehr viel später, nämlich bei der Ausführung der Anwendung auf.

Um die Schwierigkeiten zu minimieren, die entstehen, wenn man sicherstellen möchte, dass alle dynamischen Dateien stets am richtigen Ort liegen, können sie in einen separaten Ordner gruppiert und dann mit relativen Pfaden verlinkt werden. Muss die Anwendung verschoben oder verteilt werden, sind die Dateien dann auf jeden Fall vorhanden.

Teilen sich große Anwendungen Programmcode, muss beachtet werden, wo diese Dateien gespeichert sind und dass Änderungen andere aufrufende VIs irrtümlich beeinflussen könnten. Programmcode wird häufig wiederverwendet. Dies ist sinnvoll, weil man dadurch von bereits vollendeter Arbeit profitiert und die Entwicklung beschleunigt wird. So erfordern ähnliche Anwendungen unter Umständen die gleiche Funktionalität, oder verschiedene Zweige von Code beziehen sich auf denselben Satz gängiger VIs. Der Bezug auf den gleichen Programmcode erfordert oftmals, dass diese Dateien außerhalb des Stammverzeichnisses mindestens einer Anwendung abgelegt sind. Sollen allerdings Veränderungen an diesen gängigen VIs vorgenommen werden, ist es ratsam, für den Test und die spätere Integration lokale Kopien zu erstellen.

Darüber hinaus können Programme zur Quellcodeverwaltung genutzt werden, um mehrere Versionen von Software zu verfolgen und die Änderungen zu identifizieren, die zwischen mehreren Ausführungen erfolgen. Weitere Informationen über dieses Thema bietet das Whitepaper „Einsatz von LabVIEW mit Programmen zur Quellcodeverwaltung“.

Empfohlene Vorgehensweisen

  • Ablegen dynamisch geladener Dateien in einem gemeinsamen Ordner
  • Bezug auf dynamische Abhängigkeiten durch relative Pfade
  • Minimieren von Änderungen an Code, der von mehr als einer Anwendung genutzt wird
  • Einbeziehen von Zeitaufwand für Verwaltung und Integration von Veränderungen an verteiltem Code
  • Nutzen von Programmen zur Quellcodeverwaltung

Zusammenfassung: Organisation von Dateien auf Festplatte

Die richtige Organisation von Anwendungen auf der Festplatte ist von großer Bedeutung, denn nur so kann gewährleistet werden, dass eine Entwicklung mit zunehmender Größe und VI-Anzahl skaliert werden kann. Dies ist allerdings nur der erste Schritt in einem Softwareentwicklungsprozess. Darüber hinaus gibt es immer noch viele Herausforderungen, denen mit anspruchsvolleren Methoden und Werkzeugen, wie etwa dem LabVIEW-Projekt-Explorer, begegnet werden kann.

Der LabVIEW-Projekt-Explorer

Der Projekt-Explorer wurde mit LabVIEW 8.0 erstmals eingeführt, um Entwicklern eine Ansicht der Dateien, die sie für eine Anwendung brauchen, auf Systemebene zu ermöglichen. Das Ziel des Projekt-Explorers besteht darin, Entwickler beim Auffinden und Organisieren von Dateien aus der Entwicklungsumgebung zu unterstützen und sie mit zusätzlicher Funktionalität auszustatten, welche die Verwaltung und Entwicklung großer LabVIEW-Anwendungen erleichtern. Seit der Veröffentlichung des Projekt-Explorers hat National Instruments diverse neue Funktionen integriert und so auch auf Kundenfeedback reagiert.

Abbildung 2: Dieses Projekt zeigt, wie die Anwendung aus Abbildung 1 im LabVIEW-Projekt-Explorer organisiert werden kann.

Mithilfe von LabVIEW-Projekten können LabVIEW- und andere Dateien in Gruppen geordnet, Build-Spezifikationen erstellt, Dateien heruntergeladen und auf andere Systeme übertragen werden. Beim Speichern eines LabVIEW-Projekts wird eine Projektdatei erstellt (.lvproj), die Referenzen auf Dateien auf der Festplatte, Variablen, Hyperlinks, Konfigurations-, Build- und Distributionsinformationen usw. enthält.

Der LabVIEW-Projekt-Explorer vervielfältigt oder kopiert Dateien nicht an neue Speicherorte auf der Festplatte. Stattdessen bietet er eine neue Methode für die Anzeige von Dateien auf Festplatte und stellt Shortcuts zu den Speicherorten der Dateien auf der Festplatte bereit. Der LabVIEW-Projekt-Explorer ermöglicht:

  • Einfache Navigation zu und Zugriff auf Dateien, ohne LabVIEW zu verlassen
  • Individuelle Anpassung und Filterung der Organisation von Dateien
  • Bewahrung von Links bei Verschieben oder Umbenennen von Dateien auf Festplatte
  • Vermeidung, Erkennen und Beheben von falschen Links 
  • Verwaltung von Code für spezifische Hardwarezielsysteme1
  • Verwaltung von Build-Konfigurationen1
  • Integration mit Anbietern von Quellcodeverwaltung1

1Diese Themen werden in diesem Artikel nicht behandelt.

Hinweis: Einige Funktionen, die in diesem Artikle beschrieben werden, sind nur mit LabVIEW 8.5 oder einer höheren Version verfügbar. Eine Liste der neuen LabVIEW-Funktionen erhalten Sie in den LabVIEW Upgrade Notes oder auf unserer Webseite ni.com/labview/d/upgrade.

Verwaltung von Dateien im Projekt-Explorer

Im LabVIEW-Projekt gibt es zwei Registerkarten für die Ansicht von Dateien: die Objekt- und die Dateiansicht.

Abbildung 3: Die Registerkarte Dateien zeigt eine gefilterte Ansicht aller Objekte im Projekt, so wie sie auf der Festplatte abgelegt sind. Anwender können so Aktionen von Dateien wie etwa Kopieren und Umbenennen durchführen.


Die Standardansicht ist jedoch die Registerkarte Objekte, die eine Baumstruktur von Objekten zeigt, die zum LabVIEW-Projekt hinzugefügt wurden. Diese werden nach Hardwarezielsystem gruppiert. In dieser Ansicht lassen sich Ordner anlegen, um entweder die Organisation der Dateien anzupassen oder sie mit einem speziellen Ablageort auf der Festplatte zu synchronisieren. Unter der Registerkarte Objekte können Dateien nicht von der Festplatte gelöscht werden – so kann Programmcode auch nicht versehentlich gelöscht werden. Unter der Registerkarte Dateien können Objekte nur durch einen Klick mit der rechten Maustaste und der Auswahl von „Von Festplatte löschen“ entfernt werden.

Auf der Registerkarte Dateien ist zu sehen, wo sich die im Projekt verwendeten Dateien physikalisch auf der Festplatte befinden. Mit dieser Ansicht können dieselben Dateioperationen vorgenommen werden, die man normalerweise aus dem Systemdatei-Browser (z. B. Windows Explorer) durchführt, etwa Verschieben, Kopieren oder Löschen. Da LabVIEW Veränderungen erkennt, können aufrufende Dateien aktualisiert und Links beibehalten werden.

Die Hierarchie der Dateien im LabVIEW-Projekt-Explorer lässt sich benutzerdefiniert anpassen, ohne dass das Layout der Dateien auf der Festplatte beeinträchtigt wird. Jedoch ist im LabVIEW-Projekt eine Organisation empfehlenswert, welche die auf der Festplatte erstellte Hierarchie so genau wie möglich reflektiert.

Verwendung von Ordnern im LabVIEW-Projekt

Die Inhalte eines LabVIEW-Projekts können mit zwei Arten von Ordnern organisiert werden: virtuelle Ordner und Ordner mit Autofüllfunktion. Bei virtuellen Ordnern lässt sich die Organisation der Projektobjekte anpassen, ohne dass Veränderungen auf der Festplatte vorgenommen werden müssen.

Abbildung 4: Bei der Organisation von Dateien im LabVIEW-Projekt-Explorer können sich Anwender zwischen Ordnern mit Autofüllfunktion oder virtuellen Ordnern entscheiden.


Virtuelle Ordner sind ideal für Szenarien, in denen die Organisation von Dateien in LabVIEW verändert werden soll, ohne dass der Speicherort auf der Festplatte angetastet wird. Fügt man dem LabVIEW-Projekt-Explorer einen Ordner als virtuellen Ordner hinzu, wird er zum Zeitpunkt der Ergänzung von einer Momentaufnahme dargestellt. Wird danach etwas verändert oder werden neue Dateien hinzugefügt, erscheinen diese nicht im LabVIEW-Projekt. Jedoch kann man auch manuell Änderungen vornehmen, indem man neue Dateien ins LabVIEW-Projekt zieht oder den virtuellen vorübergehend in einen Ordner mit Autofüllfunktion umwandelt.

In virtuellen Ordnern lassen sich Dateien von zwei oder mehr unterschiedlichen Orten auf der Festplatte im LabVIEW-Projekt-Explorer gruppieren. Sie sind auch nützlich zum Filtern der im LabVIEW-Projekt-Explorer angezeigten Informationen, um festzustellen, ob Dateien mit anderen Objekten gruppiert sind, die gar nicht benötigt werden.

NI hat Ordner mit Autofüllfunktion mit LabVIEW 8.5 eingeführt, um die Inhalte von Ordnern auf Dateien automatisch anzuzeigen. Ordner mit Autofüllfunktion werden mit einem physisch vorhandenen Ordner synchronisiert, so dass sie Änderungen an diesem Speicherort außerhalb der LabVIEW-Entwicklungsumgebung jederzeit anzeigen. Um die im LabVIEW-Projekt-Explorer bestehende Hierarchie der Festplatte aufrecht zu erhalten, sollten, wann immer möglich, Ordner mit Autofüllfunktion verwendet werden. Diese sind allerdings nicht für die Verwaltung von Projektbibliotheken oder LabVIEW-Klassen bzw. zur Behebung zahlreicher Querverbindungen zu empfehlen.

Empfohlene Vorgehensweisen

Ordner mit Autofüllfunktion und virtuelle Ordner werden zum Verdeutlichen der Organisation und Struktur von Anwendungsdateien im LabVIEW-Projekt-Explorer verwendet. Ordner mit Autofüllfunktion sind hervorragend geeignet, um die Struktur auf der Festplatte zu bewahren, doch es gibt auch Situationen, für die sie sich nicht eignen oder für die sie erst angepasst werden müssen. In diesen Fällen kommen virtuelle Ordner zum Einsatz, um die Organisation von Dateien im LabVIEW-Projekt-Explorer individuell anzupassen.

Abhängigkeiten

LabVIEW lädt automatisch alle statisch verbundenen SubVIs in den Speicher, wenn das aufrufende VI geöffnet wird. Der Ordner Abhängigkeiten beinhaltet SubVIs, die von der Anwendung benötigt werden, aber nicht im Projekt vorhanden sind. Es werden nur Dateien aufgelistet, die vom Anwender selbst erstellt wurden. Dateien, die beispielsweise aus der National-Instruments-Bibliothek vi.lib stammen, werden nicht aufgeführt.

Das Hinzufügen von Dateien zu einem LabVIEW-Projekt informiert LabVIEW darüber, welche Dateien und Ressourcen für eine Anwendung zum Einsatz kommen sollen. Deshalb sollte man den Abschnitt Abhängigkeiten überprüfen, um sicherzugehen, dass alles, was nötig ist, zum LabVIEW-Projekt hinzugefügt wurde. Ist das nicht geschehen, werden übrige Dateien in diesem Abschnitt angezeigt.

Unter bestimmten Voraussetzungen kommt es vor, dass ein VI in einem LabVIEW-Projekt mit einem falschen SubVI verbunden ist oder mehrere VIs mit gleichem Namen in einem Projekt vorhanden sind und somit keine eindeutige Verbindung hergestellt werden kann. Man spricht in diesem Fall von Querverbindungen.
 

Querverbindungen

LabVIEW öffnet SubVIs mittels relativer Pfade, die im aufrufenden VI gespeichert sind. Findet LabVIEW ein SubVI nicht am erwarteten Ort, sucht es dieses anhand des Namens. Dann lädt LabVIEW das erste SubVI, das es mit dem gesuchten Namen findet, in den Speicher und informiert den Anwender über die modifizierten Links. Wenn aber mehrere VIs mit unterschiedlicher Funktionalität denselben Namen tragen (etwa initialize.vi), oder zwei Versionen desselben VIs an verschiedenen Orten liegen, kann es passieren, dass LabVIEW auf das falsche VI verlinkt.

Abbildung 5: High-Level-Darstellung von Querverbindungen

 

Vermeidung von Querverbindungen

Querverbindungen treten besonders dann auf, wenn große Sätze von Dateien verschoben oder kopiert werden, um eine Codehierarchie an einem neuen Ort auf der Festplatte zu speichern. Ändern sich relative Pfade, treten falsche Links auf und die Anwendung verlinkt unter Umständen auf einen falschen Satz von Dateien.

LabVIEW kann nicht zwei verschiedene VIs mit demselben Namen in den Speicher laden. Das Öffnen von zwei Anwendungen, die auf verschiedene SubVIs mit demselben Namen verweisen bedeutet, dass eine Anwendung die falsche Abhängigkeit ausführt.

 Empfohlene Vorgehensweisen

Mit verschiedenen Maßnahmen lassen sich Querverbindungen vermeiden.

  • Man sollte vermeiden, gleichzeitig an mehreren Anwendungen mit gemeinsamen Abhängigkeiten auf derselben Maschine zu arbeiten.
  • Anwendungen zur Quellcodeverwaltung spezifizieren genau, wo sich Dateien befinden sollten, und erhalten richtig verbundene aufrufende VIs.
  • Es sollten keine einzelnen Abschnitte einer Anwendung verschoben oder kopiert werden.
  • Alle Dateien sollten ins LabVIEW-Projekt integriert werden, um klarzustellen, welche Ressourcen in einem Projekt genutzt werden sollen.
  • Nicht eindeutige Namen wie etwa initialize.vi sollten vermieden werden.
  • Nicht eindeutige Namen können mittels LabVIEW-Bibliotheken (lv.lib) vermieden werden.

Identifizierung von Konflikten

Die Gewährleistung korrekter Verbindungen ist in allen Programmiersprachen eine Herausforderung. Ein sorgfältiges Vorgehen kann Querverbindungen weitgehend vermeiden. Das LabVIEW-Projekt bietet mehrere Funktionen, die Entwickler beim Auffinden und Beheben von Querverbindungen unterstützen.

Abbildung 6: LabVIEW warnt Anwender automatisch vor Konflikten.

Die vielleicht nützlichste Funktion im Zusammenhang mit Querverbindungen ist die, dass das LabVIEW-Projekt es merkt, wenn ein VI ein SubVI mit demselben Namen wie eine zum LabVIEW-Projekt hinzugefügte Datei aufruft. LabVIEW weist den Anwender mit einem gelben Warnschild auf dem Symbol der Datei auf einen Konflikt hin. Dann gibt es mehrere Methoden, weitere Informationen über die Dateien zu erhalten, um zu bestimmen, welche Version der Datei die korrekte ist.

  • Nach einem Klick mit der rechten Maustaste auf die Projektdatei mit der Endung .lvproj im LabVIEW-Projekt-Explorer steht die Funktion „Objekte ohne aufrufende VIs suchen“ zur Verfügung. Gibt es neben dem Top-Level-VI weitere VIs ohne Verbindungen, werden sie hier aufgelistet.
  • Klickt man mit der rechten Maustaste auf ein VI und wählt Suchen >> Aufrufende VIs, kann man feststellen, welches VI das vorliegende aufruft oder ob es dafür überhaupt ein aufrufendes VI gibt.
  • Unter Projekt >> Projektpfade zeigen in der Menüleiste sieht man den Speicherort aller Dateien unter der Registerkarte Objekte auf der Festplatte.
  • Ein Klick auf das Symbol „Konflikte lösen..“ zeigt detaillierte Informationen über alle VIs mit Querverbindungen an.

Nachdem Querverbindungen identifiziert wurden, und bekannt ist, wie die richtigen Verbindungen wieder hergestellt werden, kann man Korrekturen manuell vornehmen oder sich von Werkzeugen im LabVIEW-Projekt-Explorer durch diesen Prozess leiten lassen.

Beheben von Konflikten

Es gibt mehrere Methoden zum Beheben von Konflikten, nachdem sie von LabVIEW erkannt wurden.

Empfohlene Vorgehensweisen

  • Gibt es in einem Ordner mit Autofüllfunktion Konflikte, muss die Autofüllfunktion angehalten bzw. müssen die Konflikte durch die Umbenennung von Objekten unter der Registerkarte Dateien behoben werden.
  • Sind aufrufende Objekte falsch mit einem SubVI außerhalb des LabVIEW-Projekt-Explorers verbunden, müssen diese VIs erneut mit dem passenden SubVI im LabVIEW-Projekt verbunden werden. Um das richtige SubVI auf der Festplatte auszuwählen, führt man einen Klick mit der rechten Maustaste auf ein VI mit Konflikt im Fenster des LabVIEW-Projekt-Explorers aus und wählt im Kontextmenü „Ersetzen“. Dieser Prozess wird für alle verbleibenden Konflikte wiederholt.
  • Verlinken aufrufende VIs auf mehrere Objekte mit demselben Namen, von denen aber nur eins auf der Festplatte existiert, klickt man mit der rechten Maustaste auf ein Objekt mit Konflikt aus und wählt im Kontextmenu „Durch von Projekt gefundenes Objekt ersetzen“.
  • Sind dem LabVIEW-Projekt mehrere Objekte mit demselben Namen hinzugefügt worden, die alle in der Anwendung verwendet werden sollen, müssen diese umbenannt oder in verschiedene LabVIEW-Bibliotheken integriert werden.

Diese Empfehlungen können mit dem Dialogfeld „Konflikte beheben“ auch automatisiert werden. Dazu wählt man im Fenster des LabVIEW-Projekt-Explorers Projekt » Konflikte beheben. Alternativ öffnet auch ein Klick auf die Schaltfläche „Konflikte beheben“ oder ein Klick mit der rechten Maustaste auf ein Objekt mit Konflikt und die Auswahl von „Konflikte beheben“ aus dem Kontextmenü dieses Dialogfeld.

Abbildung 7: Das Dialogfeld „Konflikte beheben“ fordert den Anwender auf, das richtige SubVI auszuwählen.


Dieses Dialogfeld enthält folgende Komponenten:

  • Konflikte: zeigt Projektkonflikte nach qualifiziertem Namen an
  • Vergleichen: vergleicht zwei miteinander in Konflikt stehende VIs
  • Markiertes Objekt verwenden: behebt Konflikte, wenn ein Objekt zur Verwendung ausgewählt wurde. Enthält die Konfliktliste nur Top-Level-VIs, entfernt LabVIEW alle Objekte der Liste aus dem LabVIEW-Projekt, außer dem markierten Objekt. LabVIEW kann Ordner mit automatischer Füllfunktion im Dialogfeld „Konflikte im Projekt beheben“ nicht verändern. Diese Objekte können manuell bearbeitet werden, oder der Ordner mit automatischer Füllfunktion wird deaktiviert, indem mit der rechten Maustaste auf den Ordner geklickt und aus dem Kontextmenü „Autofüllfunktion anhalten“ gewählt wird.

Dieses Dialogfeld wird verwendet, um Konflikte zu beheben, indem die zueinander in Konflikt stehenden Objekte neu verbunden werden, so dass sie entsprechend Objekte mit dem korrekten Pfad aufrufen.

Fazit

Folgt man den hier genannten Empfehlungen, können Richtlinien zur Entwicklung und Verwaltung von Anwendungen erstellt werden, welche die Erweiterung auf komplexe Anwendungen ermöglichen. Besonders wichtig ist es, die Organisation von Dateien auf der Festplatte sorgfältig zu planen und Kriterien für das Ordnen von Dateien festzulegen. Der LabVIEW-Projekt-Explorer bietet eine Ansicht der Anwendung auf Systemebene, so dass Dateien einfach zugänglich und navigierbar sind und Werkzeuge zum Erkennen von Querverbindungen optimal ausgenutzt werden.