LabVIEWForum.de
Synchronisierte Sinussignale ohne Unterbrechung erzeugen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Synchronisierte Sinussignale ohne Unterbrechung erzeugen (/Thread-Synchronisierte-Sinussignale-ohne-Unterbrechung-erzeugen)



Synchronisierte Sinussignale ohne Unterbrechung erzeugen - Guest - 09.09.2008 07:44

Hallo an alle,

ich habe ein Programm zur Erzeugung zweier synchronisierter Sinussignale programmiert. Die Sinussignale können in ihrer Amplitude, Frequenz, Phasenverschiebung und Offset verändert werden, und zwar während das Programm läuft.
Das funktioniert auch alles soweit sehr gut. Allerdings gibt es da noch einen kleinen Schönheitsfehler, den ich gerne beseitigen würde. Es betrifft die Veränderung der Frequenz und der Phasenverschiebung.
Damit Änderungen an der Frequenz und der Phasenverschiebung korrekt übernommen werden, musste ich eine kurze Unterbrechung der inneren While-Schleife programmieren. Bei der Amplitude und dem Offset war dies nicht notwendig.
Genau diese kurze Unterbrechung würde ich gerne wieder raushaben, denn dadurch wird in dieser Zeit logischerweise kein Signal erzeugt (siehe Thementitel).

Ich habe mich hierzu schon im NI-Forum erkundigt. Dort wurde mir folgender Rat gegeben: "Jetzt noch eine Producer-Consumer Architektur mit Eventhandler und es wird was nettes draus."
Ich habe leider keine Ahnung, was damit gemeint ist. Huh Kann mir hier jemand helfen?

Über Hilfe und Anregungen zu meinem Problem freue ich mich sehr.

Gruß,

Daniel

Lv82_img


Synchronisierte Sinussignale ohne Unterbrechung erzeugen - chrissyPu - 09.09.2008 07:51

Hi,

wenn Du wirklich nur Sinussignale haben willst, warum machst Du das nicht mit einer Look-Up-Table. Dort hinterlegst Du eine komplette Sinusschwingung und liest dann die benötigten Werte der Schwingung aus. Deine Parameter stellst Du dann wie folgt ein:

- Frequenz: Update-Rate der Werte aus der LUT zur Ausgabe (DAC oder was auch immer)
- Phasenverschiebung: anderer Startwert zum auslesen aus der LUT (sozusagen ein Offset im Index)
- Amplitude: Multiplikation der ausgelesenen Werte
- Offset: Addition der ausgelesenen Werte

Damit hast Du bei Änderungen der Phase zwar einen Sprung im Signal, aber zumindest durchgängig ein Signal...

Grüße,

ch


Synchronisierte Sinussignale ohne Unterbrechung erzeugen - Guest - 10.09.2008 12:52

Was ist denn eigentlich eine "Look-Up-Table"? Und vor allem wie erstelle ich die?

Gruß,

Daniel


Synchronisierte Sinussignale ohne Unterbrechung erzeugen - chrissyPu - 10.09.2008 16:23

Naja, ein Look-up-Table ist eine Tabelle, wo Werte drin stehen. In Deinem Fall hätte sie eine Spalte mit einem Index von 1 bis X (wobei X die Anzahl der Samples pro Periode ist, wird sicherlich durch die Ausgaberate Deines Systems beschränkt) und eine zweite Spalte mit dem Wert sin(2*pi*i/X) wobei i der jeweilige Wert der ersten Spalte in der gleichen Zeile ist. Kurz gesagt, eine Darstellung der xy-Koordinaten Deiner Sinusschwingung. Klar?


Synchronisierte Sinussignale ohne Unterbrechung erzeugen - Guest - 11.09.2008 09:23

Ich bin relativ neu in LabVIEW. Habe schon nach Beispielen bezüglich dieser Tabelle gesucht, aber hab bisher kein ordentliches gefunden. Weißt du oder vielleicht auch jemand anderer, wo es ein gutes Beispiel gibt?


Synchronisierte Sinussignale ohne Unterbrechung erzeugen - chrissyPu - 12.09.2008 07:13

Wozu brauchst du da ein Beispiel? In Excel generieren, als textdatei speichen in LV einlesen, alternativ ein LabVIEW-Programmteil, dass Dir eine Schwingung erzeugt und in einem Array mit Index ausgibt... Mehr brauchst du nicht...