返回主站|会员中心|保存桌面

软件定制开发公司    

软件定制开发公司,承接各类工控软件,上位机软件,plc程序开发,编程,调试,电气...

联系方式
  • 联系人:吴经理
  • 电话:18576370666
新闻分类
  • 暂无分类
站内搜索
 
友情链接
首页 > 新闻中心 > 两台S7-200PLC,主站I0.0控制从站Q0.0用MODBUS实现!
新闻中心
两台S7-200PLC,主站I0.0控制从站Q0.0用MODBUS实现!
发布时间:2025-12-16        浏览次数:1        返回列表

以两台 S7-200 PLC 构建 MODBUS 通信网络,将主站的 I0.0 信号传递给从站,控制从站的 Q0.0 输出,核心是通过 MODBUS RTU 协议完成主从站之间的数字量信号传输。以下是详细的实现步骤,包括硬件配置、参数设置、程序编写和故障排查。

一、前期准备与硬件配置

1. 硬件清单(核心组件)

  • 两台西门子 S7-200 PLC(如 CPU224 XP,自带 RS485 通讯口)

  • 一根RS485 通讯线(两芯屏蔽线,建议用 Profibus 总线电缆)

  • 两个RS485 终端电阻(120Ω,可选,长距离通讯时需接)

  • 编程软件:STEP 7-Micro/WIN V4.0 SP9(需支持 S7-200 编程和 MODBUS 配置)

2. 硬件接线(关键:RS485 通讯连接)

S7-200 的 CPU 自带的 RS485 通讯口为PORT 0,引脚定义如下:

引脚号功能标识
3RS485+A/RD+
8RS485-B/TD-

接线方式

  • 主站 PLC 的 PORT 0 的A 引脚 ↔ 从站 PLC 的 PORT 0 的A 引脚

  • 主站 PLC 的 PORT 0 的B 引脚 ↔ 从站 PLC 的 PORT 0 的B 引脚

  • 若通讯距离超过 50 米,在总线两端的 PLC 通讯口上接 120Ω 终端电阻(接 A 和 B 引脚之间)。

3. 通讯参数约定(主从站必须一致)

  • 波特率:9600 bps(可改为 19200 等,主从站需相同)

  • 数据位:8 位

  • 校验位:偶校验(Even)

  • 停止位:1 位

  • 从站地址:设置为 2(主站地址默认为 1,从站地址需唯一)

二、核心原理:MODBUS RTU 数据传输逻辑

  1. 主站:作为 MODBUS 主站,读取自身 I0.0 的状态,通过 MODBUS 指令将该状态写入到从站的指定寄存器(如 V 区寄存器)。

  2. 从站:作为 MODBUS 从站,被动接收主站的写入数据,将寄存器中的状态读取出来,控制自身 Q0.0 的输出。

  3. 数据载体:选择保持寄存器(4xxxx) 传输数字量信号(I0.0 的 0/1 状态),对应 S7-200 的 V 区(如 VW100 对应 40001 寄存器,需注意地址偏移)。

三、程序编写(分主站和从站)

1. 地址与变量定义(统一约定)

设备变量 / 寄存器功能说明
主站I0.0控制信号输入(启动 / 停止)
主站VW100存储 I0.0 的状态(0 或 1)
从站VW100接收主站写入的状态(对应 40001 寄存器)
从站Q0.0受控输出端
通用从站地址:2MODBUS 从站地址(主站为 1)
通用通讯端口:PORT 0S7-200 的默认通讯口

2. 主站程序编写(MODBUS 主站,发送控制信号)

主站需要完成:初始化通讯参数 → 读取 I0.0 状态 → 通过 MODBUS 写入从站寄存器

ladder

// 网络1:PLC上电初始化通讯参数(波特率9600,偶校验,PORT 0)
LD     SM0.1                   // 上电首次扫描脉冲
MOVB   16#0D, SMB30            // SMB30:PORT 0通讯参数配置
                               // 16#0D = 00001101 → 波特率9600,8位数据,偶校验,1位停止位
MOVB   1, SMB31                // 主站地址设为1(可省略,默认1)
// 启用MODBUS主站模式(S7-200的MODBUS主站指令需要先初始化)
CALL   MBUS_INIT, 0, 1, 9600, 0, 1, M0.0, M0.1
                               // MBUS_INIT参数说明:
                               // 0:PORT 0;1:主站模式;9600:波特率;0:偶校验;
                               // 1:1位停止位;M0.0:初始化完成标志;M0.1:初始化错误标志

// 网络2:读取I0.0的状态,存储到VW100
LD     SM0.0                   // 始终扫描
MOVB   I0.0, VB100             // 将I0.0的BOOL状态转为字节存储到VB100(VW100的低字节)
MOVB   0, VB101                // VW100的高字节置0,确保VW100的值为0或1

