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
:
Bearbeitet durch User
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:
:
Bearbeitet durch User
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.