On 10/04/14 20:28, Tom Van Baak wrote:
I agree with Charles. Further, you don't even have to wait a predetermined 
amount of time (this would be oscillator or environment dependent). Instead 
simply monitor the rate of frequency change. When the drift rate drops to the 
level where your PID is known to be able to track, then start the PID.

Realize that just 2 seconds after power-up you have your first frequency 
measurement. By 3 seconds you have your first drift measurement. Just wait 
until it falls to however few ppm/second or ppb/second you need for your loop 
to smoothly track. This avoids special case PID startup or wind-up code. 
Although you can argue it merely replaces it with special case drift rate code.

I'm suspicious of fast/slow tracking loops. If you want to vary the tracking, 
perhaps it is best to continuously, transparently, smoothly vary loop 
parameters according to drift rate rather than use a hardcoded fast/slow 
algorithm binary switch. I'm sure there's deep theory on this, which I have not 
read yet.

This is where many spend their time building a heuristics.

My favorite solution is to derive the phase detector and let the result feed into the integrator through a scaling factor. This input to the integrator is in parallel to the I factor input. Code-wise we get something like this:

Vdf = Vdp - Vdp_pre
Vdp_pre = Vdp
Vi = Vi + I*Vdp + F*Vdf
Vf = Vi + P*Vdp

For far-out frequency errors, the PI PLL is weak, due to Bessel coefficient, so the FLL dominates and the F factor steers the loop gain of the FLL. It steers the Vi state of the integrator until it becomes close, with an exponential decay into zero frequency error. When it does, the Bessel coefficient becomes stronger and stronger and then PI PLL starts to take over. When the gain of the PLL surpasses that of the decaying FLL the PLL just takes over... by design. When the PLL has locked the frequency, the FLL part just doesn't have gain, but adds a little noise.

The benefit of this approach is that the frequency correction is kept in the Vi state, and depending on the Vi state either the FLL or PLL dominates, there is no hand-over, there is no external intelligence to chose mode, it is always steered by the need from frequency-error needing to be corrected and the current Vi, or if you so like, the current Vi error.

Simple, relatively easy to analyse and completely linear regulation mechanisms.

Cheers,
Magnus
_______________________________________________
time-nuts mailing list -- [email protected]
To unsubscribe, go to https://www.febo.com/cgi-bin/mailman/listinfo/time-nuts
and follow the instructions there.

Reply via email to