工控网首页
>

应用设计

>

深入 FSoE 设备架构:三核冗余如何实现 SIL3 安全等级

深入 FSoE 设备架构:三核冗余如何实现 SIL3 安全等级

深入 FSoE 安全协议(三):三核冗余如何实现 SIL3 安全等级
这是 "深入 FSoE" 系列文章的第三篇。前两篇我们分别介绍了 FSoE 的基本概念与通信模型,以及工业通信中的八种错误类型和 FSoE 的四道安全防线。这些讨论都聚焦于通信链路上的安全机制。今天我们把视角转向设备内部——一个 FSoE 设备自身是如何通过多 CPU 冗余架构来满足 SIL3 等级对硬件容错能力的严苛要求的。

在上一篇文章中我们看到,FSoE 通过 CRC 校验、序列号、看门狗和地址校验等机制,可以在不可靠的通信链路上可靠地检测出各类数据传输错误。但这些机制有一个共同的前提:发送端和接收端的设备自身必须是可靠的。如果一个安全 CPU 自身发生了故障——比如寄存器翻转导致 CRC 计算逻辑出错——那么无论通信链路多么可靠,安全功能都会失效。

这就是 IEC 61508 功能安全标准对硬件架构提出额外要求的原因。对于 SIL3 等级,标准要求设备的硬件故障裕度(Hardware Fault Tolerance, HFT)不低于 1。通俗地说:任何一个硬件单点故障都不能导致安全功能丧失。这意味着安全相关的处理单元必须具备冗余设计。

1        SIL3 对硬件架构的核心要求

IEC 61508 对 SIL3 等级有两个关键约束。一是每小时危险失效概率(PFH)必须低于 10⁻⁷;二是硬件故障裕度 HFT ≥ 1。这两个指标共同决定了设备的硬件架构方案。

HFT ≥ 1 的含义非常直接:系统中任何一个随机硬件故障(如 CPU 寄存器损坏、内存位翻转、时钟漂移等)发生时,设备必须仍然能够执行安全功能,或至少能够检测到故障并将系统带入安全状态。单纯依靠软件自检无法满足这一要求——因为如果 CPU 本身已经损坏,运行在它之上的自检程序同样可能失效。

因此,几乎所有达到 SIL3 等级的 FSoE 设备都采用多 CPU 架构。ETG.5101 FSoE 实现指南明确指出:处理 FSoE 协议通常需要冗余的微控制器架构,每个微控制器独立计算 FSoE 协议,结果进行交叉校验。

2        典型的三 CPU 架构

一个典型的达到 SIL3 等级的 FSoE 设备采用三 CPU 架构,如下图所示:

FSoE 设备架构
典型的 FSoE SIL3 设备三 CPU 架构。一个通信 CPU 负责 EtherCAT 从站层处理,两个安全 CPU 互为冗余,对 FSoE 协议进行独立计算和交叉校验。

这个架构可以清晰地分为两个层次:通信层和安全层。

通信层由单个通信 CPU 承担,负责 EtherCAT 数据链路层协议处理。它通过标准 EtherCAT 从站控制器(ESC)与 EtherCAT 网络交互,接收和发送 EtherCAT 数据帧。当通信 CPU 从 EtherCAT 帧中提取到 FSoE 安全 PDU 后,将它同时转发给两个安全 CPU。

安全层由两个完全冗余的安全 CPU(Safety CPU 1 和 Safety CPU 2)组成。两个安全 CPU 接收到相同的 FSoE 数据后,各自独立完成全套 FSoE 协议处理——包括 CRC 校验、序列号验证、地址匹配检查、看门狗管理以及安全应用逻辑的运算。处理完毕后,两个 CPU 交换并比较各自的输出结果。只有当结果一致时,安全输出才被激活;任何不一致都意味着至少有一个 CPU 发生了故障,系统立即进入 Fail-Safe 状态。

3        各 CPU 的职责分工

通信 CPU 的职责集中在标准 EtherCAT 通信层面:管理 ESC 寄存器与中断、处理 EtherCAT 状态机(Init → Pre-Op → Safe-Op → Op)、解析 EtherCAT 数据报并从中提取 FSoE PDU、以及处理非安全相关的协议(如 CoE、EoE、FoE 等)。通信 CPU 不参与任何安全逻辑运算——它看 FSoE PDU 只是"一段需要转发的数据",对其内容不做任何安全相关的判断。

这种职责分离是黑色通道原理在设备架构层面的直接体现:通信 CPU 属于"黑色通道"的一部分,其可靠性不影响安全完整性。即使通信 CPU 发生故障,两个安全 CPU 上的看门狗会因为收不到新的安全报文而超时,各自独立地将系统带入安全状态。

