[time-nuts] Re: General discussion of PID algorithms applied to GPSDO control loops (continued 1)

André Balsa andrebalsa at gmail.com
Sun Apr 17 16:44:24 UTC 2022


Hello Poul-Henning,
First let me thank you for your career-long significant contributions to
the Open Source world and to global internet standards.
Second, regarding your comment that "You _can_ have hybrid steering, but
you must assign "weight" to the
different contributions, so that they will never oscillate."
That is exactly how I intend to implement the hybrid PLL/FLL control loop
for the STM32 GPSDO. By December this year I should have implemented
separate PLL, FLL and hybrid PLL+FLL PID control loops for my STM32 GPSDO
project and hopefully I'll be able to collect enough data to compare their
behavior. I would also like to try programming a Neural Network (NN) based
GPSDO control loop algorithm and again compare its behavior with the
"classic" PID control loops.
Many thanks for your comment,
Andrew

On Sat, Apr 16, 2022 at 4:55 PM Poul-Henning Kamp <phk at phk.freebsd.dk>
wrote:

> --------
> Bob kb8tq writes:
>
> >>> You mean the FLL and PLL are exclusive of each other ? I guess you are
> >> right, but I am trying to think "outside the box" and see if there are
> any
> >> alternatives.
> >
> >You will have two people driving the car at the same time. One hits the
> >accelerator and the other hits the brakes at the same time. They both
> can’t
> >be active *and* feed the EFC at the same time. The practical answer is to
> >run each during the warmup phase that it makes sense to do so.
>
> You _can_ have hybrid steering, but you must assign "weight" to the
> different contributions, so that they will never oscillate.  I normally
> have found it better to have a big switch which decides who gets to
> control,
> based on the (external) circumstances.
>
> As a general rule of thumb, FLL's only make sense if the product
> of the rate at which you measure phase difference, and the jitter-noise
> when you do, ends up way to the right and above the allan-intercept.
>
> Prof. Dave's infamous "Call NIST once a day with a modem" mode in
> NTPD is a good example:  Forget about tracking temperature, XO drift
> or anything else:  Just try to get the average frequency right on a
> timescale measured in weeks.
>
> Poul-Henning
>
> PS: When you implement your PLL:  The way to void "wind-up"
> durign startup, is to short the integrator, until the phase error
> has reached its proper sign.  It is surprising how hard it is
> to write code to spot that, compared to deciding it manually :-)
>
> --
> Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
> phk at FreeBSD.ORG         | TCP/IP since RFC 956
> FreeBSD committer       | BSD since 4.3-tahoe
> Never attribute to malice what can adequately be explained by incompetence.
> _______________________________________________
> time-nuts mailing list -- time-nuts at lists.febo.com -- To unsubscribe send
> an email to time-nuts-leave at lists.febo.com
> To unsubscribe, go to and follow the instructions there.




More information about the Time-nuts_lists.febo.com mailing list