Home Nach oben Produkte Dienstleistungen Kontakt Impressum

EM Support

 

EPC-NET4
EPC-NET8
EPC-NET2x6
EPC-NET24x
EPC-NET
EPM
EM Support

 
Dokument : FAQ`s zur Mouse Clock (.pdf)
 

DCF77 - Der Zeitsender

Die Physikalisch-Technische Bundesanstalt (PTB) in Braunschweig betreibt eine der genauesten Atomuhren der Welt. Sie weicht weniger als eine Sekunde in 300 000 Jahren ab. Uhrzeit und Datum werden von dem Sender "DCF77" mit 77,5 kHz ausgestrahlt. Der Sender befindet sich in Mainflingen bei Frankfurt/Main.
Das Zeitsignal hat eine Reichweite von 2000 km (siehe Karte).

 

 
Zeitsynchronisation in einem Windows Netzwerk:

Windows als NTP Client / Server

Windows XP/Server 2003 kann bereits selbständig einen NTP Server abfragen und die Zeit angleichen. Die Einstellungen können in der Systemsteuerung unter "Datum/Uhrzeit" vorgenommen werden.
Damit Windows XP/Server 2003 auch als NTP-Server fungiert, sind im Registryschlüssel HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time folgende Einträge nötig:

Variable Wert Bemerkung
Parameters\Type NTP  
Config\AnnounceFlags 5 Der Server ist ein "Verlässliche Zeitquelle" (Reliable time source)
TimeProviders\NtpServer\Enabled 1  
Parameters\NtpServer   Falls die Systemzeit von einer Funkuhr synchronisiert wird, freilassen. Falls nicht, eine durch Leerzeichen getrennte Liste von Zeitservern (IP-Adressen oder DNS Namen)

Starten Sie den Dienst nach den änderungen neu. Hier die Microsoft Support Artikel: Windows XP und Windows 2003 Server

Windows 2000

Windows 2000 bietet mit dem integrierten Dienst "w32time.exe" die Möglichkeit als NTP Server oder Client zu fungieren. Zur Aktivierung des NTP-Client/Servers unter Windows 2000 müssen dem System die erforderlichen Parameter bekannt und der entsprechende Zeitdienst dauerhaft gestartet sein.
Der Zeitdienst findet sich unter "Verwaltung/Dienste" als "Windows-Zeitgeber" (engl.: "Windows Time"). Er sollte nach Einstellung der Parameter mit dem Autostarttyp "Automatisch" gestartet werden. (Starts und Stopps dieses Dienstes sind auch mit den Command-Line-Befehlen "net start w32time" beziehungsweise "net stop w32time" möglich.)
Die für den Zeitdienst relevanten Parameter finden sich alle in der Registry und lassen sich dort bei Bedarf auch editieren: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters. Eine Dokumentation der einzelnen Registry-Einträge finden Sie bei Microsoft.

Damit Windows 2000 als NTP-Client fungieren kann ist die Adresse des Zeit-Servers, der bei jeder Synchronisation abgefragt werden soll, einzutragen. Der oder die ausgewählten NTP-Server lassen sich entweder in der Registry unter dem Eintrag "ntpserver" editieren oder mit dem Command-Line-Befehl "net time /setsntp[:NTP-Serverliste]". (Wird eine ganze Liste eingegeben, so sind die einzelnen Adressen durch Leerzeichen abzutrennen und die Liste beim net-Befehl in Anführungszeichen zu setzen.) Beim nächsten Start des Zeitdienstes werden die Einträge übernommen und die Zeit synchronisiert. Standardmäßig geschieht dies dann in Folge alle acht Stunden.
Die Frequenz versteckt sich unter dem Eintrag "Period" und ist standardmäßig als REG_SZ mit dem Wert "SpecialSkew" abgelegt. Um beispielsweise 24-mal am Tag zu synchronisieren, muss dieser "Period"-Eintrag durch einen entsprechenden REG_DWORD mit dem Dezimalwert 24 ersetzt werden (das heißt: den alten Eintrag komplett löschen oder umbenennen und einen Neueintrag zur Eingabe numerischer Werte anlegen).
Die aktuell gesetzten Zeit-Server lassen sich übrigens auch via Command-Line mit dem Befehl "net time /querysntp" anzeigen.

Damit Windows 2000 nicht nur als NTP-Client, sondern auch als Server fungiert, ist in der Registry folgender Eintrag nötig: "LocalNTP" muss von standardmäßig "0" auf "1" gesetzt werden. Nach anschließendem Neustart des Dienstes können jetzt auch beliebige NTP/SNTP-Clients von diesem Windows-2000-Rechner die Zeit abfragen. Ein weiterer Parameter in der Registry könnte gegebenenfalls interessant werden: die Frequenz, mit der die Zeit-Server von Windows 2000 abgefragt werden.

Eventuelle Fehlermeldungen des Zeitdienstes werden im Systemprotokoll der Ereignisanzeige eingetragen. Zu Diagnosezwecken lässt sich übrigens auch die Command-Line-Utility "w32tm.exe" nutzen, der Zeitdienst muss dabei deaktiviert sein. Eine übersicht der Aufrufvarianten bietet der Hilfe-Befehl "w32tm /?". Beispielsweise kann mit "w32tm -once" eine einmalige Synchronisation mit detaillierter Anzeige ausgelöst werden.
 

Windows NT

Dieser Dienst ist auch für Windows NT erhältlich und ersetzt den alten Zeitdienst Timeserv aus dem NT Resource-Kit. Microsoft bietet w32time für Windows NT hier (FTP) zum Download an

 
 

NTP mit einer Expert mouseCLOCK (USB) unter Linux betreiben

Die Expert mouseCLOCK kann mit Hilfe des NTP Paketes unter Linux betrieben werden. NTP steht für NetworkTimeProtocol. Es wird verwendet um die Systemzeit von Computern über TCP/IP zu synchronisieren. Windows 2000 und Windows XP lassen sich bereits ohne Zusatzsoftware als NTP Client/Server konfigurieren.

Das NTP Netzwerkprotokoll arbeitet auf TCP bzw. UDP Port 123. Mit NTP können Sie einen eigenen NTP Server aufbauen, welcher die Expert mouseCLOCK am ComPort bzw. USB-Port abfragt und die daraus resultierende Zeitinformation im Netz bereitstellt. Das Paket besteht im Wesentlichen aus folgenden Komponenten, die nach Kompilierung zur Verfügung stehen:
 

ntpd : NTP Daemon v4.2.2
ntpq : NTP Analyse Tool
ntp.conf : Konfigurationsdatei /etc/ntp.conf
testdcf : Tool zum Testen des DCF Signals ohne NTP

Betreiben Sie eine Expert mouseCLOCK an einem USB-Port, benötigen Sie den Linux USB-Treiber der Expert mouseCLOCK.

 

 
 
NTP Installation

Das Paket herunterladen und kompilieren können Sie entweder mit dem Skript make_all.sh oder indem Sie die folgenden beiden Schritte NTP Download und NTP kompilieren durchführen. Das Skript kompiliert übrigens NTP direkt für die Expert mouseCLOCK, Expert GPS CLOCK und EMC Professional. Dem tgz liegt zusätzlich noch eine Beispiel Konfiguration ntp.conf und ein Beispiel rc-script (s.u) bei.

NTP Download

Viele Linux Distributionen bzw. Unix Derivate verfügen bereits über einen compilierten ntpd und dessen zugehörige tools, jedoch kann es sein, dass der Hersteller beim Kompilieren des ntpd den notwendige Treiber für das Format auf der seriellen Schnittstelle nicht eingebunden hat. Dies ist besonders bei internationalen Distributionen der Fall, da DCF ein örtlich sehr begrenztes Signal ist. (das ntp RPM von S.u.S.E. Linux ist jedoch vollständig und kann direkt verwendet werden, so dass Sie mit NTP Konfiguration fortfahren können.) Andernfalls empfehlen wir den aktuellen NTP-Quellcode zu beziehen, diesen zu Kompilieren und zu installieren: Die neuste Version von NTP ist v4.2 und kann bei http://ntp.isc.org/ bezogen werden. Neben den Quellpaketen (TGZ) finden Sie dort auch ausführliche Dokumentation zur Installation und Konfiguration eines NTP Servers.

NTP kompilieren

Entpacken Sie das TGZ Packet mit
gzip -d ntp-4.2.2.tar.gz && tar -xvf ntp-4.2.2.tar
und wechseln Sie in das von tar neu angelegte Verzeichnis. Erstellen Sie ein Makefile mit dem Befehl
./configure --enable-RAWDCF
kompilieren Sie die Quellen mit
make
und installieren Sie die Binaries mit
make install
Waren alle Schritte erfolgreich, können Sie nun mit der Konfiguration beginnen.

 

 

NTP Konfiguration

Bei seriellem Anschluss:
Schließen Sie die Expert mouseCLOCK an einen freien ComPort an. NTP greift durch den symbloischen Link /dev/refclock-0 auf die Expert mouseCLOCK zu. Haben Sie die mouseCLOCK beispielsweise an COM1angeschlossen, dann muss /dev/refclock-0 auf /dev/ttyS0 (für COM2 /dev/ttyS1 usw.) zeigen. Besitzen Sie eine Linux Distribution mit einem Kernel 2.4 (oder älter) können Sie den Link mit
ln -s /dev/ttyS0 /dev/refclock-0 erstellen.
Ab Kernel 2.6 verwaltet udev die Eingabe/Ausgabe Gerätedateien. Damit der Link auf refclock-0 von udev automatisch erstellt wird, muss eine "rule" für diesen Link angelegt werden. Wechseln Sie dazu in den Ordner rules.d Ihres udev-Verzeichnises ( z.B. /etc/udev/rules.d). öffnen Sie die Datei 50-udev.rules und fügen Sie
KERNEL=="ttyS0", NAME="%k", SYMLINK="refclock-%n", GROUP="uucp"
an die Stellen, wo die seriellen Schnittstellen defeniert werden. Anschließend muss udev bzw. der Rechner neugestarted werden.

Als Beispiel ein Ausschnitt aus der 50-udev.rules einer Suse Distribution inklusive der Regel für den refclock Link.
 

# serial devices
KERNEl=="ttyS0",                NAME="%k", SYMLINK="refclock-%n", GROUP="uucp"
KERNEL=="tty[A-Z]*",            NAME="%k", GROUP="uucp"
KERNEL=="pppox*",               NAME="%k", GROUP="uucp"

Bei USB Anschluss:
Zur Installation des USB-Treibers müssen die Kernelquellen eines 2.6er Kernels bereits in /usr/src/linux vorliegen und die Quellen des USB-Treiber vorhanden sein. Melden Sie sich als root an und entpacken Sie das Archiv mit tar -xvzf gudedcf_v2.11_Kernel_2.6.x.tgz. Wechseln Sie in das von Tar erstellte Verzeichnis gudedcf. Dort befinden sich jetzt folgende Dateien:

drwxr-xr-x  6 root root   352 Feb  6 15:34 .
drwxr-xr-x  6 root root   360 Feb  6 12:20 ..
-rw-r--r--  1 root root  1370 Feb  1 12:13 Makefile
-rw-r--r--  1 root root  2866 Jan 11 13:08 Readme.txt
drwxr-xr-x  4 root root   392 Feb  6 15:02 build
-rw-r--r--  1 root root 15797 Jan 20 14:49 gude_dcf.c
drwxr-xr-x  3 root root   232 Jan 11 13:04 kernel_patch
drwxr-xr-x  3 root root   288 Jan 17 15:45 ntp_tools

Mit make test kann überprüft werden, ob die Kernel Quellen installiert sind. Die Ausgabe sollte wie folgt aussehen:

linux: /usr/src/gudedcf # make test
Checking for Kernel build     found '/lib/modules/2.6.11.4-20a-default/build'
Checking for Kernel source    found '/lib/modules/2.6.11.4-20a-default/source'
Checking for Kernel version   found '2.6.11'

Führen Sie den Befehl
make
aus, um den Treiber zu kompilieren. Führen Sie anschließend
make install
aus. Damit wird gude_dcf.ko in das Verzeichnis /lib/modules kopiert.

Mit make load kann der Treiber geladen werden. Der Treiber legt auch den für NTP wichtigen symbolischen Link refclock-0 an. Wenn Sie den Treiber als Kernel Patch installieren möchten, finden Sie in der readme.txt eine Anleitung.

 

 

ntp.conf einrichten

Jetzt muß nur noch der richtige Treiber in der Datei /etc/ntp.conf angegeben werden. Hier eine ausreichende Beispielkonfiguration:

server 127.127.8.0 prefer mode 14
logfile /var/log/ntp
logconfig =all
driftfile /var/log/ntp.drift

dies bedeutet, daß die Zeitinformation mit Hilfe des Treibers 14 der Gruppe 8 vom Device reflock-0 geholt werden soll. Zu Testzwecken können Sie hier auch den Treiber 127.127.1.0 wählen, was NTP veranlaßt, nur die rechnerinterne CMOS Uhr als Zeitinformation zu verwenden.

 

NTP Starten

Zum manuellen Start von NTP koennen Sie das binary ntpd einfach dort wo es installiert ist starten, z.B. per '# /usr/sbin/ntpd'. Um eine genaue Aussage über die Empfangsqualität des Empfängers zu erhalten, müssen Sie das Programm ntpq verwenden (Befehl "ntpq -c clocklist"). Wird ntpq ohne weitere Optionen aufgerufen, so wird der Localhost als NTP-Server angenommen, die Steuerung von ntpq erfolgt dann über die Kommandozeile.

status=0001 clk_okay, last_clk_noreply,
device="RAW DCF77 CODE (DTR SET/RTS CLR)",
timecode="-----------------D--S124-12-P124-1-p-2--1-1-----8--2------P",
poll=29, noreply=1, badformat=3, baddata=0, fudgetime1=258.000,
fudgetime2=0.000, stratum=0, refid=DCFa, flags=0,
refclock_time="c10254a1.00000000  Mon, Aug 12 2002 15:37:05.000 UTC",
refclock_status="DST; TIME CODE; (LEAP INDICATION; ANTENNA)",
refclock_format="RAW DCF77 Timecode",
refclock_states="*NOMINAL: 00:29:05 (94.07%); NO RESPONSE: 00:01:16 (4.09%); 
ILLEGAL DATE: 00:00:34 (1.83%); running time: 00:30:55"

In diesem Beispiel hat die Uhr bei einer Gesamtlaufzeit von ca. 31 Minuten (siehe running time) etwa 30 Minuten lang guten Empfang. Dies entspricht 94.07%.

Mit dem Kommando "peers" werden in einer Tabelle die aktiven Referenzuhren zeilenweise angezeigt. Ein der Zeile vorangestellter Stern "*" zeigt an, dass dieser Peer die aktuelle Zeitreferenz ist:

ntpq -c peers localhost

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 *GENERIC(0)      .DCFa.           0 l    5   64    1    0.000   22.846   0.008

Folgende Informationen werden u.a. angezeigt:

- remote : Auflistung aller verfügbaren Zeit-Server (ntp.conf)
- refid : Referenznummer
- when : wann die letzte Abfrage stattgefunden hat (in Sekunden)
- poll : in welchem Intervall der Zeitserver abgefragt wird
- offset : Differenz zwischen Systemzeit und Referenzzeit (in Millisekunden)

 

NTP Daemon einrichten

Wie alle Unix Systemdienste (daemons) sollte ntpd mit Hilfe eines sog. rc-script gestarted werden. Verwenden Sie ntp aus dem RPM von SuSE Linux, so finden Sie ein solches rc-script in /etc/init.d/xntpd. Hiermit koennen Sie per '# /etc/init.d/xntpd start' bzw. '# /etc/init.d/ntpd stop' den NTP Daemon starten bzw. herunterfahren. Im folgenden finden Sie ein Beispiel eines solchen rc-scripts, falls Sie ntpd selbst compiliert haben.
Um das rc-script automatisch beim Systemstart zu starten, müssen Sie dafür sorgen, dass in den relevanten runleveln ein Link auf /etc/init.d/xntpd angelegt ist. (SuSE Linux user können hierfür den Runlevel Editor in 'yast' verwenden).

Startscript für NTP-Daemon:

  case "$1" in
    start)
        echo -n "Starting ntpd "
        /usr/sbin/ntpd
        echo -e " done"
        ;;
    stop)
        echo -n "Shutting down ntpd:"
        killall /usr/sbin/ntpd
        echo -e " done"
        ;;
    reload|restart)
        $0 stop  &&  $0 start
        ;;
    status)
        echo -n "Checking for service ntpd: "
        checkproc /usr/sbin/ntpd && echo OK || echo No process
        ;;
    *)
        echo "Usage: $0 {start|stop|status|reload|restart}"
        exit 1
  esac

Nach einer erfolgreichen Synchronisation taucht im NTP-Logfile folgende Nachricht auf:

ntpd[967]: PARSE receiver #0: packet format "RAW DCF77 Timecode"
ntpd[967]: PARSE receiver #0: STATE CHANGE: -> DST; TIME CODE;
ntpd[967]: PARSE receiver #0: SYNCHRONIZED
ntpd[967]: clock GENERIC(0) event 'clk_okay' (0x00)

Herzlichen Glückwunsch, Ihr Server fungiert jetzt als NTP Zeit-Server!

 

alle Angaben ohne Gewähr

ATECO EDV GmbH, Assar-Gabrielsson-Str.1, 63128 Dietzenbach

Tel: 06074-812220 Fax: 06074-812230 eMail: info@ateco.de