~ubuntu-branches/debian/squeeze/ntp/squeeze-201010051545

« back to all changes in this revision

Viewing changes to html/parsedata.html

  • Committer: Bazaar Package Importer
  • Author(s): Matt Zimmerman
  • Date: 2004-10-11 16:10:27 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20041011161027-icyjbji8ujym633o
Tags: 1:4.2.0a-10ubuntu2
Use ntp.ubuntulinux.org instead of pool.ntp.org

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 
2
 
 
3
<html>
 
4
 
 
5
    <head>
 
6
        <meta name="generator" content="HTML Tidy, see www.w3.org">
 
7
        <title>NTP PARSE clock data formats</title>
 
8
        <link href="scripts/style.css" type="text/css" rel="stylesheet">
 
9
    </head>
 
10
 
 
11
    <body>
 
12
        <h3>NTP PARSE clock data formats</h3>
 
13
        <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>
 
14
        <hr>
 
15
        <h4>Meinberg clocks</h4>
 
16
        <pre>
 
17
Meinberg: start=&lt;STX&gt;, end=&lt;ETX&gt;, sync on start
 
18
      pattern=&quot;\2D:  .  .  ;T: ;U:  .  .  ;    \3&quot;
 
19
      pattern=&quot;\2  .  .  ;  ;   :  :  ;        \3&quot;
 
20
      pattern=&quot;\2  .  .  ;  ;   :  :  ;    :  ;        ;   .         .       &quot;
 
21
</pre>
 
22
        <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>
 
23
        <p>General characteristics:<br>
 
24
            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.</p>
 
25
        <p>The preferred tty setting for Meinberg is:</p>
 
26
        <pre>
 
27
                CFLAG           (B9600|CS7|PARENB|CREAD|HUPCL)
 
28
                IFLAG           (IGNBRK|IGNPAR|ISTRIP)
 
29
                OFLAG           0
 
30
                LFLAG           0
 
31
        </pre>
 
32
        <p>The tty setting for Meinberg GPS 166/167 receivers is:</p>
 
33
        <pre>
 
34
                CFLAG           (B19200|CS8|PARENB|CREAD|HUPCL)
 
35
                IFLAG           (IGNBRK|IGNPAR|ISTRIP)
 
36
                OFLAG           0
 
37
                LFLAG           0
 
38
        </pre>
 
39
        <p>The clock is run at datagram once per second. Stock dataformat is:</p>
 
40
        <pre>
 
41
    &lt;STX&gt;D:&lt;dd&gt;.&lt;mm&gt;.&lt;yy&gt;;T:&lt;w&gt;;U:&lt;hh&gt;:&lt;mm&gt;:&lt;ss&gt;;&lt;S&gt;&lt;F&gt;&lt;D&gt;&lt;A&gt;&lt;ETX&gt;
 
42
pos:  0  00 00 0 00 0 11 111 1 111 12 2 22 2 22 2 2  2  3  3   3
 
43
      1  23 45 6 78 9 01 234 5 678 90 1 23 4 56 7 8  9  0  1   2
 
44
 
 
45
&lt;STX&gt;           = '\002' ASCII start of text
 
46
&lt;ETX&gt;           = '\003' ASCII end of text
 
47
&lt;dd&gt;,&lt;mm&gt;,&lt;yy&gt;  = day, month, year(2 digits!!)
 
48
&lt;w&gt;             = day of week (sunday= 0)
 
49
&lt;hh&gt;,&lt;mm&gt;,&lt;ss&gt;  = hour, minute, second
 
50
&lt;S&gt;             = '#' if never synced since powerup else ' ' for DCF U/A 31
 
51
                  '#' if not PZF sychronisation available else ' ' for PZF 535
 
52
&lt;F&gt;             = '*' if time comes from internal quartz else ' '
 
53
&lt;D&gt;             = 'S' if daylight saving time is active else ' '
 
54
&lt;D&gt;             = 'U' if UTC time code is deliverd else ' '
 
55
&lt;A&gt;             = '!' during the hour preceeding an daylight saving time
 
