LabVIEWForum.de - VI zu langsam bzw. hängt sich auf

LabVIEWForum.de

Normale Version: VI zu langsam bzw. hängt sich auf
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Zusammen,

für ein Projekt an der Hochschule wurde eine VI erstellt, die einen Modellgasturbinen-Prüfstand regelt. Grob gesagt, es werden Kraftstoffpumpe, Glühstift, Ölpumpe, Luftversorgung und Kühlwasserventil angesteuert. Mit zwei Messverstärker von HBM (MX1609 und MX840A) wird Temperatur und Druck in der Brennkammer sowie Temperatur im Kühlwassertank gemessen. Bei Überschreitung eines eingestellten Wertes schaltet die Prüfstands-VI ab.
Neben der Druck- und Temp-Überwachung wird der Prüfstand ebenfalls mit einer Kamera überwacht. Dies geschieht über einen Bildabgleich. (siehe VI)

Die positive Nachricht zuerst: Es funktioniert alles soweit.

Die negative Nachricht: Die VI ist viel zu langsam und hängt sich auf.

Nun die Frage: Wie kann man die VI beschleunigen bzw. wieder mit normaler Geschwindigkeit ausführen?

Vielen Dank für Eure Hilfe!!!

VG,

Sebastian
Hallo Sebastian,
Dein VI kann man nicht vernünftig lesen ( Chaos bei den Linien ). Zu viele Sub-VI die als unbekannte VI nicht beurteilbar sind.
Lade doch das gesamte Projekt sonst kann Dir keiner helfen.

Ein erster Punkt. Du Verwendest für boolsche Verknüpfungen "Signale zusammenfassen". Da sollte man einfache Boolsche - Elemente verwenden.
Siehe Bilder.

Gruß
Freddy
(08.06.2016 15:35 )Freddy schrieb: [ -> ]Dein VI kann man nicht vernünftig lesen ( Chaos bei den Linien ).
Dem kann ich nur zustimmen.
Ironie
Deshalb ist es auch so langsam, die Daten müssen um zu viele Ecken...


Spaß beiseite, nach 1x Ctrl+U wird es etwas übersichtlicher. Meine Antwort lautet: THINK Dataflow und Entkopplung der Prozesse durch paralleles Programmieren.

Wie soll die Erfassung schneller laufen als mit 1 Hz, wenn du deine Event-Struktur innerhalb der Haupt-While-Schleife nur 1x pro Sekunde auslöst? Somit wird auch der restliche Code nur 1x pro Sekunde abgearbeitet.

Gruß, Jens
Ich gehe einfach mal davon aus, dass du dich auf die While-Schleife außerhalb der "großen" Schleife beziehst. (5000ms warten?)
Wenn ich diesen Wert auf zum Beispiel 1ms ändere, wird die komplette VI schneller. Nun ist aber das Problem aufgetreten, dass das Frontpanel nicht mehr bedienbar ist. Meine Vermutung ist, dass dieses Problem durch das häufige Betätigen des "Bild erzeugen" Knopfes entsteht.

Wie kann ich das ändern, bzw. kann das an einem anderen Problem in der Programmierung liegen?

Viele Grüße

Sebastian
Hallo Sebastian,

du generierst mit deiner kleinen Schleife (die 1mal pro Sekunde durchläuft) das Event Bild erzeugen.
Da deine Eventstruktur im Inneren der Hauptschleife keinTimeout-Event hat, ist sie gezwungen auf eines der 3 möglichen Events zu warten. Das häufigst mögliche Event ist dabei das sekündlich erzeugte. Also kann auch deine Hauptschleife nur im 1s-Takt laufen.
Nebenbei bemerkt gehören solche Dinge von der Hauptschleife entkoppelt in eine Parallelschleife, in der es nicht stört, wenns mal länger dauert.

Und die Platzverschwendung sowie die bis zu 13 Ecken, die du in eine eigentlich geradeaus laufende Verbindung gehauen hast tragen nicht gerade zur Lesbarkeit des Codes bei.

(Und zuletzt heißt es auch noch das VI, da es sich um das virtuelle Instrument handelt)Big Grin


Gruß, Marko
Marko hat es schon gesagt: Entkopple die Prozesse Datenerfassung und Bilderfassung durch parallele Schleifen. Und am besten entkoppelst du noch den Prozess Bilderfassung vom User-Interface.

Gruß, Jens
Referenz-URLs