LabVIEWForum.de
Schleife in Subvi hängt Hauptprogramm auf - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Signaldarstellung (/Forum-Signaldarstellung)
+---- Thema: Schleife in Subvi hängt Hauptprogramm auf (/Thread-Schleife-in-Subvi-haengt-Hauptprogramm-auf)

Seiten: 1 2


Schleife in Subvi hängt Hauptprogramm auf - onsight8c - 16.05.2011 10:55

Hallo zusammen!

Hab folgendes Problem:

in meinem Hauptprogramm (AutosaveFunktion.vi) benötige ich für einen Datenlogger eine Art zeitgesteuerten Latch-Schalter, der mir einen true/false-Impuls sendet. Mit diesem Impuls wird der Log-Vorgang initiiert. Das Zeitinverall soll frei wählbar, sowie auch manuell beliebig überbrückbar sein.

Zur Vereinfachung habe ich die Zeiterfassung und Tastersteuerung als SubVI ausgelagert. Allerdings kam ich nicht drumrum, im SubVI eine Schleife mit Schieberegistern laufen zu lassen. Dachte über die Weitergabe des Stop-Impulses des main-Programms ließe sich die ebenfalls ausschalten.

Mein Problem ist aber, dass das Hauptprogramm einfriert und nicht mehr reagiert. Woran liegt das? Wird bestimmt wieder was triviales sein..

Danke euch schonmal für eure Hilfe!

Grüße,
Boris


RE: Schleife in Subvi hängt Hauptprogramm auf - F.Bi - 16.05.2011 12:43

Solange dein Sub-VI nicht gestoppt wird, was bei deinem Sub-VI nur geschehen kann, wenn dort der STOP Button gedrückt wird, wartet dein Hauptprogramm bis dein Sub-VI beendet wird. Du musst also dafür sorgen, dass nach Ablauf der gewünschten Zeit die Schleife beendet wird. Wenn du das Sub-VI von externer Stelle abbrechen willst, musst du das per Notifer, Global Variable o.ä. durchführen, was aber vom Hauptprogramm aus, in einer weiteren unabhängigen Schleife geschehen muss.


RE: Schleife in Subvi hängt Hauptprogramm auf - onsight8c - 16.05.2011 13:00

Hm stimmt, ist vom Schema her einleuchtend mit dem Beenden.

Allerdings läuft das Programm schon nach dem Einschalten nicht. Der Counter läuft nicht hoch und der gelatchte Schalter "save now" hängt..

Liegt es vllt am Timing bzw der Unsynchronität der beiden Schleifen?


RE: Schleife in Subvi hängt Hauptprogramm auf - NWOmason - 16.05.2011 15:55

(16.05.2011 13:00 )onsight8c schrieb:  Allerdings läuft das Programm schon nach dem Einschalten nicht. Der Counter läuft nicht hoch und der gelatchte Schalter "save now" hängt..

Das Programm läuft schon. Allerdings ist es im Sub-VI "gefangen". Dort befindet sich die Whileschleife, welche nur durch den Stoptaster auf dem SubVis-FP abgebrochen werden kann. Dies ist zwar mit der Stop-Taste des Haupt-Vis verbunden, die wird aber nur einmal beim Aufruf des Sub-Vis ausgelesen und dann erst wieder beim nächsten Durchlauf. Also so lange das Programm im Sub-Vi steckt, kannst du auf dem FP des Main-VIs soviel klickern, wie du willst, da ändert sich gar nichts.

Was du brauchst ist eine Routine, um Daten zwischen Elmenten aus dem Main-VI und dem SubVI auszutauschen, das geht mit:
  • Queues/Meldern
  • Referenzen
  • GV/FGVs
  • usw.

Wie auch schon F.Bi erläutert hat.

Am Besten mal das Programm ordentlich debuggen mit der Lampe, Breakpoints und Sonden. Dann siehts du ganz genau, was wie 'verkehrt' läuft.

z.B. läuft der Counter im Haupt-Vi deswegen nicht hoch, da das Sub-Vi erst den Wert zurückliefert, wenn es beendet ist. Und da das Sub-Vi sich in seiner Schleife befindet, gibt es auch keinen Wert zurück.

