LabVIEWForum.de
zeitgesteuerte Case-Schleife - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: zeitgesteuerte Case-Schleife (/Thread-zeitgesteuerte-Case-Schleife)

Seiten: 1 2


zeitgesteuerte Case-Schleife - Linsche - 03.09.2012 15:28

Hallo LabViewgemeinde,

ich stehe mal wieder vor einem Problem, an dem ich mir schon seit zwei Woche die Zähne ausbeise.

Ich nehme ein Signal auf, detektiere die Peaks und möchte bei der detektion einen TTL-Trigger mit dem USB6009 senden. Im Moment habe ich eine Case-Schleife, die wenn eine Detektion erfolgt ein Low an den Output sendet und bei keinem Peak ein High sendet. Ich möchte das Low jedoch für eine längere Zeit beibehalten. Und zwar messe ich dazu die Frequenz der Peaks, ziehe davon einen bestimmten Wert ab und möchte das Signal über diesen Zeitraum auch Low haben, bevor es wieder auf High springt. Ich habe Zeitverzögerungen und zeitgesteuerte While-Schleifen schon ausprobiert, aber irgendwie komme ich auf keinen grünen Zweig.
Ich hoffe ihr könnt mir dabei helfen.

Danke,
Linsche


RE: zeitgesteuerte Case-Schleife - BerndDasBrot - 03.09.2012 16:15

Hallo Linsche

2 Dinge sind nicht gut in Deinem BD. Das Metronom solltest Du durch ein Delay ersetzen, weil sonst kein definierter Zeitraum unterbrochen wird. Ausserdem sind nur ganze ms zulässig, 0.15 ms subtrahieren bringt also nichts.
Welche Frequenzen willst Du denn haben mit den Peaks?

Ein grösserer Ausschnitt wäre auch hilfreich!

Gruss, BDB


RE: zeitgesteuerte Case-Schleife - Linsche - 04.09.2012 08:07

Hallo BDB,

ich hab schon gemerkt, dass das mit dem Metronom nix wird...hab auch schon vieles anderes ausprobiert, aber es wird irgendwie nix.
Ich nehme ein Atemsignal auf und habe dadurch nur sehr kleine Frequenzen so um die 1-2Hz. Für das Zeitdelay berechne ich die Zeitabstände zwischen den Peaks und ziehe dann wie gesagt eine bestimmte Zeit ab. Da komme ich dann quasi nie auf eine ganze Zahl, was währscheinlich nicht so günstig wäre oder? Dieses express VI Time Delay hatte ich auch schon eingebaut, aber da habe ich dann wahrscheinlich das gleiche Problem mit der gebrochenen Zahl, denn das hat auch nicht funktioniert.
Ich habe so langsam keine Idee mehr, was ich noch tun könnte.
Leider komme ich gerade nicht an den Computer, auf dem mein Programm ist. Ich werde einen größeren Ausschnitt meines BD nachliefern!

Gruß,
Linsche


RE: zeitgesteuerte Case-Schleife - GerdW - 04.09.2012 08:19

Hallo Linsche,

Zitat:ich hab schon gemerkt, dass das mit dem Metronom nix wird...
Das "Metronom" selbst funktioniert, nur deine Programmierung drum herum nicht. Ist ein gewaltiger Unterschied...

Zitat:hab auch schon vieles anderes ausprobiert, aber es wird irgendwie nix.
Was denn alles?

Zitat:Dieses express VI Time Delay hatte ich auch schon eingebaut, aber da habe ich dann wahrscheinlich das gleiche Problem mit der gebrochenen Zahl, denn das hat auch nicht funktioniert.
Glaube ich nicht. Das ExpressVI arbeitet mit DBL-Werten...

- Die "einfachen" Timer-Funktionen erwarten Millisekunden-Werte als Integer, während du anscheinend in deinem VI in Sekunden rechnest. Klarer Fehler von "Nicht die Anleitung gelesen!"... Mit etwas Mathematik ließe sich dieses Problem aber beheben!
- Das ExpressVI erwartet Sekunden-Angaben als DBL. Dies würde zu deinem VI (so wie du es gezeigt hast) passen. Warum das bei dir nicht funktioniert: musst du mal selbst schauen...

P.S.:
Wenn man in einem FALSE-Case ein TRUE ausgibt, dann ist das ein NOT. Wink


