Dieter Teuchert Download EMail Home
 
 
 
 
Elektronisch kalibriertes Frequenznormal
 
Echtzeit mit MS Windows
 
 
 
DCF77 Systemzeit für Win32

 Sie möchten Ihren Rechner effektiv und präzise mit DCF77 synchronisieren?
 Sie möchten dabei MS Windows Betriebssysteme nutzen?
Wir haben dazu Musterlösungen erarbeitet. Ziel unserer Studien war es, eine effektive und präzise Synchronisation zu erreichen. Die mit einem handelsüblichen DCF-Empfänger erreichbare Genauigkeit liegt bei +/- 2 msec.
Unter Download bieten wir Ihnen eine Win32-Anwendung (keine Systemkomponenten oder Treiber!) für den automatischen Empfang der DCF-Zeitzeichen und das Nachführen der Systemzeit mit dieser Genauigkeit an.


  Screenshot
 

 Aufgabenstellung
Es ist bekannt, wie man DCF-Zeitsignale über eine auf 50 Baud eingestellte serielle Schnittstelle mit einem PC auswerten kann. Welche Genauigkeit ist dabei erreichbar?
Im Internet verfügbare Open-Source-Lösungen erreichen Genauigkeiten im Sekundenbereich. Wie lässt sich das verbessern?
 
 Unsere Ergebnisse
Ohne weiteres Zutun wird die Systemuhr des Rechners z.B. grundsätzlich etwa eine Sekunde nachgehen. Grund dafür sind Verzögerungen in den Hardware-FIFOs moderner serieller Schnittstellen. Um bei hohen Baudraten allzu häufige Unterbrechungen zu vermeiden, triggert der FIFO die Unterbrechung erst nach einigen Zeichen (einstellbare Schwelle). Bei der vorliegenden Anwendung wird jedoch immer nur ein Zeichen empfangen, die DCF77-Sekundenmarke. Bei 50 Baud führt das offenbar zu einer Verzögerung von etwa 800 msec bis 1 s vom Empfang des Zeichens durch die Hardware bis zur Übergabe an die Software des seriellen Treibers.
Für die unverzügliche Übergabe des Zeichens an den seriellen Treiber muss die FIFO-Funktion der seriellen Schnittstelle abgeschaltet sein.

Eine weitere Frage ist die nach der Fehlertoleranz. Anscheinend begnügen sich Software-Entwickler im Open-Source-Bereich damit, die DCF77-Empfangsdaten anhand der Minutenmarke, der Startmarke und der drei Paritätsbits zu prüfen und für den Plausibilitätstest einfach die beim Zeitvergleich festgestellte Zeitabweichung heranzuziehen. Diese Vorgehensweise kann bei ungünstigen Empfangsbedingungen dazu führen, dass alle Daten verworfen werden und dass überhaupt keine Zeitvergleiche bzw. -korrekturen durchgeführt werden. Hier haben wir Software, die auch bei Empfangsstörungen gültige Daten erkennt und benutzt.

Um nun die Genauigkeit der Zeitmessung in den Bereich von Millisekunden zu bringen, sind noch eine Reihe weiterer Dinge zu prüfen, z.B. der Einfluss des Task Schedulers auf das Timing. Ein Standardwert für die Zuteilung des Prozessors unter Windows NT beträgt z.B. 20 msec. Bleibt der Scheduler unbeachtet, wird man höchstens eine Genauigkeit in dieser Größenordnung erreichen. Unsere Software stellt das Eingreifen des Schedulers gegebenenfalls fest und korrigiert die dadurch entstandene Latenz beim Setzen der Systemzeit.

Wir haben auch untersucht, wie sich Zeitsprünge bei der Resynchronisation der Systemuhr reduzieren lassen. Win32 enthält dafür Mechanismen, die eine feine Steuerung der Ganggeschwindigkeit der Systemuhr erlauben. Diese Funktionen benutzen z.B. W2K Time Services, um Uhren durch gleichmäßige Beschleunigung über einen Zeitraum von 20 Minuten zu synchronisieren. Dieselbe Methode benutzen wir ebenfalls, um auch zwischen stündlichen Zeitvergleichen immer eine Ganggenauigkeit von 2 msec einzuhalten.

Wir haben als DCF77-Empfänger für diese Untersuchungen übrigens eine handelsübliche, batteriebetriebene Funkuhr mit eigenem Display benutzt. Diese schaltet ihren Empfangsteil in den ersten zwei Minuten jeder Stunde ein, um den Zeitvergleich vorzunehmen. Wir haben diese Uhr so erweitert, dass Sie die DCF77-Sekundenmarken an eine serielle Schnittstelle sendet. RS-232 kompatible Spannungspegel lassen sich dabei besonders effektiv mithilfe von Ausgängen derselben seriellen Schnittstelle erzeugen. Die gesamte Schnittstelle zwischen Funkuhr und Rechner besteht aus zwei Widerständen, zwei Dioden und einem Transistor, sowie einem Kabel mit Steckern. Die vorgeschlagene Beschaltung ermöglicht übrigens die Kalibration der Durchlaufzeit der seriellen Schnittstelle zur Feststellung der oben beschriebenen FIFO-Problematik.

Einige der dargestellten Aspekte sind auch bei der Synchronisation mit einem GPS-Empfänger oder einem NTP-Server interessant, wenn man tatsächlich die optimale Genauigkeit im Bereich von Millisekunden erreichen möchte.


Copyright: cadt 2003