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

Состояние Data — финальное состояние установки соединения FSoE, в котором соединение проводит всё остальное время своего существования. Оно следует за состоянием Parameter. В отличие от предыдущих состояний, где число циклов FSoE было фиксировано протоколом, состояние Data выполняется непрерывно — циклы FSoE передаются до возникновения ошибки связи или локальной остановки узла FSoE. В каждом цикле FSoE Master отправляет SafeOutputs на FSoE Slave, а FSoE Slave подтверждает, возвращая SafeInputs обратно Master.

В состоянии Data используются две команды:

  • ProcessData — используется, когда безопасные данные корректны.
  • FailSafeData — используется, когда узел локально обнаруживает, что его безопасные данные недостоверны или должны быть переведены в безопасное состояние.

В этой статье разобраны все четыре PDU состояния Data, определённые в ETG.5100 S (D) V1.2.0, §8.2.2.6, на каноническом примере спецификации — 4 октета безопасных данных.

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

Когда выполняется вход в состояние Data и выход из него?

Состояние Data вводится, когда Master покидает состояние Parameter, отправляя Safety Master PDU с командой ProcessData (или FailSafeData). После входа в состояние Data соединение остаётся в нём неограниченно долго:

НаправлениеУсловие
Master остаётся в DataMaster циклически отправляет ProcessData или FailSafeData PDU до возникновения ошибки связи или локальной остановки.
Slave остаётся в DataSlave подтверждает каждый PDU Master и отправляет ProcessData или FailSafeData обратно до возникновения ошибки связи или локальной остановки.

Оба узла немедленно выходят из состояния Data при обнаружении ошибки связи FSoE — в этом случае они возвращаются в состояние Reset.

Команда ProcessData (корректные данные)

Safety Master PDU (FSoE Master → Slave)

Master отправляет этот PDU для передачи SafeOutputs на Slave. Это Таблица 23 спецификации ETG.5100 S (D) V1.2.0 для 4 октетов безопасных данных.

CommandSafeData[0]SafeData[1]CRC_0SafeData[2]SafeData[3]CRC_1Conn_Id
ProcessData
Октет 0
SafeOutputs, байт 1
Октет 1
SafeOutputs, байт 2
Октет 2
CRC_0_Lo
Октет 3
CRC_0_Hi
Октет 4
SafeOutputs, байт 3
Октет 5
SafeOutputs, байт 4
Октет 6
CRC_1_Lo
Октет 7
CRC_1_Hi
Октет 8
Connection Id, мл.
Октет 9
Connection Id, ст.
Октет 10

Ключевые моменты:

  • Command (октет 0) — ProcessData.
  • SafeData[0..3] несут SafeOutputs — фактические безопасные выходные данные от Master к Slave. Байты располагаются по порядку: SafeData[0] — 1-й октет, SafeData[1] — 2-й и так далее.
  • Conn_Id (октеты 9 и 10) несёт Connection ID, как и в состояниях Connection и Parameter.
  • CRC_0 и CRC_1 передаются как 16-битные little-endian значения. Наследование CRC активно на всех циклах состояния Data, связывая каждый PDU с предыдущим.

Safety Slave PDU (FSoE Slave → Master)

Slave подтверждает PDU ProcessData от Master и отправляет SafeInputs обратно Master. Это Таблица 24 спецификации ETG.5100 S (D) V1.2.0.

CommandSafeData[0]SafeData[1]CRC_0SafeData[2]SafeData[3]CRC_1Conn_Id
ProcessData
Октет 0
SafeInputs, байт 1
Октет 1
SafeInputs, байт 2
Октет 2
CRC_0_Lo
Октет 3
CRC_0_Hi
Октет 4
SafeInputs, байт 3
Октет 5
SafeInputs, байт 4
Октет 6
CRC_1_Lo
Октет 7
CRC_1_Hi
Октет 8
Connection Id, мл.
Октет 9
Connection Id, ст.
Октет 10

Обратите внимание на асимметрию с предыдущими состояниями: в состоянии Data Slave не возвращает безопасные данные Master. Вместо этого он отправляет собственные SafeInputs — безопасные входные данные от Slave к Master. Master отправляет SafeOutputs, Slave отвечает SafeInputs; каждое направление несёт собственную независимую полезную нагрузку.

Команда FailSafeData (безопасное состояние)

Если FSoE Master локально обнаруживает, что SafeOutputs недостоверны или должны быть переведены в безопасное состояние, он отправляет команду FailSafeData вместо ProcessData. То же относится к FSoE Slave: если он локально обнаруживает, что SafeInputs недостоверны или должны быть переведены в безопасное состояние, он отправляет FailSafeData вместо ProcessData.

