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

  1. über eine Eingangsvariable des EtherCAT Masters verlinkt werden
  2. von der Klemme direkt als 64 Bit SystemTime angezeigt werden
Distributed Clocks Einstellungen 1:

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.
Ein Datentyp mit 64 Bit Breite ist in TcEthercat.lib als T_DCTIME oder in TcUtilities.lib als T_LARGE_INTEGER definiert.

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).

Distributed Clocks Einstellungen 2:
Aktivierung der Anzeige der Master-Distributed-Clock

Dadurch stellt sich das Prozessabbild des EtherCAT Masters nun dar (Abb. Erweitertes Prozessabbild des EtherCAT Masters):

Distributed Clocks Einstellungen 3:
Erweitertes Prozessabbild des EtherCAT Masters
Distributed Clocks Einstellungen 4:

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:

Distributed Clocks Einstellungen 5:
Einstellung SysTime

Dazu ist manuell im Systemmanager das "PDO DEV Inputs Device" zu aktivieren:

Distributed Clocks Einstellungen 6:

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.

Distributed Clocks Einstellungen 7:

SysTime 32/64 Bit

Die PDO SysTime wird wie folgt befüllt:
- im "CompatibleModus" wird die 64 Bit Variable mit voller 64 Bit Distributed-Clocks-Zeit 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.