Beste Grüße,
NWO


RE: Schleife in Subvi hängt Hauptprogramm auf - toaran_ - 16.05.2011 15:59

Hi

also du musst immer auf den Datenfluss achten... solange in einem Subvi welces du mit Eingängen direkt im HauptVI startest muss dein Haupt Vi solange warten bis das Subvi fertig ist. in deinem Fall bis die While Schleife gestoppt wird ... also garnicht ...

Ausserdem hast du in der Whileschleife des Haupt und des Sub Vis keine Verzögerung eingebaut ... d.h. die ´Schleife läuft auf Voller Pulle und kann auch mal eine 100% CPU Last bedeuten...

ich habe deine Vis mal umgebaut ...ohne die Funktion des subvis mit näher anzusehen (evtl habe ich den AutoSave Eingang falsch verdrahtet ...)

jetzt wird dein Log Vi vor der Schleife deines Haupt Vis dynamisch gestartet.. d.h. quasi im Hintergrund .. Die Datenübertragung erfolgt per Notifier bei dem alle Buttons und Controlls die vorher direkt am Vi angeschlossen waren in einem Cluster zusammengefasst sind. Wenn sich jetzt der Zustand eines Controls änder wird eine neue message geschickt und im Subvi empfangen.

ich hoffe das vom Runterspeichern von 2010 auf 8.2 es keine Probleme gibt ...

[attachment=33791][attachment=33792]


T


RE: Schleife in Subvi hängt Hauptprogramm auf - onsight8c - 16.05.2011 22:43

Guten Abend in die Runde!

Danke dir toaran_ für das Umschreiben, glaub das Runterspeichern hat doch einiges zerbröselt, das Programm läuft war sehr schnieke, aber es kommt von den Eingaben im main-VI nichts im Subvi an.. Wenn du mir den 2010er Code anhängen könntest, wär das super!

Ich denke ich weiß, wo ich an meinem eigentlichen Programm noch nacharbeiten muss ^^

Vielen Dank euch allen nochmal!


RE: Schleife in Subvi hängt Hauptprogramm auf - toaran_ - 17.05.2011 11:42

Hallo

so ich hab das ganze nochmal umgestickt ... meine erste Version war ncith wirklich brauchbar ...

so nun hier eine funktionierene Version als 2010er ... ich hab jetzt auch mal mein Hirn eingeschaltet ... naja .. vor dem Mittag .. was da halt noch so geht ...Big Grin

[attachment=33806][attachment=33807]

T


RE: Schleife in Subvi hängt Hauptprogramm auf - onsight8c - 17.05.2011 22:32

Hi toaran_

Danke dir fürs Umschreiben!

Liegt wohl am Tag heute Bahn das fehlende logger_stats.ctl hab ich schnell noch geschrieben, als TypeDef.

Soweit so gut, die Eingaben, die ich im main mache, werden an das Subvi einwandfrei übergeben und verarbeitet - sieht man ja auf den Anzeigen im SubVI sehr gut.

Da ich mit den Notifyiern noch net so wirklich durchblicke, meine Frage: sendet das SubVI die Daten auch wieder ans main zurück? Ich bräuchte im Wesentlichen im main-vi den Schreib-Impuls (als Latch-Schalter). Mit diesem spreche ich eine case-Struktur an, die mir eine Datenloggerfunktion ausführt.

Entweder bin ich zu doof, dass es nicht funktioniert bei mir oder mein LV mag mich nicht...

Für heut ist erstmal Feierabend, Gute Nacht allerseits!


RE: Schleife in Subvi hängt Hauptprogramm auf - F.Bi - 18.05.2011 06:58

Du musst halt dein Signal mit "Send Notification" im Sub-VI senden und über "Get Notifier Status" im Main-VI abfragen.


RE: Schleife in Subvi hängt Hauptprogramm auf - onsight8c - 18.05.2011 10:49

Ok ich bin eindeutig zu doof... sorry Leute, ich raffs nicht, schaut selbst..