TwinCAT Zeitquellen
In der Beckhoff TwinCAT Automatisierungssuite können mehrere unabhängige Zeitquellen ausgewertet werden. Siehe dazu auch das Beispielprogramm.
Angaben zur Architektur:
Name | BIOS Motherboard | CPU Zeit | Windows/NT Zeit | TwinCAT/TC Zeit | Distributed Clocks/DC Zeit |
---|---|---|---|---|---|
Beschreibung | RTC (RealTimeClock), batteriegespeist auf dem Motherboard | CPU Counter aus der Hardware der Steuerung, nicht geregelt Initialisiert durch RTC | Lokale Systemzeit des Windows-Betriebssystems (NT) Initialisiert durch RTC | Fortlaufende TwinCAT-Uhr Initialisiert durch Windows | Die Startzeit des aktuellen Task-Zyklus' wird zurückgegeben. Initialisiert durch TwinCAT. |
Daten |
| 64 bit | ab 1.1.1601 00:00 | ab 1.1.1601 00:00 | ab 1.1.2000 00:00 |
Bezug |
|
| Lokal | Lokalzeit unter Berücksichtigung der eingestellten Zeitzone, meist also UTC | Lokalzeit unter Berücksichtigung der eingestellten Zeitzone, meist also UTC |
PLC-Format |
| T_ULARGE_INTEGER | TIMESTRUCT | T_FILETIME | T_DcTime |
Aufruf |
| GetCpuCounter | NT_GetTime() | GetSystemTime() | F_GetActualDcTime() F_GetCurDcTickTime() F_GetCurDcTaskTime() |
Aktualisierung |
| bei jedem Aufruf, auch mehrmals innerhalb eines PLC-Zyklus |
| bei jedem Basistick (System Manager | BaseTime) | ActualDcTime
|
beispielsweise Verwendung | kann durch den PLC-Baustein Nt_SetTimeToRtcTime zur Korrektur der NT-Zeit verwendet werden | relative Zeitmessungen | Logging, Zeitstempelung auf Betriebssystemebene | hochgenaue relative zeitbasierte Aktionen innerhalb eines oder über mehrere Task-Zyklen | - hochgenaue relative zeitbasierte Aktionen innerhalb des EtherCAT-Systems |
Manipulationsmöglichkeit |
|
| - durch den PLC-Baustein Nt_SetTimeToRtcTime kann sie auf die aktuelle RTC-Zeit geändert werden, dies löst auch eine Korrektur der RTC-Zeit aus |
| Synchronisierung zu externer Referenzzeit ab TwinCAT 2.11 |
Tab. 1: Zeitarchitektur, benötigte Bibliotheken: TcEtherCAT.lib, TcUtilities.lib, TcSystem.lib
Einsatzszenario 1: Lokale Steuerung ohne netzwerkseitige Zwangssynchronisierung
Die lokale Windowsuhr ist freilaufend und kann durch Nt_SetTimeToRtcTime an die RTC gekoppelt werden. Beim Einsatz von Distributed Clocks Komponenten wird diese Möglichkeit nicht empfohlen!
Es wird die Verwendung der TC- oder DC-Uhr empfohlen, wenn absolute Zeitbezüge benötigt werden.
Ideal ist die Kopplung der DC-Zeit an eine externe Referenzzeit durch entsprechende EtherCAT-Komponenten.
Einsatzszenario 2: Lokale Steuerung mit netzwerkseitiger Zwangssynchronisierung
Die lokale Windowsuhr wird durch eine Netzwerkuhr/-server/Internet Zeitserver zyklisch mit der Weltzeit synchronisiert.
Eine Kopplung der Windowsuhr durch Nt_SetTimeToRtcTime an die RTC wird nicht empfohlen.
Es wird die Verwendung der TC- oder DC-Uhr empfohlen. Der Bezug zur Absolutzeit kann applikationsseitig durch Offsetberechnung zur NT-Zeit hergestellt werden.
Ideal ist die Kopplung der DC-Zeit an eine externe Referenzzeit durch entsprechende EtherCAT-Komponenten.
Einsatzszenario 3: Lokale Steuerung mit externer Referenzzeit über EtherCAT
Durch Kopplung der DC-Zeit an eine externe Zeitquelle (GPS, Funkuhr, PTP/IEEE1588, EtherCAT) steht eine in Frequenz und Phase synchronisierte stetige Zeit zur Verfügung. NT- und TC-Zeit werden in der Applikation nicht benötigt.
Übliche Zeitsynchronisation Die auf Betriebssystemebene übliche Zeitsynchronisation arbeitet in diskreten Intervallen von mehreren Sekunden bis Tagen. Im Synchronisationsfall führt dies zu einer sprunghaften/unsteten Änderung der unterlagerten Zeit! Davon betroffen sind übliche Netzwerksynchronisationen (SNTP, NTP u.ä.) oder auch Nt_SetTimeToRtcTime. Die Applikation muss diese sprunghaften Änderungen der "Absolut"zeit erwarten! |