TIA Portal 导入指南
把 Darra PnSlave 的 GSDML 装进西门子 TIA,组态成 IO Device。
规范层依据见仓库
docs\GSDML_TIA_导入合规报告.md。最终是否过关以真机 TIA 导入为准。
0. 版本
| 项 | 值 |
|---|---|
| 当前导出 | PNIO_Version="V2.32" |
| TIA | V15.1 及以上 |
XSD file not found | TIA 内置 XSD 低于文件版本 → 升级 TIA |
1. GUI 导出
- GUI 配完:设备(站名 / IP)→ 槽位 → 过程数据 → 报警。
- 导出两个文件:
| 文件 | 用途 |
|---|---|
device.gsdml | TIA 导入 |
device.xml | 服务加载 |
- 导出前跑一遍 GUI 自检,重点看「配置一致性」和「GSDML 可导出性」。
2. 文件名(TIA 硬校验)
规范:GSDML-Vx.y-<厂商>-<设备族>-<yyyymmdd>[hhmmss].xml
日期段之后不能再加版本号等附加段。违反会报 Checker couldn't check Gsd file。
3. 安装 GSD
- 「选项」→「管理 GSD 文件」→ 添加
device.gsdml。 - 或放入
%ProgramData%\Siemens\Automation\GlobalData\GSD后重启 TIA。 - 前提:ASCII 短路径、关掉硬件网络编辑器、有写权限。
4. 组态
- 设备视图 → 硬件目录找到 Darra PnSlave → 拖入网络。
- 分配 IO 控制器。
- 模块只能放 GSDML 声明过的槽(
AllowedInSlots)。 - 每方向过程数据硬顶 1440 字节(保守 1434)。超限就拆 DataItem / 子模块。
本产品过程区固定 16 字节 I + 16 字节 Q,一般碰不到帧长上限。
5. 站名与 IP
| 规则 | 值 |
|---|---|
| 字符 | 仅 a-z 0-9 - .(下划线非法) |
| 长度 | 总长 ≤240,段长 1–63,段不以 - 起止 |
| 首字符 | 不能是数字 |
| 禁用 | port-xyz 前缀;写成 IP 形态 |
| 分配名 | 必须与 GUI 站名一致 |
TIA 会把非法键入改写成别的名字,但 GSDML 里的 DNS_CompatibleName 不会跟着改。对不上则 DCP Set 被拒。
6. 接上之后怎么测
- 主站侧可用 PRONETA 或 Wireshark(EtherType
0x8892)看 DCP / 周期帧。 - 应用侧走 SDK 主路径(见 快速开始):
var pnet = DarraPnet.Connect();
pnet.Start();
pnet.Write(new byte[] { 0x11, 0x22, 0x33, 0x44 }); // 改从站输出 I
pnet.Read(out byte[] q); // 只读 Q
pnet.Stop();
- 判据:
| # | 过关 |
|---|---|
| 1 | DCP Identify 有响应 |
| 2 | 线上有周期 0x8892 帧 |
| 3 | 写 I 后控制器过程映像变化;读 Q 能看到主站下发 |
| 4 | 前 4 字节由主站同步,不要把 Q 抄回 I |
主站已在连时不要 POST /api/stop。
7. 常见问题
| 现象 | 处理 |
|---|---|
VendorID 0x0001 提示 | 0x0001 是已注册测试号。TIA 不拒装,但可能和 Acromag 冲突。发布前向 PI 申请正式号 |
Checker couldn't check Gsd file | 文件名违规,见 §2 |
XSD file not found | TIA 低于 V15.1,见 §0 |
| 相同设备标识已安装 | 先卸旧 GSDML 再装 |
| GSD 无法读取 | 0 模块 / 0 子模块不要导出 |
| 站名分配失败 | 下划线、首数字等非法字符,见 §5 |
| 过程数据超过最大帧长度 | 每方向超 1440,见 §4 |
| 写了 I,Q 前 4 字节被改 | 主站同步,预期行为 |
8. 合规(如实)
当前导出物格式层(XSD)合规,大概率可导入。仓库内无 TIA 环境时,正式发布前仍需在 TIA V15.1+ 做一次真导入:安装 → 目录出现 → 拖入 → 编译 → 下载站名。