Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Time from NPL (MSF)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Protocol== ===Fast code=== When MSF was first introduced, in 1950, it consisted only of seconds and minute markers, with no coded data. In 1974, a short burst of binary code at 100 bit/s was inserted into the minute marker to specify the time. In 1977, a slow code was introduced, which encoded the time at 1 bit/s over the whole minute (as detailed below). In 1998, the original fast code was removed, leaving the slow code and a simple minute marker.<ref>{{cite web|url=http://www.npl.co.uk/reference/faqs/what-is-the-msf-fast-code-(faq-time)|last=National Physical Laboratory|title=What is the MSF fast code? (FAQ-Time)|date=25 March 2010|access-date=22 September 2018|archive-date=22 September 2018|archive-url=https://web.archive.org/web/20180922140405/http://www.npl.co.uk/reference/faqs/what-is-the-msf-fast-code-(faq-time)|url-status=live}}</ref> ===Slow code=== Currently, the signal is encoded as follows: The MSF transmitter is switched off for brief intervals ([[on-off keying]]) near the beginning of each second to encode the current time and date. The rise and fall times of the 60 kHz carrier are determined by the combination of antenna and transmitter.<ref name=NPLTFS>{{cite web | title =MSF 60 kHz Time and Date Code | work =NPL Time and Frequency Services | publisher =National Physical Laboratory | date =July 2007 | url =http://www.npl.co.uk/upload/pdf/MSF_Time_Date_Code.pdf | id =TAF001v06 | access-date =26 May 2008 | archive-date =28 July 2008 | archive-url =https://web.archive.org/web/20080728142443/http://www.npl.co.uk/upload/pdf/MSF_Time_Date_Code.pdf | url-status =live }}</ref> Each UTC second begins with 100 ms of 'off', preceded by at least 500 ms of carrier. The second marker is transmitted with an accuracy better than Β±1 ms relative to [[Coordinated Universal Time]] (UTC), which is itself always within Β±0.9 seconds of [[UT1|Universal Time]] (UT1) which is the mean solar time which would actually be observed at 0Β° longitude. The first [[second]] of the [[minute]], denoted second 00, begins with a period of 500 ms with the carrier off, to serve as a minute marker. The other 59 (or, exceptionally, 60 or 58) seconds of the minute always begin with at least 100 ms 'off', followed by two data bits of 100 ms each, and end with at least 700 ms of carrier. * Bit A is transmitted from 100 to 200 ms after the second * Bit B is transmitted from 200 to 300 ms after the second Negative Polarity Bit Signalling * <code>Carrier ON</code> represents a bit value of 0. * <code>Carrier OFF</code> represents a bit value of 1. If each second is considered as ten 100 ms pieces, the minute marker is transmitted as <code>1111100000</code>, while all other seconds are transmitted as <code>1AB0000000</code>. Although two data bits are transmitted per second, the time code (as currently transmitted) has the property that only one of them is variable; non-zero B bits are only transmitted when the corresponding A bit has a fixed value. However, the official NPL documentation states that these βfixed value bitsβ 01A-16A, 17B-51B, and 52B and 59B are currently set at '0', but that they may be used in the future. Seconds 01β16 carry information for the current minute about the difference (DUT1) between atomic and astronomical time, and the remaining seconds convey the time and date code. The time and date code information begins 43 seconds ''before'' the corresponding minute marker (second 17 of the previous minute, in the absence of [[leap seconds]]), and is always given in terms of UK civil time, which is UTC in winter and UTC+1h when [[British Summer Time|Summer Time]] is in effect. {|class="wikitable" style="text-align:center" |+ MSF time code<br />Shaded bits are fixed ! Bit !! A !! B !! Meaning |rowspan=21| ! Bit !! A !! B !! Meaning |rowspan=21| ! Bit !! A !! B !!colspan=2| Meaning |- | 00 ||bgcolor=lightblue| 1 ||bgcolor=lightblue| 1 ||bgcolor=lightblue| Minute mark | 20 || 10 ||bgcolor=lightgrey| 0 ||rowspan=5| Year<br />(00β99) | 40 || 10 ||bgcolor=lightgrey| 0 ||rowspan=5 colspan=2| Hour<br />(00β23) |- | 01 ||bgcolor=lightgrey| 0 || +0.1 ||rowspan=8| DUT1<br />(0.1β0.8)<br />[[Unary code|Unary encoding]],<br />bit set if<br />DUT1 β₯ Weight | 21 || 8 ||bgcolor=lightgrey| 0 | 41 || 8 ||bgcolor=lightgrey| 0 |- | 02 ||bgcolor=lightgrey| 0 || +0.2 | 22 || 4 ||bgcolor=lightgrey| 0 | 42 || 4 ||bgcolor=lightgrey| 0 |- | 03 ||bgcolor=lightgrey| 0 || +0.3 | 23 || 2 ||bgcolor=lightgrey| 0 | 43 || 2 ||bgcolor=lightgrey| 0 |- | 04 ||bgcolor=lightgrey| 0 || +0.4 | 24 || 1 ||bgcolor=lightgrey| 0 | 44 || 1 ||bgcolor=lightgrey| 0 |- | 05 ||bgcolor=lightgrey| 0 || +0.5 | 25 || 10 ||bgcolor=lightgrey| 0 ||rowspan=5| Month<br />(01β12) | 45 || 40 ||bgcolor=lightgrey| 0 ||rowspan=7 colspan=2| Minute<br />(00β59) |- | 06 ||bgcolor=lightgrey| 0 || +0.6 | 26 || 8 ||bgcolor=lightgrey| 0 | 46 || 20 ||bgcolor=lightgrey| 0 |- | 07 ||bgcolor=lightgrey| 0 || +0.7 | 27 || 4 ||bgcolor=lightgrey| 0 | 47 || 10 ||bgcolor=lightgrey| 0 |- | 08 ||bgcolor=lightgrey| 0 || +0.8 | 28 || 2 ||bgcolor=lightgrey| 0 | 48 || 8 ||bgcolor=lightgrey| 0 |- | 09 ||bgcolor=lightgrey| 0 || β0.1 ||rowspan=8| DUT1<br />(β0.1ββ0.8)<br />Unary encoding,<br />bit set if<br />DUT1 β€ Weight | 29 || 1 ||bgcolor=lightgrey| 0 | 49 || 4 ||bgcolor=lightgrey| 0 |- | 10 ||bgcolor=lightgrey| 0 || β0.2 | 30 || 20 ||bgcolor=lightgrey| 0 ||rowspan=6| Day of month<br />(01β31) | 50 || 2 ||bgcolor=lightgrey| 0 |- | 11 ||bgcolor=lightgrey| 0 || β0.3 | 31 || 10 ||bgcolor=lightgrey| 0 | 51 || 1 ||bgcolor=lightgrey| 0 |- | 12 ||bgcolor=lightgrey| 0 || β0.4 | 32 || 8 ||bgcolor=lightgrey| 0 | 52 ||bgcolor=lightpink| 0 ||bgcolor=lightgrey| 0 ||bgcolor=lightpink colspan=2| Minute marker 01111110 |- | 13 ||bgcolor=lightgrey| 0 || β0.5 | 33 || 4 ||bgcolor=lightgrey| 0 | 53 ||bgcolor=lightpink| 1 || STW ||colspan=2| Summer time warning. |- | 14 ||bgcolor=lightgrey| 0 || β0.6 | 34 || 2 ||bgcolor=lightgrey| 0 | 54 ||bgcolor=lightpink| 1 || P1 || Year (17Aβ24A) ||rowspan=4|[[Odd parity|Odd<br />parity]]<br />over |- | 15 ||bgcolor=lightgrey| 0 || β0.7 | 35 || 1 ||bgcolor=lightgrey| 0 | 55 ||bgcolor=lightpink| 1 || P2 || Day (25Aβ35A) |- | 16 ||bgcolor=lightgrey| 0 || β0.8 | 36 || 4 ||bgcolor=lightgrey| 0 ||rowspan=3| Day of week<br />Sunday=0<br />Saturday=6 | 56 ||bgcolor=lightpink| 1 || P3 || DOW (36Aβ38A) |- | 17 || 80 ||bgcolor=lightgrey| 0 ||rowspan=3| Year (00β99) | 37 || 2 ||bgcolor=lightgrey| 0 | 57 ||bgcolor=lightpink| 1 || P4 || Time (39Aβ51A) |- | 18 || 40 ||bgcolor=lightgrey| 0 | 38 || 1 ||bgcolor=lightgrey| 0 | 58 ||bgcolor=lightpink| 1 || ST ||colspan=2| Summer time in effect. |- | 19 || 20 ||bgcolor=lightgrey| 0 | 39 || 20 ||bgcolor=lightgrey| 0 || Hour (00β23) | 59 ||bgcolor=lightpink| 0 ||bgcolor=lightgrey| 0 ||bgcolor=lightgrey colspan=2| Unused, always 0. |} Consecutive bits from 01Bβ08B are set to 1 to indicate positive DUT1 values from +0.1s to +0.8s. For example, bit 05B is set if DUT1 β₯ 0.5 s. Consecutive bits from 09Bβ16B are set to 1 to indicate negative DUT1 values from β0.1s to β0.8s. For example, bit 11B is set if DUT1 β€ β0.3 s. In case of a leap second, a zero bit is inserted between seconds 16 and 17.<ref name=NPLTFS /> In case of a negative leap second, second 16 will be deleted. Since negative leap seconds can only occur when DUT1 is positive, bits 9B through 16B will be zero. Bits 17Aβ51A encode the time of the following minute in [[binary-coded decimal]], most significant bit first. Beginning with bit 17A comes 4 bits of tens of years, 4 bits of years, 1 bit of tens of months, 4 bits of months, 2 bits of tens of days, 4 bits of days, 3 bits of day of week (0=Sunday), 2 bits of tens of hours, 4 bits of hours, 3 bits of tens of minutes, and 4 bits of minutes. Bits 52Aβ59A provide another way to identify minute boundaries. This sequence <code>01111110</code> never appears elsewhere in the A bits; due to BCD encoding, at most five consecutive 1 bits can appear elsewhere in the A bits (bits 27Aβ31A, on July 30 or 31, or bits 33Aβ37A, if a day ending in 7 falls on a Saturday). These six consecutive 1 bits thus uniquely identify the end of the minute. Bits 54Bβ57B provide [[odd parity]] over the time code. The 4 parity bits cover years (8 bits), months and days (11 bits), day of week (3 bits), and time of day (13 bits) respectively. Bit 58B indicates the broadcast time is summer time. Bit 53B gives warning that the summer time bit is about to change. It is set for 61 consecutive minutes, starting 1 hour 7 seconds before the change, and ending 7 seconds before the change, 5 seconds before the first changed bit 58B, which is itself transmitted 2 seconds (1.7β1.8 seconds, to be more precise) before the moment of the time change. === Shortcomings of the current signal format === MSF does not broadcast any explicit advance warning of upcoming [[leap second]]s, which occur less than once a year on average.<ref name="TROGER" /> The only indication is a change in the number of padding bits before the time code during the minute before the leap second. Therefore, unless a leap-second announcement is manually entered into a receiver in advance, it may take some time until an autonomous MSF receiver regains synchronization with UTC after a leap second (especially if the reception is not robust at the time of the leap second). Like DCF77, the time signal only provides 1 hour warning of summer-time changes.<ref name=NPLTFS />
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)