LabVIEWForum.de
Programmaufruf von SubVI - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Programmaufruf von SubVI (/Thread-Programmaufruf-von-SubVI)



Programmaufruf von SubVI - antwort - 17.05.2017 14:30

Hallo LabView Forum :-)

Ich bin gerade am Erstellen einer Prüfstandssteuerung für einen Motorenprüfstand. Bin auch soweit ziemlich fertig.

Nachdem mein Datenexport in ein Excelfile über Express-VI's ultra langsam wurde, habe ich den Datenexport ohne Express-VI's erstellt.


Dazu habe ich ein extra SubVI erstellt in dem ich vor der While Schleife den Header der Messdatei mit den Kanalnamen schreibe und in der While Schleife dann im 100ms Takt je alle aktuellen Messwerte in die Exceldatei einfüge. Nach der While Schleife schließe ich noch die Datei.


Leider stehe ich jetzt vor dem Problem, dass ich im laufenden Hauptprogramm dieses SubVI öfters aufrufen will (nämlich immer dann, wenn die Variable S_MESSUNG True wird)

Da ich das SubVI nicht in einer WHile Schleife platzieren kann, da sonst die Headerdatei bei jeden Schleifendurchgang neu geschrieben wird, weiß ich aktuell nicht wie ich das Problem lösen kann.

Könnt Ihr mir bitte Tipps geben wie man so einen Aufruf des SUBVI's am besten umsetzt ?
(Problem ist, dass das SubVI je Messvorgang nur einmal geöffnet werden darf - somit fällt ein Platzieren in einer While Schleife flach)

Vorab Vielen Dank für Eure Hilfe


RE: Programmaufruf von SubVI - Freddy - 17.05.2017 14:42

Aus eins mach drei.
  • Ein VI Datei öffnen.
  • Ein VI Daten schreiben.
  • Ein VI Datei schließen.

Jetzt kannst Du die VI zum Daten schreiben in die While Schleife einbinden.

Gruß
Freddy


RE: Programmaufruf von SubVI - antwort - 17.05.2017 15:05

Hallo Freddy :-)

Vielen Dank für Deine schnelle Antwort.

Das würde bedeuten, dass ich die Datei zum Daten schreiben in eine WHile Schleife packen kann.

Leider muss ich aber trotzdem vorher bei jedem Messdurchgang den Dateinamen neu festlegen und die neue Datei öffnen.

Gibt es da keine Möglichkeit ein SubVI einmal ausführen zu lassen?

Ich kann es aktuell nur einmal aufrufen, wenn ich es nicht in einer extra While Schleife laufen lasse.
Wenn es aber in einer While Schleife läuft kriege ich nur die Headerzeile und eine Zeile mit Messwerten, die dann bei jedem Schleifendurchgang überschrieben wird.

Hast du noch eine Idee?

Vorab Vielen Dank und viele Grüße


RE: Programmaufruf von SubVI - GerdW - 17.05.2017 16:35

Hallo antwort,

Zitat:Leider muss ich aber trotzdem vorher bei jedem Messdurchgang den Dateinamen neu festlegen und die neue Datei öffnen.
Wieso?
Wenn du einfach die Referenz in einem Schieberegister hälst, musst du die Datei nur einmal öffnen…

Zitat:Gibt es da keine Möglichkeit ein SubVI einmal ausführen zu lassen?
Du könntest dein subVI in eine FGV (aka AE) umgestalten, dann kannst du über einen zusätzlichen State-Input festlegen, was das subVI gerade erledigen soll!

Du weißt schon, dass sich solche Fragen wesentlich besser beantworten lassen, wenn du ein VI bereitstellst!?


RE: Programmaufruf von SubVI - antwort - 18.05.2017 09:32

Hallo GerdW,

