FSoE Reset State PDU:Master 与 Slave 结构

Reset 状态是每个 FSoE(Fail Safe over EtherCAT)连接的入口点。连接在上电后、重启(reset connection)后,或检测到 FSoE 通信错误后进入此状态。连接处于此状态期间,不交换任何用户安全数据——Safety PDU 被重新用于携带 Reset 命令以及一个单字节错误代码,告知对端为什么连接被复位。

本文依据 ETG.5100 S (D) V1.2.0, §8.2.2.2,使用规范中 4 个字节安全数据的标准示例,讲解三种 Reset 状态 PDU。完整的 2/4/6/8 字节布局见 FSoE Reset PDU:Master 与 Slave 结构。

注意——每个方向的安全数据字节数是固定的。 每个 FSoE 连接具有固定的安全数据长度(Master→Slave 和 Slave→Master),在两端配置相同。允许的长度为 1、2、4、6 或 8 个字节。特定连接的实际长度取决于 FSoE slave 设备,必须从 slave 的文档或设备描述文件(ESI/EEPROM)中获取。下文示例使用规范中的 4 个字节;其他长度的字节布局见 FSoE Reset PDU:Master 与 Slave 结构。

注意——唯一相关的数据字节是错误代码。 在每个 Reset 状态 PDU 中,SafeData[0](字节 1)是唯一携带任何含义的安全数据字节:

  • 0x00——有意的复位(上电、重启 / reset connection),或 Slave 对 Master Reset 的确认。
  • 非零——触发复位的 FSoE 通信错误代码(参见下文 Table 28)。

所有其他 SafeData 字节未使用,必须设置为 0。 Conn_Id 字段同样未使用(设置为 0)——它仅在连接建立后才被检查。CRC 字段仍然传输且仍必须校验通过,但它们从复位初始状态计算,因为序列号和继承的 CRC 在进入 Reset 时被清零(参见 FSoE:CRC继承是如何工作的? 和 如何计算 FSoE PDU 的 CRC 校验和?)。

何时进入和退出 Reset 状态?

Reset 状态在上电或通信错误后重新初始化 FSoE 连接。进入时复位两项内容:

  • 序列号,以及
  • 用于 CRC 计算的上一电报的 CRC(即 CRC 继承链被中断)。

状态转换是非对称的,反映了 Master/Slave 角色:

方向条件
Master 退出 Reset它发送带有 Session 命令的 Safety Master PDU 给 Slave。
Slave 退出 Reset它接收带有 Session 命令的有效 Safety Master PDU。

换言之,Master 通过发出 Session 命令离开 Reset,Slave 在接受该 Session PDU 后即离开 Reset。当双方都仍在 Reset 时,它们交换携带 Reset 命令的 Safety PDU,如下所示。

Master Reset PDU(FSoE Master → Slave)

Master 在重启后或检测到 FSoE 通信错误后发送此 PDU。下例为 ETG.5100 S (D) V1.2.0 中针对 4 个字节安全数据的 Table 10。

命令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;任何非零值标识触发复位的通信错误(参见下表)。
  • 所有其他 SafeData 字节未使用且设置为 0。
  • CRC_0 和 CRC_1 仍以 16 位小端序值传输,但由于序列号和继承的 CRC 在进入时已复位,它们从复位初始状态计算——而非从前一帧链接。
  • Conn_Id 在 Reset 状态中未使用且设置为 0。连接 ID 仅在连接建立后才被检查。

Slave Reset PDU——确认 Master Reset(FSoE Slave → Master)

当 Slave 收到 Master 的有效 Reset 命令时,它通过发送带有 Reset 命令且所有 SafeData 字节设置为 0的 Safety Slave PDU 来确认——包括错误代码位置。这是 ETG.5100 S (D) V1.2.0 的 Table 11。

命令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——Slave 发起的复位(FSoE Slave → Master)

Slave 本身也可以发起 Reset,无论是在重启(reset connection)期间,还是在检测到本地错误时。此时它发送一个结构与 Master Reset PDU 相同的 Safety Slave PDU:设置 Reset 命令,SafeData[0] 携带 Slave 自己的错误代码(普通重启时为 0x00)。这是 ETG.5100 S (D) V1.2.0 的 Table 12。

命令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 确认此 Slave 发起的 Reset 不是通过发送另一个 Reset PDU,而是通过离开 Reset 状态:它发送带有 Session 命令的 Safety Master PDU,这是双方转换出 Reset 的信号。

综合起来:Reset 状态交换

上述三种 PDU 构成一个小型握手,取决于谁发起了复位:

  • Master 发起的复位: Master 发送 Reset(带错误代码)→ Slave 以 Reset 确认(SafeData = 0)→ Master 发送 Session 离开 Reset。
  • Slave 发起的复位: Slave 发送 Reset(带错误代码)→ Master 发送 Session 离开 Reset(这是 Master 的确认)。

在两种情况下,连接仅在 Master 发出 Session 命令时才离开 Reset 状态;在此之前,线上每个 PDU 都携带 Reset 命令,Conn_Id 字段为 0,唯一有意义的负载是 SafeData[0] 中的单字节错误代码。

FSoE 通信错误代码(Table 28)

Reset PDU 中 SafeData[0] 携带的错误代码取自下表。值 0x00 表示"无错误"——即本地复位或 Reset 命令的确认。代码 1–11 由标准定义;0x80–0xFF 保留给设备特定的 SafePara 错误。

错误代码描述
0本地复位或 RESET 命令的确认
1意外命令 (INVALID_CMD)
2未知命令 (UNKNOWN_CMD)
3无效连接 ID (INVALID_CONNID)
4CRC 错误 (INVALID_CRC)
5Watchdog 超时 (WD_EXPIRED)
6无效 FSoE Slave Address (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 在进入时都已清零。连接仅在 Master 发送 Session 命令时离开 Reset——Slave 从不发送 Session,它仅通过将 SafeData 清零来确认 Reset。

参考文献

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

相关文章

概述与基础

按状态划分的 PDU 结构

CRC

错误代码与数据格式


按类别查看类似文章: FSoE EtherCAT 安全