Los datos en EtherCAT se transmiten en frames Ethernet estándar, pero con un formato especializado para el protocolo EtherCAT.
Cada frame puede contener uno o más datagramas EtherCAT en el campo de datos (payload).
I. Cabecera Ethernet 14 bytes:
Dirección MAC de destino 6 bytes, es FF:FF:FF:FF:FF:FF (broadcast) porque debe atravesar todos los nodos.
Dirección MAC de origen 6 bytes, es la MAC del maestro.
EtherType 2 bytes (0x88A4 para EtherCAT):
II. Cabecera EtherCAT 2 bytes:
Longitud 11 bits.
Reservado 1 bit.
Tipo 4 bits. PDO (Process Data Object) ó SDO (Service Data Object)
III. Datos EtherCAT (EtherCAT Datagram), 46–1500 bytes (en Ethernet estándar):
Comando (Cmd) 1 byte: Indica la operación a realizar (lectura, escritura, etc.).
Index 1 byte: Identifica el tipo de dato o registro que se está accediendo.
Address 4 bytes: Dirección del dispositivo esclavo o registro interno.
Cada esclavo en la red tiene siempre una dirección física única, que es asignada automáticamente por el maestro en función del orden de conexión. La asignación ocurre durante la inicialización. Esta dirección es estática mientras no se modifique la topología. Y pueden también tener o no una dirección lógica, si se la asigna manualmente. Se usa para PDOs permitiendo acceder a los datos sin importar la topología de red, o dado el caso para acceder a varios esclavos a la vez (si se les configura la misma). Se configura desde el ESI File o mediante herramientas del maestro.
En resumen, aquí pueden ir tres valores diferentes:
a. Dirección física fija asignada en la inicialización.
b. Dirección lógica. Permitiendo acceder sin importar el orden en la topología de red. O a varios esclavos a la vez.
c. Dirección “auto-incremento”. Se usa para recorrer la red en orden.
Longitud de los datos 11 bits: Tamaño de los datos a transmitir.
Reservado 3 bits
C bit (bit circulante) 1 bit. El frame EtherCAT siempre viaja por la red hasta regresar al maestro. Cada esclavo analiza los datagramas que le corresponden y decide si los modifica o no. El bit C indica si el esclavo puede modificar el datagrama después de procesarlo. Si C=1, el esclavo puede modificar el datagrama antes de enviarlo al siguiente nodo. Si C=0, el esclavo lo procesa pero no lo cambia.
Indicador de múltiples datagramas (M) 1 bit. Indica si el frame contiene más de un datagrama EtherCAT dentro del payload. 0 si contiene solo un datagrama, 1 si contiene varios.
Registro de solicitud de interrupción (IRQ) 2 bytes. Permite que el esclavo notifique al maestro que necesita atención mediante una interrupción. Cada esclavo puede escribir un valor específico en este campo para indicar un evento o condición que requiere atención. Puede ser utilizado para notificar fallas, cambios de estado, sincronización, etc.
Datos (tamaño variable): La información que se envía o recibe.
Working Counter (WKC) 2 bytes: Un contador que indica cuántos esclavos han procesado el datagrama. Es especifico para cada esclavo en su datagrama, se incrementa cada vez que un esclavo procesa correctamente un datagrama (no es un contador global para todos los esclavos).
IV. FCS (Frame check sequence) 4 bytes:
Utiliza un CRC (Cyclic Redundancy Check), un cálculo matemático para verificar la integridad del frame.