跳到主要内容

RT Class 1 周期帧说明(0x8892)

本文档为简化级说明:描述本产品数据面(周期帧处理)的最小字段集,用于 SDK 用户理解周期数据行为。完整规范以 IEC 61158 / PROFINET 标准为准。

1. 实时等级

协议族PROFINET IO(RT Class 1)
以太网类型0x8892(PROFINET RT 帧)
帧环0x8892(RT 周期/非周期)+ 0x88CC(LLDP,可选)
实时性常规周期报文(RT Class 1),非 IRT / RTC3,无硬实时保障
周期1 ms 起(可配,普通线程 + DPC 定时器)

2. 以太网帧头

 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination MAC(组播/单播) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source MAC(从站 MAC) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| EtherType = 0x8892 | FrameID(2 字节) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PROFINET 负载(见下) |

FrameID 决定 PDU 类型(常用值,简化级):

FrameID 范围用途
0x0000保留
0x0100实时周期数据(RTC,PPM)
0x0200实时周期数据(RTC,CPM)
0x8000-0xFFFF(部分)非周期 / 报警(Alarm 高优先级等)

驱动按已建立的 IOCR 匹配 FrameID 与方向(GSDML 标准口径):PPM(Provider)发输入数据(GSDML <Input>,从站 → 控制器),CPM(Consumer)收输出数据(GSDML <Output>,控制器 → 从站)。本产品实现内部区名为应用视角反转命名,见 §4 口径归一说明。

3. RTC 周期帧(简化结构)

周期数据帧在以太网头之后依次为:

+- PROFINET 报文头(FrameID 已含在以太网头中) -+
| DataStatus(1 字节) | CycleCounter(2 字节) |
+------------------------------------------------+
| IO 数据区(N 字节) |
| PPM: 输入数据(GSDML <Input>,应用生产) |
| + 各块 IOPS 状态字节 |
| CPM: 输出数据(GSDML <Output>,控制器下发) |
| + 各块 IOCS 状态字节 |
+------------------------------------------------+
| Padding(对齐) |
+------------------------------------------------+
字段长度说明
DataStatus1 B数据状态:Primary / Redundancy / DataValid / ProviderState 等位
CycleCounter2 B周期计数器,从站侧单调递增,可用于丢帧/乱序检测
IO 数据区N B按组态布局排列的过程数据块
IOPS/IOCS各 1 B/块数据一致性状态(见概念说明

4. 驱动数据面处理(从站视角)

★ 口径归一(audit-2026-08-14 P0 跨层方向反转修复):全文档以 GSDML 标准语义为准 — <Input> = 从站 → 控制器(设备发送,PPM 0x0100);<Output> = 控制器 → 从站(设备接收, CPM 0x0200)。实现内部(驱动共享内存区名 / 服务 PnetProcessImage 区名 / /api/io 字段名)采用应用视角反转命名:内部“输入区” = 应用从 PDI 收(控制器 → 设备,即 GSDML 输出方向,区尺寸 = ΣOutputLength);内部“输出区” = 应用给 PDI 发(设备 → 控制器,即 GSDML 输入方向,区尺寸 = ΣInputLength)。SDK 按标准命名做补偿映射: SDK I 区 ↔ 服务 Output 区(PPM),SDK Q/DB 区 ↔ 服务 Input 区(CPM)。 不对称工程(Input ≠ Output)下,各区尺寸与 GSDML 声明严格对应。

驱动接收路径(CPM,控制器→从站):
0x8892 帧 → 按 FrameID 匹配 IOCR → 解包 GSDML <Output> 数据(ΣOutputLength)+ IOCS
→ 写入共享内存“输入区”(驱动命名) → 服务 PnetProcessImage.Input 区
→ SDK 地址化 Read*(Q/DB 区,补偿映射)

驱动发送路径(PPM,从站→控制器):
应用经 SDK 地址化 Write*(I 区,补偿映射到服务 Output 区)
→ 服务 PnetProcessImage.Output 区 → 驱动共享内存“输出区”(驱动命名)
→ 驱动周期定时器封包 0x8892 帧(GSDML <Input> 数据,ΣInputLength)
→ 从绑定网卡发出
  • 热路径不分配内存:TX NBL / MDL / 帧缓冲在初始化时预分配,周期路径零分配。
  • 看门狗:驱动维护周期看门狗,控制器连续丢帧/超时后按组态行为上报(不主动断链,见下)。

5. 状态与看门狗(简化)

事件驱动行为
收到 CPM 输出帧更新 IOCS,刷新看门狗
看门狗超时(未收到控制器周期帧)记录丢帧计数 + 诊断条目;不主动关闭连接(由 P-Net 栈按协议超时释放)
应用未写输入区输入区 IOPS 标 Bad 发出(数据无效如实上报,不伪造 Good)

6. 与 0x88CC(LLDP)的关系

  • 0x88CC 帧用于链路层发现协议(LLDP),服务侧控制面周期发送/接收,用于邻居信息与工程诊断。
  • 驱动仅透传或旁路 LLDP 帧到服务;周期数据走 0x8892 主路径。

7. 不支持的(R81 真规格口径)

能力状态
IRT(RT Class 3 / RTC3)不支持
精确时间同步(PTP 全同步)不支持(RT Class 1 无此要求)
硬实时隔离保障不做(普通线程 + DPC,无核隔离 / TSC 校准 / soak 承诺)

相关