远创智控 Y8000-FX 模块内部集成 ModbusTCP 服务器,因此 ModbusTCP 客户机,如支持
ModbusTCP 的组态软件、OPC 服务器、PLC 以及实现 ModbusTCP 客户机的高级语言开发的软件等,可以直接访问三菱 FX 系列PLC 的内部数据区,Modbus 协议地址在Net 内部已经被默认映射到 FX 系列 PLC 的地址区,实现的功能号包括:FC1、FC2、FC3、FC5、FC6 和 FC16。
1, ModbusTCP 协议帧格式:
事务处理标识 符 | 事 务处 理标 识 符 | 协议标识符 | 协 议 标识符 | 长度字段(高字节) | 长 度 字 段 (低字节) | 从站地址 | 功能号 | 数据地址 ( 高 字节) | 数 据 地址(低字节) | 指 令数(高字节) | 指 令数(低字节) |
0x0 | 0x0 | 0x0 | 0x0 | 0x0 | 后面的字节 数 |
Modbus 从站地 址 | FX 系列 PLC 内部软元件 | 数据 类型 |
计算公式 |
功能号 |
最大指令数 | |
000001~ | 输出线圈:Y0~ |
位 | Ym = 000001+DEC(m) | ① |
FC1(读线圈) FC5(写线圈) |
FC1:2000 FC5:1 |
005001~ | 特殊:M8000~ | M8m = 005001+m | ② | |||
006001~ | 定时器线圈:T0~ | Tm = 006001+m | ||||
007001~ | 计数器线圈:C0~ | Cm = 007001+m | ||||
010001~ | 线圈:M0~ | Mm = 010001+m | ||||
030001~ | 线圈:S0~ | Sm = 030001+m | ||||
100001~ | 输入:X0~ | 位 | Xm = 100001+DEC(m) | ③ | FC2(读输入) | 2000 |
400001~ | 定时器:T0~ |
字 | Tm = 400001+m |
FC3(读寄存器) FC16(写寄存器) FC6(写单一寄存器) |
FC3:125 FC16:125 FC6:1 | |
401001~ | 计数器:C0~ | Cm = 401001+m | ||||
401201~ | 计数器:C200~ | Cm=401201+(m-200)*2 | ④ | |||
401301~ | 特殊:D8000~ | D8m = 401301+m | ⑤ | |||
402001~ | 资料暂存器:D0~ | Dm = 402001+m | ||||
420001~ | 文件寄存器:R0~ | Rm=420001+m | ⑥ |
1, S7-1200 编程
本例中,S7-1200 作为 ModbusTCP 主站(客户机),三菱 FX3U 作为 ModbusTCP 从站(服务器)。读取从站 400001~400008 的 8 个寄存器(T0 到 T7)到主站 MW100~MW114,以及将主站 MW116~MW130 的 8 个字写入到从站 402101 至 402108 (D100 到D108)。
示例程序如下:
2, 新建 DB 块
3, 编写 Modbus TCP 客户机程序
2.1 S7-1200 读取三菱FX3U 数据验证
4, 用三菱编程软件works2 监视并修改三菱 FX3U T0 至T7 的数值
5, 西门子编程软件监视 MW100 至 MW114 的数值
6, 用西门子编程软件修改西门子 MW116 至 MW130 的数值
7, 监视三菱 FX3U D100 至 D107 的数值
楼主最近还看过