西门子PLC与网络及串口型MODBUS继电器通讯示例工程

付费 ¥6.99付费 ¥6.99

该内容已接入现有会员/付费系统,解锁后可查看完整资料或下载附件。

查看解锁方式
西门子PLC与网络及串口型MODBUS继电器通讯示例工程缩略图
本文目录
  1. 1. 一、应用场景与方案优势
  2. 2. 二、硬件接线说明
  3. 3. 三、Modbus地址映射
  4. 4. 四、S7-200 SMART编程示例
  5. 5. 五、S7-1200/1500编程示例
  6. 6. 六、常见问题与排查
  7. 7. 七、示例工程下载
  8. 8. 西门子PLC与网络及串口型MODBUS继电器通讯示例工程¥6.99

西门子PLC(S7-200 SMART/S7-1200/S7-1500等系列)通过Modbus协议与网络型或串口型继电器模块通讯,是工业自动化中常见的分布式IO扩展方案。本文详细介绍硬件接线、PLC编程配置、Modbus地址映射以及完整的示例工程,帮助工程师快速实现西门子PLC对继电器模块的读写控制。

一、应用场景与方案优势

在中小型控制系统中,西门子PLC通常作为主控制器,而继电器模块作为远程IO从站,通过RS485总线或以太网连接。这种方案的优势在于:

  • 节省布线成本:继电器模块安装在设备现场,只需一根总线连接到PLC,无需将每根控制线拉到控制柜
  • 扩展灵活:可根据需要随时增加从站模块,每个RS485总线最多支持32个从站
  • 维护方便:模块故障时只需更换现场模块,不影响PLC程序
  • 通讯可靠:Modbus RTU协议成熟稳定,抗干扰能力强,适合工业环境
  • 成本低廉:相比PLC专用IO模块,Modbus继电器模块价格仅为其1/3到1/5

二、硬件接线说明

2.1 串口型(RS485)接线

串口型继电器模块通过RS485总线与PLC的通讯模块连接。接线方式如下:

  • PLC端:使用S7-200 SMART的RS485口(Port0/Port1),或S7-1200/1500加装CM 1241 RS485通讯模块
  • 模块端:A端子接PLC的D+(3号针),B端子接PLC的D-(8号针)
  • 地线:建议将PLC和模块的信号地(SG)连接,提高抗干扰能力
  • 终端电阻:总线两端(距离最远的两个设备)接入120Ω终端电阻
  • 电源:继电器模块使用独立24V DC供电,注意电源功率要满足所有继电器同时吸合的需求

2.2 网络型(以太网)接线

网络型继电器模块通过以太网与PLC通讯,支持Modbus TCP协议:

  • 使用网线将模块连接到交换机或直接连接PLC的网口
  • 模块默认IP地址通常为192.168.1.100,需与PLC在同一网段
  • 单网口版设备必须在网络配置中将【透传】模式更改为【Modbus TCP】模式
  • Modbus TCP默认端口号为502

三、Modbus地址映射

继电器模块的Modbus地址映射遵循标准协议,以8路继电器模块为例:

功能Modbus功能码地址范围说明
读取继电器状态0x01(读线圈)0x0000-0x00071=吸合,0=断开
写单个继电器0x05(写单线圈)0x0000-0x0007FF00=吸合,0000=断开
写多个继电器0x0F(写多线圈)0x0000-0x0007按位写入
读取输入状态0x02(读离散输入)0x0000-0x0007光耦输入状态
读取寄存器0x03(读保持寄存器)0x0000-0x0001模块地址、波特率等

四、S7-200 SMART编程示例

S7-200 SMART使用Modbus RTU主站指令库进行通讯。首先需要在STEP 7-Micro/WIN SMART中加载Modbus主站指令库,然后编写以下程序:

4.1 初始化通讯参数

// 主程序 OB1
// 首次扫描时初始化Modbus主站
LD     SM0.1
CALL   MBUS_CTRL, 1, 9600, 0, 1000, &VB100, &VB200

// 参数说明:
// 1 = 使用Port0口
// 9600 = 波特率9600
// 0 = 无校验(0=无,1=奇,2=偶)
// 1000 = 超时时间1000ms
// &VB100 = 主站状态指针
// &VB200 = 从站响应数据指针

4.2 读取继电器状态

// 读取从站1的8路继电器状态
LD     SM0.5          // 每秒触发一次
EU
CALL   MBUS_MSG, 1, 1, 1, 0, 8, &VB300, &VB100

// 参数说明:
// 1 = 使能位
// 1 = 从站地址1
// 1 = 功能码01(读线圈)
// 0 = 起始地址0
// 8 = 读取8个
// &VB300 = 数据存储地址
// &VB100 = 状态指针

// 读取结果存储在VB300开始的字节中
// VB300.0 = 第1路继电器状态
// VB300.1 = 第2路继电器状态
// ...以此类推

4.3 控制继电器吸合/断开

// 写单个继电器:控制第1路继电器吸合
LD     I0.0           // 按下按钮
EU
CALL   MBUS_MSG, 1, 1, 5, 0, 1, 1, &VB100