56
                      start/end change
 
57
&lt;A&gt;             = 'A' if a leap second is announced
 
58
</pre>
 
59
        <pre>
 
60
        &lt;STX&gt;&lt;dd&gt;.&lt;mm&gt;.&lt;yy&gt;; &lt;w&gt;; &lt;hh&gt;:&lt;mm&gt;:&lt;ss&gt;; &lt;U&gt;&lt;S&gt;&lt;F&gt;&lt;D&gt;&lt;A&gt;&lt;L&gt;&lt;R&gt;&lt;ETX&gt;
 
61
    pos:  0   00 0 00 0 00 11 1 11 11 1 11 2 22 22 2  2  2  2  2  3  3   3
 
62
          1   23 4 56 7 89 01 2 34 56 7 89 0 12 34 5  6  7  8  9  0  1   2
 
63
    &lt;STX&gt;           = '\002' ASCII start of text
 
64
    &lt;ETX&gt;           = '\003' ASCII end of text
 
65
    &lt;dd&gt;,&lt;mm&gt;,&lt;yy&gt;  = day, month, year(2 digits!!)
 
66
    &lt;w&gt;             = day of week (sunday= 0)
 
67
    &lt;hh&gt;,&lt;mm&gt;,&lt;ss&gt;  = hour, minute, second
 
68
    &lt;U&gt;             = 'U' UTC time display
 
69
    &lt;S&gt;             = '#' if never synced since powerup else ' ' for DCF U/A 31
 
70
                      '#' if not PZF sychronisation available else ' ' for PZF 535
 
71
    &lt;F&gt;             = '*' if time comes from internal quartz else ' '
 
72
    &lt;D&gt;             = 'S' if daylight saving time is active else ' '
 
73
    &lt;A&gt;             = '!' during the hour preceeding an daylight saving time
 
74
                          start/end change
 
75
    &lt;L&gt;             = 'A' LEAP second announcement
 
76
    &lt;R&gt;             = 'R' alternate antenna
 
77
</pre>
 
78
        <p>Meinberg GPS166 receiver<br>
 
79
            You must get the Uni-Erlangen firmware for the GPS receiver support to work to full satisfaction !</p>
 
80
        <pre>
 
81
        &lt;STX&gt;&lt;dd&gt;.&lt;mm&gt;.&lt;yy&gt;; &lt;w&gt;; &lt;hh&gt;:&lt;mm&gt;:&lt;ss&gt;; &lt;+/-&gt;&lt;00:00&gt;; &lt;U&gt;&lt;S&gt;&lt;F&gt;&lt;D&gt;&lt;A&gt;&lt;L&gt;&lt;R&gt;&lt;L&gt;; &lt;position...&gt;&lt;ETX&gt;
 
82
 *
 
83
           000000000111111111122222222223333333333444444444455555555556666666
 
84
           123456789012345678901234567890123456789012345678901234567890123456
 
85
        \x0209.07.93; 5; 08:48:26; +00:00;        ; 49.5736N  11.0280E  373m\x03
 
86
 *
 
87
    
 
88
    &lt;STX&gt;           = '\002' ASCII start of text
 
89
    &lt;ETX&gt;           = '\003' ASCII end of text
 
90
    &lt;dd&gt;,&lt;mm&gt;,&lt;yy&gt;  = day, month, year(2 digits!!)
 
91
    &lt;w&gt;             = day of week (sunday= 0)
 
92
    &lt;hh&gt;,&lt;mm&gt;,&lt;ss&gt;  = hour, minute, second
 
93
    &lt;+/-&gt;,&lt;00:00&gt;   = offset to UTC
 
94
    &lt;S&gt;             = '#' if never synced since powerup else ' ' for DCF U/A 31
 
95
                      '#' if not PZF sychronisation available else ' ' for PZF 535
 
96
    &lt;U&gt;             = 'U' UTC time display
 
97
    &lt;F&gt;             = '*' if time comes from internal quartz else ' '
 
