LabVIEWForum.de - Sinnvolle Verwendung von Subvis

LabVIEWForum.de

Normale Version: Sinnvolle Verwendung von Subvis
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich hätte ein paar allgemeine Fragen zur Strukturierung von Vis und Subvis, zu denen ich im Forum noch keine Antwort gefunden habe.

1) Gibt es einen Unterschied, wenn ich in mein Hauptvi ein Subvi oder stattdessen ein anderes normales Vi einfüge?

2) Kann ich in ein Subvi erstellen in dem ein anderes Subvi (und evtl in diesem wiederum ein Subvi) enthalten ist? Kann in einem Subvi ein normales Vi enthalten sein?

3) Ist es sinnvoll sein Programm in möglichst viele Subvis logisch aufzuteilen oder ist das einfach nur Geschmackssache und dient nur der Übersicht?

4) Welche "Gefahren" oder Probleme könnten auftauschen, wenn ich sehr viele / garkeine Subvis verwende?


Sorry, falls die ein oder andere Frage trivial ist oder bereits im Forum beantwortet wurde.


Danke und schönen Gruß

Johannes
Hallo Johannes,

1) Was ist für dich der Unterschied zwischen einem subVI und einem "normalen VI"?

2) Ja, man kann sub-subVIs in subVIs verwenden. Was verstehst du unter "normales VI in einem subVI verwenden"?

3) Ja. Nein. Ja.

4) Keine Übersicht: Riesige MainVIs (sowohl BD-Größe als auch Dateigröße). Du solltest eher nach den Vorteilen der subVI-Nutzung fragen...
Also angenommen ich öffne ein neues VI und erstelle mir ein Programm, das z.B. eine eingegebene Zahl in irgendeiner Form umrechnet. Ein "normales VI" wäre jetzt für mich, wenn ich das Programm einfach speichere, ein subVI logischerweise wenn ich es als subVI speichere. Wenn ich nun ein neues VI öffne und möchte das erstellte Programm verwenden, kann ich doch sowohl das "normale" VI als auch das subVI einfügen?

[/Du solltest eher nach den Vorteilen der subVI-Nutzung fragen...]
Was sind die Vorteile der subVI-Nutzung? Big Grin

Danke!
Hallo Johannes,

Zitat:Ein "normales VI" wäre jetzt für mich, wenn ich das Programm einfach speichere, ein subVI logischerweise wenn ich es als subVI speichere.
Noch einmal: wo ist da der Unterschied? Wie speicherst du ein VI "als subVI"? Wo ist die Speicherung "als subVI" anders als die Speicherung "als normales VI"?

Zitat:Was sind die Vorteile der subVI-Nutzung?
- Code-Reusability
- Modularität
- bessere Kommentierung möglich
- vereinfachte Code-Tests möglich
- vieles mehr...
(30.08.2013 11:39 )GerdW schrieb: [ -> ]Hallo Johannes,

Zitat:Ein "normales VI" wäre jetzt für mich, wenn ich das Programm einfach speichere, ein subVI logischerweise wenn ich es als subVI speichere.
Noch einmal: wo ist da der Unterschied? Wie speicherst du ein VI "als subVI"? Wo ist die Speicherung "als subVI" anders als die Speicherung "als normales VI"?
@Gerd: Ich nehme an, es geht um die Möglichkeit, Code im Blockdiagramm zu markieren und dann per "Edit->Create SubVI" direkt ein neues VI zu erzeugen.

@Johannes:
Es gibt keinen Unterschied zwischen VI und SubVI, das sind nur 2 unterschiedliche Begriffe. Du kannst jedes VI ins Blockdiagramm eines anderen VI ziehen, es wird damit als Unterprogramm (i.e. SubVI) das darüberliegenden ausgeführt.

Der "Create SubVI" Weg ist nur eine kleine Hilfe beim Programmieren. Üblicherweise überlegt man sich vorher, welche Funktionalitäten man braucht, erstellt ein VI mit dieser Funktionalität und verwendet es später als "SubVI".

Gruß, Jens
Hallo Johannes,

ein Programm in LabView nennt sich Virtual Instrument (VI). Dadurch, dass man es innerhalb eines anderen VIs aufruft wird es zum Unterprogramm, also zum SubVI.

Ein SubVI kann dann bedenklich sein, wenn die Zeit, die für seinen Aufruf benötigt wird in keinem Verhältnis zu seiner Ausführungszeit steht. Wenn ich also 2 Zahlen miteinander addiere und dies in ein SubVi auslagere und das in einer zeitkritischen Schleife geschehen soll, dann würde ich wohl drauf verzichten.

Gruß, Marko
"..oder dient es nur der Übersicht":
Natürlich sind Unterpogramme in der grauen Urzeit des Progrmammierens dazu erfunden worden, a) einen Code innerhalb eines Programmes nicht mehrere Male schreiben zu müssen. und b) Codeteile problemslos auch in anderen Programmen verwenden zu können. Es gilt aber auch in Textsprachen seit Langem als guter Programmierstil, ein Unterprogramm auch dann zu verwenden, wenn es nur ein einziges Mal aufgerufen wird - wegen der Übersicht. Du solltest das nicht gering schätzen.
Ein Blockbild sollte z.B. immer auf eine Seite passen.
Der größte Nachteil von SubVIs ist, dass man entweder zeitraubend ein graphisches Ikon dazu erstellt, oder aber mit dem schlechten Gewissen leben muss, es nicht gemacht zu haben Big Grin
Ob Haupt-Vi oder Sub-VI is eine Frage der Verwendung, das VI selbst ist gleich. Genau so wie ich als Selbständiger oder als Angestellter immer der gleiche Mensch bleibe.
Ausnahme: Man kann in den VI-Eigenschaften (Rechte Maustaste auf Ikon) "SubVI" anklicken. Dann läuft es nicht mehr als Haupt-VI. Was das bringt, weiß ich allerdings nicht, vielleicht kann das jemand erklären.

Edit: Zu der von Trinitatis angesprochenen Ausführungszeit: Wenn es wirklich mal vorkommen sollte, dass die Ausführungszeit kritisch ist, dann kann man ein SubVI mit der Eigenschaft "Inline" versehen. Man hat dann bei der Compilation mehr Code - aber nur dann, wenn es mehrere Male verwendet wird.
Danke euch allen, jeder Beitrag hat mir ein wenig geholfen.

@ jg: genau richtig, mit "als subVI speichern" habe ich "create subVI" gemeint. Ist trivial, hat mich aber eben nur gewundert, dass sich im Prinzip nichts am VI ändert.

Wollte das nur ganz gerne geklärt haben, da ich an einem größeren Projekt arbeite und es von CAD Programmen kenne, dass eine falsche Vergabe von Mutter-Kind Beziehungen oder anderen Referenzen schnell zu sehr viel unnötiger Arbeit führen kann.

In diesem Sinne
Vielen Dank und ein schönes Wochenende Smile
Referenz-URLs