du hast recht. Hatte ich vergessen. Im Anhang mein SubVI die mir alle Variablen in eine Exceldatei schreibt. (Jetzt endlich auch schnell genug, nachdem die blö*** Express VI's alle weg sind - Als Neuling schauen die Dinger sehr sehr verlockend aus, da sie auch in der Konfiguration sehr einfach sind.. aber die sind wirklich absolut unbrauchbar.. Da hattest Du von Anfang an Recht :-) )

Der Pfad+Dateiname wird über die Variable SG_Dateiname in das SubVI übergeben.

Ich wollte, dass ich in der Prüfstandssteuerung (Hauptprogramm) auf den Knopf "Messung aktiv" drücke und dann das SUBVI gestartet wird.

[attachment=57840]

Im SubVI Ist nur die Datenspeicherung in einer Schleife, da dies ja in einem sehr schnellen Takt erfolgen soll. Das Anlegen der Datei, Öffnen und Schließen ist in keiner Schleife, da dies ja nur einmal erfolgen soll.

Mit den anderen Funktionen funktioniert das ganz gut da schalte ich einfach eine Case Struktur an und aus aber das Problem bei dem SubVI Datenexport.vi ist, dass es nicht in einer weiteren Schleife sein darf, da sonst jedes mal die Datei neu angelegt wird. Wenn es aber in keiner extra Schleife ist, wird nur einmal diese Case Struktur angeschaut und wenn dann der Schalter "Messung aktiv" nicht aktiviert ist, wird einfach nie wieder aufgezeichnet.

Wisst Ihr eine Lösung wie ich den Programmaufruf für das SubVI machen kann ohne es in einer weiteren Schleife einbauen zu müssen?

Vorab Vielen Dank für Eure Hilfe.


RE: Programmaufruf von SubVI - GerdW - 18.05.2017 11:01

Hallo antwort,

so wie dein VI momentan aussieht, musst du es parallel zu deinem mainVI aufrufen. Dummerweise hast du keinerlei Möglichkeiten programmiert, mit denen du dieses subVI von außen steuern könntest!

Ich verwende für sowas auch gern eine QMH-Struktur (Queued message handler) und (glaube ich schon mal erwähnt) Statemachines…

Wenn du etwas parallel zu deinem mainVI erledigen willst, dann musst du es auch entsprechend programmieren!
Einfach so ein subVI aufrufen und sich dann wundern, warum es das mainVI blockiert, ist reichlich "unüberlegt"…


RE: Programmaufruf von SubVI - antwort - 18.05.2017 16:33

Hallo GerdW,

ich habe es jetzt mal mit einer StateMachine versucht.
Starten und Beenden des VI's funktioniert auch.

[attachment=57849]
[attachment=57850]

Leider wird das SUBVI aber trotzdem im Schleifentakt der Statemachine geöffnet. (Sprich ich bekomme nur eine Zeile mit Messwerten, dann wird die Datei neu angelegt und wieder eine Zeile mit Messwerten rein geschrieben)

Kann man der Whileschleife sagen sie soll solange nix machen, bis das Sub VI komplett fertig ist?

Also dass die StateMachine nicht 10mal pro Sekunde neu durchlaufen wird und das SubVI dementsprechend nur einmal aufgerufen wird?

Vorab Vielen Dank und viele Grüße


RE: Programmaufruf von SubVI - Freddy - 18.05.2017 16:50

Du musst das VI "Dateiposition festlegen" mit Position ENDE vor dem Schreib VI setzen.
Dann hängt er die nächsten Daten an. Wenn Du das nicht machst, beginnt das Schreiben immer am Anfang. Damit überschreibst du die entsprechenden Zeichen.

Gruß
Freddy


RE: Programmaufruf von SubVI - antwort - 01.06.2017 09:16

Hallo Zusammen,

jetzt habe ich es nach Euren Empfehlungen gelößt und mich mit State Machine's beschäftigt.

Habe nun drei SubVI's (Messdatei anlegen, Messen, Messdatei schließen) und arbeite diese nacheinander in einer StateMachine ab.
Nach schließen der Messdatei gehe ich wieder in den "Warten State", solange ich wieder auf Messen drücke. Dann startet das Messprozedere in einer neuen Messdatei von vorne.

Das war jetzt der letzte Schritt für meien Motorenprüfstandssteuerung.

Jetzt läuft alles sehr performant und funktioniert alles wie es soll.

Vielen Dank für Eure Hilfe :-) Ohne Eure Hilfe hätte ich das nicht geschafft.