LabVIEWForum.de
Schleifen mit unterschiedlicher Taktrate? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Schleifen mit unterschiedlicher Taktrate? (/Thread-Schleifen-mit-unterschiedlicher-Taktrate)



Schleifen mit unterschiedlicher Taktrate? - W-C - 01.02.2012 17:28

Hallo,

ich bin auf der Suche nach einer möglichst nachhaltigen Struktur für die folgende Aufgabe:

IDEE: Ich möchte aus einer Schleife (Main-GUI) heraus über ein Button-Klick eine zweite (oder noch weitere) Schleife(n) mit wählbarem dt starten, die parallel zur mainloop laufen sollen.

HINTERGRUND: das ganze soll eine GUI werden, die als Stream Daten darstellt (Schleife in der Mainloop) und parallel Nutzereingaben über Buttons (Eventstruktur) ermöglicht. Diese Buttons sollen Messungen bzw. Hardware-Trigger-Signale mit verschiedenen Taktraten starten/beenden.

Bsp.:
Daten A,B & C werden mit 100 Hz gestreamt (als Signalverlaufsdiagramm), dann wird Button X/Y gedrückt und die Daten mit 50 Hz in eine Datei geschrieben UND/ODER eine Triggersignal mit 15 Hz ausgegeben. Dabei muss der Stream aber weiterlaufen.

Als Hardware wird ein PXI-Host mit einem der Sensoren und ein verteilter cRIO in RT mit den restlichen Sensoren und dem Trigger genutzt.


Ist das überhaupt möglich? Wenn aber doch, hat jemand Beispiele oder Tipps?
Mir gehts primär um das Skelett dahinter (also wie unterschiedliche Raten auf Abruf in einem Programm (mit SubVI's) realisiert werden können).
Ich hoffe, das ist nicht zu konfus.KA


RE: Schleifen mit unterschiedlicher Taktrate? - M Nussbaumer - 02.02.2012 08:14

(01.02.2012 17:28 )W-C schrieb:  Hallo,

ich bin auf der Suche nach einer möglichst nachhaltigen Struktur für die folgende Aufgabe:

IDEE: Ich möchte aus einer Schleife (Main-GUI) heraus über ein Button-Klick eine zweite (oder noch weitere) Schleife(n) mit wählbarem dt starten, die parallel zur mainloop laufen sollen.

HINTERGRUND: das ganze soll eine GUI werden, die als Stream Daten darstellt (Schleife in der Mainloop) und parallel Nutzereingaben über Buttons (Eventstruktur) ermöglicht. Diese Buttons sollen Messungen bzw. Hardware-Trigger-Signale mit verschiedenen Taktraten starten/beenden.

Bsp.:
Daten A,B & C werden mit 100 Hz gestreamt (als Signalverlaufsdiagramm), dann wird Button X/Y gedrückt und die Daten mit 50 Hz in eine Datei geschrieben UND/ODER eine Triggersignal mit 15 Hz ausgegeben. Dabei muss der Stream aber weiterlaufen.

Als Hardware wird ein PXI-Host mit einem der Sensoren und ein verteilter cRIO in RT mit den restlichen Sensoren und dem Trigger genutzt.


Ist das überhaupt möglich? Wenn aber doch, hat jemand Beispiele oder Tipps?
Mir gehts primär um das Skelett dahinter (also wie unterschiedliche Raten auf Abruf in einem Programm (mit SubVI's) realisiert werden können).
Ich hoffe, das ist nicht zu konfus.KA

Sieh dir mal das Producer-Consumer Pattern (Im Getting Started-Fenster -> VI from Template -> VI -> From Template -> Frameworks -> Design Patterns) an, entspricht so ziemlich deiner FragestellungSmile

Hoffe das hilft dir weiter!

Gruss Marc

Edit: Hier noch das Template:[attachment=38494] Zu beachten ist, dass man den Queue grundsätzlich noch einen Namen geben sollteSmile


RE: Schleifen mit unterschiedlicher Taktrate? - W-C - 02.02.2012 08:18

Hallo Marc,

hab gestern abend/nachts noch etwas gesucht und gefunden. Bin genau auf die gleiche Idee/Lösung gekommen und bastele gerade meine Code-Struktur um (war ja schon eine Menge Code da (aber halt - typisch Anfänger - unstrukturiert).

Wenn es nicht klappt, meld ich mich nochmal.

Danke für die unbeabsichtigte Bestätigung.


RE: Schleifen mit unterschiedlicher Taktrate? - W-C - 05.02.2012 21:34

So, ich hab das ganze jetzt mal probiert, das Ergebnis passt mir aber noch nicht so richtig.
Wenn ein Ereignis zum Queue zugefügt wird, dann wir die Consumer-Schleife genau einmal ausgeführt. Das hilft mir, um die Daten zwischen den Schleifen zu Transportieren, aber ich will ja, dass eine Schleife parallel mit einstellbarer Taktrate gestartet und gestoppt werden kann.
Ist da eine State Machine vielleicht sinnvoller (hab ich noch nicht ausprobiert, sieht aber sinnvoll aus) --> Idle-State + Initialisierungs State (bei DMM's) + Start-State + Stopp-State ????

Bin für jede Rückmeldung dankbar.