两个安全 CPU 承担全部的安全相关任务。它们各自独立运行 FSoE 协议栈和安全应用逻辑,从输入数据的校验到输出指令的生成,两路完全并行。两者之间唯一的交互是在每个 FSoE 周期结束时进行结果交叉校验。这种架构本质上是一种 1oo2(one-out-of-two,二选一)冗余方案:只要两个 CPU 中有一个能正确检测到故障,系统就能进入安全状态。

4        双安全 CPU 的冗余与交叉校验

双安全 CPU 的冗余工作方式是整个架构的核心。两个 CPU 在每个 FSoE 周期中的工作流程完全一致:

第一步:各自从通信 CPU 接收相同的 FSoE PDU 数据。第二步:独立进行 CRC 校验,验证数据完整性。第三步:独立检查序列号连续性,判断是否发生丢包或重复。第四步:独立验证 FSoE 地址是否匹配。第五步:独立重置各自的看门狗定时器。第六步:独立执行安全应用逻辑,计算安全输出值。第七步:交换计算结果并进行比对。

第七步的交叉校验是保障安全完整性的最后一道关。如果两个 CPU 的计算结果一致,安全输出被允许驱动执行器。如果结果不一致——无论是因为哪个 CPU 的哪个部件发生了故障——系统都认定存在危险失效可能,立即切断安全输出并进入 Fail-Safe 状态。

在实际工程实现中,两个安全 CPU 可以采用同构或异构两种方案。同构方案使用相同型号的 CPU 运行相同的代码,实现简单、维护方便,但对系统性故障(如编译器 bug、设计缺陷)缺乏防御能力。异构方案使用不同型号的 CPU 甚至不同的编译器,由不同的团队编写功能相同但实现方式不同的代码——这种"多样性设计"可以同时应对随机硬件故障和系统性故障,是更高安全等级产品的常见选择。

5        为什么通信层只需单通道

细心的读者可能会问:既然 SIL3 要求冗余,为什么通信 CPU 只需要一个?

这正是黑色通道原理的精妙之处。ETG.5101 明确说明:通信接口(包括控制器、ASIC、链路、耦合器等)可以保持单通道,因为它们不属于安全相关部分。FSoE 协议本身是端到端的——安全数据的完整性保护在发送端的安全层完成,校验在接收端的安全层完成。中间的通信通道无论经过多少节点、使用什么介质,都被视为不可信的黑箱。

在设备架构层面,这意味着:即使通信 CPU 完全失效(例如停止转发 FSoE 数据),接收端的安全 CPU 会因为看门狗超时而检测到通信中断,并自主进入安全状态。通信 CPU 的故障不会导致安全数据被错误地当作有效数据处理——安全 CPU 上的 CRC 校验和序列号检查可以拦截任何异常。

这种设计大幅降低了硬件成本和认证复杂度。设备制造商可以使用标准的、未经安全认证的 ESC 芯片和通信处理器,而只需将安全认证的精力集中在两个安全 CPU 上。

6        总结

FSoE 设备的三 CPU 架构是功能安全工程中"纵深防御"思想的又一个经典案例。它通过在安全层实施 1oo2 冗余设计来满足 SIL3 的硬件故障裕度要求,同时借助黑色通道原理使通信层可以保持简洁的单通道设计。三个 CPU 各司其职——通信 CPU 管转发,两个安全 CPU 管校验和逻辑——任何单一 CPU 的故障都不会导致安全功能丧失。

这种架构设计不仅是 FSoE 设备的典型方案,也是功能安全领域的一种通用实践:安全相关的复杂计算交给冗余的安全处理器,非安全的通信任务交给标准硬件,两者之间用可靠而简洁的接口连接。

在本系列的下一篇文章中,我们将深入拆解 FSoE 安全 PDU 的完整结构,看看 CRC、序列号、地址等安全措施如何被精确编码在几十个字节的报文之中。

参考:ETG.5100 Safety over EtherCAT Specification V1.2.0 / ETG.5101 FSoE Implementation Guide V1.3.0 / IEC 61508 / FSoE 协议基础介绍 V1.0


审核编辑(
王静
)
投诉建议

提交

查看更多评论
其他资讯

查看更多

深入 FSoE 通讯周期:四次 EtherCAT 报文交换,完成一次安全握手

深入 FSoE 安全 PDU:六字节报文如何承载 SIL3 安全等级

FSoE 如何应对工业通信中的数据传输错误

HMS在EcoVadis排名中获得金奖:15万家公司中排名前5%

N-Tron NT100 系列荣获金奖