![]() |
Re: .: Atomuhr :.
hmmm... bei der Version ohne XPStyle ist der XPStyle dabei...
Die Komponente xpman ist nämlich garnicht so wichtig für den XPStyle. Der XPStyle ist in wirklichkeit in einer res-Datei vorhanden, die per Unit xpman eingebunden wird. Du musst diese Unit aus den Uses rausnehmen. zum Link: geh einfach auf luckies homepage ![]() |
Re: .: Atomuhr :.
Zitat:
|
Re: .: Atomuhr :.
Zitat:
Und mit der Bandbreite hat sie nicht direkt etwas zu tun. Am besten verwendest du NTP, das Protokoll enthält einen Algorithmus der unabhängig von der Pingzeit eine genaue Synchronisierung ermöglicht. Ich glaube, bei den Indys ist eine NTP-Komponente dabei. |
Re: .: Atomuhr :.
Zitat:
|
Re: .: Atomuhr :.
Ich frage mich, wie man das Atomuhr nennen kann. Wenn du die Zeit von irgendeinem Server abfragst, dann hat man doch immer eine gewisse Verzögerung. Auch wenn das nur 13 ms sind, so sind das bei einer Atomuhr doch recht viel.
|
Re: .: Atomuhr :.
Zitat:
Delphi-Quellcode:
i:=0;
repeat i:=i+1; until (Edit1.Text[i+2]=':') and (Edit1.Text[i+5]=':'); Label2.Caption:=Copy(edit1.Text,i,8); |
Re: .: Atomuhr :.
Und warum wird nicht die Indy Komponente genommen, die direkt die Zeit von einem Zeitserver holt?
|
Re: .: Atomuhr :.
Interessantes Thema !
1.) müssen wir uns fragen was wir mit dieser Atomzeit genauerer machen wollen als es schon ist. Man kann davon ausgehen das auf heutigen Rechnern die Zeit durch das BIOS "gemessen" wird. Das ist dann ein RTC Chip der mit ca. 1.6MHz getaktet wird. Dieser Quartz hat eine Ungenauigkeit von +-10ppm. Das ergäbe hoch gerechnet eine Ungenauigkeit von +-1 Sekunde innerhalb von 44.4 Stunden. Wollen wir es 100'tel Sekunden genau also dann 26.6 Minuten. Daraus ergibt sich die minimal notwenige Synchromisationszeit von ca. 30 Minuten. Du solltest also alle 30 Minuten die Systemzeit synchronisieren, ein kürzeres Interval wäre nicht mehr meßbar noch hätte es einen Sinn. 2.) wie synchronisieren wir die Systemzeit so das wir sie exakt zum richtigen Zeitpunkt nachjustieren ? Das geht nur wenn du den Zeitfehler der Systemzeit ausrechnen kannst. Das muß dann folgende Fehlerquellen ausgleichen: a.) Antwortzeiten im Netzwerk, ergo du musst diesen Fehler absolut messen können b.) Gangungenauigkeiten des Quarzes der RTC c.) eventl. Laufzeitdifferenzen der beteiligten BIOS und Betriebsystem Software Das bedeutet: du musst ab dem Moment der Synchronisation mit dem Zeitserver die Zeit mit Hilfe der Systemuhr stoppen und diesen Wert als Differenz zur empfangenen Serverzeit so hochrechnen das du den exakten Zeitpunkt wann und mit welchem Zeitoffset du die Systemzeit aktualisierst. Bleibt noch ein gravierendes Problem: nämlich die Genauigkeit der zeitlichen Ausführungspriorität deines Codes der die Systemzeit ändert. Sprich ein Task wir von OS nur mit Zeitscheiben an Prozessorzeit ausgeführt, und das OS kann mittendrinnen in deiner Aktuialiserung der Systemzeit deinen Task schlafen legen. Du kannst das mit höheren Prioritäten versuchen zu verhindern, aber real verlassen kannst du dich nur darauf das due einen zeitlichen Fehler von +-20 Millisekunden hast. Sogesehen auf 100'tel Sekunden genau zu synchroniseren ist meiner Meinung nach schon hart an der Grenze des Machbaren. Gruß Hagen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz