NTP Provider
Der NTP Provider ist ein (S)NTP Client, der ein Zeitsignal von einem NTP Server zyklisch bezieht. Hierdurch kann er einen Offset der Systemzeit von dem Zeitsignal des NTP Servers berechnen und entsprechend bereitstellen.
Konfiguration
Der NTP Provider ist als TcCOM Modul „TcNtpExternalTimeProvider“ implementiert. Dieses Modul wird als TcCOM Modul folgendermaßen in Betrieb genommen:
- TwinCAT Projekt
- 1. Einfügen eines TcCOM Moduls unter System->TcCOM Objects unter Auswahl des Typen TcNtpExternalTimeProvider in der Kategorie External Time Provider.
- 2. Das Modul benötigt eine Task, von dem es aufgerufen wird. Diese wird über den Context-Tab des Moduls parametriert:
- Das TcCOM Modul kann parametriert werden:
Die Konfiguration erfolgt im Tab Parameter (Init). Die Parameter bedeuten:
- TimeType: Der Type des Offsets für den dieses Modul einen Offset ermitteln soll.
Client Para:
- bEnable: Zum Unterbinden der NTP Kommunikation kann das Modul deaktiviert werden.
- sServerName: Der Name des NTP Servers, der als Quelle genutzt werden soll.
- nServerAddress: Die IP Adresse eines NTP Servers (wird genutzt, falls sServerName leer ist).
- nServerPort: Der zu nutzende UDP Port des NTP Servers (default: 123).
- tPollIntervall: Das Intervall, in dem die NTP Abfragen gestartet werden sollen. Es wird dabei das vom Server angegebene Maximum berücksichtigt, sodass ggf. langsamere Anfragen entstehen.
Dieses Modul reicht einen ermittelten Offset zum einen über das ITcSetExternalTime Interface zu TwinCAT. Zum anderen Stehen auch Ausgänge für das Mapping bereit.
NTP Provider als NTP Server
Optional kann das gleiche Modul auch als NTP Server fungieren. Somit kann ein Zeitsignal von einem externen NTP Server (als Client) bezogen werden und gleichzeitig an unterlagerte Systeme bereitgestellt werden.
Für den externen Server gilt nach NTP Protokoll typischerweise eine minimale Abfragezeit von 8 Sekunden oder mehr. Der NTP Provider als NTP Server lässt hingegen häufigere Abfrageintervalle zu.
Server Funktion
Die Server-Funktionalität ist normalerweise ausgeblendet. Sie lässt sich über Show Hidden Parameter einblenden und konfigurieren:
- bEnable: Einschalten der NTP-Server Funktionalität für dieses Modul. Dafür muss der Port udp/123 in der Windows Firewall entsprechend geöffnet werden.
- nPort: Der UDP Port, der genutzt wird, um den Server anzubieten (default: 123).
Die folgenden Parameter dienen dazu, die bereitgestellten NTP Informationen anzupassen. Per Default werden sie gesetzt wie im Protokoll vorgesehen, können hier jedoch überschrieben werden:
- nLeap: Manuelle Konfiguration des Leap Indicators.
- nStratum: Manuelle Konfiguration des Stratums.
- nRoot: Manuelle Konfiguration der Root-Server Information, wie sie in Abhängigkeit von Stratum definiert wird.
Filter-Funktion
Werden Offsets durch die NTP Server-Abfrage ermittelt, kann das Modul selbstständig einen Übergang des alten Offsets zum neuen Offset durchführen.
Diese Funktionalität ist normalerweise ausgeblendet. Sie lässt sich über Show Hidden Parameter einblenden und konfigurieren:
- eMode: Eine Auswahl an Modes. Aktuell werden entweder keine oder eine lineare Anpassung (Default) vorgenommen.
Bei der Auswahl von „Linear“ als eMode gelten folgende Parameter:
- nFilter: Anzahl der Werte über die gemittelt wird, also Anzahl der NTP Responses. Bei einem PollInterval von 1s würde nFilter = 60 ein Filter über eine Minute bewirken. (Default: 60).
- nLimiter: Der Offset wird maximal um diesen Wert pro Zyklus verändert. Wenn die Differenz der lokalen zur externen Uhr 100ms und die Zykluszeit 1ms wäre, würde beim nLimiter = 10 es somit 100.000 Zyklen oder 1,6 Minuten dauern bis der Offset eingeregelt wurde. (Default 1µs).
- nModulo: Rundung des Offsets. Üblicherweise sollte dieses in Abhängigkeit von der Zykluszeit gewählt werden. Der Offset wird über diesen Modulo angepasst, damit keine „unrunden“ Zeiten entstehen. Die DC Time wird Modulo der Zykluszeit zurückgegeben, korrigiert mit dem Offset bleibt der Zeitstempel somit „rund“. Dadurch verändert sich der Offset/Zeitstempel aber auch mit kleinen Sprüngen, wenn eine Anpassung stattfindet. Wie unter nLimiter beschrieben und mit nModulo = 1000 würde sich der Offset und somit der relative Zeitstempel jeden 100ten Zyklus um 0,1ms inkrementieren.
Diagnose
Unter dem Tab Parameter (Online) können entsprechende Diagnose-Informationen eingesehen werden.
Zu jeder Zeile befindet sich in der Spalte Kommentar eine entsprechende Beschreibung.
Zusätzlich sind zur programmatischen Auswertung entsprechende Symbole bereit:
- bIsConnected: Es wurden mindestens 8 erfolgreiche Antworten vom Server empfangen (TRUE) oder mindestens 8 Anfragen nicht beantwortet (FALSE).
- bIsSynchronized: Die ermittelte Zeit des Clients ist in den letzten 8 Antworten mit einer Abweichung kleiner als die Zykluszeit zur Zeit des Servers ermittelt worden.
- nLastUpdate: Der Zeitpunkt der letzten ausgewerteten Antwort des Servers.