【PLC教程】Modbus通信配置详解(实例演示)

前言

Modbus是工控领域最常用的通信协议之一。本文详细讲解Modbus RTU和Modbus TCP的配置方法,以西门子S7-200 SMART为例进行实例演示。

一、Modbus协议基础

Modbus RTU

  • 物理层:RS485/RS232
  • 数据格式:8位数据位,1/2位停止位,奇偶校验
  • 传输速率:9600/19200/38400/115200 bps

Modbus TCP

  • 物理层:以太网
  • 端口号:502
  • 特点:支持多客户端连接

二、Modbus功能码

功能码 名称 说明
01 读线圈 读取输出状态
03 读保持寄存器 读取模拟量数据
05 写单个线圈 控制输出
06 写单个寄存器 设置参数
16 写多个寄存器 批量写入

三、S7-200 SMART Modbus RTU配置

// S7-200 SMART Modbus库指令// 初始化Modbus主站CALL MBUS_CTRL,  // 指令    Mode:=1,      // 1=Modbus RTU    Baud:=19200,  // 波特率    Parity:=2,    // 0=无, 1=奇, 2=偶    Port:=1,      // CPU本体端口    Timeout:=1000 // 超时时间ms// 读取从站数据CALL MBUS_MSG,   // 指令    Addr:=1,      // 从站地址(1-247)    Mode:=0,      // 0=读, 1=写    DataAddr:=0,  // 寄存器地址    Count:=10,    // 寄存器数量    DataPtr:=&VB100  // 数据存放区

四、三菱FX5U Modbus TCP配置

// GX Works3 配置步骤1. 创建工程,选择FX5U CPU2. 模块参数 → 以太网端口 → 对象设备连接配置3. 选择"SLMP连接"或"Modbus TCP"4. 程序中编写通信指令:// 连接从站M8411 := TRUE;  // Modbus TCP模式// 读取保持寄存器(功能码03)FROM K0 K0 D0 K4;  // 从Modbus设备读4个字// 写入保持寄存器(功能码06)TO K0 K10 D100 K1; // 写1个字到Modbus设备

五、常见问题与解决

问题 原因 解决方法
通信超时 参数不一致 检查波特率、数据位、校验位
数据错误 字节序问题 检查高地位顺序
频繁掉线 干扰或接地不良 检查屏蔽层接地

六、调试工具推荐

  • Modbus Poll:Modbus主站仿真工具
  • Modbus Slave:Modbus从站仿真工具
  • Wireshark:网络抓包分析(Modbus TCP)

七、实战案例:PLC读取变频器参数

// 目标:读取三菱E720变频器输出频率// 变频器Modbus参数:// 从站地址: 1// 频率寄存器地址: 0001H (40002)// 电流寄存器地址: 0003H (40004)// PLC程序MB_MSG(Addr:=1,      // 变频器地址       RW:=0,        // 读操作       Addr:=1,      // 寄存器地址1       Count:=2,     // 读2个寄存器       DataPtr:=&VD1000);  // 存放地址// 转换频率值VD1004 := VD1000 * 0.01;  // 实际频率Hz

关注【一路福利】,获取Modbus通信完整教程和实例源码!

上一篇 【经验分享】工控行业面试常见问题及答案
下一篇 【电工基础】万用表使用技巧与注意事项