La conexión FSoE (Fail Safe over EtherCAT) se rige por una máquina de estados pequeña y determinista. Tanto el Master como el Slave ejecutan su propia copia de la máquina, y ambas avanzan en bloque intercambiando el comando FSoE correcto en cada Safety PDU. Tras el encendido, o cuando se detecta un error de comunicación, la conexión retrocede al estado Reset y recomienza.
El siguiente diagrama muestra todos los estados y todas las transiciones en una vista vertical. Cada estado corresponde a uno de los comandos FSoE, y las tres etiquetas de transición — OK, STAY y NOT_OK — describen cómo se compara el comando recibido con el estado que la máquina espera en ese momento.
Cómo leer el diagrama
Los tres tipos de transición se evalúan a partir del comando recibido en el Safety PDU del peer:
| Transición | Significado | Resultado |
|---|---|---|
| OK | El comando recibido es el siguiente estado esperado. | Avanzar un escalón hacia abajo (o permanecer en Data una vez alcanzado). |
| STAY | El comando recibido coincide con el estado actual. | Permanecer en el estado actual y esperar. |
| NOT_OK | El comando recibido es inesperado o se produjo un error de CRC/watchdog. | Volver inmediatamente a Reset. |
Cada estado también envía su propio comando en el PDU saliente, de modo que ambos peers avanzan a la par. Por ejemplo, mientras el Master está en el estado Session envía el comando Session, y espera que el Slave responda con Connection (OK) para avanzar, con Session (STAY) para esperar, o con cualquier otra cosa (NOT_OK) para retroceder a Reset.
Los cinco estados
1. Reset
Este es el estado de entrada tras el encendido, tras un reinicio (“reset connection”) o cuando se detecta un error de comunicación FSoE. En Reset no se intercambian datos de seguridad del usuario; el PDU transporta el comando Reset y, en el lado que causó el error, un código de error de un byte. El número de secuencia y el CRC heredado se borran ambos al entrar. Consulta FSoE Reset State PDU: Master and Slave Structure para el diseño exacto de bytes y la tabla de códigos de error.
2. Session
El Master sale primero de Reset enviando el comando Session. El Slave lo sigue en cuanto recibe un Session PDU válido. En este estado ambos peers intercambian los connection IDs y verifican que la dirección FSoE del Slave sea correcta. Un comando Connection del peer es la señal OK que mueve la máquina al siguiente estado.
3. Connection
En el estado Connection los peers establecen los parámetros básicos de comunicación: la longitud de los datos de seguridad, la temporización del watchdog y el Conn_Id. La transición OK se desencadena al recibir el comando Parameter. Mientras ambos lados siguen en Connection siguen enviando Connection y la máquina permanece (STAY).
4. Parameter
Aquí el comando Parameter transporta los SafeParameter que configuran la aplicación de seguridad (p. ej. conjuntos de parámetros específicos de la aplicación). Recibir el comando Data es la señal OK para entrar en el estado operativo final. Si el intercambio de parámetros falla o tarda demasiado, la conexión retrocede a Reset por NOT_OK.
5. Data
Este es el estado operativo normal. Los datos de seguridad del usuario se intercambian en cada Safety PDU, y ambos peers envían el comando Data. Un auto-bucle OK significa que la conexión permanece en Data mientras la comunicación esté sana. Normalmente no se observa un auto-bucle STAY en Data (no hay un estado superior por el que esperar), pero la máquina de estados sigue tratando un comando Data repetido como “permanecer en Data”. Cualquier comando inesperado o error de CRC/watchdog devuelve la máquina a Reset.
Resumen
La máquina de estados FSoE es una escalera lineal de cinco estados: Reset → Session → Connection → Parameter → Data. Una transición OK verde avanza la máquina un escalón hacia abajo, una transición STAY gris la mantiene donde está, y una transición NOT_OK roja la devuelve por completo a Reset. Como tanto el Master como el Slave implementan la misma máquina, toda la conexión se reinicia de forma segura en cuanto cualquiera de los dos lados detecta algo incorrecto.
Referencias
- ETG.5100 S (D) V1.2.0, la especificación FSoE que define estos estados y transiciones.
Artículos relacionados
Visión general y conceptos básicos
- What does the FSoE abbreviation actually mean? — qué significa el acrónimo FSoE
- FSoE frame structure explained by examples — estructura general del Safety PDU
- FSoE: Safety PDU command table — la lista completa de comandos FSoE
Estructuras PDU por estado
- FSoE Reset State PDU: Master and Slave Structure — estructura del PDU y códigos de error del estado Reset
- FSoE Session PDU: Master and Slave Structure — estructura del PDU del estado Session
- FSoE Connection PDU: Master and Slave Structure — estructura del PDU del estado Connection
- FSoE Parameter PDU: Master and Slave Structure — estructura del PDU del estado Parameter
- FSoE Data PDU: Master and Slave Structure — estructura del PDU del estado Data
- FSoE Reset PDU: Master and Slave Structure — diseños de bytes para todas las longitudes de datos de seguridad
CRC
- FSoE CRC: Which polynomial does it use? — el polinomio de 17 bits detrás del CRC de FSoE
- How are the FSoE CRC tables constructed? — cómo se generan las tablas de lookup del CRC
- FSoE: How does CRC inheritance work? — cómo la cadena de CRC enlaza PDUs consecutivos
- How to compute the CRC checksum for FSoE PDUs? — algoritmo de cálculo del CRC byte a byte
Códigos de error y formato de datos
- FSoE: List of all communication error codes — todos los códigos de error de comunicación FSoE
- FSoE: Is data transmitted little-endian or big-endian? — orden de bytes de los campos multibyte