用户中心
· 企业空间 首页 | 资讯 | 技术 | 产品 | 企业 | 直播 | 专题 | 智能制造 | 论坛| 在线研讨会
瑞典HMS工业网络有限公司
企业空间 > 新闻 > 正文
  • 深入 FSoE 安全 PDU:六字节报文如何承载 SIL3 安全等级
  • 发布时间:2026/7/24 16:48:59   修改时间:2026/7/24 16:48:59 浏览次数:208
  • 这是 "深入 FSoE" 系列文章的第四篇。前三篇我们分别介绍了 FSoE 的基本架构与通信模型、工业通信中的八种错误及四道安全防线、以及设备端的多 CPU 冗余架构。今天我们把镜头对准 FSoE 通信中最微观的层面——安全 PDU(协议数据单元)的帧格式,看看 CRC、序列号、地址和命令是如何在短短几十个字节中被精确编码的。
    ▲ 最短 PDU 为 6 字节:1 字节 Command + 1 字节 SafeData + 2 字节 CRC_0 + 2 字节 ConnID。这是 FSoE 通信中最精简的有效帧格式。
            

    在第二篇文章中我们提到,FSoE 通过四道防线——CRC 校验、序列号、看门狗和地址校验——来抵御通信链路中的八种错误。在第三篇文章中我们看到,这些防线在设备端由两个冗余的安全 CPU 独立计算和交叉校验。但有一个问题始终悬而未决:这些安全机制具体是怎么"装进"报文里的?

       

    答案就在 FSoE 安全 PDU 的帧格式设计中。每个 FSoE 报文最短仅 6 个字节,却承载了命令、安全数据、CRC 校验值和连接标识四类信息。这 6 个字节的结构设计,是 FSoE 能达到 SIL3 安全等级的微观基础。

       
            1         PDU 在 EtherCAT 中的位置    
       

    FSoE 安全 PDU 并不独立传输,而是作为普通过程数据嵌入在 EtherCAT 数据报(Datagram)的 PDO 区域中。下图清晰地展示了这一层次关系:

       
            FSoE PDU 嵌入 EtherCAT    
       
    FSoE PDU 作为 EtherCAT 数据报 PDO 的一部分传输。底层 EtherCAT 协议对 PDU 内容不做任何安全相关的解析——这正是黑色通道原理在帧结构层面的直接体现。
       

    EtherCAT 主站在每个通信周期中读取 FSoE Master 从站发出的安全 PDU,原封不动地转发给 FSoE Slave 从站,反之亦然。中间的 EtherCAT 主站和其他网络节点只看到"一段 PDO 数据",完全不知道其中包含了安全信息。任何新 PDU 的判断标准也非常简洁:只要 PDU 中至少有一个比特发生了变化,即被视为一帧新数据。

       
            2         通用 PDU 结构    
       

    FSoE 安全 PDU 的长度是可变的。安全数据量最小为 1 个字节,最大受限于 EtherCAT PDO 长度以及设备的内存和算力。安全数据必须为偶数个字节(1 字节是唯一例外,其后紧跟的 CRC 实际保护的是单字节数据加上一个虚拟的零字节)。

       

    PDU 的通用结构如下:

       
                   
    字节偏移 字段名 说明
    0 Command 命令字节,决定 PDU 的用途和后续字段的解读方式
    1 SafeData[0] 安全数据,字节 0
    2 SafeData[1] 安全数据,字节 1(如仅有 1 字节数据则跳过)
    3 CRC_0_Lo CRC_0 的低字节(bit 0-7)
    4 CRC_0_Hi CRC_0 的高字节(bit 8-15)
    5 SafeData[2] 安全数据,字节 2(如适用)
    6 SafeData[3] 安全数据,字节 3(如适用)
    7 CRC_1_Lo CRC_1 的低字节
    8 CRC_1_Hi CRC_1 的高字节
    ... ... ...
    末尾-1 ConnID_Lo 连接标识符低字节
    末尾 ConnID_Hi 连接标识符高字节
       
       

    核心设计原则是:每 2 个字节的安全数据后面紧跟一个 2 字节的 CRC 校验值。所有安全数据之后,以 2 字节的 Connection ID 收尾。

       
            3         Command:决定 PDU 的"身份"    
       

    PDU 的第 0 字节是 Command 字段,它决定了这个 PDU 在 FSoE 通信状态机中的角色。ETG.5100 定义了六种命令:

       
                   
    命令值 名称 用途
    0x36 ProcessData 正常数据交换状态,传输安全过程数据
    0x2A Reset 复位状态,通信初始化或错误恢复
    0x4E Session 会话建立,交换随机 Session ID
    0x64 Connection 连接建立,下发 Connection ID
    0x52 Parameter 参数传输,协商看门狗时间等安全参数
    0x08 FailSafeData 故障安全状态,告知对方已进入安全状态
       
       

    同一个 Command 值在 Master PDU 和 Slave PDU 中含义相同,但携带的具体数据不同。Command 不仅是数据类型的标识符,它更是 FSoE 状态机运转的核心驱动——接收方根据收到的 Command 来判断当前所处的通信阶段,并决定下一步的行为。

       
            4         SafeData:承载安全的"货物"    
       

    SafeData 是 PDU 中长度占比最大的部分,用来承载安全应用数据。在正常数据交换(Data 状态)下,它传输的是安全过程数据——例如急停按钮的状态、安全门的开闭信号、STO 指令等。在连接建立阶段(Parameter 状态),它传输的是通信参数和与应用相关的安全配置参数。

       

    安全数据的最小长度为 1 字节,对应 PDU 总长 6 字节的最短帧:

       
            最短 PDU 格式    
       
    最短 PDU 为 6 字节:1 字节 Command + 1 字节 SafeData + 2 字节 CRC_0 + 2 字节 ConnID。这是 FSoE 通信中最精简的有效帧格式。
       

    安全数据的长度在 FSoE Slave 的设备描述文件中指定,输入方向和输出方向的长度可以不同。在 Parameter 状态下,如果参数数据超出 PDU 的安全数据容量,参数会被分段传输——CRC 继承机制保证了分段传输的一致性。

       
            5         CRC:PDU 中最精妙的安全设计    
       

    如果说 Command 决定了 PDU 的"身份",SafeData 承载了"货物",那么 CRC 就是 PDU 的"封印"。FSoE 的 CRC 设计远不止简单的校验和计算,它包含了多层精巧的机制。

       

    生成多项式:FSoE 使用 16 位 CRC,生成多项式为 0x139B7。该多项式经过数学证明,在 16 位安全数据长度和 10?2 比特误码率的假设条件下,残余错误概率不超过 10??/h,满足 SIL3 要求。

       

    CRC_0 的计算:CRC_0 不仅包含了 PDU 自身的 Command 和 SafeData,还将三个关键的外部信息纳入计算——上一个接收到的 PDU 的 CRC_0、Connection ID、以及一个虚拟的序列号(Sequence Number)。此外还额外追加了三个零字节,以确保安全 CRC 多项式与底层标准 CRC 多项式之间的独立性。

       
            序列号与 CRC 计算    
       
    FSoE 的 CRC 计算融入了序列号、上一帧 CRC 和 Connection ID,形成了强大的错误检测链。
       

    CRC 继承:上一个接收到的 PDU 的 CRC_0 被纳入当前 PDU 的 CRC 计算——这意味着整个通信序列形成了一条密码学意义上的"链"。如果攻击者或网络故障试图插入一个伪造的 PDU,由于不知道前一个正确的 CRC_0 值,插入的 PDU 将无法通过校验。这种设计同时防止了插入错误和伪装错误。

       

    虚拟序列号:FSoE Master 和 Slave 各自维护一个 16 位的虚拟序列号(1-65535),每个 FSoE 周期递增。序列号被纳入 CRC_0 的计算但不直接出现在 PDU 中——因此称为"虚拟"。即使安全数据连续多个周期完全相同,由于序列号在变化,CRC_0 也会不同,从而保证了每个 PDU 的物理层唯一性。如果 CRC_0 碰巧与上一周期相同,序列号会自动递增直到 CRC_0 发生变化为止。

       

    CRC 索引:当安全数据超过 2 字节时,PDU 中会有多个 CRC(CRC_0、CRC_1...)。为了防止 PDU 内部的数据块被交换位置(例如区块 A 和区块 B 互换),每个 CRC_i 的计算都会额外纳入索引 i。这样即使两块数据完全相同,交换后也会因为索引不同而无法通过校验。

       
            6         ConnID:PDU 的"归属证明"    
       

    PDU 的最后两个字节是 Connection ID。这个 16 位的标识符在 Connection 状态下由 FSoE Master 下发给 Slave,在整个网络中唯一。它由安全配置工具生成,在 Connection 状态之前使用 0 填充。接收方验证 PDU 中的 ConnID 是否与自身匹配——寻址错误和伪装错误在此处被拦截。

       
            7         从 Reset 到 Data:PDU 的"成长"过程    
       

    在 FSoE 状态机的不同阶段,PDU 的形态也有所不同:

    • Reset 状态:最短的 PDU,仅包含 Command(0x2A)和最少的必要字段。CRC 和 ConnID 均为 0。
    • Session 状态:Master 和 Slave 各自生成随机的 16 位 Session ID 并通过 PDU 交换。Session ID 确保每次上电后的通信序列都是唯一的。
    • Connection 状态:Master 将 Connection ID 写入 PDU 下发给 Slave。此后所有 PDU 中的 ConnID 字段将始终携带该值。
    • Parameter 状态:PDU 中的 SafeData 承载通信参数和与应用相关的安全参数。参数可能跨多个周期分段传输。
    • Data 状态:进入正常安全数据交换。PDU 中的 SafeData 承载实际的安全过程数据。这是 FSoE 运行时间最长的状态。
       
            8         总结:六个字节,四道防线    
       

    回顾第二篇文章中的四道防线,每一道都在 PDU 中找到了精确的编码位置:

       

    CRC 校验通过 2 字节的 CRC_0(及后续 CRC_i)直接嵌入 PDU,利用多项式 0x139B7 和 CRC 继承机制抵御数据损坏、插入和伪装。序列号作为虚拟字段纳入 CRC 计算,在不占用 PDU 字节的前提下实现了防重复、防乱序和防丢失。FSoE 地址虽不出现在 PDU 中(地址校验在通信建立阶段完成),但其正确性是 PDU 被接受的隐含前提。看门狗则在 PDU 之外、以时间为维度,确保通信的及时性。

       

    六个字节的最短帧承载了这全部的安全逻辑。正是在这个微观层面,FSoE 完成了从"传输数据"到"安全传输数据"的质变。

       
            9         FSoE 协议栈推荐    
       

    对于设备制造商而言,从零开始实现 FSoE 协议栈是一项耗时且高风险的工程——不仅需要深入理解 ETG.5100 规范的每一个细节,还必须通过 TUV 等公告机构的功能安全认证。HMS Industrial Networks 提供的 FSoE 协议栈为这一难题提供了成熟的解决方案,其核心优势包括:

       

    可移植性(Portability):硬件无关的独立代码,支持在有操作系统或无操作系统的环境中运行,编译器无关、应用无关的纯 C 代码实现,可轻松移植到不同硬件平台。

       

    可扩展性(Scalability):通过编译器开关实现功能配置,优化资源占用,支持可选功能模块的按需启用,满足从简单安全 I/O 模块到复杂安全控制器等不同产品的需求。

       

    主从一体化(Master and Slave from one source code basis):同一代码库同时支持 FSoE Master 和 FSoE Slave 两种角色,降低学习和维护成本。

       

    可预认证(Pre-Certifiable):协议栈符合 IEC 61508 SIL3 等级要求,基于经过认证的功能安全软件开发流程,提供集成规则和测试套件以简化重新认证过程。移植到新硬件平台时无需修改核心安全代码,大幅缩短产品的认证周期。

       

    从理解 PDU 帧格式到获得 SIL3 认证,中间隔着大量的工程实现和验证工作。选择成熟的商业协议栈,能让研发团队将精力集中在产品的差异化价值上,而不是重复解决已经被人踩过的坑。

       

    参考:ETG.5100 Safety over EtherCAT Specification V1.2.0 / IEC 61784-3 / FSoE 协议基础介绍 V1.0

       
       
  • 企业介绍
