LabVIEWForum.de
While schleife in While schleife - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: While schleife in While schleife (/Thread-While-schleife-in-While-schleife)

Seiten: 1 2


While schleife in While schleife - sissi - 21.02.2012 15:05

Hallo,

ich habe ein Problem, und zwar :
In einem VI.Hauptprogramm habe ich mehrere Unterprogramme(Sub.VI) verwendet und sie beinhalten alle eine while schleife (Z.B für Datenerfassung, Datenerzeugung...usw).

Wenn ich die Unterprogramme einzeln laufen lassen, dann ist alles Prima.
aber wenn ich versuche das ganzes programm laufen zu lassen, dann werden die Sub.VI nicht mitkompiliert.


hat jemand eine Idee wie ich das ganze programm mit den Sub.VI durchlaufen lassen?

Danke

Als Beispiel, habe ich hier eine kleine Programm angehängt.was auch das Problem in meinem Hauptprogramm beschreibt.

Lv09_img2


RE: While schleife in While schleife - jg - 21.02.2012 15:17

THINK DATAFLOW!

Ein VI (auch ein SubVI) wird erst beendet, wenn alle Ausgänge anliegen. Deswegen funktioniert deine hochgeladene Struktur nicht!
Dein Haupt-VI schreibt sofort ein "FALSE" in die globale Variable "stop". Parallel wird ein Sub-VI aufgerufen. Da darin aber eine While-Schleife ist, die du probierst, über die globale Variable "stop" abzubrechen, wird das Sub-VI nie beendet. Solange das Sub-VI aber nicht beendet wird, läuft auch die While-Schleife im Main-VI nicht neu an. Flop

Gruß, Jens


RE: While schleife in While schleife - sissi - 21.02.2012 17:20

Danke für Antwort.

Ohne Berücksichtigung der Global Variable, wie kann ich im einfache Beispiel ohne beutzung der Parallele Schleifen, unterprogramme mit while schleife im Hauptprogramm auch starten und von der while schleife wieder raus?

Danke

PS: Ich habe hier ein Beispiel neu hochgeladen, der aber funktioniert aber nicht ganz so richtig wie es sein soll.(auch nach Amplituden Änderung, tut sich nix ????)


RE: While schleife in While schleife - GerdW - 21.02.2012 17:32

Hallo sissi,

bei deinem Attachment fehlen 2 subVIs ("Global 3.vi" und "test global var..vi")...


RE: While schleife in While schleife - sissi - 21.02.2012 17:51

(21.02.2012 17:32 )GerdW schrieb:  Hallo sissi,

bei deinem Attachment fehlen 2 subVIs ("Global 3.vi" und "test global var..vi")...

Danke für den Hinweis.

Ich habe das jetzt wieder ohne Global Variablen hochgeladen.


RE: While schleife in While schleife - GerdW - 21.02.2012 21:43

Hallo sissi,

wenn man einfache Grundregeln wie "Aufräumknopf benutzen" und "sinnvolles Schleifentiming" beachtet, sieht dein VI so aus:
[attachment=38756]
Und dann funktioniert es sogar! (Außerdem beachte man die Nutzung des Timeouts beim Dequeue, was ja glücklicherweise in der Kontexthilfe beschrieben wird...)


RE: While schleife in While schleife - sissi - 22.02.2012 22:36

(21.02.2012 21:43 )GerdW schrieb:  Hallo sissi,

wenn man einfache Grundregeln wie "Aufräumknopf benutzen" und "sinnvolles Schleifentiming" beachtet, sieht dein VI so aus:

Und dann funktioniert es sogar! (Außerdem beachte man die Nutzung des Timeouts beim Dequeue, was ja glücklicherweise in der Kontexthilfe beschrieben wird...)

Vielen Dank für den Tipps.

Ich habe jetzt wieder eine Frage, und zwar:
Was ist wenn ich Daten mit DAQmx Assistenz erfasse (ca. 10 Sensoren: Drück,Temp. Füllstand, Durchfluss...usw.).
Diese Datenerfassungsfunktion als Sub.VI programmiert, Die Erfasste-werte sollen im Hauptprogramm wieder aufgerufen werden.
Solle ich jetzt für jede einzelne Wert bzw. Sensor eine Element einfüge? (wie mein Vorheriges beispiel, aber halt mit mehrere Element )


RE: While schleife in While schleife - GerdW - 23.02.2012 09:11

Hallo sissi,

man könnte auch mit einem Array arbeiten statt mit 10 Einzelwerten...


RE: While schleife in While schleife - sissi - 23.02.2012 10:04

(23.02.2012 09:11 )GerdW schrieb:  Hallo sissi,

man könnte auch mit einem Array arbeiten statt mit 10 Einzelwerten...

hast du vielleicht ein Beispiel für mich? (meinst du damit die Erfasste-werte indizieren und als Array weiter geben (als FIFO-System)?)


RE: While schleife in While schleife - GerdW - 23.02.2012 10:19

Hallo sissi,

ich kenn mich mit dem DAQ-Assi nicht aus, aber üblicherweise konfiguriert man seine DAQmx-Erfassung so, dass man alle Kanäle gebündelt in einem Array (oder Waveform, je nachdem, was passt) bekommt. Gern auch schon mit den DAQmx-Skalierungsmöglichkeiten verbunden, sodass nicht rohe Messwerte (Strom, Spannung) gemeldet werden, sondern schon Füllstand, Durchfluss, whatever...

Dieses Array mit Messwerten kann man dann auch wieder komplett in die Queue schieben, man muss nicht 10 Einzelwerte hineinschieben (was beim Auslesen ja auch wieder synchronisiert werden muss!).

Beispiele findest du im LabVIEW-Hilfe-Menü unter "Beispiele suchen" Smile