98
    &lt;D&gt;             = 'S' if daylight saving time is active else ' '
 
99
    &lt;A&gt;             = '!' during the hour preceeding an daylight saving time
 
100
                          start/end change
 
101
    &lt;L&gt;             = 'A' LEAP second announcement
 
102
    &lt;R&gt;             = 'R' alternate antenna (reminiscent of PZF535) usually ' '
 
103
    &lt;L&gt;              = 'L' on 23:59:60
 
104
</pre>
 
105
        <p>For the Meinberg parse look into clock_meinberg.c</p>
 
106
        <h4>Raw DCF77 Data via serial line</h4>
 
107
        <p>RAWDCF: end=TIMEOUT&gt;1.5s, sync each char (any char),generate psuedo time codes, fixed format</p>
 
108
        <p>direct DCF77 code input</p>
 
109
        <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>
 
110
        <pre>
 
111
        The preferred tty setting is:
 
112
                CFLAG           (B50|CS8|CREAD|CLOCAL)
 
113
                IFLAG           0
 
114
                OFLAG           0
 
115
                LFLAG           0
 
116
</pre>
 
117
        <h4>DCF77 raw time code</h4>
 
118
        <p>From &quot;Zur Zeit&quot;, Physikalisch-Technische Bundesanstalt (PTB), Braunschweig und Berlin, M&#132;rz 1989<br>
 
119
        </p>
 
120
        <p>Timecode transmission:</p>
 
121
        <pre>
 
122
        AM:
 
123
 
 
124
        time marks are send every second except for the second before the
 
125
        next minute mark
 
126
        time marks consist of a reduction of transmitter power to 25%
 
127
        of the nominal level
 
128
        the falling edge is the time indication (on time)
 
129
        time marks of a 100ms duration constitute a logical 0
 
130
        time marks of a 200ms duration constitute a logical 1
 
131
</pre>
 
132
        <p>see the spec. (basically a (non-)inverted psuedo random phase shift) encoding:</p>
 
133
        <pre>
 
134
        FM:
 
135
 
 
136
        Second  Contents
 
137
        0  - 10 AM: free, FM: 0
 
138
        11 - 14 free
 
139
        15              R     - alternate antenna
 
140
        16              A1    - expect zone change (1 hour before)
 
141
        17 - 18 Z1,Z2 - time zone
 
142
                 0  0 illegal
 
143
                 0  1 MEZ  (MET)
 
144
                 1  0 MESZ (MED, MET DST)
 
145
                 1  1 illegal
 
146
        19              A2    - expect leap insertion/deletion (1 hour before)
 
147
        20              S     - start of time code (1)
 
148
        21 - 24 M1    - BCD (lsb first) Minutes
 
149
        25 - 27 M10   - BCD (lsb first) 10 Minutes
 
150
        28              P1    - Minute Parity (even)
 
151
        29 - 32 H1    - BCD (lsb first) Hours
 
152
        33 - 34      H10   - BCD (lsb first) 10 Hours
 
153
        35              P2    - Hour Parity (even)
 
154
        36 - 39 D1    - BCD (lsb first) Days
 
155
        40 - 41 D10   - BCD (lsb first) 10 Days
 
156
        42 - 44 DW    - BCD (lsb first) day of week (1: Monday -&gt; 7: Sunday)
 
157
        45 - 49 MO    - BCD (lsb first) Month
 
158
        50           MO0   - 10 Months
 
159
        51 - 53 Y1    - BCD (lsb first) Years
 
160
        54 - 57 Y10   - BCD (lsb first) 10 Years
 
161
        58              P3    - Date Parity (even)
 
162
        59                    - usually missing (minute indication), except for leap insertion
 
163
</pre>
 
164
        <hr>
 
165
        <h4>Schmid clock</h4>
 
166
        <p>Schmid clock: needs poll, binary input, end='\xFC', sync start</p>
 
167
        <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>
 
168
        <pre>
 
169
        TTY setup is:
 
170
                CFLAG           (B1200|CS8|CREAD|CLOCAL)
 
