16.05.2011, 12:43
Beitrag #2
|
F.Bi
LVF-Gelegenheitsschreiber
Beiträge: 152
Registriert seit: Oct 2007
LabView 2016
2007
EN
55218
Deutschland
|
RE: Schleife in Subvi hängt Hauptprogramm auf
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.
|
|
|
16.05.2011, 13:00
Beitrag #3
|
onsight8c
Schwerionenschubser
Beiträge: 16
Registriert seit: Mar 2011
2012 12.0f3
2009
DE
Deutschland
|
RE: Schleife in Subvi hängt Hauptprogramm auf
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?
|
|
|
16.05.2011, 15:55
Beitrag #4
|
NWOmason
Simultator
Beiträge: 1.078
Registriert seit: Dec 2010
2012.SP1
2008
EN
93047
Deutschland
|
RE: Schleife in Subvi hängt Hauptprogramm auf
(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
|
|
|
16.05.2011, 15:59
(Dieser Beitrag wurde zuletzt bearbeitet: 16.05.2011 16:01 von toaran_.)
Beitrag #5
|
toaran_
LVF-Gelegenheitsschreiber
Beiträge: 237
Registriert seit: Feb 2007
2012
2006
EN
90763
Deutschland
|
RE: Schleife in Subvi hängt Hauptprogramm auf
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 ...
AutosaveFunktion.vi (Größe: 19,23 KB / Downloads: 273)
ticker_elog1.vi (Größe: 27,09 KB / Downloads: 242)
T
|
|
|
16.05.2011, 22:43
Beitrag #6
|
onsight8c
Schwerionenschubser
Beiträge: 16
Registriert seit: Mar 2011
2012 12.0f3
2009
DE
Deutschland
|
RE: Schleife in Subvi hängt Hauptprogramm auf
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!
|
|
|
17.05.2011, 11:42
Beitrag #7
|
toaran_
LVF-Gelegenheitsschreiber
Beiträge: 237
Registriert seit: Feb 2007
2012
2006
EN
90763
Deutschland
|
RE: Schleife in Subvi hängt Hauptprogramm auf
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 ...
AutosaveFunktion.vi (Größe: 15,93 KB / Downloads: 207)
ticker_elog1.vi (Größe: 23,53 KB / Downloads: 201)
T
|
|
|
17.05.2011, 22:32
Beitrag #8
|
onsight8c
Schwerionenschubser
Beiträge: 16
Registriert seit: Mar 2011
2012 12.0f3
2009
DE
Deutschland
|
RE: Schleife in Subvi hängt Hauptprogramm auf
Hi toaran_
Danke dir fürs Umschreiben!
Liegt wohl am Tag heute 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!
|
|
|
18.05.2011, 06:58
Beitrag #9
|
F.Bi
LVF-Gelegenheitsschreiber
Beiträge: 152
Registriert seit: Oct 2007
LabView 2016
2007
EN
55218
Deutschland
|
RE: Schleife in Subvi hängt Hauptprogramm auf
Du musst halt dein Signal mit "Send Notification" im Sub-VI senden und über "Get Notifier Status" im Main-VI abfragen.
|
|
|
| |