1. 项目概述
最近在工业自动化项目中,我完成了一个典型的温度监控系统搭建——使用西门子S7-200 PLC作为主站,通过Modbus RTU协议采集8路温度数据,并在MCGS触摸屏上实时显示。这个方案特别适合中小型工业现场的分布式温度监测需求,比如食品加工、制药、化工等行业的生产线温度监控。
整个系统的核心在于Modbus通讯协议的稳定实现。S7-200 PLC作为主站,通过串口与温控模块通讯,采集8个通道的温度数据后,再通过另一个串口与MCGS触摸屏建立Modbus连接,实现数据可视化。这种架构既保证了数据采集的实时性,又提供了友好的人机交互界面。
注意:虽然S7-200 PLC已经逐步被S7-200 SMART替代,但在存量设备改造和特定场景下,这种方案仍具有很高的实用价值。本文分享的编程思路和方法同样适用于其他Modbus设备通讯场景。
2. 硬件连接与系统架构
2.1 硬件组成清单
要实现这个温度监控系统,需要以下硬件设备:
- 西门子S7-200 PLC:CPU型号建议选择224XP或以上,因其自带两个通讯端口,可分别用于连接温控模块和触摸屏
- MCGS触摸屏:推荐使用TPC7062K等支持Modbus RTU协议的型号
- 温控模块:支持Modbus RTU协议的8通道温度采集模块,如宇电AI-808P等
- 通讯线缆:
- PLC与温控模块:使用屏蔽双绞线,建议线径不小于0.75mm²
- PLC与触摸屏:标准PPI电缆或自制RS485线缆
2.2 系统接线示意图
code复制温控模块(从站1) <---RS485---> S7-200 PLC(主站) <---RS485---> MCGS触摸屏
在实际接线时需要注意:
- RS485网络必须采用手拉手总线拓扑,避免星型连接
- 总线两端需加装120Ω终端电阻
- 屏蔽层单端接地,通常接在PLC端的地线端子
2.3 通讯参数统一设置
为确保通讯正常,所有设备的通讯参数必须一致:
| 参数项 | 设置值 |
|---|---|
| 波特率 | 9600 bps |
| 数据位 | 8位 |
| 停止位 | 1位 |
| 校验方式 | 无校验 |
| 通讯协议 | Modbus RTU |
| 站号分配 | PLC:1(默认) 温控模块:2 触摸屏:3 |
3. PLC端程序设计详解
3.1 通讯端口初始化
在STEP 7-Micro/WIN编程软件中,我们需要对PLC的两个通讯端口进行分别配置:
stl复制// 网络1:端口0初始化(连接温控模块)
LD SM0.1 // 首次扫描时执行
MOVB 16#09, SMB30 // 设置端口0为Modbus RTU主站模式
// 16#09对应:9600bps,8位数据,无校验,1停止位
// 网络2:端口1初始化(连接触摸屏)
LD SM0.1
MOVB 16#01, SMB130 // 设置端口1为自由口模式
MOVB 16#20, SMB187 // 启用端口1的Modbus从站功能
这里有几个关键点需要注意:
- SMB30控制端口0,SMB130控制端口1
- 16#09表示端口0作为Modbus主站的完整配置
- 即使触摸屏作为主站,PLC端口1也需要启用Modbus从站功能(SMB187)
3.2 温度数据采集程序
采集温控模块数据的核心是MBUS_MSG指令,下面是详细实现:
stl复制// 网络3:定时触发温度采集
LD SM0.0
TON T37, +100 // 100ms定时器
LD T37
R T37, 1 // 复位定时器
// 网络4:发送Modbus读取请求
LD T37
MOVD &VB100, VD20 // 数据存储起始地址(VB100开始)
MOVW 8, VW24 // 读取8个寄存器(对应8路温度)
MOVB 2, VB26 // 温控模块站号设为2
MOVB 4, VB27 // 功能码04(读输入寄存器)
CALL MBUS_MSG, VB20 // 调用Modbus通讯指令
这段程序实现了每100ms读取一次8路温度数据的功能。关键参数说明:
- VB100~VB115:存储8路温度值(每个温度值占2个字节)
- VW24=8:表示读取8个寄存器
- VB26=2:温控模块的Modbus站地址
- VB27=4:功能码04表示读取输入寄存器
经验分享:在实际应用中,建议将定时器时间设置为200-500ms,过高的采集频率可能导致通讯拥堵。同时,应对MBUS_MSG指令的完成位进行监控,确保每次通讯正常完成。
3.3 数据存储与处理
采集到的温度数据通常需要进行标度变换和滤波处理:
stl复制// 网络5:温度值处理示例(以第一路温度为例)
LD SM0.0
MOVW VW100, VW200 // 原始数据转存
ITD VW200, VD202 // 整数转双整数
DTR VD202, VD206 // 双整数转实数
MOVR VD206, VD210 // 复制到工作寄存器
*R 0.1, VD210 // 乘以系数(根据传感器规格调整)
MOVR VD210, VD214 // 存储处理后的温度值
这种处理方式适用于PT100等温度传感器,其中0.1是常见的转换系数。实际系数应根据传感器规格书确定。
4. MCGS触摸屏组态配置
4.1 设备连接配置
- 打开MCGS组态软件,新建工程
- 进入"设备窗口",右键添加"通用Modbus RTU设备"
- 设置设备属性:
- 设备名称:S7-200_PLC
- 通讯端口:根据实际连接的COM口选择
- 波特率:9600
- 数据位:8
- 停止位:1
- 校验方式:无校验
- 站号:1(与PLC端口1设置一致)
4.2 变量连接设置
在MCGS中需要建立与PLC数据的对应关系:
- 创建8个数值型变量:Temp1~Temp8
- 设置变量连接属性:
- 设备:S7-200_PLC
- 数据类型:16位无符号二进制
- 寄存器类型:4x保持寄存器
- 寄存器地址:对应PLC中的VB100开始地址
具体地址映射关系如下:
| MCGS变量 | PLC地址 | 说明 |
|---|---|---|
| Temp1 | 4x0000 | 对应PLC的VW100 |
| Temp2 | 4x0001 | 对应PLC的VW102 |
| ... | ... | ... |
| Temp8 | 4x0007 | 对应PLC的VW114 |
4.3 画面组态设计
在MCGS中设计温度显示画面:
- 添加8个"数值显示"元件,分别关联Temp1~Temp8变量
- 设置显示格式:
- 整数位数:3
- 小数位数:1
- 单位:"℃"
- 添加趋势图元件,显示8路温度变化曲线
- 添加报警显示区域,设置温度上下限报警功能
实用技巧:在MCGS中,可以为每个温度通道设置不同的颜色,并在趋势图中使用相同的配色方案,这样操作人员可以快速识别各通道状态。
5. 系统调试与故障排查
5.1 常见通讯问题及解决方法
在实际调试中,可能会遇到以下典型问题:
| 故障现象 | 可能原因 | 解决方法 |
|---|---|---|
| PLC与温控模块通讯失败 | 站号设置不一致 | 检查PLC程序和温控模块站号设置 |
| 波特率不匹配 | 确认所有设备波特率均为9600 | |
| 接线错误 | 检查A/B线是否接反,屏蔽层接地 | |
| 触摸屏显示数据不更新 | 寄存器地址映射错误 | 核对MCGS变量与PLC地址对应关系 |
| 通讯超时设置过短 | 将MCGS通讯超时设为1000ms以上 | |
| 数据跳动大 | 未做软件滤波 | 在PLC程序中增加移动平均滤波 |
| 电磁干扰 | 检查屏蔽层接地,远离强电线路 |
5.2 调试步骤建议
- 分步调试:先单独测试PLC与温控模块的通讯,确保能正确读取温度数据
- 数据监视:使用STEP 7-Micro/WIN的状态表功能,监视VB100开始的8个字数据
- 通讯测试:用Modbus调试工具(如ModScan)模拟触摸屏,验证PLC从站功能
- 参数记录:记录所有设备的通讯参数设置,形成文档以备后续维护
5.3 性能优化建议
-
通讯周期优化:
- 温度变化缓慢的场景,可将采集周期设为1-5秒
- 对响应速度要求高的场合,建议不低于200ms
-
数据滤波处理:
stl复制// 示例:移动平均滤波程序(以第一路温度为例)
LD SM0.0
MOVW VW100, VW300 // 存储当前值
+I VW300, VW310 // 累加和
INCB VB320 // 计数器加1
MOVW VW310, VW330 // 准备除法
/I VB320, VW330 // 求平均值
MOVW VW330, VW340 // 存储滤波后值
LD SM0.1 // 首次扫描时
MOVW 0, VW310 // 清空累加和
MOVB 0, VB320 // 复位计数器
- 异常处理机制:
- 添加通讯超时监控
- 设置默认温度值,防止通讯中断时显示异常
- 实现断线自动重连功能
6. 项目扩展与进阶应用
这个基础框架可以根据实际需求进行多种扩展:
-
多温控模块级联:
- 通过修改站号,可连接多个温控模块
- 在PLC程序中轮询访问不同站号设备
- 注意总线上设备总数不超过Modbus协议限制(通常32个)
-
报警功能增强:
- 在PLC中实现温度上下限判断
- 设置不同的报警级别(预警、报警、紧急)
- 通过MCGS组态声光报警效果
-
数据记录与分析:
- 利用MCGS的历史数据存储功能
- 设置定时存储温度数据
- 导出CSV格式供Excel分析
-
远程监控集成:
- 通过MCGS的以太网接口实现远程访问
- 设置权限管理,确保系统安全
- 可搭配手机APP实现移动监控
在实际项目中,我还发现几个值得注意的细节:
- 对于长距离通讯(超过50米),建议增加RS485中继器
- 定期检查接线端子,防止氧化导致接触不良
- 重要场合应设置温度采集冗余,提高系统可靠性
- PLC程序应添加详细的注释,方便后期维护