FSoE Reset State PDU : structure Master et Slave

L’état Reset est le point d’entrée de chaque connexion FSoE (Fail Safe over EtherCAT). La connexion y entre après la mise sous tension, après un redémarrage (reset connection), ou dès qu’une erreur de communication FSoE a été détectée. Tant que la connexion est dans cet état, aucune donnée de sécurité utilisateur n’est échangée — les Safety PDU sont réaffectés pour transporter la commande Reset avec un code d’erreur d’un seul octet qui indique au pair pourquoi la connexion a été réinitialisée.

Cet article passe en revue les trois PDU de l’état Reset définis dans ETG.5100 S (D) V1.2.0, §8.2.2.2, en utilisant l’exemple canonique de la spécification avec 4 octets de données de sécurité. Pour les dispositions complètes en 2/4/6/8 octets, consultez FSoE Reset PDU : structure Master et Slave.

Note — le nombre d’octets de données de sécurité est fixe par direction. Chaque connexion FSoE a une longueur de données de sécurité fixe (Master→Slave et Slave→Master), configurée de manière identique sur les deux nœuds. Les longueurs autorisées sont 1, 2, 4, 6 ou 8 octets. La longueur réelle pour une connexion donnée dépend du dispositif FSoE Slave et doit être extraite de la documentation du Slave ou du fichier de description du dispositif (ESI/EEPROM). Les exemples ci-dessous utilisent 4 octets comme dans la spécification ; la disposition des octets pour les autres longueurs est présentée dans FSoE Reset PDU : structure Master et Slave.

Note — le seul octet de données pertinent est le code d’erreur. Dans chaque PDU de l’état Reset, SafeData[0] (octet 1) est le seul octet de données de sécurité qui ait une signification :

  • 0x00 — reset intentionnel (mise sous tension, redémarrage / reset connection), ou l’accusé de réception par le Slave d’un Reset du Master.
  • Non nul — le code d’erreur de communication FSoE qui a déclenché le reset (voir Table 28 ci-dessous).

Tous les autres octets SafeData sont inutilisés et doivent être mis à 0. Le champ Conn_Id est également inutilisé (mis à 0) — il n’est vérifié qu’une fois la connexion établie. Les champs CRC sont toujours transmis et doivent toujours être vérifiés, mais ils sont calculés à partir de l’état initial de reset car le numéro de séquence et le CRC hérité sont effacés à l’entrée dans Reset (voir FSoE : comment fonctionne l’héritage CRC ? et Comment calculer la somme de contrôle CRC pour les PDU FSoE ?).

Quand entre-t-on et sort-on de l’état Reset ?

L’état Reset réinitialise la connexion FSoE après la mise sous tension ou après une erreur de communication. Deux choses sont réinitialisées à l’entrée :

  • le numéro de séquence, et
  • le CRC du dernier télégramme qui était utilisé dans le calcul du CRC (c’est-à-dire que la chaîne d’héritage CRC est rompue).

Les transitions d’état sont asymétriques, reflétant les rôles Master/Slave :

DirectionCondition
Le Master quitte ResetIl envoie un Safety Master PDU avec la commande Session au Slave.
Le Slave quitte ResetIl reçoit un Safety Master PDU valide avec la commande Session.

En d’autres termes, le Master quitte Reset en émettant la commande Session, et le Slave quitte Reset dès qu’il accepte ce PDU Session. Tant que les deux côtés sont encore dans Reset, ils échangent des Safety PDU transportant la commande Reset, comme illustré ci-dessous.

Master Reset PDU (FSoE Master → Slave)

Le Master envoie ce PDU après un redémarrage ou après avoir détecté une erreur de communication FSoE. L’exemple ci-dessous correspond à la Table 10 d’ETG.5100 S (D) V1.2.0 pour 4 octets de données de sécurité.

CommandeSafeData[0]SafeData[1]CRC_0SafeData[2]SafeData[3]CRC_1Conn_Id
Reset
Octet 0
code d'erreur
Octet 1 — 0 pour redémarrage
0
Octet 2 — inutilisé
CRC_0_Lo
Octet 3
CRC_0_Hi
Octet 4
0
Octet 5 — inutilisé
0
Octet 6 — inutilisé
CRC_1_Lo
Octet 7
CRC_1_Hi
Octet 8
0
Octet 9 — inutilisé
0
Octet 10 — inutilisé

Points clés :

  • Command (octet 0) est Reset.
  • SafeData[0] (octet 1) transporte le code d’erreur (bits 0–7). Une valeur de 0x00 signifie un simple redémarrage / reset connection ; toute valeur non nulle identifie l’erreur de communication qui a déclenché le reset (voir la table ci-dessous).
  • Tous les autres octets SafeData sont inutilisés et mis à 0.
  • CRC_0 et CRC_1 sont toujours transmis comme valeurs 16 bits little-endian, mais comme le numéro de séquence et le CRC hérité ont été réinitialisés à l’entrée, ils sont calculés à partir de l’état initial de reset — non chaînés depuis la trame précédente.
  • Conn_Id est inutilisé et mis à 0 dans l’état Reset. Le Connection ID n’est vérifié qu’une fois la connexion établie.

