Diagnose auf der Slave-Seite

Der Status der EtherCAT-Kommunikation wird mit Hilfe der State-Variable auf der CX8110-Seite überwacht. Verwenden Sie die Variablen DcToTcTimeOffset, DcTimeDiff und Dc State, um den Status der Distributed Clocks (DC) zu überwachen. Diese Variablen werden automatisch angelegt werden, sobald Sie Distributed Clocks (DC) aktivieren.

State (WORD):

Mit der State-Variable wird der Status der EtherCAT-Kommunikation überwacht. Die Kommunikation läuft, wenn der State 0x___8 ist.

0x___1 = Slave is in 'INIT' state
0x___2 = Slave is in 'PREOP' state
0x___4 = Slave is in 'SAFEOP' state
0x___8 = Slave is in 'OP' state

Andere Bits sind reserviert und müssen nicht überprüft werden.

NetId (ARRAY[6] OF BYTE):

Die NetId ist die ADS-Nummer für den EtherCAT-Slave.

DcToTcTimeOffset (LINT):

Gibt die Zeitdifferenz zwischen Master- und Slave-Uhr an. Die Slave-Uhr ist die Uhr des CX8110 und kann mit _TaskInfo[1] ausgelesen werden.

Code:

VAR
    PlcTaskSystemInfo    :PlcTaskSystemInfo;
END_VAR

PlcTaskSystemInfo:=_TaskInfo[1]; //Task Info wird and die PlcTaskSystemInfo Struktur übergeben

GVL.DcTimeFromCX8110:=PlcTaskSystemInfo.DcTaskTime; //Die DC Zeit wird ermittelt und einer Globalen Variable zugewiesen

DcTimeDiff (DINT)

Die DcTimeDiff-Variable gibt die Genauigkeit der Distributed Clocks (DC) an. Die Einheit wird in ns gemessen. Der CX8110 braucht je nach SPS-Programm ca. 1 bis 2 Sekunden bis er eingeregelt ist. In Ausnahmefällen braucht der CX8110 dafür auch länger.

Je kleiner die Sync-Task desto schneller und besser wird der CX8110 eingeregelt. Der Nachteil ist eine höhere CPU-Last. Die Regel ist also so schnell wie möglich, aber ohne die CPU zu überlasten. Achten Sie darauf, dass die CPU-Last unter 60 % liegt.

Sie können bestimmten, wann der CX8110 synchron ist, indem Sie den Wert der DcTimeDiff-Variable auslesen. Bei einer Taskzeit von 1 ms und einer DcTimeDiff von unter 10 ns kann von einer optimalen Regelung gesprochen werden, bei kleiner 100 ns von einer ausreichenden Regelung.

1 ms = 1.000 µs = 1.000.000 ns

Diese Ansprüche sind recht hoch. Abhängig von der Anwendung, kann auch eine geringere Genauigkeit akzeptabel sein. Sie müssen immer abhängig von Ihrer Anwendung bestimmen, ab wann die Regelgüte für Sie in Ordnung ist.

DcState (UINT):

Beim CX8110 ist der Wert immer 0x___2.

0x___1 = TwinCAT Time Controlled by EtherCAT Slave Dc time
0x___2 = TwinCAT Time Controlled by CCat time