// 网络3:通过MODBUS主站指令,将VW100写入从站(地址2)的40001寄存器(对应从站VW100)
LD     SM0.0
CALL   MBUS_WR, 2, 3, 1, &VB100, 1, M0.2, M0.3
                               // MBUS_WR参数说明:
                               // 2:从站地址;3:寄存器类型(3=保持寄存器4xxxx);
                               // 1:起始寄存器地址(40001,注意:S7-200的MODBUS地址偏移为0,所以写1对应40001);
                               // &VB100:主站要发送的数据地址;1:写入的寄存器数量;
                               // M0.2:写入完成标志;M0.3:写入错误标志

关键参数解释

  • SMB30:S7-200 的 PORT 0 通讯模式寄存器,16#0D是 9600 波特率、偶校验的标准配置,若要改为 19200 波特率,需改为16#1D

  • MBUS_INIT:MODBUS 主站初始化指令,必须在程序开头执行,否则通讯无法建立。

  • MBUS_WR:MODBUS 主站写入指令,负责将主站的数据写入从站的保持寄存器。

3. 从站程序编写(MODBUS 从站,接收信号并输出)

从站需要完成:初始化通讯参数 → 启用 MODBUS 从站模式 → 读取寄存器状态,控制 Q0.0

ladder

// 网络1:PLC上电初始化通讯参数(与主站一致)
LD     SM0.1                   // 上电首次扫描脉冲
MOVB   16#0D, SMB30            // PORT 0:9600波特率,偶校验,8位数据,1位停止位
MOVB   2, SMB31                // 从站地址设为2(必须与主站的从站地址一致)

// 网络2:启用MODBUS从站模式(S7-200的MODBUS从站需要映射寄存器)
CALL   MBUS_SLAVE, 0, 1, 1, 0, M0.0, M0.1
                               // MBUS_SLAVE参数说明:
                               // 0:PORT 0;1:从站地址(2,这里参数是偏移?不,S7-200的MBUS_SLAVE的第二个参数是“起始地址偏移”,实际从站地址由SMB31设置)
                               // 简化理解:该指令启用PORT 0的MODBUS从站功能,映射保持寄存器4xxxx到V区(默认VW0对应40001)
                               // M0.0:从站初始化完成;M0.1:从站错误标志

// 网络3:读取VW100的状态,控制Q0.0输出
LD     SM0.0
LDB=   VB100, 1                // 判断VW100的低字节是否为1(主站I0.0为ON)
=      Q0.0                    // 若为1,Q0.0置ON;否则置OFF

关键说明

  • 从站的MBUS_SLAVE指令是核心,启用后会自动响应主站的 MODBUS 指令,将主站写入的数据存储到对应 V 区寄存器(主站写 40001,从站 VW100 会被赋值)。

  • 从站直接读取VB100(VW100 的低字节)的状态,即可对应主站 I0.0 的状态,进而控制 Q0.0。

四、触摸屏 / 编程软件配置要点

  1. 程序下载:分别将主站和从站的程序下载到对应的 PLC 中,下载完成后重启 PLC。

  2. 通讯测试:在 STEP 7-Micro/WIN 中,通过 “通讯” 功能分别连接主站和从站,监控变量:

    • 主站:监控VW100,看 I0.0 通断时是否变为 1 或 0。

    • 从站:监控VW100,看是否与主站的VW100同步,同时观察 Q0.0 是否随 I0.0 变化。

五、常见故障排查

故障现象可能原因排查步骤
从站 Q0.0 无反应1. 通讯线接反(A/B 交叉)2. 通讯参数不一致3. 从站地址错误4. MODBUS 指令参数错误1. 调换从站的 A/B 引脚接线;2. 核对主从站的 SMB30 配置(波特率、校验位);3. 检查从站 SMB31 是否设为 2;4. 核对 MBUS_WR 的从站地址和寄存器地址
通讯时断时续1. 通讯线屏蔽层未接地2. 无终端电阻(长距离)3. 现场干扰大1. 将通讯线屏蔽层单端接地(主站端);2. 加装 120Ω 终端电阻;3. 更换屏蔽性能更好的 Profibus 电缆
MODBUS 指令错误标志置位1. 从站未上电或未运行2. 寄存器地址超出范围3. 数据长度错误1. 检查从站 PLC 的电源和运行状态;2. 确认寄存器地址为 40001(对应 VW100),未超出从站 V 区范围;3. 核对 MBUS_WR 的数据长度是否为 1

总结

  1. 两台 S7-200 PLC 通过 MODBUS 实现主站 I0.0 控制从站 Q0.0 的核心是主站用 MBUS_WR 指令写入数据,从站用 MBUS_SLAVE 指令接收数据

  2. 硬件接线需保证A-A、B-B 连接,通讯参数(波特率、校验位)主从站必须完全一致。

  3. 程序中需注意MODBUS 寄存器地址与 S7-200 V 区的映射关系(40001 对应 VW100),以及指令参数的正确性。

收缩
  • QQ咨询

  • 电话咨询

  • 18576370666
  • 添加微信客服