171
                IFLAG           0
 
172
                OFLAG           0
 
173
                LFLAG           0
 
174
 
 
175
</pre>
 
176
        <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>
 
177
        <pre>
 
178
        Bit 0:  time in MEZ, 4 bytes *binary, not BCD*; hh.mm.ss.tenths
 
179
        Bit 1:  date 3 bytes *binary, not BCD: dd.mm.yy
 
180
        Bit 2:  week day, 1 byte (unused here)
 
181
        Bit 3:  time zone, 1 byte, 0=MET, 1=MEST. (unused here)
 
182
        Bit 4:  clock status, 1 byte,   0=time invalid,
 
183
                                        1=time from crystal backup,
 
184
                                        3=time from DCF77
 
185
        Bit 5:  transmitter status, 1 byte,
 
186
                                        bit 0: backup antenna
 
187
                                        bit 1: time zone change within 1h
 
188
                                        bit 3,2: TZ 01=MEST, 10=MET
 
189
                                        bit 4: leap second will be
 
190
                                                added within one hour
 
191
                                        bits 5-7: Zero
 
192
        Bit 6:  time in backup mode, units of 5 minutes (unused here)
 
193
</pre>
 
194
        <hr>
 
195
        <h4>Trimble SV6 ASCII time code (TAIP)</h4>
 
196
        <p>Trimble SV6: needs poll, ascii timecode, start='&gt;', end='&lt;', query='&gt;QTM&lt;', eol='&lt;'</p>
 
197
        <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>
 
198
        <pre>
 
199
        TTY setup is:
 
200
                CFLAG            (B4800|CS8|CREAD)
 
201
                IFLAG            (BRKINT|IGNPAR|ISTRIP|ICRNL|IXON)
 
202
                OFLAG            (OPOST|ONLCR)
 
203
                LFLAG            (ICANON|ECHOK)
 
204
</pre>
 
205
        <p>Special flags are:</p>
 
206
        <pre>           PARSE_F_PPSPPS      - use CIOGETEV for PPS time stamping
 
207
                PARSE_F_PPSONSECOND - the time code is not related to
 
208
                                      the PPS pulse (so use the time code
 
209
                                      only for the second epoch)
 
210
 
 
211
        Timecode
 
212
        0000000000111111111122222222223333333   / char
 
213
        0123456789012345678901234567890123456   \ posn
 
214
        &gt;RTMhhmmssdddDDMMYYYYoodnnvrrrrr;*xx&lt;     Actual
 
215
        ----33445566600112222BB7__-_____--99-   Parse
 
216
        &gt;RTM                      1     ;*  &lt;     Check
 
217
</pre>
 
218
        <hr>
 
219
        <h4>ELV DCF7000</h4>
 
220
        <p>ELV DCF7000: end='\r', pattern=&quot; - - - - - - - \r&quot;</p>
 
221
        <p>The ELV DCF7000 is a cheap DCF77 receiver sending each second a time code (though not very precise!) delimited by '`r'</p>
 
222
        <pre>
 
223
        Timecode
 
224
          YY-MM-DD-HH-MM-SS-FF\r
 
225
 
 
226
                FF&amp;0x1      - DST
 
227
                FF&amp;0x2      - DST switch warning
 
228
                FF&amp;0x4  - unsynchronised
 
229
</pre>
 
230
        <hr>
 
231
        <h4>HOPF 6021 und Kompatible</h4>
 
232
        <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>
 
233
        <pre>
 
234
 hopf Funkuhr 6021 
 
235
      used with 9600,8N1,
 
236
      UTC via serial line
 
237
      &quot;Sekundenvorlauf&quot; ON
 
238
      ETX zum Sekundenvorlauf ON
 
239
      dataformat 6021
 
240
      output time and date
 
241
      transmit with control characters
 
242
      transmit evry second
 
243
 </pre>
 
244
        <p>Type 6021 Serial Output format</p>
 
245
        <pre>
 
246
      000000000011111111 / char
 
247
      012345678901234567 \ position
 
