PLL - Software in Lazarus

Zur Vorstellung von Komponenten und Units für Lazarus
hpt
Beiträge: 48
Registriert: Sa 26. Jul 2014, 18:45
OS, Lazarus, FPC: Lazarus
CPU-Target: 32Bit

Re: PLL - Software in Lazarus

Beitrag von hpt »

.... leider ist es nicht so trivial wie es mschnell beschreibt. Ich suche eigentlich nur nach einem Algorithmus für eine PLL (DPLL). Stellen würde ich mit PWM. Anpassen, umschalten und anwenden möchte ich dann schon selbst versuchen (zumindest versuchen).
Wie und was ich so im www gesehen habe, ist schon ein Stück Mathematk notwendig, aber allzu viel gibt es nicht zu finden. Obwohl man von einer PLL-Regelung für Motore lesen kann, eine Anwendung die läuft, habe ich jedoch noch niergends entdecken können!
Frohes Osterfest HPT

Horst_h
Beiträge: 72
Registriert: Mi 20. Mär 2013, 08:57

Re: PLL - Software in Lazarus

Beitrag von Horst_h »

Hallo,

was unterscheidet deine PLL von einer Regelstrecke mit Ausgleich auf Abweichung 0.
Also PI oder PID- Regler.
Wenn Deine Lichtschranke 12,5 Impulse/s macht, könntest Du die Impulse mit einem Monoflop so formen das ein ImpulsPause Verhältnis von 50/50 besteht. Also 40 ms Impulslänge.
Den Impuls an einen Integrator und man hat 0.5 Ub bei der richtigen Drehzahl.
Wenn dass erreicht ist, erzeugt man selbst das phasenrichtigen signal und logisch undiert sie mit tatsächlichen Impulsen, bei Phasenverschiebung ist Puls entsprechend verkürzt bei 180 Grad sogar 0.
Den Monoflop kann man leicht digital erzeugen: Bei Impulseingang läuft ein Timer entsprechend lang T_mono.Ein anderer Timer misst die Zeit zwischen zwei Impulsen T_mom.
Für die Drehzahl braucht es nur T_mom, denn T_mono ist konstant.
Für die Phase braucht es nur die Zeit von t_richtig bis t_impuls, die man zu 0 machen möchte.

Der rotierende Spiegel scheint ja eine sehr große Massenträgheit gegenüber dem Motor zu haben, gleichzeitig braucht es nur geringe Antriebsleistung, das wird dann sehr träge.
Vielleicht sollte man mal experimentell versuchen, bei welchem Strom der Motor die Drehzahl von 750 U/min hält.Dann könnte man erst mit diesem oder etwas höherem Strom das ganze erst einmal anfahren lassen bis man in die Nähe der Wunschdrehzahl kommt.

Gruß Horst

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: PLL - Software in Lazarus

Beitrag von mschnell »

Genau: Erst Frequenz (Drehzahl) Regelung. Wenn die genau genug stimmt auf Phasen-Regelung umschalten

Drehzahl-Regelung: Eingang; Drehzahl-Abweichung, also Drehzahl zunächst messen und dann (Soll - Ist) ausrechnen. Wenn das Signal, zu dem der Motor synchronisiert werden soll, keine konstante Frequenz hat, beide Drehzahlen messen und von einander abziehen. Darauf dann sinnvoller Weise eine PID-Regelung mit einstellbarem P, I und D Parametern P1, I1, D1.

Phasen-Regellung: die Phasendifferenz (proportional zum Winkel, läuft vor >0, läuft nach <0) messen und auf "0" ausregeln. Darauf dann sinnvoller Weise wieder eine PID-Regelung mit einstellbarem P, I und D Parametern P2, I2, D2.

Finde ich übrigens logisch, aber überhaupt nicht trivial. Und dann noch die 6 Parameter sinnvoll einstellen ... !

