PROFINET 从站概念
Darra PnSlave 是 PROFINET IO Device(从站)。读完本页就能按正确方向用 SDK:写 I、读 Q、不要自己跑周期。
1. 角色
| 角色 | 说明 | 本产品 |
|---|---|---|
| IO Controller | PLC,发起组态和周期通信 | 对方(TIA / 西门子 PLC) |
| IO Device | 现场设备,执行组态、交换过程数据 | Darra PnSlave |
| IO Supervisor | 工程 / 诊断站 | 可选 |
一台设备只开一个 PROFINET 口。网卡和站名由 GUI → 服务配置,SDK 不选网卡。
2. I 只写,Q 只读
方向按 IO 控制器视角(西门子 I/Q):
| 区 | 方向 | SDK | 测通 |
|---|---|---|---|
| I | 从站 → 控制器 | Write* | 改从站输出 I |
| Q | 控制器 → 从站 | Read* | 观察只读输入 Q |
- 写 Q 不支持(返回
NotSupported)。 - 读 I 只是本地影子,不是主站回显。
- 不要把 Q 抄回 I。
循环 IO 前 4 字节由主站同步。从站测通只改自己的输出 I,看 Q / 控制器过程映像有没有跟上;前 4 字节被主站改回去是预期行为。
固定过程区:16 字节 I + 16 字节 Q(槽 1 / 子槽 1)。用户不能增删模块。
3. 没有用户周期
周期帧是驱动按 RT Class 1 收发的(EtherType 0x8892)。应用只改 I、读 Q。
Connect() 无参
→ Start() 映射 GlobalIO
→ 写 I / 读 Q
→ Stop() 只卸映射
- 不要自己开 1 ms 线程去“推周期”。
- 不要为了测通把 Q 整区回写到 I。
Stop()卸的是本进程映射。主站已在连时不要POST /api/stop。
过程映像现网名字:命名 Section \Device\DarraRT_Pnet_GlobalIO(产品名是 PnSlave,内部驱动名尚未改)。SDK 不打开设备句柄 \\.\DarraRT_Pnet(服务独占)。
4. 两条入口
| 路径 | 怎么连 | 用途 |
|---|---|---|
| 实时主路径 | DarraPnet.Connect() 无参 | 过程数据。Start 映射 GlobalIO |
| WebAPI 备用 | Connect("127.0.0.1"),端口 18840 | GUI / 报警 / I&M / 状态。不是实时 IO |
native 直连(new DarraPnet(ip) / LoadConfig 再 Start)当前不可用,不要当主路径。
5. 槽位(给 TIA 看)
PROFINET 设备模型是「设备 → 槽 → 子模块」:
IO Device
├── Slot 0 DAP(设备访问点,不可删)
└── Slot 1 固定模块 / 子模块(16+16 过程数据)
GSDML 里的 ModuleIdentNumber / SubmoduleIdentNumber 给 TIA 识别。组态必须和导出的 GSDML 一致。
6. IOPS / IOCS
周期帧里每个数据块带生产者 / 消费者状态:
| 标志 | 含义 |
|---|---|
| IOPS | 生产者:Good / Bad |
| IOCS | 消费者:Good / Bad |
从站发 I 时带 IOPS;收 Q 时看 IOCS。应用不用自己组帧。
7. 通信流程
DCP 发现 / 设 IP、站名
→ PNIO-CM 建 AR、协商 IOCR
→ PPM / CPM 周期交换(驱动,RT Class 1)
→ 控制器释放 AR,从站回到待连接
| 项 | 值 |
|---|---|
| PPM | 从站 → 控制器(I + IOPS) |
| CPM | 控制器 → 从站(Q + IOCS) |
| 实时等级 | RT Class 1(1 ms 起,软实时) |
| IRT / RTC3 | 不支持 |
Connected 表示已与控制器进入周期交换。以共享内存头为准,不假绿。