248
      sABHHMMSSDDMMYYnre  Actual
 
249
       C4110046231195     Parse
 
250
      s              enr  Check
 
251
 
 
252
  s = STX (0x02), e = ETX (0x03)
 
253
  n = NL  (0x0A), r = CR  (0x0D)
 
254
 
 
255
  A B - Status and weekday
 
256
 
 
257
  A - Status
 
258
 
 
259
      8 4 2 1
 
260
      x x x 0  - no announcement
 
261
      x x x 1  - Summertime - wintertime - summertime announcement
 
262
      x x 0 x  - Wintertime
 
263
      x x 1 x  - Summertime
 
264
      0 0 x x  - Time/Date invalid
 
265
      0 1 x x  - Internal clock used 
 
266
      1 0 x x  - Radio clock
 
267
      1 1 x x  - Radio clock highprecision
 
268
 
 
269
  B - 8 4 2 1
 
270
      0 x x x  - MESZ/MEZ
 
271
      1 x x x  - UTC
 
272
      x 0 0 1  - Monday
 
273
      x 0 1 0  - Tuesday
 
274
      x 0 1 1  - Wednesday
 
275
      x 1 0 0  - Thursday
 
276
      x 1 0 1  - Friday
 
277
      x 1 1 0  - Saturday
 
278
      x 1 1 1  - Sunday
 
279
</pre>
 
280
        <hr>
 
281
        <h4>Diem Computime Clock</h4>
 
282
        <p>The Computime receiver sends a datagram in the following format every minute</p>
 
283
        <pre>   
 
284
   Timestamp    T:YY:MM:MD:WD:HH:MM:SSCRLF 
 
285
   Pos          0123456789012345678901 2 3
 
286
                0000000000111111111122 2 2
 
287
   Parse        T:  :  :  :  :  :  :  \r\n
 
288
   
 
289
   T    Startcharacter &quot;T&quot; specifies start of the timestamp 
 
290
   YY   Year MM Month 1-12 
 
291
   MD   Day of the month 
 
292
   WD   Day of week 
 
293
   HH   Hour 
 
294
   MM   Minute 
 
295
   SS   Second
 
296
   CR   Carriage return 
 
297
   LF   Linefeed
 
298
</pre>
 
299
        <hr>
 
300
        <h4>WHARTON 400A Series Clock with a 404.2 Serial interface</h4>
 
301
        <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>
 
302
        <pre>
 
303
                                        Programmable    Selected
 
304
                                        Option No       Option
 
305
        BST or CET display              3               9 or 11
 
306
        No external controller          7               0
 
307
        Serial Output Format 1          9               1
 
308
        Baud rate 9600 bps              10              96
 
309
        Bit length 8 bits               11              8
 
310
        Parity even                     12              E
 
311
</pre>
 
312
        <p>WHARTON 400A Series output format 1 is as follows :</p>
 
313
        <pre>
 
314
   Timestamp    STXssmmhhDDMMYYSETX
 
315
   Pos          0  12345678901234
 
316
                0  00000000011111
 
317
  
 
318
   STX  start transmission (ASCII 0x02)
 
319
   ETX  end transmission (ASCII 0x03)
 
320
   ss   Second expressed in reversed decimal (units then tens)
 
321
   mm   Minute expressed in reversed decimal
 
322
   hh   Hour expressed in reversed decimal
 
323
   DD   Day of month expressed in reversed decimal
 
324
   MM   Month expressed in reversed decimal (January is 1)
 
325
   YY   Year (without century) expressed in reversed decimal
 
326
   S    Status byte : 0x30 +
 
327
                bit 0   0 = MSF source          1 = DCF source
 
328
                bit 1   0 = Winter time         1 = Summer time
 
329
                bit 2   0 = not synchronised    1 = synchronised
 
330
                bit 3   0 = no early warning    1 = early warning
 
331
</pre>
 
332
        <hr>
 
333
        <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
 
334
    </body>
 
335
 
 
336
</html>
 
 
b'\\ No newline at end of file'