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

Состояние Reset — точка входа каждого соединения FSoE (Fail Safe over EtherCAT). Соединение входит в него после включения питания, после перезапуска (reset connection) или при обнаружении ошибки связи FSoE. Пока соединение находится в этом состоянии, пользовательские безопасные данные не передаются — Safety PDU используются для передачи команды Reset вместе с однобайтовым кодом ошибки, который сообщает второй стороне причину сброса соединения.

В этой статье разобраны три PDU состояния Reset, определённые в ETG.5100 S (D) V1.2.0, §8.2.2.2, на каноническом примере спецификации — 4 октета безопасных данных. Полные структуры для 2/4/6/8 октетов см. в FSoE Reset PDU: Master and Slave Structure.

Примечание — количество байтов безопасных данных фиксировано для каждого направления. Каждое соединение FSoE имеет фиксированную длину безопасных данных (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) — единственный байт безопасных данных, несущий смысл:

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

Все остальные октеты SafeData не используются и должны быть установлены в 0. Поле Conn_Id также не используется (установлено в 0) — оно проверяется только после установки соединения. Поля CRC по-прежнему передаются и должны проходить проверку, но они вычисляются от сброшенного начального состояния, поскольку порядковый номер и унаследованный 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 выходит из ResetMaster отправляет Safety Master PDU с командой Session на Slave.
Slave выходит из ResetSlave получает корректный 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 октетов безопасных данных.

CommandSafeData[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; любое ненулевое значение идентифицирует ошибку связи, вызвавшую сброс (см. таблицу ниже).
  • Все остальные октеты SafeData не используются и установлены в 0.
  • CRC_0 и CRC_1 по-прежнему передаются как 16-битные little-endian значения, но поскольку порядковый номер и унаследованный CRC сброшены при входе, они вычисляются от сброшенного начального состояния — не связаны с предыдущим кадром.
  • 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.

CommandSafeData[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 — сброс, инициированный 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.

CommandSafeData[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 подтверждает этот инициированный Slave Reset не отправкой ещё одного Reset PDU, а выходом из состояния Reset: он отправляет Safety Master PDU с командой Session, что служит сигналом для обеих сторон выйти из Reset.

Сведение воедино: обмен в состоянии Reset

Три приведённых выше PDU образуют небольшое рукопожатие, зависящее от того, кто инициировал сброс:

  • Сброс, инициированный Master: Master отправляет Reset (с кодом ошибки) → Slave подтверждает Reset (SafeData = 0) → Master отправляет Session для выхода из 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. Коды 111 определены стандартом; 0x800xFF зарезервированы для специфичных для устройства ошибок SafePara.

Код ошибкиОписание
0Локальный сброс или подтверждение команды RESET
1Неожиданная команда (INVALID_CMD)
2Неизвестная команда (UNKNOWN_CMD)
3Неверный Connection ID (INVALID_CONNID)
4Ошибка CRC (INVALID_CRC)
5Истёк watchdog (WD_EXPIRED)
6Неверный адрес FSoE Slave (INVALID_ADDRESS)
7Неверные безопасные данные (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 вычисляются от сброшенного начального состояния, поскольку и порядковый номер, и унаследованный 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

Коды ошибок и формат данных


Check out similar posts by category: FSoE EtherCAT Safety