1. 项目背景与需求分析
在工业自动化控制系统中,PLC与温控器之间的通讯是最常见的基础需求之一。这次我们要解决的是三菱FX3U系列PLC通过485BD通讯板与欧姆龙E5C系列温控器建立Modbus RTU通讯的实际案例。
这个需求来源于一个真实的食品加工生产线改造项目。原有系统使用独立温控器手动操作,现在需要整合到PLC自动控制系统中。选择485通讯而不是更简单的4-20mA模拟量信号,主要基于以下考虑:
- 需要双向通讯:既要读取温度实时值,也要设置目标温度
- 多台温控器组网需求:产线上有8个温控点
- 避免模拟量信号的干扰和精度损失
- 未来可能扩展其他Modbus设备
2. 硬件选型与连接配置
2.1 关键设备清单
- 三菱FX3U-32MT/ES-A PLC
- FX3U-485BD通讯扩展板
- 欧姆龙E5CC-QX2ASM-800温控器(带RS485接口)
- 屏蔽双绞线(AWG18)
- 终端电阻(120Ω)
2.2 硬件连接要点
485BD板的接线需要特别注意:
code复制SDA/RDA --- 温控器A+
SDB/RDB --- 温控器B-
SG ------ 屏蔽层接地
实际布线时的经验:
- 一定要使用屏蔽双绞线,屏蔽层单端接地(PLC侧)
- 通讯距离超过50米时,需在两端加120Ω终端电阻
- 避免与动力线平行走线,交叉时保持直角
- 温控器地址拨码要确保唯一性(E5C默认是1)
3. 温控器参数设置
欧姆龙E5C需要配置以下关键参数(通过前面板操作):
| 参数代码 | 参数名称 | 设置值 | 说明 |
|---|---|---|---|
| Hd-01 | 通讯速率 | 3 | 对应9600bps |
| Hd-02 | 数据格式 | 3 | 8位数据,偶校验,1停止位 |
| Hd-03 | 通讯模式 | 1 | Modbus RTU模式 |
| Hd-04 | 站号地址 | 1-247 | 必须与PLC程序一致 |
注意:参数修改后必须断电重启才能生效,这是很多新手容易忽略的点。
4. PLC程序开发
4.1 通讯初始化
使用RS指令前需要设置D8120寄存器:
code复制MOV H0C96 D8120
对应含义:
- 0:数据长度8位
- C:偶校验
- 9:波特率9600
- 6:停止位1位
4.2 典型读写程序
读取温度当前值(PV)的示例:
code复制LD M8000
RS D100 K8 D200 K4
- D100:发送缓冲区起始地址
- K8:发送8个字节
- D200:接收缓冲区起始地址
- K4:接收4个字节
发送缓冲区内容(Modbus RTU格式):
code复制01 03 00 00 00 01 84 0A
- 01:设备地址
- 03:功能码(读保持寄存器)
- 0000:起始地址(PV值地址)
- 0001:读取寄存器数量
- 840A:CRC校验
5. 调试技巧与常见问题
5.1 调试步骤建议
- 先用USB转485适配器连接电脑和温控器,用Modscan测试通讯
- 确认物理连接正常后,再接入PLC系统
- 使用PLC的D寄存器监控收发数据
- 逐步测试,先确保能读取再尝试写入
5.2 典型故障排查
现象1:通讯超时无响应
- 检查接线是否反相(A+/B-)
- 确认终端电阻是否必要
- 测量485线路AB间电压(应有1-5V波动)
现象2:收到错误数据
- 核对温控器地址设置
- 检查D8120设置与温控器参数是否一致
- 确认Modbus寄存器映射表(欧姆龙与三菱的地址偏移可能不同)
现象3:偶发通讯中断
- 检查接地是否良好
- 尝试降低波特率到4800
- 增加报文间隔时间(修改D8121)
6. 进阶应用建议
对于需要监控多台温控器的系统,建议:
- 采用轮询机制,间隔不小于100ms
- 对关键温度点做变化率监测(在PLC中计算ΔT/Δt)
- 添加通讯故障计数器,超过阈值触发报警
- 重要参数设置双重验证(读回后比较设定值)
实际项目中,我们还增加了温度曲线功能,通过PLC的RAMP指令实现自动升温控制。这个方案后来被复制到三条相似产线,运行最长的已经稳定工作3年多,证明了这种通讯方式的可靠性。