RE: zeitgesteuerte Case-Schleife - Linsche - 04.09.2012 08:51

Hallo Gerd,

Zitat: Das "Metronom" selbst funktioniert, nur deine Programmierung drum herum nicht. Ist ein gewaltiger Unterschied...
Das war auch so gemeint, dass es in diesem Fall in meinem Programm nicht funktioniert.

Zitat:Was denn alles?
Ich habe es mit einer zeitgesteuerten While-Schleife Probiert, aber damit bin ich leider gar nicht zurecht gekommen. Dann habe ich ein Zeitdelay eingebaut und diese Tick Count funktion, bei der dann ein Boolean gesendet wird, wenn die Zeit abgelaufen ist habe ich auch probiert. Habe alles auch mit mehreren Einstellungen probiert, komme aber wie gesagt leider auf keinen so richtig grünen Zweig.

Mit der Zeit muss ich ganz ehrlich zugeben, dass hab ich bis jetzt noch gar nicht bemerkt...ich weiß, dass man dafür ms braucht, da hab ich wohl den Wald aber vor lauter Bäumen nicht gesehen Blush

Ich probiere es noch einmal mit dem Delay, vielleicht habe ich ja doch irgendwas falsch gemacht.

Danke erstmal,
Linsche


RE: zeitgesteuerte Case-Schleife - Falk - 04.09.2012 09:29

Hallo Linsche,

ich kann mich BerndDasBrot nur anschließen. Zeige mal wenn möglich deinen Programmcode komplett. Vielleicht kann man mit einem anderen Design dessen eine andere (vielleicht sogar elegantere) Lösung deiner Problemstellung finden.

Schöne Grüße
Falk


RE: zeitgesteuerte Case-Schleife - Linsche - 04.09.2012 10:12

Hallo Falk,

so hier nun mein BD. Aus dem SubVI kommt die Zeit zwischen den Peaks der Detektor gibt bei Peak eine 1 und sonst eine 0. Damit wollte ich das Zeitdelay für das TTL Signal steuern steuern.
Ich habe noch einmal die Delayfunktion eingebaut, aber wie gesagt komme ich da nicht so wirklich auf einen grünen Zweig.

Entschuldigt die Unordnung im VI, ich hoffe man sieht durch Blush

Danke,
Linsche


RE: zeitgesteuerte Case-Schleife - Falk - 04.09.2012 11:09

Sage mal in welchem Pulslängen bewegen wir uns eigentlich? Wenige ms oder doch eher ein Faktor 10 oder 100 mehr? Ich frage aus dem Gründe da du ja sowieso ein "Wait" von 30ms in deiner Schleife hast.

Nachtrag: Habe mal ein kleines VI gebaut. Soll das Verhalten so aussehen?


RE: zeitgesteuerte Case-Schleife - Linsche - 04.09.2012 13:43

Oh jee, dieses wait hab ich noch von ner Zeit drin, wo ich das Signal nur simuliert habe Blush das kann natürlich weg, da das Programm auch ohne funktioniert.

Zu den Pulslängen: Ich nehme eine Respirationskurve auf und habe dann jenachdem 20-100 Atemzüge pro Minute. Das wären dann 0,6-3 pro Sekunde. Es geht also um sehr kleine Frequenzen.
Ja so in etwa soll das Verhalten aussehen. Ich sende quasi permanent ein high und möchte dann mit der Detektion des Peaks ein low senden, welches so lange wie möglich low bleibt bevor der nächste Peak gemessen wird. Ich möchte mit dem Low die komplette Expirationsphase ausnutzen. Siehe Bild: Peak ist die Inspiration und das Plateau ist die Expirationsphase.

Ich schau mal, ob ich das mit deinem VI umsetzen kann.

Grüße,
Linsche


RE: zeitgesteuerte Case-Schleife - Linsche - 04.09.2012 14:14

Hallo Falk,

also ich habe jetzt mal umgesetzt was du mir geschickt hast. Allerdings stoße ich da auf ein mir bekanntest Problem...das Delay funktioniert, leider wird das ganze Programm dann langsamer und die Signalaufnahme kommt ins Stocken bzw. einfach alles kommt ins Stocken. Es ist bei meinem Programm aber sehr wichtig, dass die Signalverarbeitung so schnell wie möglich funktioniert.

Gibts vielleicht noch ne Idee, ohne dass das Programm ausgebremst wird?

Grüße,
Linsche