LabVIEWForum.de - SubVI Referenz blinkt ABER keine Fehlermeldung

LabVIEWForum.de

Normale Version: SubVI Referenz blinkt ABER keine Fehlermeldung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo an alle LV-User, Bahn

Ich habe ein Problem mit einer SubVI-Referenz.

In meinem Programm werden Werte in einem Diagramm (->SubVi) aufgezeichnet. Das SubVi "Diagramm" läuft
kontinuierlich in meinem Hauptprogramm. Ich möchte hierbei nur das Frontpanel des SubVI`s öffnen und schließen.

Das mache ich über die Methodenknoten "FP öffnen" und "FP schließen" und es läuft fehlerfrei. Lasse ich das Programm
jedoch einige Stunden laufen klappt mir das Blockdiagramm auf und die Referenz-VI`s (ich habe 2) werden abwechselnd markiert und blinken.
Das Programm ist jedoch weiter nutzbar bis auf die SubVI`s die an den Referenzen hängen.

Es wird dabei KEINE Fehlermeldung oder ein sonstiger Hinweis ausgegeben. Untern dargestellt ist der Aufruf des VI`s
und das SubVI Diagramme


Schonmal Danke im Vorraus

Bill
Hallo Bill,

zu der Schleife mit der FP-Steuerung:
- warum musst du die Referenz dauernd öffnen und schließen? Reicht das nicht jeweils einmal (vor/nach der Schleife) aus?
- warum musst du das FP so oft wie möglich öffnen/schließen? Wo ist hier die Wartezeit in der Schleife?
- warum verwendest du keine Eventstruktur, die den Button "Diagramme" abfragt und nur bei einer Wertänderung eine Aktion ausführt?

Zum anderen VI:
- Sind wirklich so viele globale Variablen nötig?
- warum die RaceCondition bei "Schliessen"?
- warum auch hier das ständige Öffnen von VI-Referenzen? Werden die Referenzen im FALSE-Case auch wieder geschlossen oder bleiben die im Speicher hängen?
- warum gibt es gleich 4 Buttons mit dem Namen "Schliessen"? Würdest du so in irgendeiner textbasierten Programmiersprache arbeiten?
Hallo Gerd,

1) Du hast Recht, mir ist bei den ganzen Versuchen gar nicht aufgefallen,
dass es die Referenz andauernd lädt. Aber da ich Sie immer wieder schließe
sollte mein Problem nicht davon kommen oder? (jedenfalls nicht an der Stelle)

2) Das ist ein Minimalbeispiel, mir geht es selbstverständlich nicht darum
ein FP so oft wies geht zu öffnen. Der Aufruf ist Teil eines Programmes.
Die Schleife ist der Vollständigkeit halber ergänzt. Daher auch keine
Wartezeit. Der Schalter Diagramme ist auf "Latch" gestellt. Sprich beim
betätigen wird mir nur einmal das FP geöffnet. Das wird dann angezeigt bis ich es schließe.

3) Die GV sind notwendig, ja.

4) Die 4 Buttons sind nicht notwedig, stimmt. Ich hatte zu Beginn nur versucht Platz
zu sparen und dafür lieber 4 Buttons in Kauf genommen (wegen der Tab-Struktur).

5) Das Öffnen der Referenz im SubVI selber passiert sicher auch im FLASE Case. Das würde
dann bedeuten, die Referenz wird irgendwo gespeichert.. und wenn dann der Speicher
(Teil des Arbeitsspeichers?) voll ist hängt mein Programm? Dann sollte das aber immer
nach einer konstanten Zeit passieren.


Du hast mir ne Menge Hinweise und Anregungen gegeben und man kann vieles sicherlich besser machen,
aber was genau kann denn mein Problem ausgelöst haben bzw. hast davon schonmal gehört?

Gruß Bill
Hallo Bill,

2) Das hättest du auch vorher schreiben können. Wie soll man Probleme untersuchen, wenn du ganz anderen Code zeigst?

4) Mir ging es nicht um die Notwendigkeit dieser Buttons, sondern um deren Namen. Benennst du in einem C-Programm auch alle Variablen mit dem identischen Namen?

5) Geöffnete Referenzen benötigen Speicher. Den sollte man durch Schließen der Referenz auch wieder freigeben...
Das mit der "konstanten Zeit" kannst du auf einem modernen Multitasking-OS einfach mal knicken!

Wenn ein Problem erst nach längerer Laufzeit eines Programms auftritt, hat dies oft mit schlechtem Memorymanagment zu tun (z.B. offene Referenzen). Also:
- Referenzen nur so oft öffnen wie nötig. Bei statischen Dingen (wie z.B. die Referenz auf immer das gleiche VI) reicht also einmaliges öffnen (und Speichern in einem Schieberegister o.ä.) aus.
- Geöffnete Referenzen auch wieder schließen - aber immer zum richtigen Zeitpunkt Smile
- Nutzereingaben sollte man nicht pollen, sondern per Eventstruktur bearbeiten.
Hi Gerd,

2) Sry, ich wollte meinen Beitrag auf das Problem fokussieren
und hab das wohl vergessen. Blush

4) Da hast du natürlich recht, aber da ich die 4 durch einen
ersetze erübrigt sich das.

5) Ok, das wusste ich nicht, aber das ist interessant. Sprich
mein "Referenz-Müll" türmt sich bis die Funktion letzendlich
ausfällt.

Ich hab das jetzt mal geändert und warte ab was passiert. Nach
spätestens 12h hatte ich bisher immer nen Ausfall. Construction


-> Was meinst du mit "pollen" ? Hab ich noch nicht gehört.

Danke dir erstmal. Gruß Bill
VI-Referenz auf das "eigene" VI geht so schneller:
[attachment=47376]
Gruß, Jens
(21.11.2013 14:50 )Blinky_Bill schrieb: [ -> ]-> Was meinst du mit "pollen" ? Hab ich noch nicht gehört.

Mit pollen bezeichnet man in der Informatik die Methode, das Ereignis einer Wertänderung mittels zyklischem Abfragen zu ermitteln. Sprich, eine Schleife (z.B. While-Loop) überwacht zyklisch den Wert eines Controls (oder Hardware, etc.).
Die Event-Struktur dagegen warte bis ein vom Programmierer definiertes Ereignis (z.B. Wertänderung) eintrifft und ist somit zu bevorzugen. Big Grin

Gruss
Chris
Hi,

also nach ausführlicher Ausführung kann ich nun mit ziemlicher Sicherheit sagen, dass es an einer
Referenz lag, die ständig geöffnet wurde. Erstmal vielen Dank.

Zur Eventstruktur: würde mir das hier denn wirklich einen Vorteil bringen? Wenn ich das richtig verstanden hab
tritt die Aktion (hier "Werte ins Diagramm schreiben") bei Änderung der Größe (hier Temperatur) auf. Die Temperatur
an einem Thermoelement schwankt unentwegt. Ob ich nun eine Schleife mit einer bestimmten Wartezeit oder
eine Eventstruktur benutze kommt bei den Abarbeitungszyklen sicher aufs gleiche raus.


Grüße Bill
Referenz-URLs