FSoE Reset State PDU: структура Master і Slave

Стан Reset — це точка входу кожного з’єднання FSoE (Fail Safe over EtherCAT). З’єднання входить у нього після вмикання живлення, після перезапуску (reset connection) або щоразу, коли виявлено помилку зв’язку FSoE. Поки з’єднання перебуває в цьому стані, користувацькі safety-дані не обмінюються — Safety PDU перепрофілюються для перенесення команди Reset разом із однобайтовим кодом помилки, що повідомляє співрозмовнику, чому з’єднання було скинуто.

Ця стаття детально розбирає три PDU стану Reset, визначені в ETG.5100 S (D) V1.2.0, §8.2.2.2, на канонічному прикладі специфікації з 4 октетами safety-даних. Повні розташування для 2/4/6/8 октетів див. у FSoE Reset PDU: Master and Slave Structure.

Примітка — кількість байтів safety-даних є фіксованою для кожного напрямку. Кожне з’єднання FSoE має фіксовану довжину safety-даних (Master→Slave і Slave→Master), однаково налаштовану на обох вузлах. Дозволені довжини — 1, 2, 4, 6 або 8 октетів. Фактична довжина для конкретного з’єднання залежить від FSoE Slave-пристрою і має бути взята з документації Slave або файлу опису пристрою (ESI/EEPROM). Приклади нижче використовують 4 октети, як у специфікації; байтове розташування для інших довжин показано у FSoE Reset PDU: Master and Slave Structure.

Примітка — єдиним релевантним байтом даних є код помилки. У кожному PDU стану Reset SafeData[0] (октет 1) — єдиний байт safety-даних, що має значення:

  • 0x00 — навмисний reset (вмикання живлення, перезапуск / reset connection) або підтвердження Slave у відповідь на Reset від Master.
  • Ненульове — код помилки зв’язку FSoE, що викликав reset (див. Таблицю 28 нижче).

Усі інші октети SafeData не використовуються і мають бути встановлені в 0. Поле Conn_Id також не використовується (встановлене в 0) — воно перевіряється лише після встановлення з’єднання. Поля CRC все одно передаються і мають збігатися, але вони обчислюються від початкового стану reset, оскільки порядковий номер і успадкований CRC очищаються при вході в Reset (див. FSoE: How does CRC inheritance work? і How to compute the CRC checksum for FSoE PDUs?).

Коли входять у стан Reset і коли виходять із нього?

Стан Reset повторно ініціалізує з’єднання FSoE після вмикання живлення або після помилки зв’язку. При вході скидаються дві речі:

  • порядковий номер, і
  • CRC останньої телеграми, що використовувався в обчисленні CRC (тобто ланцюг успадкування CRC розривається).

Переходи асиметричні, віддзеркалюючи ролі Master/Slave:

НапрямокУмова
Master виходить із ResetНадсилає Safety Master PDU з командою Session до Slave.
Slave виходить із ResetОтримує коректний Safety Master PDU з командою Session.

Інакше кажучи, Master залишає Reset, видаючи команду Session, а Slave залишає Reset, щойно приймає цей Session PDU. Поки обидві сторони ще перебувають у Reset, вони обмінюються Safety PDU з командою Reset, як показано нижче.

Master Reset PDU (FSoE Master → Slave)

Master надсилає цей PDU після перезапуску або після виявлення помилки зв’язку FSoE. Приклад нижче — Таблиця 10 ETG.5100 S (D) V1.2.0 для 4 октетів safety-даних.

КомандаSafeData[0]SafeData[1]CRC_0SafeData[2]SafeData[3]CRC_1Conn_Id
Reset
Октет 0
код помилки
Октет 1 — 0 для перезапуску
0
Октет 2 — не використовується
CRC_0_Lo
Октет 3
CRC_0_Hi
Октет 4
0
Октет 5 — не використовується
0
Октет 6 — не використовується
CRC_1_Lo
Октет 7
CRC_1_Hi
Октет 8
0
Октет 9 — не використовується
0
Октет 10 — не використовується

Ключові моменти:

  • Command (октет 0) — Reset.
  • SafeData[0] (октет 1) переносить код помилки (біти 0–7). Значення 0x00 означає звичайний перезапуск / reset connection; будь-яке ненульове значення ідентифікує помилку зв’язку, що викликала reset (див. таблицю нижче).
  • Усі інші октети SafeData не використовуються і встановлені в 0.
  • CRC_0 і CRC_1 все одно передаються як 16-бітні little-endian значення, але оскільки порядковий номер і успадкований CRC скинуті при вході, вони обчислюються від початкового стану reset — а не зчеплені з попереднім кадром.
  • Conn_Id не використовується і встановлений у 0 у стані Reset. Connection ID перевіряється лише після встановлення з’єднання.

Slave Reset PDU — підтвердження Reset від Master (FSoE Slave → Master)

Коли Slave отримує коректну команду Reset від Master, він підтверджує її, надсилаючи Safety Slave PDU з командою Reset і усіма октетами SafeData, встановленими в 0 — включно з позицією коду помилки. Це Таблиця 11 ETG.5100 S (D) V1.2.0.

