A conexão FSoE (Fail Safe over EtherCAT) é governada por uma máquina de estados pequena e determinística. Tanto o master quanto o slave executam sua própria cópia da máquina, e as duas cópias avançam em lock-step trocando o comando FSoE correto em cada Safety PDU. Após o power-on, ou sempre que um erro de comunicação é detectado, a conexão retorna ao estado Reset e recomeça.
O diagrama abaixo mostra todos os estados e todas as transições em uma única visão vertical. Cada estado corresponde a um dos comandos FSoE, e os três rótulos de transição — OK, STAY e NOT_OK — descrevem como o comando recebido se compara ao estado que a máquina espera no momento.
Como ler o diagrama
Os três tipos de transição são avaliados a partir do comando recebido no Safety PDU do peer:
| Transição | Significado | Resultado |
|---|---|---|
| OK | O comando recebido é o próximo estado esperado. | Avançar um degrau para baixo na escada (ou permanecer em Data, uma vez alcançado). |
| STAY | O comando recebido é o mesmo do estado atual. | Permanecer no estado atual e aguardar. |
| NOT_OK | O comando recebido é inesperado ou ocorreu um erro de CRC/watchdog. | Retornar imediatamente a Reset. |
Cada estado também envia seu próprio comando no PDU de saída, de modo que os dois peers avançam juntos. Por exemplo, enquanto o master está no estado Session, ele envia o comando Session e espera que o slave responda com Connection (OK) para avançar, Session (STAY) para aguardar, ou qualquer outra coisa (NOT_OK) para retornar a Reset.
Os cinco estados
1. Reset
Este é o estado de entrada após o power-on, após um restart (“reset connection”) ou sempre que um erro de comunicação FSoE é detectado. Em Reset, nenhum dado de segurança do usuário é trocado; o PDU carrega o comando Reset e, no lado que causou o erro, um código de erro de um byte. O número de sequência e o CRC herdado são ambos limpos na entrada. Consulte FSoE Reset State PDU: Master and Slave Structure para o layout exato de bytes e a tabela de códigos de erro.
2. Session
O master sai de Reset primeiro enviando o comando Session. O slave o segue assim que recebe um Session PDU válido. Nesse estado, os dois peers trocam connection IDs e verificam se o FSoE slave address está correto. Um comando Connection do peer é o sinal de OK que move a máquina para o próximo estado.
3. Connection
No estado Connection, os peers estabelecem os parâmetros básicos de comunicação: o safety data length, o watchdog timing e o Conn_Id. A transição OK é acionada ao receber o comando Parameter. Enquanto ambos os lados ainda estão em Connection, eles continuam enviando Connection e a máquina permanece (STAY).
4. Parameter
Aqui o comando Parameter carrega os SafeParameter data que configuram a aplicação de segurança (por exemplo, conjuntos de parâmetros específicos da aplicação). Receber o comando Data é o sinal de OK para entrar no estado operacional final. Se a troca de parâmetros falhar ou demorar demais, a conexão retorna a Reset via NOT_OK.
5. Data
Este é o estado operacional normal. Dados de segurança do usuário são trocados em cada Safety PDU, e ambos os peers enviam o comando Data. Um auto-loop OK significa que a conexão permanece em Data enquanto a comunicação estiver saudável. Um auto-loop STAY normalmente não é visto em Data (não há estado superior para aguardar), mas a máquina de estados ainda trata um comando Data repetido como “permanecer em Data”. Qualquer comando inesperado ou erro de CRC/watchdog retorna a máquina a Reset.
Resumo
A máquina de estados FSoE é uma escada linear de cinco estados: Reset → Session → Connection → Parameter → Data. Uma transição verde OK move a máquina um degrau para baixo, uma transição cinza STAY a mantém onde está, e uma transição vermelha NOT_OK a devolve totalmente a Reset. Como tanto o master quanto o slave implementam a mesma máquina, toda a conexão reinicia com segurança sempre que qualquer lado detecta algo errado.
Referências
- ETG.5100 S (D) V1.2.0, a especificação FSoE que define esses estados e transições.
Artigos relacionados
Visão geral e noções básicas
- What does the FSoE abbreviation actually mean? — o que significa a sigla FSoE
- FSoE frame structure explained by examples — layout geral do Safety PDU
- FSoE: Safety PDU command table — a lista completa de comandos FSoE
Estruturas PDU por estado
- FSoE Reset State PDU: Master and Slave Structure — layout do PDU e códigos de erro para o estado Reset
- FSoE Session PDU: Master and Slave Structure — layout do PDU para o estado Session
- FSoE Connection PDU: Master and Slave Structure — layout do PDU para o estado Connection
- FSoE Parameter PDU: Master and Slave Structure — layout do PDU para o estado Parameter
- FSoE Data PDU: Master and Slave Structure — layout do PDU para o estado Data
- FSoE Reset PDU: Master and Slave Structure — layouts de bytes para todos os tamanhos de safety data
CRC
- FSoE CRC: Which polynomial does it use? — o polinômio de 17 bits por trás do CRC FSoE
- How are the FSoE CRC tables constructed? — como as lookup tables do CRC são geradas
- FSoE: How does CRC inheritance work? — como a cadeia de CRC vincula PDUs consecutivos
- How to compute the CRC checksum for FSoE PDUs? — algoritmo de cálculo de CRC byte a byte
Códigos de erro e formato de dados
- FSoE: List of all communication error codes — todos os códigos de erro de comunicação FSoE
- FSoE: Is data transmitted little-endian or big-endian? — ordem de bytes de campos multi-byte