LabVIEWForum.de - Phasenverschiebung mittel Nulldurchgängen bestimmen

LabVIEWForum.de

Normale Version: Phasenverschiebung mittel Nulldurchgängen bestimmen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Ich möchte die Ticks zählen welche zwischen dem fallenden Nulldurchgang des ersten Signal und dem fallenden Nulldurchgang des zweiten Signals liegen. Sollte der zweite vor dem ersten kommen soll die Zahl negativ sein. Es soll nur ein Wert pro Periode am Ende Rauskommen. Letzt endlich ist das nix anderes als die Bestimmung der Phase zwischen 2 Signalen durch Nulldurchgänge.

Auf dem FPGA habe ich ja den Funktion ZeroCrossing die mir True liefert.

Meine Idee wenn ein der Zerocrossings True ist den aktuellen Wert des Tickcounters speichern und anschließend diesen Zerocrossing resten. Wenn das zweite Zerocrossing true wird die beiden Tickcounterwert subtraieren.

Die Counterwerte habe ich über Case Strukturen gespeichert aber da muss ich ja immer einen Ausgang belegen, dies hat zur Folge das am Ausgang immer was anliegt. Wenn am Ende der Periode aber immer die Richtige Periode anliegt soll mir das egal sein.

Im Angehängenten Code sind das irgenwie jetzt schon ganz schön viel Rückgekoppelte Werte das gefällt mir überhaupt nicht hat wer eine IDEE wie es eleganter geht?

DAS Ganze soll auf einem cRIO FPGA laufen
Wo ist der angehängte Code? Ph34r

Gruß, Jens
Hier.
hatte vergesse Attachment hinzufügen zu klicken.
Ich habe jetzt fast die Lösung.

Für positive phi geht es. Allerdings wenn ich die Kanäle tausche müsset phi nur negativ werden, nur phi wird eine ganz große zahl. ich habe schon fest gestellt das die Division kein negaives Ergebnis liefert hat wer eine Idee warum? Als SGL geht es auch nicht.

Lg
Hallo Mingendorf,

an der Division liegt es jedensfalls nicht, dass der Wert nicht negativ werden kann. Eher wohl daran dass du zwei U32-Werte subtrahierst, was wiederum einen U32-Wert ergibt. Wofür das "U" in U32 steht, weißt du sicherlich...
Ja das U steht eigentlich für unsigned. mir schon klar aber wenn ich mir das Ergebnis der Subtraktion anzeigen lassen bekomme ich einen negativen Wert.

Warum? = Weil ich mir nen Integer als Indecator gesetzt hatte und der mir das wieder umrechnet.

Ergebnis der Subraktion im Datentyp geändert und es läuft.

Danke war wohl nicht ganz bei der Sache.
jetzt detektieren ich leider ohne erkennbares system mal die Nulldurchganänge in der Richtigen und in der Flaschen Reinfolge so das die Phase machmal um 180° verschoben ist hat wer eine Idee zum abfangen dieses Problems?
Referenz-URLs