Distributed Clocks Einstellungen
Ermittlung der aktuellen Distributed-Clocks-Zeit
Wird in einem PLC-Zyklus eine aktuelle Angabe über die Distributed-Clocks-Zeit benötigt, kann diese
- über eine Eingangsvariable des EtherCAT Masters verlinkt werden
- von der Klemme direkt als 64 Bit SystemTime angezeigt werden
Funktionen für Datentypen mit 64 Bit Breite Zur Verarbeitung der 64 Bit Zahlen in Beckhoff TwinCAT stehen in der Library TcUtilities.lib eine Auswahl an Funktionen zur Verfügung. Hier sind längere Ausführungszeiten erforderlich als mit 32 Bit Standard-Datentypen. |
1. Über den EtherCAT-Master
Der EtherCAT-Master kann eine Kopie der aktuellen Distributed-Clock-Master-Clock anzeigen. Dazu ist im Gerät EtherCAT --> Karteireiter EtherCAT --> Erweiterte Einstellungen --> Distributed Clocks die Einstellung "Show DC System Time (64 bit)" zu aktivieren, (Abb. Aktivierung der Anzeige der Master-Distributed-Clock).
Dadurch stellt sich das Prozessabbild des EtherCAT Masters nun dar (Abb. Erweitertes Prozessabbild des EtherCAT Masters):
SYSTIME Der Wert DcSysTime des EtherCAT Masters ist mit Bedacht zu verwenden und soll nur als grobe Orientierung dienen, in welchem Zeitbereich (Größenordnung: 1-2 Task-Zyklen) sich das Distributed-Clocks-System gerade befindet. Der Grund dafür ist, dass die lokale Uhrzeit in der Klemme bereits einige µs vor dem abholenden Frame in entsprechende Puffer gelesen wird. Danach benötigt der EtherCAT-Strang einige Zeit um das Prozessdatum zum Master zu transportieren. Die Online-Anzeige im TwinCAT System Manager ist wegen des Visualisierungscharakters bestenfalls im 3stelligen Millisekundenbereich genau. Aber auch in einer PLC kann das Prozessdatum SysTime unterschiedlich veraltet sein: je nachdem wann im Programmcode die Auswertung erfolgt, ist das Prozessdatum bereits einige µs/ms älter geworden. Sollen Reaktionen im EtherCAT-Strang (z.B. einer Ausgangsklemme EL2258) auf einer so eingelesenen SysTime basieren, sind 2-3 PLC-Zykluszeiten Puffer zu berücksichtigen. Deutlich zweckmäßiger ist die Verwendung einer EL2258 mit anderen EtherCAT-Slaves, die einen Zeitstempel aufgrund Umgebungseinflüssen wie z.B. die EL1252 erzeugen. Alternativ können auch zur NC/PLC-Laufzeit Funktionen aufgerufen werden, die sofort die aktuelle DC-Zeit zurückliefern wie z.B. F_GetCurDcTickTime. Siehe dazu die Hinweise zu den TwinCAT Zeitquellen in der EtherCAT-System-Dokumentation. |
2. Klemmeneigene SysTime
Die MultiTimestamp-Klemmen können direkt die klemmenlokale DC-Systemzeit als Prozessdatum anbieten:
Dazu ist manuell im Systemmanager das "PDO DEV Inputs Device" zu aktivieren:
- bei EL1258: 0x1A28
- bei EL1259: 0x1A38
- bei EL2258: 0x1A10
SysTime Der Wert DcSysTime der Klemme ist mit Bedacht zu verwenden und soll nur als grobe Orientierung dienen, in welchem Zeitbereich (Größenordnung: +/-1 Task-Zyklus) sich das Distributed-Clocks-System gerade befindet. Der Grund dafür ist, dass die lokale Uhrzeit in der Klemme nur einmalig je Makrozyklus ermittelt wird, wobei der exakte Zeitpunkt nicht festgelegt ist. Deutlich zweckmäßiger ist die Verwendung einer EL2258 mit anderen EtherCAT-Slaves, die einen Zeitstempel aufgrund Umgebungseinflüssen wie z.B. die EL1252 erzeugen. Alternativ können auch zur NC/PLC-Laufzeit Funktionen aufgerufen werden, die sofort die aktuelle DC-Zeit zurückliefern wie z.B. F_GetCurDcTickTime. Siehe dazu die Hinweise zu den TwinCAT Zeitquellen in der EtherCAT-System-Dokumentation. |
SysTime 32/64 Bit Die PDO SysTime wird wie folgt befüllt: - im "MultiTimeStamp Modus" wird die 64 Bit Variable nur mit den unteren 32 Bit gefüllt, da dies auch die Zeitbreite der Zeitstempel ist. |