// 参数说明:
// 功能码05 = 写单线圈
// 地址0 = 第1路继电器
// 数值1 = FF00(吸合),0 = 0000(断开)

// 写多个继电器:同时控制前4路
LD     I0.1
EU
MOVB   16#0F, VB400  // 低4位置1,前4路吸合
CALL   MBUS_MSG, 1, 1, 15, 0, 4, &VB400, &VB100

// 功能码15 = 写多线圈
// 数量4 = 写4个线圈
// VB400 = 按位写入的数据

五、S7-1200/1500编程示例

S7-1200/1500使用TIA Portal中的Modbus通信指令,需要先在设备配置中添加Modbus主站功能。

5.1 SCL语言示例

#MB_CLIENT(
    REQ := "Tag_Request",          // 请求触发
    DISCONNECT := FALSE,            // 保持连接
    MODE := 0,                      // 0=读,1=写
    DATA_ADDR := 40001,             // Modbus地址
    DATA_LEN := 10,                 // 数据长度
    DATA_PTR := PEEK(area := 16#81, dbNumber := 1, byteOffset := 0), // 数据指针
    CONNECT := "MB_Connect_DB",     // 连接参数
    DONE => "Tag_Done",             // 完成标志
    BUSY => "Tag_Busy",             // 忙标志
    ERROR => "Tag_Error",           // 错误标志
    STATUS => "Tag_Status"          // 状态字
);

六、常见问题与排查

6.1 通讯失败常见原因

  • 地址不匹配:PLC程序中的从站地址必须与模块拨码或软件设置的地址一致
  • 波特率不一致:PLC和模块的波特率、校验位、停止位必须完全相同
  • 接线错误:A/B线接反是最常见的问题,交换A/B线试试
  • 未接终端电阻:长距离通讯时总线两端必须接120Ω终端电阻
  • 电源问题:模块供电不足会导致通讯不稳定,建议使用24V/2A以上电源
  • 干扰问题:RS485线应远离动力线,使用屏蔽双绞线并单端接地

6.2 错误代码说明

错误码含义解决方法
0x01非法功能码模块不支持该功能码,检查功能码设置
0x02非法地址读取/写入地址超出模块范围
0x03非法数据值写入的数据值不合法
0x04从站设备故障模块硬件故障,重启或更换模块
超时无响应检查接线、地址、波特率、电源

七、示例工程下载

本文配套的西门子S7-200 SMART和S7-1200完整示例工程包含:

  • S7-200 SMART完整程序(含初始化、读线圈、写线圈、错误处理)
  • S7-1200 TIA Portal工程(SCL和LAD两种版本)
  • Modbus地址映射表Excel
  • 硬件接线图PDF
  • 详细的调试步骤说明

示例工程在文章底部进行下载,下载后可直接导入到编程软件中使用。建议先使用默认参数(地址1、9600波特率、无校验)测试通讯,成功后再根据实际需求修改参数。

西门子PLC与网络及串口型MODBUS继电器通讯示例工程¥6.99

西门子PLC与网络及串口型MODBUS继电器通讯示例工程插图星耀会员¥5.59
西门子PLC与网络及串口型MODBUS继电器通讯示例工程插图1璀璨会员¥4.19
曜钻会员免费
已付费?登录 或 刷新
技术术语(共 10 个)—— 点击展开
Modbus RTU基于串行链路的Modbus协议,使用二进制编码和CRC校验
Modbus TCP基于以太网的Modbus协议变体,使用TCP/IP传输
RS485工业常用的差分串行通信标准,支持多点通信
功能码Modbus功能码指定读/写操作类型,如01读线圈、03读保持寄存器
寄存器Modbus 寄存器存储数据单元,分线圈/离散输入/保持/输入寄存器四类
PLC可编程逻辑控制器,工业自动化控制的核心设备
波特率串行通信每秒传输符号数,Modbus RTU常用9600/19200
串口计算机与外部设备进行串行通信的物理接口
线圈Modbus位可读写数据,地址从00001开始
保持寄存器Modbus 16位可读写数据,地址从40001开始
来源/工具信息 —— 点击展开
来源 Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 分类 Modbus编程开发 字数 2848 字 · 阅读约 8 分钟 更新 2026-08-20 永久链接 https://www.modbus.cn/11842.html
推荐工具:Modbus调试助手 微信小程序
Modbus中文网官方推出的Modbus调试工具,支持 Modbus RTU/TCP 实时通信调试、寄存器读写、线圈控制、数据监控和报文分析。 无需安装,微信搜索「Modbus调试助手」即可使用。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
相关标签
📝 作者声明
本文由 Modbus中文网技术团队 原创撰写,内容基于实际项目案例与技术文档,力求为读者提供准确、实用的参考信息。
把这篇资料用于真实项目?

进入工具中心进行报文解析、CRC 校验和设备调试,或提交需求获取选型与接入建议。

工程师会员

把这篇文章变成可执行的调试资料

开通后可使用高级报文解析、资料包下载、代码示例、工程案例和优先技术支持,适合真实项目交付。

高级工具不限次
资料包与代码包
完整工程案例库
优先技术支持入口

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注