Safety Master PDU с FailSafeData (FSoE Master → Slave)

Это Таблица 25 спецификации ETG.5100 S (D) V1.2.0 для 4 октетов безопасных данных.

CommandSafeData[0]SafeData[1]CRC_0SafeData[2]SafeData[3]CRC_1Conn_Id
FailSafeData
Октет 0
0
Октет 1 — fail-safe данные
0
Октет 2 — fail-safe данные
CRC_0_Lo
Октет 3
CRC_0_Hi
Октет 4
0
Октет 5 — fail-safe данные
0
Октет 6 — fail-safe данные
CRC_1_Lo
Октет 7
CRC_1_Hi
Октет 8
Connection Id, мл.
Октет 9
Connection Id, ст.
Октет 10

Ключевые моменты:

  • Command (октет 0) — FailSafeData.
  • Все октеты SafeData установлены в 0 — fail-safe данные не несут полезной нагрузки; они сигнализируют, что отправитель перевёл свои выходы в безопасное состояние.
  • Поля Conn_Id и CRC ведут себя точно так же, как в PDU ProcessData. CRC по-прежнему вычисляется и должен проходить проверку — безопасное состояние является определённым рабочим состоянием, а не ошибкой связи.

Safety Slave PDU с FailSafeData (FSoE Slave → Master)

Это Таблица 26 спецификации ETG.5100 S (D) V1.2.0 для 4 октетов безопасных данных.

CommandSafeData[0]SafeData[1]CRC_0SafeData[2]SafeData[3]CRC_1Conn_Id
FailSafeData
Октет 0
0
Октет 1 — fail-safe данные
0
Октет 2 — fail-safe данные
CRC_0_Lo
Октет 3
CRC_0_Hi
Октет 4
0
Октет 5 — fail-safe данные
0
Октет 6 — fail-safe данные
CRC_1_Lo
Октет 7
CRC_1_Hi
Октет 8
Connection Id, мл.
Октет 9
Connection Id, ст.
Октет 10

ProcessData и FailSafeData выбираются независимо

Ключевое свойство состояния Data — выбор между ProcessData и FailSafeData независим в каждом направлении и зависит только от локальных условий, а не от команды, полученной от второй стороны:

  • Master отправляет ProcessData, если его SafeOutputs корректны, или FailSafeData, если нет.
  • Slave отправляет ProcessData, если его SafeInputs корректны, или FailSafeData, если нет.

Это означает, что совершенно нормально, когда в одном цикле одно направление несёт ProcessData, а другое — FailSafeData. Например, если SafeOutputs Master корректны, а SafeInputs Slave — нет, Master отправляет ProcessData, а Slave отвечает FailSafeData. Ни одной стороне не нужно ждать перехода другой на другую команду; решение принимается исключительно локально.

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

Состояние Data — непрерывный циклический обмен:

  1. Master → Slave: Safety Master PDU с Command = ProcessData (несущий SafeOutputs) или Command = FailSafeData (все SafeData = 0).
  2. Slave → Master: Safety Slave PDU с Command = ProcessData (несущий SafeInputs) или Command = FailSafeData (все SafeData = 0).

Этот цикл повторяется неограниченно. Команда в каждом направлении выбирается независимо на основе локальной достоверности безопасных данных. Если любая из сторон обнаруживает ошибку связи FSoE (см. FSoE: List of all communication error codes), оба узла возвращаются в состояние Reset, и установка соединения начинается заново.

Итоги

В состоянии Data FSoE Safety PDU наконец-то несёт пользовательские безопасные данные: Master отправляет SafeOutputs, а Slave отвечает SafeInputs, каждый с командой ProcessData. Если безопасные данные любой из сторон недостоверны или должны быть переведены в безопасное состояние, она отправляет команду FailSafeData вместо ProcessData, со всеми октетами SafeData, установленными в 0. Выбор между двумя командами независим в каждом направлении и зависит только от локальных условий. Состояние Data выполняется непрерывно до возникновения ошибки связи (вызывающей возврат в Reset) или локальной остановки узла. Наследование CRC связывает каждый PDU с предыдущим на протяжении всего состояния Data, поэтому любое искажение, потеря или переупорядочивание немедленно обнаруживается.

Ссылки на стандарт

  • ETG.5100 S (D) V1.2.0, §8.2.2.6 Data state, Таблицы 23–26.

Связанные статьи

Обзор и основы

Структуры PDU по состояниям

CRC

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


Check out similar posts by category: FSoE EtherCAT Safety