H5U ↔ Factory IO 通信实战——Modbus TCP 地址映射与避坑
前三篇讲了程序逻辑、按钮、Tags,但一直有个问题没解决:Factory IO 和 H5U 到底怎么连起来?答案就是 Modbus TCP。这篇是系列收官,把通信架构、地址映射、调试避坑讲透,再给一个完整的纸箱分拣案例程序架构。看完这篇,你能从零搭起一个跑得通的 H5U + Factory IO 仿真系统。
一、通信架构:谁主谁从
Factory IO 不支持与 H5U 直接通信,得通过 Modbus TCP 桥接。角色分配很关键:
- Factory IO = Client(主站),主动发起读写
- H5U = Server(从站),被动响应
为什么这样分?H5U 作从站配置简单,AutoShop 里设好 IP + 端口 502 + 寄存器映射就行;Factory IO 的 Drivers 里直接填 H5U 的 IP 做 IO 映射。这种架构 H5U 程序不用写通讯代码,只管读写自己的 M/D 寄存器,通讯完全透明,调试最省心。
二、两个魔法数字的来历
配置时有两个看起来很怪的数字:63488 和 64512。它们不是随便填的,是 H5U 说明书里出厂固定的 Modbus 映射地址:
| 参数 | 值 | 十六进制 | 含义 | 计数 | 对应点 |
|---|---|---|---|---|---|
| 输入偏移 | 63488 | 0xF800 | H5U X 区(数字量输入)起始地址 | 14 | X0~X13 |
| 输出偏移 | 64512 | 0xFC00 | H5U Y 区(数字量输出)起始地址 | 10 | Y0~Y9 |
这两个地址是 H5U 固件出厂固定的 Modbus 映射,不能随便改,必须查 H5U 说明书。不同 PLC 映射规则不同,换 PLC 就得重查。
三、数据流向(输入/输出视角陷阱)
这里是最容易绕晕的地方,盯紧数据流方向:
- FactoryIO 的虚拟传感器状态 → 写入 H5U 的 X 区 → PLC 程序”读 X 点”读到的就是仿真传感器状态
- PLC 程序运算后写 Y 点 → FactoryIO 读取 H5U 的 Y 区 → 驱动虚拟执行器
⚠️ “输入/输出”视角陷阱:文章里”输入偏移 63488″的”输入”是相对 H5U/PLC 说的(X 是 PLC 的输入);但在 FactoryIO 的 Driver 配置界面里,这个对应的是”Outputs”(FactoryIO 写出去)。两个软件对”输入/输出”的定义都相对自身——这就是新手配置时方向搞反的根源。配置时盯紧数据流向,别被”输入/输出”字眼带偏。
四、AutoShop 离线仿真配置
没有真实 H5U 硬件也能练,AutoShop 自带仿真器:
- 打开 AutoShop → 新建工程 → PLC 类型选 H5U → 选对应 CPU 型号
- 以太网口配置:设 H5U 的 IP(如
192.168.1.10) - 启用 Modbus TCP Server,监听端口
502 - 编写 PLC 程序后,点击离线仿真。注意:AutoShop 离线仿真默认 IP 是
127.0.0.1,所以 Factory IO 连本机127.0.0.1:502就行
五、Factory IO 侧配置步骤
- 搭好场景(供料气缸 → 传送带 → 升降台 → 货架等)
- 菜单
File → Drivers→ 选择 Modbus TCP/IP Client - 配置:Host =
127.0.0.1(或 H5U 实际 IP),Port =502,Slave ID =1 - 填输入偏移
63488计数14(对应 X0-X13);填输出偏移64512计数10(对应 Y0-Y9) - 在 Driver 的 I/O 连接面板里,把每个元件的 I/O 端口拖到对应 Modbus 地址
- 点 Connect,状态变绿色对勾 = 通信成功
六、调试避坑清单
| 现象 | 可能原因 | 排查方法 |
|---|---|---|
| FactoryIO 连不上 H5U | IP/端口/站号错 | 先用 Modbus Poll 连同一 IP:502,能连上说明 H5U 从站 OK |
| 能连上但读不到数据 | 寄存器地址映射错 | H5U 的 %IX/%QX 和 Modbus 1x/0x 偏移要对齐,差 1 个偏移是最常见的坑 |
| 数据乱跳/错位 | 字节序问题 | 模拟量注意 Big/Little Endian,用 %MW 单独写固定值测试 |
| 通讯时断时续 | 轮询太快 | Polling Interval 调到 50~100ms,别用默认最小值 |
| 执行器不动作但变量有值 | 输出方向映射反了 | 传感器是 PLC 输入,执行器是 PLC 输出,方向别填反 |
| 仿真跑一会儿卡死 | 程序死锁 | 检查步进标志的复位逻辑,每个状态都要有明确退出条件 |
调试三步法(强烈建议按顺序走)
- 单点通讯测试:H5U 里写固定值到 %MW0,用 Modbus Poll 读 40001,确认通 + 地址对齐
- 单元件功能测试:只接一个气缸 + 一个传感器,手动置位 %QX0.0 看 FactoryIO 气缸动不动
- 整线联调:前两步通了再接全部 IO,跑自动流程
七、纸箱分拣案例:标准化的 6 段式程序架构
通信通了,程序怎么组织?工业 PLC 有个标准范式——6 段式架构,别把逻辑全堆一块,要分层。这是从一个纸箱分拣案例里学到的:
每一段的设计思想:
- ① 输入映射:把外部常开/常闭信号统一规整成内部标准信号,后面程序就不用关心物理触点类型(呼应第 1 篇讲的按钮常开常闭)。
- ② 设备模式:状态机管理手动/自动/停止/报警,整个设备的”大脑”。
- ③ 报警程序:预留 D21.0~D22.15 共 32 个报警位,方便扩展(呼应第 3 篇的失效注入练排故)。
- ④ 手动初始化:切手动时复位信号,防止残留状态。
- ⑤ 自动程序:核心工艺逻辑,分进料、装载、产品判断、产品送料(每一步的”到位保持”本质都是第 1 篇讲的自保变体)。
- ⑥ 输出程序:汇总手动和自动两种模式的输出,集中驱动 Y 点,避免两套逻辑抢同一输出。
这种分层架构的好处:工艺逻辑(自动)和模式管理、报警、IO 都解耦,改一处不影响别的。
小结
- 角色:Factory IO 作 Client,H5U 作 Server(离线仿真 IP 127.0.0.1:502)。
- 地址:输入偏移 63488(0xF800) → X0-X13;输出偏移 64512(0xFC00) → Y0-Y9。来自 H5U 说明书固定映射。
- 方向:传感器写 X 区,PLC 写 Y 区被 FactoryIO 读。盯紧数据流,别被”输入/输出”字眼绕晕。
- 调试:单点通讯 → 单元件功能 → 整线联调,三步走最省心。
- 程序:用 6 段式架构分层,别堆一块。
✦ 系列完结 ✦
从启保停到通信实战,H5U + Factory IO 仿真入门就到这里。
善始善终,迭代极致 · 让科技感知未来
从启保停到通信实战,H5U + Factory IO 仿真入门就到这里。
善始善终,迭代极致 · 让科技感知未来
📖 系列导航:本文是「汇川 H5U + Factory IO 仿真入门实战」系列第 4 篇(完结)。
① 启保停电路 → ② Factory IO 按钮颜色密码 → ③ Factory IO Tags 标签全解 → ④ H5U ↔ Factory IO 通信实战(本文)
① 启保停电路 → ② Factory IO 按钮颜色密码 → ③ Factory IO Tags 标签全解 → ④ H5U ↔ Factory IO 通信实战(本文)
