常见问题(FAQ)
Darra PnSlave · PROFINET IO Device(从站)。下面先答周期 IO 上最容易踩的四点。
周期 IO
为什么 Q 区只读?
Q 区是 控制器 → 设备 的输出面。从站只消费,不生产:
- SDK:
Read*读 Q;Write*写 Q 返回NotSupported。 - WebAPI:看 Q 只读
GET /api/io的inputHex;POST /api/io只能写 I(outputHex那一侧)。
I 区才是设备 → 控制器。应用改现场值写 I,不要去改 Q。
为什么写 I 之后 Q 不一定变?
前 4 字节回写是主站行为。 从站只改输出(I)做测试,不会在周期里把 Q 抄回 I,也不会把刚写的 I 自动填进 Q。
判据:
- 写 I(SDK
Write*或POST /api/io)。 - 看 Q(SDK
Read*或GET /api/io的inputHex)有没有被主站同步过来。 - 主站没拷,Q 就不变。这是正常现象,不是从站坏了。
不要把 I 的影子(outputHex / Read* I 区)当成 Q 的通过门。
为什么主站连着时不要 Stop?
Stop() / POST /api/stop 会拆应用关系(AR)。主站还在周期交换时停从站,等于活撕连接,控制器侧掉站、诊断刷屏。
- 主站在连(
Connected == true/GET /api/status的connected=true)→ 不要 stop。 - 确认已断开后再
Stop()。SDK 主路径卸载映射时也守这条:连着就不走备用POST /api/stop。
点了 GUI「停止」后从站保持停止,不会自动拉起,见下文「点了停止」。
18840 是备用吗?
是。18840 是服务内置 HTTP WebAPI 的固定端口,备用通道,不是实时主力。
| 路径 | 用途 |
|---|---|
Connect()(无 host) | 周期 IO 主路径:本机映射过程映像 |
Connect(host) / http://127.0.0.1:18840 | GUI / 诊断 / 报警 / 备用读写;比共享内存慢 |
不要把 18840 当硬实时口,也不要拿它承诺 IRT。主例见 参考案例。
产品与收费
收费吗?当前内测免费
- 当前内测阶段免费使用,产品暂不对外售卖。
- 内测版获取方式见 下载 页;反馈走技术交流群或仓库 Issue。
- 商业发布计划另行通知,届时提前公告。
测试与接主站
能不能自己连自己(同一台电脑跑主站和从站)测试?
- 同卡自连不成立:虚拟桥接(VMware Bridge 等)的流量只下发到网卡、不回送宿主协议栈,从站侧收不到。
- 最小拓扑 = 两块物理有线网卡:一块跑从站设备口(驱动绑定,纯二层),一块做主站口;两卡直连即可(现代 PHY 支持 Auto-MDIX,交叉线 / 直通线均可)。
- 主站工具:西门子 PRONETA(免费,DCP + IO 测试)或 Wireshark + Npcap。
- 通过判据:① DCP Identify → 设备 Identify Response;② 线上周期
0x8892PPM 帧;③ 服务GET /api/status返回connected=true。 - 依据:仓库
docs\本地自连验证.md(2026-08-14 开发机实测)。
网卡列表里没有我的网卡 / 网卡少了?
- 网卡下拉支持动态刷新:插拔网卡、切换页面、展开下拉时自动重扫(「使用中」列按实况重算)。
- 未插入的 USB 网卡不显示(PnP 只枚举在场设备)— 插回即自动出现,免装驱动。
- 虚拟网卡(VMnet / TAP / Wintun / 蓝牙 PAN)与设备口没有二层通路,不能用作从站口。
点了「停止」,设备为什么不再自动运行?
- 停止后从站保持停止,不会自动重启 — 需要手动点「启动」,或「重启设备」(= 停止 → 启动)。
- 「开机自启」只在 Windows 启动时生效(服务启动类型 = Automatic),不等于「点停止后自动拉起」。
- 停止未成功时不会自动重试启动,失败原因透出服务端 message(如实,不粉饰)。
- 主站仍在连时不要点停止,见上文「为什么主站连着时不要 Stop」。
改了 GUI 配置为什么不生效?
- 改动必须**重新导出运行配置 XML → 服务重载(停止 → 启动)**后才生效;只导出不重启 = 服务仍在用旧配置。
- 用 GUI 自检第 6 项「配置一致性」核查 GUI 工程与服务加载的配置是否一致。
- 网卡配置语义:网卡名为空 / 「全网口」= 驱动绑全部网口;非空值仅作主口偏好(MAC 解析 / 信息展示)。
安装与运行
驱动装上了,但从站不发帧(抓包 0 个 0x8892)?
- 服务日志报
DeviceIoControl 失败 (IOCTL=..., Win32 error=1168)— 1168 =ERROR_NOT_FOUND,即 NDIS 半死绑定(网卡侧UpperBind声明了协议、协议侧缺Linkage\Bind,NDIS 从未真正 attach)。 - 复位三选一(
sc stop/start协议重注册不会重建 NDIS 绑定):① GUI 重新选择网卡并应用配置(NetCfgInstall 重绑)② 网卡 disable/enable 设备级重枚举 ③ 整机重启。勿反复 stop/start 折腾(一次失败即停手查根因)。 - 依据:仓库
docs\本地自连验证.md§2/§4。
服务启动失败(配置加载错误)?
- 检查运行配置 XML 是否与 GUI 当前导出一致,重跑导出。
- 备用查询:
Invoke-RestMethod http://127.0.0.1:18840/api/status(18840 是备用口,见上文)。
通信建立但 IO 无数据?
- 确认设备名与 IP 与 TIA 中分配一致;检查槽位 / 子模块是否与 GSDML 声明一致。
- 方向口径:SDK
I区 = 设备 → 控制器(Write*发送);SDKQ区 = 控制器 → 设备(Read*读取)。写 I 后 Q 不变,先看「为什么写 I 之后 Q 不一定变」。
TIA 导入
TIA 提示 VendorID 0x0001 相关警告?
0x0001= Acromag 已注册测试号;TIA 不拒装,但设备身份归属错误,发布前必须向 PI 申请正式 VendorID。- 详见 TIA Portal 导入指南 §7 常见问题表。