La connexion FSoE (Fail Safe over EtherCAT) est régie par une petite machine à états déterministe. Le Master et le Slave exécutent chacun leur propre copie de la machine, et les deux copies avancent en synchronisation en échangeant la commande FSoE correcte dans chaque Safety PDU. Après la mise sous tension, ou dès qu’une erreur de communication est détectée, la connexion revient à l’état Reset et recommence.
Le diagramme ci-dessous présente tous les états et toutes les transitions en une seule vue verticale. Chaque état correspond à l’une des commandes FSoE, et les trois libellés de transition — OK, STAY et NOT_OK — décrivent comment la commande reçue se compare à l’état que la machine attend actuellement.
Comment lire le diagramme
Les trois types de transition sont évalués à partir de la commande reçue dans le Safety PDU du pair :
| Transition | Signification | Résultat |
|---|---|---|
| OK | La commande reçue correspond à l’état suivant attendu. | Avancer d’un cran vers le bas (ou rester dans Data une fois atteint). |
| STAY | La commande reçue est identique à l’état courant. | Rester dans l’état courant et attendre. |
| NOT_OK | La commande reçue est inattendue, ou une erreur de CRC/watchdog s’est produite. | Revenir immédiatement à Reset. |
Chaque état émet également sa propre commande dans le PDU sortant, de sorte que les deux pairs avancent ensemble. Par exemple, lorsque le Master se trouve dans l’état Session, il envoie la commande Session et s’attend à ce que le Slave réponde par Connection (OK) pour avancer, par Session (STAY) pour attendre, ou par toute autre commande (NOT_OK) pour revenir à Reset.
Les cinq états
1. Reset
C’est l’état d’entrée après la mise sous tension, après un redémarrage (« reset connection »), ou dès qu’une erreur de communication FSoE est détectée. Dans Reset, aucune donnée de sécurité utilisateur n’est échangée ; le PDU transporte la commande Reset et, du côté à l’origine de l’erreur, un code d’erreur d’un octet. Le numéro de séquence et le CRC hérité sont tous deux effacés à l’entrée. Consultez FSoE Reset State PDU : structure Master et Slave pour la disposition exacte des octets et la table des codes d’erreur.
2. Session
Le Master quitte Reset en premier en envoyant la commande Session. Le Slave suit dès qu’il reçoit un Session PDU valide. Dans cet état, les deux pairs échangent des identifiants de connexion et vérifient que l’adresse FSoE Slave est correcte. Une commande Connection provenant du pair est le signal OK qui fait passer la machine à l’état suivant.
3. Connection
Dans l’état Connection, les pairs établissent les paramètres de communication de base : la longueur des données de sécurité, le timing du watchdog et le Conn_Id. La transition OK est déclenchée par la réception de la commande Parameter. Tant que les deux côtés sont encore dans Connection, ils continuent d’envoyer Connection et la machine reste dans le même état (STAY).
4. Parameter
Ici, la commande Parameter transporte les données SafeParameter qui configurent l’application de sécurité (par exemple des jeux de paramètres spécifiques à l’application). La réception de la commande Data est le signal OK pour entrer dans l’état opérationnel final. Si l’échange de paramètres échoue ou prend trop de temps, la connexion repasse en NOT_OK vers Reset.
5. Data
C’est l’état de fonctionnement normal. Les données de sécurité utilisateur sont échangées dans chaque Safety PDU, et les deux pairs envoient la commande Data. Une auto-boucle OK signifie que la connexion reste dans Data tant que la communication est saine. Une auto-boucle STAY n’est normalement pas observée dans Data (il n’y a pas d’état supérieur à attendre), mais la machine à états traite tout de même une commande Data répétée comme « rester dans Data ». Toute commande inattendue ou erreur de CRC/watchdog ramène la machine à Reset.
Résumé
La machine à états FSoE est une échelle linéaire de cinq états : Reset → Session → Connection → Parameter → Data. Une transition OK verte fait descendre la machine d’un cran, une transition STAY grise la maintient à sa position, et une transition NOT_OK rouge la ramène entièrement à Reset. Comme le Master et le Slave implémentent la même machine, toute la connexion redémarre de façon sûre dès que l’un des deux détecte une anomalie.
Références
- ETG.5100 S (D) V1.2.0, la spécification FSoE qui définit ces états et transitions.
Articles liés
Vue d’ensemble & notions de base
- What does the FSoE abbreviation actually mean? — ce que signifie l’acronyme FSoE
- FSoE frame structure explained by examples — disposition générale du Safety PDU
- FSoE: Safety PDU command table — la liste complète des commandes FSoE
Structures PDU par état
- FSoE Reset State PDU: Master and Slave Structure — disposition du PDU et codes d’erreur pour l’état Reset
- FSoE Session PDU: Master and Slave Structure — disposition du PDU pour l’état Session
- FSoE Connection PDU: Master and Slave Structure — disposition du PDU pour l’état Connection
- FSoE Parameter PDU: Master and Slave Structure — disposition du PDU pour l’état Parameter
- FSoE Data PDU: Master and Slave Structure — disposition du PDU pour l’état Data
- FSoE Reset PDU: Master and Slave Structure — dispositions d’octets pour toutes les longueurs de données de sécurité
CRC
- FSoE CRC: Which polynomial does it use? — le polynôme 17 bits derrière le CRC FSoE
- How are the FSoE CRC tables constructed? — comment les tables de lookup CRC sont générées
- FSoE: How does CRC inheritance work? — comment la chaîne CRC relie les PDU consécutifs
- How to compute the CRC checksum for FSoE PDUs? — algorithme de calcul CRC octet par octet
Codes d’erreur & format des données
- FSoE: List of all communication error codes — tous les codes d’erreur de communication FSoE
- FSoE: Is data transmitted little-endian or big-endian? — ordre des octets des champs multi-octets