Hallo zusammen,
ich hätte eine Verständnisfrage zum dynamischen und statischen Aufrufen von SubVis.
Für mein Programm habe ich eine ganze Palette an SubVis, vom kleinen Vi zum disablen von mehreren Referenzen, hin bis zum Excel auslesen/schreiben. Ebenso ist mein Programm so aufgebaut, dass ich im Hauptmenu meine Buttons habe, die per Case mein entsprechendes Programm starten, wo dann das FP geöffnet wird und schließt bis es abgearbeitet wird.
Als ich vom dynamischen Aufruf gelesen habe, war für mich der ausschlaggebende Aspekt, dass es Ressourcen spart Vor allem bei langen Laufzeiten. Da mein Programm, wenn es nicht grade abstürzt
, bis zu einem Jahr am Stück laufen soll, ist das nicht grade irrelevant.
Nun habe ich mir die Arbeit gemacht und habe alle kleinen SubVis per Referenz geöffnet (mit klein meine ich SubVis mit 4-5 Elementen). Ist das bei solchen kleinen SubVis notwendig? Denn ich finde, dieser doch nicht unerhebliche Brocken an Code macht das Programm schon wesentlich unübersichtlicher im Vergleich zu einem Block vom statischen Aufruf. Davon ab, kommt ja wie ich das in einem anderen Thread gelesen habe dann nochmal ordentlich Arbeit auf mich zu, wenn ich die .exe daraus machen möchte. Zumindest glaube ich, dass es viel Arbeit ist, so ganz habe ich das nicht verstanden, wie das mit dem Vi-Pfad und der exe funktioniert, aber das ist ein anderes Thema.
Kann ich in meinem Hauptprogramm die Unterprogramme auch dynamisch Aufrufen, sodass das FP geöffnet wird und nach Bearbeitung geschlossen wird? So wie ich es in der statischen kann?
Momentan habe ich meine Vis so aufgerufen:
http://zone.ni.com/reference/de-XX/help/...dcall_vis/
Und beim stöbern habe ich sowas gefunden:
http://www.labviewforum.de/attachment.php?aid=13647
(aus:
http://www.labviewforum.de/Thread-Wie-fu...E-wirklich )
Gruß Tobias
Hallo Tobi,
Zitat:Kann ich in meinem Hauptprogramm die Unterprogramme auch dynamisch Aufrufen, sodass das FP geöffnet wird und nach Bearbeitung geschlossen wird? So wie ich es in der statischen kann?
Ja.
Zitat:Nun habe ich mir die Arbeit gemacht und habe alle kleinen SubVis per Referenz geöffnet (mit klein meine ich SubVis mit 4-5 Elementen).
Ist das wirklich sinnvoll - und nötig?
Es kann sehr sinnvoll sein, VIs per VIServer zu laden und zu starten, z.B. beim Einsatz in subPanels oder wenn man verschiedene "Bibliotheken"/Treiber/etc. (nach)laden will. Aber "all kleinen subVIs" halte ich für übertrieben…
(02.04.2015 07:43 )GerdW schrieb: [ -> ]Ja.
Spärliche Antworten sind echt dein Ding
Verrätst du mir auch wie?
(02.04.2015 07:43 )GerdW schrieb: [ -> ]Es kann sehr sinnvoll sein, VIs per VIServer zu laden und zu starten, z.B. beim Einsatz in subPanels oder wenn man verschiedene "Bibliotheken"/Treiber/etc. (nach)laden will. Aber "all kleinen subVIs" halte ich für übertrieben…
Genau das war ja die Frage, ob es sinnvoll ist oder nicht.
Scheinbar ist es sinnvoll bei subPanels, was meinen Unterprogrammen mit FP aufruf entspräche.
Und für diesen Aufruf müsste ich wissen, wie man per dynamischen Aufruf das FP öffnet und nach Bearbeitung schließt
Verrätst du mir auch wie?
Vielen Dank für die Antwort
Hallo Tobi,
Zitat:Scheinbar ist es sinnvoll bei subPanels, was meinen Unterprogrammen mit FP aufruf entspräche.
Wenn ich ein subVI aufrufe, welches sein FP anzeigen soll, dann kann ich es auch direkt aus dem MainVI aufrufen - ohne Umweg über den VI-Server.
Ich sehe hier noch immer keinen sinnvollen Einsatz von dynamischen/statischen subVI-Aufrufen per VI-Server…
Zitat:wie man per dynamischen Aufruf das FP öffnet und nach Bearbeitung schließt
Sowas stellt man entweder in den subVI-Eigenschaften ein oder erledigt es programmatisch per PropertyNode/Methodenknoten…
Irgendwie hattest du Probleme mit dem korrekten Umgang mit der Quote-Funktion des Editors hier…
Zitat:Spärliche Antworten sind echt dein Ding
Falsch. Ich habe auf deine Frage geantwortet.
Wenn du Fragen stellst, die man mit Ja/Nein beantworten muss, darfst du dich nicht über entsprechende Antworten wundern…
Hallo zusammen,
ich habe z. Zt. ein ähnliches Problem und hoffe auf Hilfe.
Erstellt ist ein Messprogramm für Sensoren mit CAN Ausgang. Ich habe immer das gleiche Eingangssignal (SensorID, PGN und 8 Datenbytes), für jeden Sensortyp aber unterschiedliche PGNs und Ausgangswerte. Nun war mein Gedanke, für jeden Sensortyp ein extra VI zu erstellen, was aus dem Anwendungsverzeichnis dynamisch in das Hauptprogramm geladen wird. Somit wäre es in Zukunft möglich, weitere Sensortypen anzulegen ohne das Hauptprogramm anzufassen. In der Entwicklungsumgebung läuft dies ohne Probleme, in der Exe leider nicht mehr. Dort bekomme ich es nur zum Laufen, wenn das "Sensor-VI" bereits bei der Builderstellung im Projekt war.
Gibt es eine Möglichkeit dieses später erstellte, dynamische SUB-VI über den Pfadaufruf zu starten?
Hallo Woodeye,
Zitat:Gibt es eine Möglichkeit dieses später erstellte, dynamische SUB-VI über den Pfadaufruf zu starten?
Wenn das VI unter dem Pfad, den du beim Aufruf angibst, gefunden wird, dann wird es (normalerweise) auch gestartet!
Welche Fehlermeldung bekommst du denn?
Hallo Gerd,
ich bekomme den Fehler 1003.
"Fehler 1003 bei nicht identifizierter Position
Mögliche Ursachen:
LabVIEW: Das VI ist nicht ausführbar. Dieser Fehler kann auftreten, weil das VI entweder fehlerhaft ist oder ein SubVI enthält, das nicht gefunden werden kann. Öffnen Sie das VI über Datei>>Öffnen und prüfen Sie, ob das VI ausführbar ist."
Auch der Aufrufpfad verweist auf das Anwendungsverzeichnis:
"VI-Referenz öffnen in Funktionskontrolle_main.vi<APPEND>
VI-Pfad: <b>T:\Q\Pruefsoftware\Pruefprogramme\CAN\Einzelmessung\161102_Version_02\G15_1235.vi</b>"
Auch wenn ich das SUB-VI über die Suche direkt auswähle, egal ob es im Projekt- oder Anwendungsordner liegt, es kommt der gleiche Fehler. Ich vermute fast ein fehlendes Häkchen in den VI-Einstellungen.
Hallo Woodeye,
ist das VI denn ausführbar, wenn es am angegebenen Ort liegt?
Es muss dort inkl. aller vom ihm benötigten subVIs ausführbar sein!
Hallo Gerd,
das ist ja das Verrückte, ich kann das VI in jedem Ordner einzeln mit der Entwicklungsumgebung öffnen. Auch die Builderstellung auf dem Laufwerk C: brachte keine Änderung. Ich werde morgen noch einmal ein extra Projekt erstellen und noch einmal von Anfang an probieren.
Ich danke dir für deine Bemühungen.
Hallo Gerd,
ich bin dem Fehler auf der Spur! Begreifen kann ich ihn noch nicht...
Meine aufgerufenen VIs melden einen Fehler, wenn das LV VI "Mean.vi" aus der Statistikpalette zum Einsatz kommt. Im Anhang ist ein kleines Programm, welches dynamisch die Funktionen plus, minus usw. aufruft. Alle funktionieren ohne Probleme, nur das VI "Fehler" meldet auf zwei unterschiedlichen PCs einen Fehler zurück. In diesem VI ist das "Mean.vi" integriert.
Das fehlerhafte VI versucht das "Mean(DBL).vi aus der NI_AALBase.lvlib zu laden, schafft dies nicht und gibt einen Fehler aus. Auch der Versuch, das "Mean.vi" irgendwo in das Blockdiagramm des aufrufenden VIs zu legen brachte keine Besserung. Die gesuchte .lvlib ist dann zwar unter den Abhängigkeiten im Projekt zu finden, aufgerufen wird sie aber nicht. Der Aufruffehler tritt auch mit anderen VIs aus der Statistikpalette auf.
Im NI Forum gibt es auch schon einige Diskussionen über diesen Fall, eine Lösung habe ich aber noch nicht gefunden. Ich werde den Mittelwert händisch programmieren, dann müsste es (für dieses Programm) gehen.
PS: in das Feld Operation muss "plus"; "minus" usw.