]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - contrib/ntp/html/parsedata.html
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / contrib / ntp / html / parsedata.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
3 <html>
4
5         <head>
6                 <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
7                 <meta name="generator" content="HTML Tidy, see www.w3.org">
8                 <title>NTP PARSE clock data formats</title>
9                 <link href="scripts/style.css" type="text/css" rel="stylesheet">
10         </head>
11
12         <body>
13                 <h3>NTP PARSE clock data formats</h3>
14                 <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).</p>
15                 <hr>
16                 <h4>Meinberg clocks</h4>
17                 <pre>
18 Meinberg: start=&lt;STX&gt;, end=&lt;ETX&gt;, sync on start
19       pattern=&quot;\2D:  .  .  ;T: ;U:  .  .  ;    \3&quot;
20       pattern=&quot;\2  .  .  ;  ;   :  :  ;        \3&quot;
21       pattern=&quot;\2  .  .  ;  ;   :  :  ;    :  ;        ;   .         .       &quot;
22 </pre>
23                 <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:%20info@meinberg.de">info@meinberg.de</a></p>
24                 <p>General characteristics:<br>
25                         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. DCF77 AM clocks have a limited accuracy of a few milliseconds. The DCF77 PZF5xx variants provide higher accuracy and have a pretty good relationship between RS232 time code and the PPS signal. Except for early versions of the old GPS166 receiver type, Meinberg GPS receivers have a very good timing relationship between the datagram and the pulse. The beginning of the start bit of the first character has basically the same accuracy as the PPS signal, plus a jitter of up to 1 bit time depending on the selected baud rate, i.e. 52 &mu;s @ 19200. PPS support should always be used, if possible, in order to yield the highest possible accuracy.</p>
26                 <p>The preferred tty setting for Meinberg DCF77 receivers is 9600/7E2:</p>
27                 <pre>
28                 CFLAG           (B9600|CS7|PARENB|CREAD|HUPCL)
29                 IFLAG           (IGNBRK|IGNPAR|ISTRIP)
30                 OFLAG           0
31                 LFLAG           0
32         </pre>
33                 <p>The tty setting for Meinberg GPS16x/17x receivers is 19200/8N1:</p>
34                 <pre>
35                 CFLAG           (B19200|CS8|PARENB|CREAD|HUPCL)
36                 IFLAG           (IGNBRK|IGNPAR|ISTRIP)
37                 OFLAG           0
38                 LFLAG           0
39         </pre>
40                 <p>All clocks should be run at datagram once per second.<br><br></p>
41                 <p>Format of the Meinberg standard time string:</p>
42 <pre>
43         <b><i>&lt;STX&gt;</i>D:<i>dd.mm.yy</i>;T:<i>w</i>;U:<i>hh.mm.ss</i>;<i>uvxy</i><i>&lt;ETX&gt;</i></b>
44     pos:  0  000000001111111111222222222233  3
45           1  234567890123456789012345678901  2
46
47     <i>&lt;STX&gt;</i>         = start-of-text, ASCII code 0x02
48     <i>dd.mm.yy</i>      = day of month, month, year of the century, separated by dots
49     <i>w</i>             = day of week (1..7, Monday = 1)
50     <i>hh:mm:ss</i>      = hour, minute, second, separated by dots
51     <i>u</i>             = '#' for GPS receivers: time is <b>not</b> synchronized
52                            '#' for older PZF5xx receivers: no correlation, not synchronized
53                            '#' for other devices: never sync'ed since powerup
54                            ' ' if nothing of the above applies
55     <i>v</i>             = '*' for GPS receivers: position has <b>not</b> been verified
56                            '*' for other devices: freewheeling based on internal quartz
57                            ' ' if nothing of the above applies
58     <i>x</i>             = 'U' if UTC time is transmitted
59                            'S' if daylight saving time is active
60                            ' ' if nothing of the above applies
61     <i>y</i>             = '!' during the hour preceding start or end of daylight saving time
62                            'A' during the hour preceding a leap second
63                            ' ' if nothing of the above applies
64     <i>&lt;ETX&gt;</i>         = end-of-text, ASCII code 0x03
65 </pre>
66                 <p>Format of the Uni Erlangen time string for PZF5xx receivers:</p>
67 <pre>
68         <b><i>&lt;STX&gt;</i><i>dd.mm.yy</i>; <i>w</i>; <i>hh:mm:ss</i>; <i>tuvxyza</i><i>&lt;ETX&gt;</i></b>
69     pos:  0  000000001111111111222222222233  3
70           1  234567890123456789012345678901  2
71
72     <i>&lt;STX&gt;</i>         = start-of-text, ASCII code 0x02
73     <i>dd.mm.yy</i>      = day of month, month, year of the century, separated by dots
74     <i>w</i>             = day of week (1..7, Monday = 1)
75     <i>hh:mm:ss</i>      = hour, minute, second, separated by colons
76
77     <i>t</i>             = 'U' if UTC time is transmitted, else ' '
78     <i>u</i>             = '#' for older PZF5xx receivers: no correlation, not synchronized
79                            '#' for PZF511 and newer: never sync'ed since powerup
80                            ' ' if nothing of the above applies
81     <i>v</i>             = '*' if freewheeling based on internal quartz, else ' '
82     <i>x</i>             = 'S' if daylight saving time is active, else ' '
83     <i>y</i>             = '!' during the hour preceding start or end of daylight saving time, else ' '
84     <i>z</i>             = 'A' during the hour preceding a leap second, else ' '
85     <i>a</i>             = 'R' alternate antenna (reminiscent of PZF5xx), usually ' ' for GPS receivers
86     <i>&lt;ETX&gt;</i>         = end-of-text, ASCII code 0x03
87 </pre>
88                 <p>Format of the Uni Erlangen time string for GPS16x/GPS17x receivers:</p>
89 <pre>
90         <b><i>&lt;STX&gt;</i><i>dd.mm.yy</i>; <i>w</i>; <i>hh:mm:ss</i>; <i>+uu:uu</i>; <i>uvxyzab</i>; <i>ll.lllln</i> <i>lll.lllle</i> <i>hhhh</i>m<i>&lt;ETX&gt;</i></b>
91     pos:  0  0000000011111111112222222222333333333344444444445555555555666666  6
92           1  2345678901234567890123456789012345678901234567890123456789012345  6
93
94     <i>&lt;STX&gt;</i>         = start-of-text, ASCII code 0x02
95     <i>dd.mm.yy</i>      = day of month, month, year of the century, separated by dots
96     <i>w</i>             = day of week (1..7, Monday = 1)
97     <i>hh:mm:ss</i>      = hour, minute, second, separated by colons
98     <i>+uu:uu</i>        = offset to UTC in hours and minutes, preceded by + or -
99     <i>u</i>             = '#' if time is <b>not</b> synchronized, else ' '
100     <i>v</i>             = '*' if position has <b>not</b> been verified, else ' '
101     <i>x</i>             = 'S' if daylight saving time is active, else ' '
102     <i>y</i>             = '!' during the hour preceding start or end of daylight saving time, else ' '
103     <i>z</i>             = 'A' during the hour preceding a leap second, else ' '
104     <i>a</i>             = 'R' alternate antenna (reminiscent of PZF5xx), usually ' ' for GPS receivers
105     <i>b</i>             = 'L' during a leap second, i.e. if the seconds field is 60, else ' '
106     <i>ll.lllln</i>      = position latitude in degrees, 'n' can actually be 'N' or 'S', i.e. North or South
107     <i>lll.lllle</i>     = position longitude in degrees, 'e' can actually be 'E' or 'W', i.e. East or West
108     <i>hhhh</i>          = position altitude in meters, always followed by 'm'
109     <i>&lt;ETX&gt;</i>         = end-of-text, ASCII code 0x03
110 </pre>
111                 <p>Examples for Uni Erlangen strings from GPS receivers:</p>
112 <pre>
113         \x02 09.07.93; 5; 08:48:26; +00:00;        ; 49.5736N  11.0280E  373m \x03
114         \x02 08.11.06; 3; 14:39:39; +00:00;        ; 51.9828N   9.2258E  176m \x03
115 </pre>
116                 <p>The Uni Erlangen formats should be used preferably. Newer Meinberg GPS receivers can be configured to transmit that format, for older devices there may be a special firmware version available.</p>
117                 <p>For the Meinberg parse look into clk_meinberg.c<br><br></p>
118                 <hr>
119                 <h4>Raw DCF77 Data via serial line</h4>
120                 <p>RAWDCF: end=TIMEOUT&gt;1.5s, sync each char (any char),generate psuedo time codes, fixed format</p>
121                 <p>direct DCF77 code input</p>
122                 <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.</p>
123                 <pre>
124         The preferred tty setting is:
125                 CFLAG           (B50|CS8|CREAD|CLOCAL)
126                 IFLAG           0
127                 OFLAG           0
128                 LFLAG           0
129 </pre>
130                 <h4>DCF77 raw time code</h4>
131                 <p>From &quot;Zur Zeit&quot;, Physikalisch-Technische Bundesanstalt (PTB), Braunschweig und Berlin, M&auml;rz 1989<br>
132                 </p>
133                 <p>Timecode transmission:</p>
134                 <pre>
135         AM:
136
137         time marks are send every second except for the second before the
138         next minute mark
139         time marks consist of a reduction of transmitter power to 25%
140         of the nominal level
141         the falling edge is the time indication (on time)
142         time marks of a 100ms duration constitute a logical 0
143         time marks of a 200ms duration constitute a logical 1
144 </pre>
145                 <p>see the spec. (basically a (non-)inverted psuedo random phase shift) encoding:</p>
146                 <pre>
147         FM:
148
149         Second  Contents
150         0  - 10 AM: free, FM: 0
151         11 - 14 free
152         15              R     - alternate antenna
153         16              A1    - expect zone change (1 hour before)
154         17 - 18 Z1,Z2 - time zone
155                  0  0 illegal
156                  0  1 MEZ  (MET)
157                  1  0 MESZ (MED, MET DST)
158                  1  1 illegal
159         19      A2    - expect leap insertion/deletion (1 hour before)
160         20      S     - start of time code (1)
161         21 - 24 M1    - BCD (lsb first) Minutes
162         25 - 27 M10   - BCD (lsb first) 10 Minutes
163         28      P1    - Minute Parity (even)
164         29 - 32 H1    - BCD (lsb first) Hours
165         33 - 34 H10   - BCD (lsb first) 10 Hours
166         35      P2    - Hour Parity (even)
167         36 - 39 D1    - BCD (lsb first) Days
168         40 - 41 D10   - BCD (lsb first) 10 Days
169         42 - 44 DW    - BCD (lsb first) day of week (1: Monday -&gt; 7: Sunday)
170         45 - 49 MO1   - BCD (lsb first) Month
171         50      MO10  - 10 Months
172         51 - 53 Y1    - BCD (lsb first) Years
173         54 - 57 Y10   - BCD (lsb first) 10 Years
174         58      P3    - Date Parity (even)
175         59            - usually missing (minute indication), except for leap insertion
176 </pre>
177                 <hr>
178                 <h4>Schmid clock</h4>
179                 <p>Schmid clock: needs poll, binary input, end='\xFC', sync start</p>
180                 <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.</p>
181                 <pre>
182         TTY setup is:
183                 CFLAG           (B1200|CS8|CREAD|CLOCAL)
184                 IFLAG           0
185                 OFLAG           0
186                 LFLAG           0
187
188 </pre>
189                 <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).</p>
190                 <pre>
191         Bit 0:  time in MEZ, 4 bytes *binary, not BCD*; hh.mm.ss.tenths
192         Bit 1:  date 3 bytes *binary, not BCD: dd.mm.yy
193         Bit 2:  week day, 1 byte (unused here)
194         Bit 3:  time zone, 1 byte, 0=MET, 1=MEST. (unused here)
195         Bit 4:  clock status, 1 byte,   0=time invalid,
196                                         1=time from crystal backup,
197                                         3=time from DCF77
198         Bit 5:  transmitter status, 1 byte,
199                                         bit 0: backup antenna
200                                         bit 1: time zone change within 1h
201                                         bit 3,2: TZ 01=MEST, 10=MET
202                                         bit 4: leap second will be
203                                                 added within one hour
204                                         bits 5-7: Zero
205         Bit 6:  time in backup mode, units of 5 minutes (unused here)
206 </pre>
207                 <hr>
208                 <h4>Trimble SV6 ASCII time code (TAIP)</h4>
209                 <p>Trimble SV6: needs poll, ascii timecode, start='&gt;', end='&lt;', query='&gt;QTM&lt;', eol='&lt;'</p>
210                 <p>Trimble SV6 is a GPS receiver with PPS output. It needs to be polled. It also need a special tty mode setup (EOL='&lt;').</p>
211                 <pre>
212         TTY setup is:
213                 CFLAG            (B4800|CS8|CREAD)
214                 IFLAG            (BRKINT|IGNPAR|ISTRIP|ICRNL|IXON)
215                 OFLAG            (OPOST|ONLCR)
216                 LFLAG            (ICANON|ECHOK)
217 </pre>
218                 <p>Special flags are:</p>
219                 <pre>           PARSE_F_PPSPPS      - use CIOGETEV for PPS time stamping
220                 PARSE_F_PPSONSECOND - the time code is not related to
221                                       the PPS pulse (so use the time code
222                                       only for the second epoch)
223
224         Timecode
225         0000000000111111111122222222223333333   / char
226         0123456789012345678901234567890123456   \ posn
227         &gt;RTMhhmmssdddDDMMYYYYoodnnvrrrrr;*xx&lt;     Actual
228         ----33445566600112222BB7__-_____--99-   Parse
229         &gt;RTM                      1     ;*  &lt;     Check
230 </pre>
231                 <hr>
232                 <h4>ELV DCF7000</h4>
233                 <p>ELV DCF7000: end='\r', pattern=&quot; - - - - - - - \r&quot;</p>
234                 <p>The ELV DCF7000 is a cheap DCF77 receiver sending each second a time code (though not very precise!) delimited by '`r'</p>
235                 <pre>
236         Timecode
237           YY-MM-DD-HH-MM-SS-FF\r
238
239                 FF&amp;0x1      - DST
240                 FF&amp;0x2      - DST switch warning
241                 FF&amp;0x4  - unsynchronised
242 </pre>
243                 <hr>
244                 <h4>HOPF 6021 und Kompatible</h4>
245                 <p>HOPF Funkuhr 6021 mit serieller Schnittstelle Created by F.Schnekenbuehl &lt;frank@comsys.dofn.de&gt; from clk_rcc8000.c Nortel DASA Network Systems GmbH, Department: ND250 A Joint venture of Daimler-Benz Aerospace and Nortel.</p>
246                 <pre>
247  hopf Funkuhr 6021 
248       used with 9600,8N1,
249       UTC via serial line
250       &quot;Sekundenvorlauf&quot; ON
251       ETX zum Sekundenvorlauf ON
252       dataformat 6021
253       output time and date
254       transmit with control characters
255       transmit evry second
256  </pre>
257                 <p>Type 6021 Serial Output format</p>
258                 <pre>
259       000000000011111111 / char
260       012345678901234567 \ position
261       sABHHMMSSDDMMYYnre  Actual
262        C4110046231195     Parse
263       s              enr  Check
264
265   s = STX (0x02), e = ETX (0x03)
266   n = NL  (0x0A), r = CR  (0x0D)
267
268   A B - Status and weekday
269  
270   A - Status
271
272       8 4 2 1
273       x x x 0  - no announcement
274       x x x 1  - Summertime - wintertime - summertime announcement
275       x x 0 x  - Wintertime
276       x x 1 x  - Summertime
277       0 0 x x  - Time/Date invalid
278       0 1 x x  - Internal clock used 
279       1 0 x x  - Radio clock
280       1 1 x x  - Radio clock highprecision
281
282   B - 8 4 2 1
283       0 x x x  - MESZ/MEZ
284       1 x x x  - UTC
285       x 0 0 1  - Monday
286       x 0 1 0  - Tuesday
287       x 0 1 1  - Wednesday
288       x 1 0 0  - Thursday
289       x 1 0 1  - Friday
290       x 1 1 0  - Saturday
291       x 1 1 1  - Sunday
292 </pre>
293                 <hr>
294                 <h4>Diem Computime Clock</h4>
295                 <p>The Computime receiver sends a datagram in the following format every minute</p>
296                 <pre>   
297    Timestamp    T:YY:MM:MD:WD:HH:MM:SSCRLF 
298    Pos          0123456789012345678901 2 3
299                 0000000000111111111122 2 2
300    Parse        T:  :  :  :  :  :  :  \r\n
301    
302    T    Startcharacter &quot;T&quot; specifies start of the timestamp 
303    YY   Year MM Month 1-12 
304    MD   Day of the month 
305    WD   Day of week 
306    HH   Hour 
307    MM   Minute 
308    SS   Second
309    CR   Carriage return 
310    LF   Linefeed
311 </pre>
312                 <hr>
313                 <h4>WHARTON 400A Series Clock with a 404.2 Serial interface</h4>
314                 <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 :</p>
315                 <pre>
316                                         Programmable    Selected
317                                         Option No       Option
318         BST or CET display              3               9 or 11
319         No external controller          7               0
320         Serial Output Format 1          9               1
321         Baud rate 9600 bps              10              96
322         Bit length 8 bits               11              8
323         Parity even                     12              E
324 </pre>
325                 <p>WHARTON 400A Series output format 1 is as follows :</p>
326                 <pre>
327    Timestamp    STXssmmhhDDMMYYSETX
328    Pos          0  12345678901234
329                 0  00000000011111
330   
331    STX  start transmission (ASCII 0x02)
332    ETX  end transmission (ASCII 0x03)
333    ss   Second expressed in reversed decimal (units then tens)
334    mm   Minute expressed in reversed decimal
335    hh   Hour expressed in reversed decimal
336    DD   Day of month expressed in reversed decimal
337    MM   Month expressed in reversed decimal (January is 1)
338    YY   Year (without century) expressed in reversed decimal
339    S    Status byte : 0x30 +
340                 bit 0   0 = MSF source          1 = DCF source
341                 bit 1   0 = Winter time         1 = Summer time
342                 bit 2   0 = not synchronised    1 = synchronised
343                 bit 3   0 = no early warning    1 = early warning
344 </pre>
345                 <hr>
346                 <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
347         </body>
348
349 </html>