Distributed Clock
Für das Oversampling ist ein Taktgeber in der Klemme nötig, der die einzelnen Messwerterfassungen auslöst. Dazu wird die lokale Uhr in der Klemme genutzt, genannt Distributed Clock.
Die Distributed Clock stellt eine lokale Uhr im EtherCAT Slave Controller (ESC) dar mit den Eigenschaften:
- Einheit 1 ns.
- Nullpunkt 1.1.2000 00:00.
- Umfang 64 Bit (ausreichend für die nächsten 584 Jahre); manche EtherCAT-Slaves unterstützen jedoch nur einen Umfang von 32 Bit, d.h. nach ca. 4,2 Sekunden läuft die Variable über.
- Diese lokale Uhr wird vom EtherCAT Master automatisch mit der Master Clock im EtherCAT Bus mit einer Genauigkeit < 100 ns synchronisiert.
In der EL4732 sind nur die unteren 32 Bit mit einem Umfang von ~4,2 Sekunden realisiert.
EtherCAT und Distributed Clocks Auf der Beckhoff Website können Sie eine grundlegende Einführung in das Thema EtherCAT und Distributed Clocks herunterladen: die "Systembeschreibung Distributed Clocks". |
Beispiel:
Der Feldbus/EtherCAT Master wird mit 1 ms Zykluszeit betrieben weil z. B. die übergeordnete SPS mit 1 ms Zykluszeit betrieben wird. Damit wird alle 1 ms ein EtherCAT-Frame zur Übergabe der Prozessdaten an die EL4732 geschickt. Im ESC wird deshalb durch die lokale Uhr in der Klemme alle 1 ms (1 kHz) ein Interrupt ausgelöst, um die Prozessdaten des übergebenen EtherCAT-Frame auszulesen. Dieser erste Interrupt wird SYNC1 genannt.
Die EL47xx sei im TwinCAT System Manager auf ein Oversampling n = 10 eingestellt. Dadurch generiert der ESC in der Klemme einen zweiten Interrupt mit einer n-fach höheren Frequenz, hier also 10 kHz oder 100 µs Periode. Dieser Interrupt wird SYNC0 genannt. Bei jedem SYNC0-Signal wird die auszugebene Spannung als digitaler Wert dem DAC (Digital to Analog Converter) übergeben.
Ausgabe der Ausgangsspannungen Beide Ausgangsspannungen (von Kanal 1 und 2) werden immer gleichzeitig ausgegeben. Dies gewährleistet die Bauart des DAC, der durch den SYNC0-Puls angestoßen wird. Eine andere Betriebsart ist nicht möglich. |
Durch die Generierung des SYNC0-Pulses aus der lokalen synchronisierten Uhr im Distributed-Clocks-Verbund ist gewährleistet, dass die Erfassung der analogen Messwerte in zeitlich hochkonstant gleichen Abständen mit der Periode des SYNC1-Pulses erfolgt.
Der maximale Oversamplingfaktor ist abhängig vom Speicherumfang des eingesetzten ESC und beträgt bei der EL47xx n = 100.
Maximale Samplingfrequenz Eine kleinere Periode als 10 µs ist für die EL47xx nicht zulässig! Die maximale Samplingfrequenz beträgt für die EL47xx also 100 kSps (Samples per second). |
Beispiel:
Bei SYNC1 = 1 ms sind Oversamplingfaktoren wie 1,2,5 oder 100 zulässig, nicht aber 3! Wird mit unplausiblen Werten gearbeitet, erreicht die Klemme zwar den OP-State, gibt aber keine korrekten Prozessdaten aus. Dies drückt sich ggf. auch durch einen Working Counter Error aus.
Bei 2 Kanälen und n = 100 müssen so je EtherCAT-Zyklus 2 x 2 x 100 = 400 Byte Prozessdaten an die EL47xx übermittelt werden.
Arbeiten mit DC-Zeiten in der Steuerung
Die Distributed-Clock-Zeit hat aus der Sicht der Steuerung folgenden Eigenschaften:
- Einheit 1 ns
- universaler Nullpunkt 1.1.2000 00:00 , d.h. bei Auswertungen der Variable ist ein Offset von 2000 Jahren zu addieren
- Umfang bis zu 64 Bit (ausreichend für 584 Jahre); manche EtherCAT-Slaves unterstützen jedoch nur einen Umfang von 32 Bit, d.h. nach ca. 4,2 Sekunden läuft das Register lokal über und beginnt wieder bei 0.
Zur Bearbeitung von DC-Zeiten werden folgende 3 Datentypen empfohlen
- T_DCTIME aus TcEtherCAT.lib
Basiert auf T_ULARGE_INTEGER und ist damit vorzeichenlos. Kann zur Verlinkung mit entsprechenden Hardware-Variablen verwendet werden - T_ULARGE_INTEGER aus der TcUtilities.lib
Vorzeichenloser 64-Bit-Datentyp - T_LARGE_INTEGER aus der TcUtilities.lib
Vorzeichenbehafteter 64-Bit-Datentyp, negative Zahlen werden im 2er-Komplement dargestellt (Unterlauf unter 0 --> 0xFFFF FFFF FFFF FFFF usw.)
Dazu stehen in der TcUtilities.lib im Kapitel INT64 viele Funktionen zur Verfügung, wichtig insbesondere die cast-Funktionen LARGE_TO_ULARGE und umgekehrt.
Sobald mit Zeitdifferenzen gearbeitet wird, bei denen negative Zeiten auftreten können, ist dieser Typ zu verwenden.
Wird TwinCAT externe Synchronisierung eingesetzt, treten zwangsläufig negative Zeiten in den Offset-Werten auf.
64- vs. 32-Bit-Darstellung Manche EtherCAT-Slaves können die DC-Zeit nur als 32-Bit-Wert darstellen bzw. als Prozessdatum verarbeiten. Um durch Überlauf verursachten Problemen (alle 4.2 Sekunden) entgegenzuwirken wird jedoch dringend empfohlen, in der Steuerung generell nur mit 64-Bit-Zeiten zu rechnen.
|
In diesem Beispielprojekt
(Download) ist ein Funktionsblock enthalten, der zyklisch eine 32-Bit-DC-Zeit um den High-Part zu 64 Bit ergänzt.