diff options
Diffstat (limited to 'contrib/ntp/html/parsedata.htm')
-rw-r--r-- | contrib/ntp/html/parsedata.htm | 407 |
1 files changed, 407 insertions, 0 deletions
diff --git a/contrib/ntp/html/parsedata.htm b/contrib/ntp/html/parsedata.htm new file mode 100644 index 0000000..a756079 --- /dev/null +++ b/contrib/ntp/html/parsedata.htm @@ -0,0 +1,407 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict//EN"> +<TITLE>NTP PARSE clock data formats</TITLE> +<h1>NTP PARSE clock data formats</h1> + +<p>The parse driver currently supports several clocks with different +query mechanisms. In order for you to find a sample that might be +similar to a clock you might want to integrate into parse i'll sum +up the major features of the clocks (this information is distributed +in the parse/clk_*.c and ntpd/refclock_parse.c files). + +<hr> +<h2>Meinberg clocks</h2> +<pre> +Meinberg: start=<STX>, end=<ETX>, sync on start + pattern="\2D: . . ;T: ;U: . . ; \3" + pattern="\2 . . ; ; : : ; \3" + pattern="\2 . . ; ; : : ; : ; ; . . " +</pre> + <p> + Meinberg is a german manufacturer of time code receivers. Those clocks + have a pretty common output format in the stock version. In order to + support NTP Meinberg was so kind to produce some special versions of + the firmware for the use with NTP. So, if you are going to use a + Meinberg clock please ask whether there is a special Uni Erlangen + version. + You can reach <A HREF="http://www.meinberg.de/">Meinberg</A> via the Web. + Information can also be ordered via eMail from <A HREF="mailto: info@meinberg.de">info@meinberg.de</A> + + <p> + General characteristics: + <br> + Meinberg clocks primarily output pulse per second and a describing + ASCII string. This string can be produced in two modes. either upon + the reception of a question mark or every second. NTP uses the latter + mechanism. The DCF77 variants have a pretty good relationship between + RS232 time code and the PPS signal while the GPS receiver has no fixed + timeing between the datagram and the pulse (you need to use PPS with + GPS!) on DCF77 you might get away without the PPS signal. + <pre> + The preferred tty setting for Meinberg is: + CFLAG (B9600|CS7|PARENB|CREAD|HUPCL) + IFLAG (IGNBRK|IGNPAR|ISTRIP) + OFLAG 0 + LFLAG 0 + </pre> + <pre> + The tty setting for Meinberg GPS 166/167 receivers is: + CFLAG (B19200|CS8|PARENB|CREAD|HUPCL) + IFLAG (IGNBRK|IGNPAR|ISTRIP) + OFLAG 0 + LFLAG 0 + </pre> + + <p> + The clock is run at datagram once per second. + Stock dataformat is: + <pre> + <STX>D:<dd>.<mm>.<yy>;T:<w>;U:<hh>:<mm>:<ss>;<S><F><D><A><ETX> +pos: 0 00 00 0 00 0 11 111 1 111 12 2 22 2 22 2 2 2 3 3 3 + 1 23 45 6 78 9 01 234 5 678 90 1 23 4 56 7 8 9 0 1 2 + +<STX> = '\002' ASCII start of text +<ETX> = '\003' ASCII end of text +<dd>,<mm>,<yy> = day, month, year(2 digits!!) +<w> = day of week (sunday= 0) +<hh>,<mm>,<ss> = hour, minute, second +<S> = '#' if never synced since powerup else ' ' for DCF U/A 31 + '#' if not PZF sychronisation available else ' ' for PZF 535 +<F> = '*' if time comes from internal quartz else ' ' +<D> = 'S' if daylight saving time is active else ' ' +<D> = 'U' if UTC time code is deliverd else ' ' +<A> = '!' during the hour preceeding an daylight saving time + start/end change +<A> = 'A' if a leap second is announced +</pre> + + <pre> + <STX><dd>.<mm>.<yy>; <w>; <hh>:<mm>:<ss>; <U><S><F><D><A><L><R><ETX> + pos: 0 00 0 00 0 00 11 1 11 11 1 11 2 22 22 2 2 2 2 2 3 3 3 + 1 23 4 56 7 89 01 2 34 56 7 89 0 12 34 5 6 7 8 9 0 1 2 + <STX> = '\002' ASCII start of text + <ETX> = '\003' ASCII end of text + <dd>,<mm>,<yy> = day, month, year(2 digits!!) + <w> = day of week (sunday= 0) + <hh>,<mm>,<ss> = hour, minute, second + <U> = 'U' UTC time display + <S> = '#' if never synced since powerup else ' ' for DCF U/A 31 + '#' if not PZF sychronisation available else ' ' for PZF 535 + <F> = '*' if time comes from internal quartz else ' ' + <D> = 'S' if daylight saving time is active else ' ' + <A> = '!' during the hour preceeding an daylight saving time + start/end change + <L> = 'A' LEAP second announcement + <R> = 'R' alternate antenna +</pre> +<p>Meinberg GPS166 receiver +<br> + You must get the Uni-Erlangen firmware for the GPS receiver support + to work to full satisfaction ! +<pre> + <STX><dd>.<mm>.<yy>; <w>; <hh>:<mm>:<ss>; <+/-><00:00>; <U><S><F><D><A><L><R><L>; <position...><ETX> + * + 000000000111111111122222222223333333333444444444455555555556666666 + 123456789012345678901234567890123456789012345678901234567890123456 + \x0209.07.93; 5; 08:48:26; +00:00; ; 49.5736N 11.0280E 373m\x03 + * + + <STX> = '\002' ASCII start of text + <ETX> = '\003' ASCII end of text + <dd>,<mm>,<yy> = day, month, year(2 digits!!) + <w> = day of week (sunday= 0) + <hh>,<mm>,<ss> = hour, minute, second + <+/->,<00:00> = offset to UTC + <S> = '#' if never synced since powerup else ' ' for DCF U/A 31 + '#' if not PZF sychronisation available else ' ' for PZF 535 + <U> = 'U' UTC time display + <F> = '*' if time comes from internal quartz else ' ' + <D> = 'S' if daylight saving time is active else ' ' + <A> = '!' during the hour preceeding an daylight saving time + start/end change + <L> = 'A' LEAP second announcement + <R> = 'R' alternate antenna (reminiscent of PZF535) usually ' ' + <L> = 'L' on 23:59:60 +</pre> + +<p>For the Meinberg parse look into clock_meinberg.c + +<br> +<h2>Raw DCF77 Data via serial line</h2> +<p>RAWDCF: end=TIMEOUT>1.5s, sync each char (any char),generate psuedo time + codes, fixed format +<p> + direct DCF77 code input + + <p>In Europe it is relatively easy/cheap the receive the german time code + transmitter DCF77. The simplest version to process its signal is to + feed the 100/200ms pulse of the demodulated AM signal via a level + converter to an RS232 port at 50Baud. parse/clk_rawdcf.c holds all + necessary decoding logic for the time code which is transmitted each + minute for one minute. A bit of the time code is sent once a second. + +<pre> + The preferred tty setting is: + CFLAG (B50|CS8|CREAD|CLOCAL) + IFLAG 0 + OFLAG 0 + LFLAG 0 +</pre> + +<h2>DCF77 raw time code</h2> + + +<p>From "Zur Zeit", Physikalisch-Technische Bundesanstalt (PTB), Braunschweig +und Berlin, März 1989 +<br> +<pre> + Timecode transmission: + + AM: + + time marks are send every second except for the second before the + next minute mark + time marks consist of a reduction of transmitter power to 25% + of the nominal level + the falling edge is the time indication (on time) + time marks of a 100ms duration constitute a logical 0 + time marks of a 200ms duration constitute a logical 1 + + FM: + + see the spec. (basically a (non-)inverted psuedo random phase shift) + + Encoding: + + Second Contents + 0 - 10 AM: free, FM: 0 + 11 - 14 free + 15 R - alternate antenna + 16 A1 - expect zone change (1 hour before) + 17 - 18 Z1,Z2 - time zone + 0 0 illegal + 0 1 MEZ (MET) + 1 0 MESZ (MED, MET DST) + 1 1 illegal + 19 A2 - expect leap insertion/deletion (1 hour before) + 20 S - start of time code (1) + 21 - 24 M1 - BCD (lsb first) Minutes + 25 - 27 M10 - BCD (lsb first) 10 Minutes + 28 P1 - Minute Parity (even) + 29 - 32 H1 - BCD (lsb first) Hours + 33 - 34 H10 - BCD (lsb first) 10 Hours + 35 P2 - Hour Parity (even) + 36 - 39 D1 - BCD (lsb first) Days + 40 - 41 D10 - BCD (lsb first) 10 Days + 42 - 44 DW - BCD (lsb first) day of week (1: Monday -> 7: Sunday) + 45 - 49 MO - BCD (lsb first) Month + 50 MO0 - 10 Months + 51 - 53 Y1 - BCD (lsb first) Years + 54 - 57 Y10 - BCD (lsb first) 10 Years + 58 P3 - Date Parity (even) + 59 - usually missing (minute indication), except for leap insertion +</pre> + +<hr> +<h2>Schmid clock</h2> + +<p> + Schmid clock: needs poll, binary input, end='\xFC', sync start + + <p> + The Schmid clock is a DCF77 receiver that sends a binary + time code at the reception of a flag byte. The contents + if the flag byte determined the time code format. The + binary time code is delimited by the byte 0xFC. +<PRE> + TTY setup is: + CFLAG (B1200|CS8|CREAD|CLOCAL) + IFLAG 0 + OFLAG 0 + LFLAG 0 + +</PRE> + + +<p> The command to Schmid's DCF77 clock is a single byte; each bit + allows the user to select some part of the time string, as follows (the + output for the lsb is sent first). + +<pre> + Bit 0: time in MEZ, 4 bytes *binary, not BCD*; hh.mm.ss.tenths + Bit 1: date 3 bytes *binary, not BCD: dd.mm.yy + Bit 2: week day, 1 byte (unused here) + Bit 3: time zone, 1 byte, 0=MET, 1=MEST. (unused here) + Bit 4: clock status, 1 byte, 0=time invalid, + 1=time from crystal backup, + 3=time from DCF77 + Bit 5: transmitter status, 1 byte, + bit 0: backup antenna + bit 1: time zone change within 1h + bit 3,2: TZ 01=MEST, 10=MET + bit 4: leap second will be + added within one hour + bits 5-7: Zero + Bit 6: time in backup mode, units of 5 minutes (unused here) +</pre> + +<hr> +<h2>Trimble SV6 ASCII time code (TAIP)</h2> + +<p> + Trimble SV6: needs poll, ascii timecode, start='>', end='<', + query='>QTM<', eol='<' + +<p> Trimble SV6 is a GPS receiver with PPS output. It needs to be polled. + It also need a special tty mode setup (EOL='<'). +<pre> + TTY setup is: + CFLAG (B4800|CS8|CREAD) + IFLAG (BRKINT|IGNPAR|ISTRIP|ICRNL|IXON) + OFLAG (OPOST|ONLCR) + LFLAG (ICANON|ECHOK) + + Special flags are: + PARSE_F_PPSPPS - use CIOGETEV for PPS time stamping + PARSE_F_PPSONSECOND - the time code is not related to + the PPS pulse (so use the time code + only for the second epoch) + + Timecode + 0000000000111111111122222222223333333 / char + 0123456789012345678901234567890123456 \ posn + >RTMhhmmssdddDDMMYYYYoodnnvrrrrr;*xx< Actual + ----33445566600112222BB7__-_____--99- Parse + >RTM 1 ;* < Check +</pre> + +<hr> +<h2>ELV DCF7000</h2> +<p> + ELV DCF7000: end='\r', pattern=" - - - - - - - \r" +<p> + The ELV DCF7000 is a cheap DCF77 receiver sending each second + a time code (though not very precise!) delimited by '`r' +<pre> + Timecode + YY-MM-DD-HH-MM-SS-FF\r + + FF&0x1 - DST + FF&0x2 - DST switch warning + FF&0x4 - unsynchronised +</pre> +<hr> +<h2>HOPF 6021 und Kompatible</h2> + +<p> + HOPF Funkuhr 6021 mit serieller Schnittstelle + Created by F.Schnekenbuehl <frank@comsys.dofn.de> from clk_rcc8000.c + Nortel DASA Network Systems GmbH, Department: ND250 + A Joint venture of Daimler-Benz Aerospace and Nortel. + +<pre> + hopf Funkuhr 6021 + used with 9600,8N1, + UTC via serial line + "Sekundenvorlauf" ON + ETX zum Sekundenvorlauf ON + dataformat 6021 + output time and date + transmit with control characters + transmit evry second + + Type 6021 Serial Output format + + 000000000011111111 / char + 012345678901234567 \ position + sABHHMMSSDDMMYYnre Actual + C4110046231195 Parse + s enr Check + + s = STX (0x02), e = ETX (0x03) + n = NL (0x0A), r = CR (0x0D) + + A B - Status and weekday + + A - Status + + 8 4 2 1 + x x x 0 - no announcement + x x x 1 - Summertime - wintertime - summertime announcement + x x 0 x - Wintertime + x x 1 x - Summertime + 0 0 x x - Time/Date invalid + 0 1 x x - Internal clock used + 1 0 x x - Radio clock + 1 1 x x - Radio clock highprecision + + B - 8 4 2 1 + 0 x x x - MESZ/MEZ + 1 x x x - UTC + x 0 0 1 - Monday + x 0 1 0 - Tuesday + x 0 1 1 - Wednesday + x 1 0 0 - Thursday + x 1 0 1 - Friday + x 1 1 0 - Saturday + x 1 1 1 - Sunday +</pre> +<hr> +<h2>Diem Computime Clock</h2> + +<p> + The Computime receiver sends a datagram in the following format every minute +<pre> + Timestamp T:YY:MM:MD:WD:HH:MM:SSCRLF + Pos 0123456789012345678901 2 3 + 0000000000111111111122 2 2 + Parse T: : : : : : : \r\n + + T Startcharacter "T" specifies start of the timestamp + YY Year MM Month 1-12 + MD Day of the month + WD Day of week + HH Hour + MM Minute + SS Second + CR Carriage return + LF Linefeed +</pre> +<hr> +<h2>WHARTON 400A Series Clock with a 404.2 Serial interface</h2> + +<p> + The WHARTON 400A Series clock is able to send date/time serial messages + in 7 output formats. We use format 1 here because it is the shortest. + We set up the clock to send a datagram every second. + For use with this driver, the WHARTON 400A Series clock must be set-up + as follows : +<pre> + Programmable Selected + Option No Option + BST or CET display 3 9 or 11 + No external controller 7 0 + Serial Output Format 1 9 1 + Baud rate 9600 bps 10 96 + Bit length 8 bits 11 8 + Parity even 12 E +</pre> + WHARTON 400A Series output format 1 is as follows : +<pre> + Timestamp STXssmmhhDDMMYYSETX + Pos 0 12345678901234 + 0 00000000011111 + + STX start transmission (ASCII 0x02) + ETX end transmission (ASCII 0x03) + ss Second expressed in reversed decimal (units then tens) + mm Minute expressed in reversed decimal + hh Hour expressed in reversed decimal + DD Day of month expressed in reversed decimal + MM Month expressed in reversed decimal (January is 1) + YY Year (without century) expressed in reversed decimal + S Status byte : 0x30 + + bit 0 0 = MSF source 1 = DCF source + bit 1 0 = Winter time 1 = Summer time + bit 2 0 = not synchronised 1 = synchronised + bit 3 0 = no early warning 1 = early warning +</pre> |