[time-nuts] PID Loop question as it relates to NTP

xaos xaos at darksmile.net
Thu Sep 15 17:48:20 EDT 2005

Hello Everyone,

I am in the midst of a design for a
new custom CPU board. I decided
to include NTP, in the board software,
for time keeping purposes.

The system is working rather well and
I am able to get millisecond time sync.
BTW this is as good as I'll get
on this hardware.

The background is this:

    I am using a PID Control loop to discipline
    the time and I am wondering if my algorithm
    is the correct one.

    This is what I do:

    Get NTP time every T seconds
    Calculate error
    Calculate correction
    Apply correction slowly.

        This means that if the correction is: C
        and if my smallest system clock increment is: I
        and if there are N clock increments until
        the next NTP get time.

        Then I apply a correction of: C/N for every I.

        In other words, the correction is smooth
        over the NTP sync interval (T).

    This method works quite well and the system
    reaches <100ms sync at almost (10T).

    It reaches <10ms at almost (20T)

And this is my question:

Should I be correcting the system this way
or should I be correcting all at once at the
time of NTP sync.

Should I expect a better convergence
if I use the all at once method?

Your thoughts on this are much

George Hrysanthopoulos, N2FGX

More information about the time-nuts mailing list