КомандаSafeData[0]SafeData[1]CRC_0SafeData[2]SafeData[3]CRC_1Conn_Id
Reset
Октет 0
0
Октет 1 — підтвердження
0
Октет 2
CRC_0_Lo
Октет 3
CRC_0_Hi
Октет 4
0
Октет 5
0
Октет 6
CRC_1_Lo
Октет 7
CRC_1_Hi
Октет 8
0
Октет 9 — не використовується
0
Октет 10 — не використовується

Єдина відмінність від Master Reset PDU полягає в тому, що SafeData[0] завжди дорівнює 0 — Slave не відлунює код помилки при підтвердженні. Нульовий код помилки в цій позиції — це саме те, що Master використовує для розпізнавання підтвердження.

Slave Reset PDU — reset, ініційований Slave (FSoE Slave → Master)

Slave може сам ініціювати Reset — або під час перезапуску (reset connection), або у разі помилки, яку він виявив локально. У цьому випадку він надсилає Safety Slave PDU, структурно ідентичний Master Reset PDU: команда Reset встановлена, і SafeData[0] переносить власний код помилки Slave (0x00 для звичайного перезапуску). Це Таблиця 12 ETG.5100 S (D) V1.2.0.

КомандаSafeData[0]SafeData[1]CRC_0SafeData[2]SafeData[3]CRC_1Conn_Id
Reset
Октет 0
код помилки
Октет 1 — 0 для перезапуску
0
Октет 2 — не використовується
CRC_0_Lo
Октет 3
CRC_0_Hi
Октет 4
0
Октет 5 — не використовується
0
Октет 6 — не використовується
CRC_1_Lo
Октет 7
CRC_1_Hi
Октет 8
0
Октет 9 — не використовується
0
Октет 10 — не використовується

Master підтверджує цей Reset, ініційований Slave, не надсилаючи інший Reset PDU, а лишаючи стан Reset: він надсилає Safety Master PDU з командою Session, що є сигналом для обох сторін вийти з Reset.

Усе разом: обмін у стані Reset

Три PDU вище утворюють невелике рукостискання, що залежить від того, хто ініціював reset:

  • Reset, ініційований Master: Master надсилає Reset (із кодом помилки) → Slave підтверджує Reset (SafeData = 0) → Master надсилає Session, щоб лишити Reset.
  • Reset, ініційований Slave: Slave надсилає Reset (із кодом помилки) → Master надсилає Session, щоб лишити Reset (це підтвердження Master).

В обох випадках з’єднання залишає стан Reset лише тоді, коли Master видає команду Session; до того кожен PDU у мережі переносить команду Reset, поле Conn_Id дорівнює 0, а єдиним значущим корисним навантаженням є один байт коду помилки в SafeData[0].

Коди помилок зв’язку FSoE (Таблиця 28)

Код помилки, що переноситься в SafeData[0] Reset PDU, береться з наведеної нижче таблиці. Значення 0x00 означає «немає помилки» — тобто локальний reset або підтвердження команди Reset. Коди 111 визначені стандартом; 0x800xFF зарезервовані для специфічних для пристрою помилок SafePara.

Код помилкиОпис
0Локальний reset або підтвердження команди RESET
1Неочікувана команда (INVALID_CMD)
2Невідома команда (UNKNOWN_CMD)
3Недійсний Connection ID (INVALID_CONNID)
4Помилка CRC (INVALID_CRC)
5Watchdog завершився (WD_EXPIRED)
6Недійсна FSoE Slave Address (INVALID_ADDRESS)
7Недійсні safety-дані (INVALID_DATA)
8Недійсна довжина параметрів зв’язку (INVALID_COMMPARALEN)
9Недійсні дані параметрів зв’язку (INVALID_COMPARA)
10Недійсна довжина параметрів застосунку (INVALID_USERPARALEN)
11Недійсні дані параметрів застосунку (INVALID_USERPARA)
0x80–0xFFНедійсний SafePara (специфічний для пристрою)

Підсумок

У стані Reset FSoE Safety PDU фактично є однобайтовим діагностичним конвертом: поле Command дорівнює Reset, SafeData[0] переносить код помилки (або 0 при підтвердженні), усі інші октети SafeData та поле Conn_Id дорівнюють 0, а CRC обчислюються заново від початкового стану reset, оскільки і порядковий номер, і успадкований CRC очищені при вході. З’єднання залишає Reset лише тоді, коли Master надсилає команду Session — Slave ніколи не надсилає Session, він лише підтверджує Reset, обнуляючи свої SafeData.

Посилання на стандарт

  • ETG.5100 S (D) V1.2.0, §8.2.2.2 Reset state, Таблиці 10–12 і Таблиця 28.

Пов’язані статті

Огляд та основи

Структури PDU за станами

CRC

Коди помилок та формат даних


Дивіться схожі статті за категоріями: FSoE EtherCAT Safety