定义变量(示例): 物理地址分配(自动):
Temp → DBX 0.0(4 字节)Pressure → DBX 4.0(2 字节)MotorRun → DBX 6.0(1 字节,但占 2 字节对齐)Setpoint → DBX 8.0(2 字节)步骤 2:调用 MB_SERVER 指令
打开 OB1
指令库 → 通信 → MODBUS TCP → 拖入 MB_SERVER
配置参数:
指针计算公式:PDB块名.DBX 起始字节.位 数据类型 数量例如:PDB_ForceControl.DBX 0.0 BYTE 20 也可,但通常用 WORD。 步骤 3:下载并运行
编译下载到 S7-1200
确保 CPU 处于 RUN 模式
记录 PLC IP(如 192.168.1.10)
---
三、力控端配置(以 ForceControl V7.x 为例)
步骤 1:创建 IO 设备
打开力控工程管理器
进入 “IO 设备驱动” → 右键 → “新建”
选择驱动:
厂商:Modbus设备类型:Modbus TCP通讯方式:TCP/IP步骤 2:配置设备属性
属性 | 值 |
| 设备名称 | S7_1200_Modbus |
| IP 地址 | 192.168.1.10 |
| 端口号 | 502 |
| 超时时间 | 3000 (ms) |
| 重试次数 | 3 |
步骤 3:定义数据库变量(核心步骤)
在力控 实时数据库 中创建变量,并绑定 Modbus 地址:
力控变量名 | 数据类型 | 寄存器类型 | 寄存器地址 | 读写属性 |
| Temp | FLOAT | 4x | 40001 | 只读 |
| Pressure | INT | 4x | 40003 | 只读 |
| MotorRun | BOOL | 4x | 40005.0 | 只读 |
| Setpoint | INT | 4x | 40006 | 读写 |
地址映射规则(重点!):
Modbus 4x 寄存器地址 = 物理字节偏移 / 2 + 1
S7-1200 DB 偏移:
Temp (REAL, 4B) → 偏移 0 → 40001Pressure (INT, 2B) → 偏移 4 → 4/2+1 =40003MotorRun (BOOL) → 偏移 6 → 6/2+1 =40004,但BOOL通常用40004.0表示第0位Setpoint (INT) → 偏移 8 → 8/2+1 = 40005 注意:不同力控版本对 BOOL 的处理可能不同,建议用 INT 代替单个 BOOL。
---
四、地址映射速查表
技巧:在 TIA Portal 中打开 DB 块的 “绝对地址” 视图,直接查看偏移量。
---
五、通信测试与验证
启动力控运行系统(View)在画面中添加文本框,绑定 Temp、Pressure 等变量
观察数据是否刷新:若显示正常数值 → 通信成功
若显示 0 或 # → 检查地址或 DB 优化设置
测试写入:在力控画面输入 Setpoint = 100
在 TIA Portal 的 监控表 中查看 Setpoint 是否同步更新
---
六、常见问题与解决方案
高级诊断:
在 TIA Portal 中监控 MB_SERVER 的 STATUS 输出管脚
使用 Wireshark 抓包,过滤 tcp.port == 502,查看 Modbus 报文
---
七、最佳实践建议
PLC 端:
所有用于 Modbus 通信的变量集中放在一个 DB 块
预留 10%~20% 的地址余量,方便后期扩展
避免在 OB1 中频繁修改 Modbus 映射区的值
力控端:
变量命名与 PLC 保持一致,便于维护
对关键变量设置报警限值
启用通信日志,便于故障追溯
---
总结:一句话配置流程
PLC:建非优DB → 调MB_SERVER → 下载RUN力控:加Modbus TCP设备 → 绑4x地址 → 画面测试 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!