On 1/15/19 6:34 PM, Rob Seaman wrote:
Hi Jim,
The use case is this - I have a satellite in orbit which does
everything internally in terms of GPS week and millisecond of week.
Folks on the ground work in UTC, since that's what the plethora of PCs
are using.
Just to verify. The satellite does use GPS as its reference clock, not
some manual upload (in a similar way as you describe) from ground
stations? The routines you're talking about aren't (directly) affecting
the state of the clock on the spacecraft?
Ground processing only - for user convenience
Or more simply, how accurate are the satellite's GPS week and
millisecond values?
Time is set by the messages from the OEM-6xx series GPS receiver and its
1pps - It's GPS time, not UTC.
if there's a GPS outage, time propagates forward on the onboard
oscillator which isn't great. When GPS resumes, time jumps.
We want to synchronize an event on the ground with an event on the
spacecraft, so, given that someone on the ground is going to do
something on 21 January 2019 at 12:34:56Z, we need to be able to
command the spacecraft to do that at the corresponding Week:Second.
Right now, they use a website
For example: https://www.labsat.co.uk/index.php/en/gps-time-calculator
which, by the way, doesn't use leap seconds, so it's off by some 18
seconds
Do they ignore the 18 seconds? What precision is required for this
application?
I think the folks at the labsat website just coded a naive implementation.
For this application, <1 second uncertainty is needed (technically, one
can set events to occur to within 1 microsecond, but that's counted down
from the 1pps using the internal clock, with the "correct" 1pps done by
knowing it's week:second)
Sometimes cross checked for consistency by, say, the page at
http://leapsecond.com/java/gpsclock.htm
It would be much easier for the operators if they could just *enter*
the UTC time, and have the software calculate the GPS Week:millisecond
(or vice versa)
Leap Seconds, should they occur, would be handled by "don't do
anything around or across the leap second".
Or could you simply forbid activities during a few hours of June 30 /
December 31? If the operators are at JPL this would be late afternoon on
whatever day of the week. That is, just assume there's always a leap
second at each opportunity.
As it happens the ops aren't at JPL for this spacecraft.
And that's exactly how we can deal with it - it's perfectly reasonable
to say "folks, there's a leap second a'coming, run for the hills til it
gets here"
For spacecraft flying via JPL ops, we work in TAI (or also, MET -
Mission Elapsed Time or SCLK - spacecraft clock), since all the nav is
done that way.. we also have to deal with relativistic effects and light
time - the whole "what do you do with time" on that scale has seen 40
years of development.
And, we could rebaseline the conversion
i.e. the calculation would be
SecondsAfterBaseDate = Seconds(UserEnteredDate) - Seconds(BaseDate)
DesiredTime = Seconds(6 Jan 1980) + SecondsAfterBaseDate
GPSWeek = Floor(DesiredTime/(86400*7))
GPSMilliseconds = (DesiredTime - GPSWeek*86400*7) * 1000
Which works quite nicely as long as the interval between BaseDate and
UserEnteredDate does not include a leap second.
This conversion is so simple it seems unnecessary to rely on somebody
else's library. What you might need is to arrange for a local, reliable,
vetted copy of the leap seconds table. So perhaps folks here could
comment on their best practices for retrieving same in an operational
environment?
or just set up an operational procedure that defines some file or
something under configuration control that has the "GPS time" and the
"Week:seconds" for the same time that is "after the last leap second".
Note that if your use cases include retroactive requirements then even
if leap seconds cease you will need to maintain the leap seconds table
(perhaps compiled into the source through some date). (For leap second
warriors, redefining UTC makes it more complicated, not less, when all
use cases are considered.)
Not really - for those kinds of use cases there's already issues and
solutions with reconciling local observations of clocks against outside
time scales.
the "don't operate during the leap" and "keep track" work just fine.
_______________________________________________
LEAPSECS mailing list
LEAPSECS@leapsecond.com
https://pairlist6.pair.net/mailman/listinfo/leapsecs