Slave Reset PDU — accusé de réception d’un Reset du Master (FSoE Slave → Master)

Lorsque le Slave reçoit une commande Reset valide du Master, il en accuse réception en envoyant un Safety Slave PDU avec la commande Reset et tous les octets SafeData mis à 0 — y compris la position du code d’erreur. Il s’agit de la Table 11 d’ETG.5100 S (D) V1.2.0.

CommandeSafeData[0]SafeData[1]CRC_0SafeData[2]SafeData[3]CRC_1Conn_Id
Reset
Octet 0
0
Octet 1 — accusé de réception
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 — inutilisé
0
Octet 10 — inutilisé

La seule différence avec le Master Reset PDU est que SafeData[0] est toujours 0 — le Slave ne renvoie pas de code d’erreur lors de l’accusé de réception. Un code d’erreur à zéro dans cette position est exactement ce que le Master utilise pour reconnaître l’accusé de réception.

Slave Reset PDU — reset initié par le Slave (FSoE Slave → Master)

Le Slave peut lui-même initier un Reset, soit lors d’un redémarrage (reset connection), soit en cas d’erreur qu’il a détectée localement. Dans ce cas, il envoie un Safety Slave PDU structurellement identique au Master Reset PDU : la commande Reset est définie, et SafeData[0] transporte le propre code d’erreur du Slave (0x00 pour un simple redémarrage). Il s’agit de la Table 12 d’ETG.5100 S (D) V1.2.0.

CommandeSafeData[0]SafeData[1]CRC_0SafeData[2]SafeData[3]CRC_1Conn_Id
Reset
Octet 0
code d'erreur
Octet 1 — 0 pour redémarrage
0
Octet 2 — inutilisé
CRC_0_Lo
Octet 3
CRC_0_Hi
Octet 4
0
Octet 5 — inutilisé
0
Octet 6 — inutilisé
CRC_1_Lo
Octet 7
CRC_1_Hi
Octet 8
0
Octet 9 — inutilisé
0
Octet 10 — inutilisé

Le Master accuse réception de ce Reset initié par le Slave non pas en envoyant un autre PDU Reset, mais en quittant l’état Reset : il envoie un Safety Master PDU avec la commande Session, ce qui est le signal pour les deux côtés de sortir de Reset.

Synthèse : l’échange de l’état Reset

Les trois PDU ci-dessus forment un petit handshake qui dépend de qui a initié le reset :

  • Reset initié par le Master : le Master envoie Reset (avec code d’erreur) → le Slave accuse réception avec Reset (SafeData = 0) → le Master envoie Session pour quitter Reset.
  • Reset initié par le Slave : le Slave envoie Reset (avec code d’erreur) → le Master envoie Session pour quitter Reset (c’est l’accusé de réception du Master).

Dans les deux cas, la connexion ne quitte l’état Reset que lorsque le Master émet la commande Session ; jusqu’alors, chaque PDU sur le support transporte la commande Reset, le champ Conn_Id est 0, et la seule charge utile significative est l’octet unique du code d’erreur dans SafeData[0].

Codes d’erreur de communication FSoE (Table 28)

Le code d’erreur transporté dans SafeData[0] d’un PDU Reset provient de la table suivante. Une valeur de 0x00 signifie « pas d’erreur » — c’est-à-dire un reset local ou l’accusé de réception d’une commande Reset. Les codes 1–11 sont définis par la norme ; 0x80–0xFF sont réservés aux erreurs SafePara spécifiques au dispositif.

Code d’erreurDescription
0Reset local ou accusé de réception d’une commande RESET
1Commande inattendue (INVALID_CMD)
2Commande inconnue (UNKNOWN_CMD)
3Connection ID invalide (INVALID_CONNID)
4Erreur CRC (INVALID_CRC)
5Watchdog expiré (WD_EXPIRED)
6FSoE Slave Address invalide (INVALID_ADDRESS)
7Données de sécurité invalides (INVALID_DATA)
8Longueur de paramètre de communication invalide (INVALID_COMMPARALEN)
9Données de paramètre de communication invalides (INVALID_COMPARA)
10Longueur de paramètre d’application invalide (INVALID_USERPARALEN)
11Données de paramètre d’application invalides (INVALID_USERPARA)
0x80–0xFFSafePara invalide (spécifique au dispositif)

Résumé

Dans l’état Reset, le Safety PDU FSoE est effectivement une enveloppe diagnostique d’un octet : le champ Command est Reset, SafeData[0] transporte le code d’erreur (ou 0 lors de l’accusé de réception), tous les autres octets SafeData et le champ Conn_Id sont 0, et les CRC sont recalculés à partir de l’état initial de reset car le numéro de séquence et le CRC hérité ont tous deux été effacés à l’entrée. La connexion ne quitte Reset que lorsque le Master envoie la commande Session — le Slave n’envoie jamais Session, il accuse seulement réception du Reset en mettant ses SafeData à zéro.

Références

  • ETG.5100 S (D) V1.2.0, §8.2.2.2 Reset state, Tables 10–12 et Table 28.

Articles liés

Vue d’ensemble & notions de base

Structures PDU par état

CRC

Codes d’erreur & format des données


Consultez les articles similaires par catégorie : FSoE EtherCAT Sûreté