O FSoE (Fail Safe over EtherCAT) usa um Safety PDU dedicado para comandos de controle e diagnóstico. O comando Reset é enviado pelo master após um restart ou erro; o slave o confirma com um Reset PDU correspondente. Os diagramas abaixo mostram os layouts de frame do master e do slave para 2, 4, 6 e 8 bytes de safety data. Em cada gráfico, a linha superior mostra a estrutura em nível de word (campos de CRC e Connection ID de 16 bits), e a segunda linha divide cada word em seus octetos baixo e alto.
Nota — o número de bytes de safety data é fixo por direção. Cada conexão FSoE tem um safety data length fixo (master→slave e slave→master), configurado de forma idêntica em ambos os nós. Os tamanhos permitidos são 1, 2, 4, 6 ou 8 octetos. O tamanho real para uma dada conexão depende do dispositivo FSoE slave e deve ser obtido na documentação do slave ou no arquivo de descrição do dispositivo (ESI/EEPROM). Os diagramas abaixo mostram todos os tamanhos padrão para que você possa consultar o layout que se aplica ao seu dispositivo específico.
Master Reset PDU (FSoE Master → Slave)
2 bytes de safety data
| Command | SafeData[0] | SafeData[1] | CRC_0 | Conn_Id | ||
|---|---|---|---|---|---|---|
| Reset Octet 0 | error code Octet 1 | 0 Octet 2 | CRC_0_Lo Octet 3 | CRC_0_Hi Octet 4 | Conn_Id_Lo Octet 5 | Conn_Id_Hi Octet 6 |
4 bytes de safety data
| Command | SafeData[0] | SafeData[1] | CRC_0 | SafeData[2] | SafeData[3] | CRC_1 | Conn_Id | |||
|---|---|---|---|---|---|---|---|---|---|---|
| Reset Octet 0 | error code Octet 1 | 0 Octet 2 | CRC_0_Lo Octet 3 | CRC_0_Hi Octet 4 | 0 Octet 5 | 0 Octet 6 | CRC_1_Lo Octet 7 | CRC_1_Hi Octet 8 | Conn_Id_Lo Octet 9 | Conn_Id_Hi Octet 10 |
6 bytes de safety data
| Command | SafeData[0] | SafeData[1] | CRC_0 | SafeData[2] | SafeData[3] | CRC_1 | ||
|---|---|---|---|---|---|---|---|---|
| SafeData[4] | SafeData[5] | CRC_2 | Conn_Id | |||||
| Reset Octet 0 | error code Octet 1 | 0 Octet 2 | CRC_0_Lo Octet 3 | CRC_0_Hi Octet 4 | 0 Octet 5 | 0 Octet 6 | CRC_1_Lo Octet 7 | CRC_1_Hi Octet 8 |
| 0 Octet 9 | 0 Octet 10 | CRC_2_Lo Octet 11 | CRC_2_Hi Octet 12 | Conn_Id_Lo Octet 13 | Conn_Id_Hi Octet 14 | |||
8 bytes de safety data
| Command | SafeData[0] | SafeData[1] | CRC_0 | SafeData[2] | SafeData[3] | CRC_1 | |||
|---|---|---|---|---|---|---|---|---|---|
| SafeData[4] | SafeData[5] | CRC_2 | SafeData[6] | SafeData[7] | CRC_3 | Conn_Id | |||
| Reset Octet 0 | error code Octet 1 | 0 Octet 2 | CRC_0_Lo Octet 3 | CRC_0_Hi Octet 4 | 0 Octet 5 | 0 Octet 6 | CRC_1_Lo Octet 7 | CRC_1_Hi Octet 8 | |
| 0 Octet 9 | 0 Octet 10 | CRC_2_Lo Octet 11 | CRC_2_Hi Octet 12 | 0 Octet 13 | 0 Octet 14 | CRC_3_Lo Octet 15 | CRC_3_Hi Octet 16 | Conn_Id_Lo Octet 17 | Conn_Id_Hi Octet 18 |
Slave Reset PDU (FSoE Slave → Master, confirmação)
2 bytes de safety data
| Command | SafeData[0] | SafeData[1] | CRC_0 | Conn_Id | ||
|---|---|---|---|---|---|---|
| Reset Octet 0 | 0 Octet 1 | 0 Octet 2 | CRC_0_Lo Octet 3 | CRC_0_Hi Octet 4 | Conn_Id_Lo Octet 5 | Conn_Id_Hi Octet 6 |
4 bytes de safety data
| Command | SafeData[0] | SafeData[1] | CRC_0 | SafeData[2] | SafeData[3] | CRC_1 | Conn_Id | |||
|---|---|---|---|---|---|---|---|---|---|---|
| Reset Octet 0 | 0 Octet 1 | 0 Octet 2 | CRC_0_Lo Octet 3 | CRC_0_Hi Octet 4 | 0 Octet 5 | 0 Octet 6 | CRC_1_Lo Octet 7 | CRC_1_Hi Octet 8 | Conn_Id_Lo Octet 9 | Conn_Id_Hi Octet 10 |
6 bytes de safety data
| Command | SafeData[0] | SafeData[1] | CRC_0 | SafeData[2] | SafeData[3] | CRC_1 | ||
|---|---|---|---|---|---|---|---|---|
| SafeData[4] | SafeData[5] | CRC_2 | Conn_Id | |||||
| Reset Octet 0 | 0 Octet 1 | 0 Octet 2 | CRC_0_Lo Octet 3 | CRC_0_Hi Octet 4 | 0 Octet 5 | 0 Octet 6 | CRC_1_Lo Octet 7 | CRC_1_Hi Octet 8 |
| 0 Octet 9 | 0 Octet 10 | CRC_2_Lo Octet 11 | CRC_2_Hi Octet 12 | Conn_Id_Lo Octet 13 | Conn_Id_Hi Octet 14 | |||
8 bytes de safety data
| Command | SafeData[0] | SafeData[1] | CRC_0 | SafeData[2] | SafeData[3] | CRC_1 | |||
|---|---|---|---|---|---|---|---|---|---|
| SafeData[4] | SafeData[5] | CRC_2 | SafeData[6] | SafeData[7] | CRC_3 | Conn_Id | |||
| Reset Octet 0 | 0 Octet 1 | 0 Octet 2 | CRC_0_Lo Octet 3 | CRC_0_Hi Octet 4 | 0 Octet 5 | 0 Octet 6 | CRC_1_Lo Octet 7 | CRC_1_Hi Octet 8 | |
| 0 Octet 9 | 0 Octet 10 | CRC_2_Lo Octet 11 | CRC_2_Hi Octet 12 | 0 Octet 13 | 0 Octet 14 | CRC_3_Lo Octet 15 | CRC_3_Hi Octet 16 | Conn_Id_Lo Octet 17 | Conn_Id_Hi Octet 18 |
Códigos de erro de comunicação FSoE
No master Reset PDU, SafeData[0] (bits 0–7) carrega o código de erro. Um valor de 0x00 indica um reset local ou confirmação.
| Código de erro | Descrição |
|---|---|
| 0 | Reset local ou confirmação de um comando RESET |
| 1 | Comando inesperado (INVALID_CMD) |
| 2 | Comando desconhecido (UNKNOWN_CMD) |
| 3 | Connection ID inválido (INVALID_CONNID) |
| 4 | Erro de CRC (INVALID_CRC) |
| 5 | Watchdog expirou (WD_EXPIRED) |
| 6 | FSoE Slave Address inválido (INVALID_ADDRESS) |
| 7 | Safety data inválido (INVALID_DATA) |
| 8 | Communication parameter length inválido (INVALID_COMPARALEN) |
| 9 | Communication parameter data inválido (INVALID_COMPARA) |
| 10 | Application parameter length inválido (INVALID_USERPARALEN) |
| 11 | Application parameter data inválido (INVALID_USERPARA) |
| 0x80–0xFF | SafePara inválido (específico do dispositivo) |
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
- All the states of the FSoE state machine — os cinco estados FSoE e suas transições
- 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
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