ich möchte 2 Systeme synchronisieren durch Vergleich der PWM.
Es gibt schon viele Threads mit diesem Thema,
aber in meinem Fall kann ich das zu regelnde System nur durch eine
Funktion SetFreq() regeln.
Ein direkter Eingriff (low-Level) in die PWM-Erzeugung ist nicht
möglich.
D.h. anhängig von der Phasen-Differenz muss man die Frequenz des Slave
erhöhen/erniedrigen.
(Ich kenne Regelungstechnik nur von Größen wie Spannung, Temperatur
usw., nicht aber von der Größe "Zeit")
Im ersten Anlauf habe einen einfachen I-Regler verwendet.
Es funktioniert zwar, aber die PWM vom Slave zappelt noch stark.
Wenn ich den Feedback schwächer mache, wird die PWM ruhiger, aber kommt
bei Frequenzänderungen nicht so schnell hinterher.
Gibt es dem Problem schon Musterlösungen?
Ich bin bei Google nicht fündig geworden.
@J. Wa. (nuernberger)
>aber in meinem Fall kann ich das zu regelnde System nur durch eine>Funktion SetFreq() regeln.
Hmm.
>Ein direkter Eingriff (low-Level) in die PWM-Erzeugung ist nicht>möglich.
Schlecht.
>D.h. anhängig von der Phasen-Differenz muss man die Frequenz des Slave>erhöhen/erniedrigen.
Nennt sich PLL (Phase Locked Loop)
>Im ersten Anlauf habe einen einfachen I-Regler verwendet.>Es funktioniert zwar, aber die PWM vom Slave zappelt noch stark.>Wenn ich den Feedback schwächer mache, wird die PWM ruhiger, aber kommt>bei Frequenzänderungen nicht so schnell hinterher.
Das ist normal.
Der Knackpunkt einer guten PLL ist der Phasenkomparator und das
Schleifenfilter.
Ein guter Einstieg in die PLL Technik ist das Datenblatt des CD4046. Das
IC hat 2 Phasenkomparatoren, wobei der eine ein simples XOR Gatter ist,
das sich durch geringes Jittern auszeichnet, allerdings nur einen engen
Fangbereich hat.
Der zweite ist ein 'digitaler' Phasenkomparator, der einen weiten
Fangbereich hat, allerdings erkauft zum Preis eines stärkeren Jittern.
Da du leider nichts über die verwendeten Frequenzen schreibst, bleibt es
erstmal dabei.
Vergiss den PLL. Der ist so gemacht, dass das mudulationsprodukt auf
null regelt. Bein Sinusen sind die dan 90 Grad zueinander. PWM, mit
unterschiedlichen pulsbreiten werden zwar frequenzsynchronisiert, aber
nicht phasengelockt
Jetzt Nicht schrieb:> Bein Sinusen sind die dan 90 Grad zueinander.
Du hast dir das Bild des TE nicht mal angesehen, oder? Es sind
Rechtecksignale. Und vermutlich hast du dir auch nicht das Datenblatt
des CD4046 angeschaut, der digitale Phasenkomparator regelt auf 0° und
nicht auf 90°.
@Jetzt Nicht (jetztnicht)
>Vergiss den PLL.
???
Warum?
> Der ist so gemacht, dass das mudulationsprodukt auf>null regelt.
Kann man so allgemein gar nicht sagen. Das ist vom Phasendetektor
abhängig.
> Bein Sinusen sind die dan 90 Grad zueinander.
Nicht zwangsweise, man kann auch die auf Null Grad ausregeln, dazu
braucht es nur einen PI-Regler.
> PWM, mit>unterschiedlichen pulsbreiten werden zwar frequenzsynchronisiert, aber>nicht phasengelockt
Jaja, phasengelockt. Welch wohlklingend Wort 8-(
Auch zwei PWM-Signale mit verschiedenen Tastverhältnissen kann man
problemlos auf eine konstante Phasenverschiebung ausregeln, dazu braucht
man logischerweise einen flankensensitiven Phasendetektor. Been there,
done that.
Ich habe mir ein paar Dokumente über PLL und Software-PLL (SPPL)
angeschaut,
aber meine Aufgabenstellung ist schon etwas anders.
Es gibt ein Buch über SPLL:
http://www.amazon.de/Phase-Locked-Loops-Simulation-Applications/dp/0071493751
Kennt das jemand?
Zurück zu meiner Anwendung:
In den ersten Loops ermittelt der Slave die Zeit zwischen 2 steigenden
Flanken des Masters, dann stellt er die Grundfrequenz f0 ein
(Arbeitspunkt) und regelt die Abweichungen aus.
Bei starker Rückkopplung folgt der Slave ganz gut, auch bei
Frequenzsprüngen, aber zappelt sehr unruhig.
Bei kleiner Rückkopplung ist der slave sehr ruhig/stabil, aber kann
Frequenzsprüngen des Masters kaum folgen.
Ich würde das ganze gerne theoretisch untersuchung, und Optimierungen,
z.B. von Ziegler-Nichols anwenden.
Messen tue ich zunächst die Zeitdifferenzen der Flanken.
Durch Division könnte ich das in
umrechnen (was auf 0 geregelt werden soll).
Einstellen (Stellgröße) kann ich aber nur die Frequenz.
Frequenzvorgaben wirken sich integriert auf die Phasendifferenz aus.
D.h. wenn ich einen PD-Regler verwende, dann erhalte ich in der
Gesamtwirkung einen PI-Regler?
@ J. Wa. (nuernberger)
>aber meine Aufgabenstellung ist schon etwas anders.
Keinesfalls. Du siehst das nur nicht ganz klar.
>http://www.amazon.de/Phase-Locked-Loops-Simulation...>Kennt das jemand?
Das hatte ich mal vor über 15 Jahren in der 1. Auflage in der Hand.
War ganz gut.
>In den ersten Loops ermittelt der Slave die Zeit zwischen 2 steigenden>Flanken des Masters, dann stellt er die Grundfrequenz f0 ein>(Arbeitspunkt) und regelt die Abweichungen aus.
Nicht so schnell. Dass sind viel zuviele Dinge viel zu oberflächlich
beschrieben. Allein das Thema Phasendetektor ist weitreichender.
>Bei starker Rückkopplung folgt der Slave ganz gut, auch bei
Was heißt starke Rückkopplung? Großer Multiplikator zwischen
Phasenfehler und Frequenzeinstellung?
>Frequenzsprüngen, aber zappelt sehr unruhig.
Logisch.
>Bei kleiner Rückkopplung ist der slave sehr ruhig/stabil, aber kann>Frequenzsprüngen des Masters kaum folgen.
Ebenfalls logisch.
>Ich würde das ganze gerne theoretisch untersuchung, und Optimierungen,>z.B. von Ziegler-Nichols anwenden.
Hat damit nicht sooo viel zu tun. Zuerst muss man die PLL
regelungstechnisch simulieren, Frequenzgang etc. Dann sieht man auch
mehr.
>Messen tue ich zunächst die Zeitdifferenzen der Flanken.>Durch Division könnte ich das in>\Delta \phi>umrechnen (was auf 0 geregelt werden soll).
Muss man nicht. Ob nun normiert oder nicht normiert spielt hier kaum
eine Rolle.
>Einstellen (Stellgröße) kann ich aber nur die Frequenz.
Wie bei jeder PLL.
>Frequenzvorgaben wirken sich integriert auf die Phasendifferenz aus.>D.h. wenn ich einen PD-Regler verwende, dann erhalte ich in der>Gesamtwirkung einen PI-Regler?
Nein.
>>aber meine Aufgabenstellung ist schon etwas anders.>>Keinesfalls. Du siehst das nur nicht ganz klar.
Das mag sein. Ich habe zwar ET mit Regelungstechnik als Schwerpunkt
studiert,
aber fast nie praktische Erfahrung im Beruf gesammelt.
> Allein das Thema Phasendetektor ist weitreichender.
Eine analoge Lösung ist mit Sicherheit kompliziert.
Aber mit einem uC stelle ich mir das sehr trivial vor.
Die beiden Schwingungen müssen "ähnlich" sein (vllt. 1% Abweichung),
damit keine Aliasing-Effekte eine Rolle spielen.
Dann kann mit den zeitlichen Versatz der Schwingungen durch die Timer
feststellen. (die Phase dann durch Division durch Periodenlänge)
@ J. Wa. (nuernberger)
>Das mag sein. Ich habe zwar ET mit Regelungstechnik als Schwerpunkt>studiert,>aber fast nie praktische Erfahrung im Beruf gesammelt.
Schlecht.
>> Allein das Thema Phasendetektor ist weitreichender.>Eine analoge Lösung ist mit Sicherheit kompliziert.
Das wollte ich damit nicht sagen, sondern dass man dort aufpassen muss.
Es gibt Phasendetektoren, die man mit Vielfachen der Grundfrequenz
veralbern kann.
>Aber mit einem uC stelle ich mir das sehr trivial vor.
Und warum ist es dann noch nicht fertig und läuft zufriedenstellend?
>Die beiden Schwingungen müssen "ähnlich" sein (vllt. 1% Abweichung),>damit keine Aliasing-Effekte eine Rolle spielen.
1% was? Phasenlage?
>Dann kann mit den zeitlichen Versatz der Schwingungen durch die Timer>feststellen. (die Phase dann durch Division durch Periodenlänge)
Wie bereits gesagt, ist das unwesentlich. Die Division kostet nur
(Rechen)Aufwand.
Generell wird man bei JEDER PLL einen Kompromiss eingehen müssen aus
hoher Reglerbandbreite (und damit hohem Jitter, aber schnelle Reaktion
auf Änderungen am Eingang) und niedriger Reglerbandbreite (und damit
weniger Jitter aber auch langsamer Reaktion am Ausgang).
>>Aber mit einem uC stelle ich mir das sehr trivial vor.>>Und warum ist es dann noch nicht fertig und läuft zufriedenstellend?
Ich meinte, das Feststellen der Phasenabweichung (Phasendetektor) sei
trivial mit uC.
Den loop-filter (PT1 zwischen Phasendetector und VCO) richtig zu
konfigurieren ist nicht trivial, ähnlicher Aufwand wie beim CD4046, aber
nicht wirklich schwer.
(es gibt da Formeln zum errechnen von den R und C)
Ich muss dann Ki und Kp rausfinden und den PT1 entsprechend
programmieren.
Der CD4046 war da ein sehr guter Ansatzpunkt.
>>Die beiden Schwingungen müssen "ähnlich" sein (vllt. 1% Abweichung),>>damit keine Aliasing-Effekte eine Rolle spielen.>1% was? Phasenlage?
Frequenz. Beim Start messe ich die Periodenlänge und stelle die Frequenz
entsprechend ein. Damit sind die Frequenzen Master und Slave schon sehr
ähnlich. Im Hintergrund läuft das Messen der Periode weiter, und bei
Frequenzsprüngen wird der Arbeitspunkt verändert.
@J. Wa. (nuernberger)
>Frequenz. Beim Start messe ich die Periodenlänge und stelle die Frequenz>entsprechend ein.
Kann man machen, macht aber kaum eine PLL.
> Damit sind die Frequenzen Master und Slave schon sehr>ähnlich. Im Hintergrund läuft das Messen der Periode weiter, und bei>Frequenzsprüngen wird der Arbeitspunkt verändert.
Ein weiterer wichtiger Punkt ist der Duchstimmbereich des digitalen
Oszillators (NCO, numeric controlled oscillator). Mit einer DDS ist der
praktisch unbegrenzt, mit einem einfache 1:N Teiler hat man bei kleinen
N schon recht große Sprünge und damit Jitterprobleme. Je größer der
Durchstimmbereich bzw. die Steilheit, umso größer die
Schleifenverstärkung. Gut für schnelles Ausregeln, schlecht für geringen
Jitter.
Und last but not least hat man beim NCO Quantisierungsprobleme.
Alles in allem ist so eine volldigitale PLL nicht ganz trivial. Das hab
ich vor 15 Jahren bei meiner Diplomarbeit zu eben diesem Thema schon
festgestellt ;-)
Ich hätte eine grundsätzliche Frage zum Phase-Detektor.
Die Funktionsweise wird ist ja in vielen Dokumenten erklärt, z.B.:
http://www.lte.ei.tum.de/lehre/edhcs/2011/handouts/phaselockedloops_compact.pdf
Da wird das vom PLL/VCO erzeugte Signal vom Referenzsignal subtrahiert.
Sind die Signale gleich, ergibt sich ein Null-Signal.
Bei Phasenunterschiede ergeben sich Rechtecke mit der Breite der
Phasendifferenz.
So wie ich das sehe, hat dieses Differenzsignal keine Information über
Vorzeichen der Phasendifferenz.
Auf Bild Nr 6 des obigen Dokumentes ist folgender Zusammenhang
angegeben:
Das ist mir schleierhaft. Wie kann bei negativen Phasenunterschied der
Ausgang negativ werden?
Ich würde auf solche Formel kommen:
Ich habe mal das Beispiel der PLL verlassen und einige Regelalgorithmen
am PC simuliert und mit GNUPLOT ausgegeben.
Beim einen Bild habe ich eine reine Frequenz-Steuerung/Regelung.
Der Master fährt die Frequenz linear rauf und runer.
D.h. der Slave misst die Frequenz beim Master und stellt diese an seinem
eigenen "VCO" ein.
Wenn der Slave schon eine Phasendifferenz hat (dem Master vor- oder
nacheilend) hat das keinen Einfluss auf die eingestellte Frequenz.
Beim zweiten Bild habe ich die Phasendifferenz berücksichtigt.
D.h. wenn der Slave dem Master nachläuft, dann stellt er die gemessene
Frequenz des Masters ein und gibt noch etwas drauf, um den Master
einzuholen.
Dieser additive Zusatz darf nicht zu groß sein, damit das System stabil
bleibt.
Wenn jemand was kennt, wo ein ähnliches Problem gründlicher behandelt
wird, bitte melden.