HMS工业网络有限公司(以下简称:HMS)成立于1988年,总部在瑞典Halmstad,是工业信息和通信技术解决方案的市场领先供应商。HMS现有员工近800名,2022年全球销售额为2.45亿美元。HMS代表Hardware Meets Software™,是斯德哥尔摩纳斯达克O…  更多>>
  • 联系方式

瑞典HMS工业网络有限公司

联系人:李女士

地址:北京市东直门外大街23号东外外交办公大楼505B

邮编:100600

电话:010-85321188

传真:

公司网址:http://www.hms-networks.cn

  • 该空间手机版

扫描此二维码即可访问该空间手机版

  • 在线反馈
1.我有以下需求:



2.详细的需求:
姓名:
单位:
电话:
邮件:
您还没有登录,请登陆,
如果您还没有注册,点击这里注册.
  • 网友反馈
  • 赵英杰 在2026/2/24 14:58:00留言
  • 留言类型:我让贵公司产品销售人员联系我,
  • 详细留言:购买anybus 网关ABC3213-A
  • 申望 在2025/12/25 16:21:00留言
  • 留言类型:我让贵公司产品销售人员联系我,
  • 详细留言:购买这个硬件设备
  • 冯龙兴 在2025/12/25 10:37:00留言
  • 留言类型:我想得到贵公司产品详细资料,
  • 详细留言:anybus嵌入式网关B6300-B的GSD文件
  • 袁生 在2025/12/4 17:00:00留言
  • 留言类型:贵公司产品销售人员联系我,
  • 详细留言:AnyBus-FX-Modu 工业通信模块
  • 曹乐 在2025/6/18 23:39:00留言
  • 留言类型:贵公司技术支持人员联系我,
  • 详细留言:NP40 profibus 模块配置数据字节数的方法和参考案例
更多请进入空间管理中心查看
关于我们 | 网站地图 | 联系我们
© 2003-2025    经营许可编号:京ICP证120335号
公安机关备案号:110102002318  服务热线:010-82053688
我要反馈