Ob Die notwendigen Zeit-Messungen mit Usermode - Software zuverlässig genug gemacht werden können ist auch so eine Frage.

-Michael
Zuletzt geändert von mschnell am Di 7. Apr 2015, 10:11, insgesamt 2-mal geändert.

hpt
Beiträge: 48
Registriert: Sa 26. Jul 2014, 18:45
OS, Lazarus, FPC: Lazarus
CPU-Target: 32Bit

Re: PLL - Software in Lazarus

Beitrag von hpt »

.... hört sich alles ganz gut an.
Ich habe natürlich auch ähnliche Experimente gemacht. Die Drehzahl sollte kein Problem sein, aber mit der Phasenregelung, hat es so seine Tücken! Denn wenn das Bild einmal drüberläuft (über 0) braucht es eine Weile, bis es wieder synchronisiert. Diese Effekte sind bei TV total unbrauchbar. Wünschen würde ich mir ein Einrasten wie bei einer PLL und dann auch das Halten! Mich würde einfach interessieren, wie das in Software zu lösen ginge. Unter DPLL gäbe es ja einige Infos im www aber für mich nicht umsetzbar. Wissenschaft ist für mich eine Wissenschaft, wenn sie Wissen schafft, ohne zu viel Wissenschaft.
mfG HPT

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: PLL - Software in Lazarus

Beitrag von mse »

hpt hat geschrieben:Die Drehzahl sollte kein Problem sein, aber mit der Phasenregelung, hat es so seine Tücken! Denn wenn das Bild einmal drüberläuft (über 0) braucht es eine Weile, bis es wieder synchronisiert.

Da vermute ich, dass auf der Sollphase ein Sprung von 0 auf max geschieht. Falls dem so ist, sollte die Fehlerberechnung so angepasst werden, dass der Fehlerwert im Bereich der Sollphase stetig ist, also von positiven Werten über 0 zu negativen Werten.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: PLL - Software in Lazarus

Beitrag von mschnell »

hpt hat geschrieben: Wünschen würde ich mir ein Einrasten wie bei einer PLL und dann auch das Halten!


"Einrasten" ist bei einer PLL kein Bestandteil der Regelung, sondern ein zusätzliche Ausgangs-Signal, das bedeutet, dass die Regel-Abweichung klein genug ist, dass man annehmen kann, dass es "unter normalen Umständen" nicht passieren wird, dass die Phasen-Abweichung das Vorzeichen wechselt.

Ein "Halten" bedeutet, dass die Regel-Abweichung "unter normalen Umständen" sehr nahe bei 0 bleibt. Hierzu müssen die Regel-Parameter P2, I2, D2 einfach klein genug sein.

hpt hat geschrieben:Denn wenn das Bild einmal drüberläuft (über 0) braucht es eine Weile, bis es wieder synchronisiert.
Wenn das passiert, funktioniert die Phasenregelung nicht. (D.h. sie rastet nicht ein - siehe oben). Das kann diverse Gründe haben:

- Die Regelung schwingt, weil die P2, I2, D2 Parameter nicht so gewählt sind dass die Regel-Schwingung ausreichend bedampft wird.
- Es wurde zu früh von Frequenz auf Phasenregelung umgeschaltet
- Die Regelstrecke (Aktuator -> Prozess -> Messung) ist technisch so instabil, dass eine Phasenregelung schlicht nicht möglich ist.

Besonders ärgerlich ist natürlich, wenn einfach die Messung nicht sauber funktioniert. Bei einer Software-Regelung kann das natürlich leicht passieren, weil bekanntermaßen ein normales Betriebssystem die Reaktion eines User-Programms beliebig lange verzögern und damit eine Messung beliebig verfälschen und/oder die Regel-Reaktion beliebig lange aufhalten kann. Was natürlich auch Auswirkungen auf die Integral- und Differential-Berechnung der PID-Reglung hat.

-Michael

Antworten