跳到主要内容

常见问题(FAQ)

Darra PnSlave · PROFINET IO Device(从站)。下面先答周期 IO 上最容易踩的四点。

周期 IO

为什么 Q 区只读?

Q 区是 控制器 → 设备 的输出面。从站只消费,不生产:

  • SDK:Read* 读 Q;Write* 写 Q 返回 NotSupported
  • WebAPI:看 Q 只读 GET /api/ioinputHexPOST /api/io 只能写 I(outputHex 那一侧)。

I 区才是设备 → 控制器。应用改现场值写 I,不要去改 Q。

为什么写 I 之后 Q 不一定变?

前 4 字节回写是主站行为。 从站只改输出(I)做测试,不会在周期里把 Q 抄回 I,也不会把刚写的 I 自动填进 Q。

判据:

  1. 写 I(SDK Write*POST /api/io)。
  2. 看 Q(SDK Read*GET /api/ioinputHex)有没有被主站同步过来。
  3. 主站没拷,Q 就不变。这是正常现象,不是从站坏了。

不要把 I 的影子(outputHex / Read* I 区)当成 Q 的通过门。

为什么主站连着时不要 Stop?

Stop() / POST /api/stop 会拆应用关系(AR)。主站还在周期交换时停从站,等于活撕连接,控制器侧掉站、诊断刷屏。

  • 主站在连(Connected == true / GET /api/statusconnected=true)→ 不要 stop
  • 确认已断开后再 Stop()。SDK 主路径卸载映射时也守这条:连着就不走备用 POST /api/stop

点了 GUI「停止」后从站保持停止,不会自动拉起,见下文「点了停止」。

18840 是备用吗?

是。18840 是服务内置 HTTP WebAPI 的固定端口,备用通道,不是实时主力。

路径用途
Connect()(无 host)周期 IO 主路径:本机映射过程映像
Connect(host) / http://127.0.0.1:18840GUI / 诊断 / 报警 / 备用读写;比共享内存慢

不要把 18840 当硬实时口,也不要拿它承诺 IRT。主例见 参考案例

产品与收费

收费吗?当前内测免费

  • 当前内测阶段免费使用,产品暂不对外售卖。
  • 内测版获取方式见 下载 页;反馈走技术交流群或仓库 Issue。
  • 商业发布计划另行通知,届时提前公告。

测试与接主站

能不能自己连自己(同一台电脑跑主站和从站)测试?

  • 同卡自连不成立:虚拟桥接(VMware Bridge 等)的流量只下发到网卡、不回送宿主协议栈,从站侧收不到。
  • 最小拓扑 = 两块物理有线网卡:一块跑从站设备口(驱动绑定,纯二层),一块做主站口;两卡直连即可(现代 PHY 支持 Auto-MDIX,交叉线 / 直通线均可)。
  • 主站工具:西门子 PRONETA(免费,DCP + IO 测试)或 Wireshark + Npcap。
  • 通过判据:① DCP Identify → 设备 Identify Response;② 线上周期 0x8892 PPM 帧;③ 服务 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* 发送);SDK Q 区 = 控制器 → 设备(Read* 读取)。写 I 后 Q 不变,先看「为什么写 I 之后 Q 不一定变」。

TIA 导入

TIA 提示 VendorID 0x0001 相关警告?

  • 0x0001 = Acromag 已注册测试号;TIA 不拒装,但设备身份归属错误,发布前必须向 PI 申请正式 VendorID。
  • 详见 TIA Portal 导入指南 §7 常见问题表。

相关