1. 项目概述
在工业自动化控制系统中,PLC与各类仪表、变频器的通讯是实现设备联动和数据采集的基础功能。三菱FX3U系列PLC凭借其稳定可靠的性能,在中小型自动化项目中应用广泛。其中,FX3U-ADP-MB通讯模块作为RS-485通讯的扩展单元,能够方便地实现与Modbus协议设备的连接。
这套模板程序是我在多个现场项目中实际应用并优化后的成果,主要解决了以下几个典型问题:
- 快速建立PLC与不同品牌仪表的通讯连接
- 实现变频器参数的可靠读写
- 提供清晰的程序结构和完整注释,便于二次开发
2. 硬件配置与连接
2.1 硬件选型要点
FX3U-ADP-MB模块作为通讯扩展单元,需要与以下硬件配合使用:
- 三菱FX3U系列PLC主机(如FX3U-32MT/ES-A)
- 支持Modbus RTU协议的仪表(如压力变送器、温控器等)
- 支持Modbus RTU协议的变频器(如三菱FR-E700系列)
注意:不同品牌的设备对Modbus协议的支持程度可能不同,建议在选型时确认设备的具体协议兼容性。
2.2 接线规范与注意事项
RS-485通讯采用双绞线连接,具体接线方式如下:
| 模块端子 | 仪表/变频器端子 | 线缆规格 |
|---|---|---|
| SDA+ | A+或485+ | 屏蔽双绞线 |
| SDB- | B-或485- | 屏蔽双绞线 |
| SG | GND |
常见接线问题排查:
- 通讯不稳定:检查A/B线是否接反,终端电阻是否匹配(通常在120Ω)
- 完全无通讯:确认电源供电正常,检查接线端子是否松动
- 数据错误:检查接地是否良好,避免地环路干扰
3. 通讯参数设置详解
3.1 基础通讯参数配置
程序中的初始化部分设置了关键的通讯参数:
assembly复制LD M8002
MOV K9600 D8120 // 波特率9600bps
MOV K8 D8124 // 数据位8位
MOV K0 D8125 // 停止位1位
MOV K0 D8129 // 无校验
SET M8161 // 8位数据模式
参数选择依据:
- 波特率:9600bps是工业现场最常用的速率,兼顾稳定性和实时性
- 数据格式:8N1(8位数据位、无校验、1位停止位)是Modbus RTU的标准配置
- 特殊寄存器:M8161设置为8位模式,确保与大多数设备兼容
3.2 参数调整建议
在不同应用场景下可能需要调整的参数:
| 参数 | 典型值 | 适用场景 |
|---|---|---|
| 波特率(D8120) | 9600/19200 | 根据设备支持选择 |
| 校验位(D8129) | 0/1/2 | 0-无校验,1-奇校验,2-偶校验 |
| 超时时间 | 需额外设置 | 复杂环境建议设置300ms以上 |
4. 仪表通讯实现解析
4.1 读数据功能实现
assembly复制LD X0 // 触发信号
MOV K1 D100 // 站号1
MOV K200 D101 // 起始地址200
MOV K10 D102 // 读取10个数据
MOV K0 H0 // 读指令(功能码03)
MOV H0000 D103 // 保留
MOV H0000 D104 // 保留
RS D100 D103 D105 D106 // 执行通讯
关键点说明:
- 站号设置:必须与仪表设置的Modbus地址一致
- 地址映射:200对应仪表的40001地址(Modbus地址偏移规则)
- 数据长度:10表示读取10个寄存器(即20字节数据)
- 接收缓冲区:D105开始存放返回数据
4.2 实际应用案例
以温度变送器为例,典型的数据读取流程:
- 确认变送器Modbus地址(如设为1)
- 查询手册获取温度值寄存器地址(如40003)
- 程序中设置读取地址为202(40003-40001=2,转为16进制为2)
- 数据转换:读取的原始值需按手册说明进行量纲转换
5. 变频器控制实现
5.1 写数据功能实现
assembly复制LD X1 // 触发信号
MOV K2 D200 // 站号2
MOV K400 D201 // 目标地址400
MOV K1 D202 // 写入1个数据
MOV K1 H10 // 写指令(功能码06)
MOV H0000 D203 // 保留
MOV D300 D204 // 写入值
RS D200 D203 D205 D206 // 执行通讯
应用场景示例:
- 写入变频器频率设定值(地址40001对应D201=400)
- 控制变频器启停(地址40000对应D201=399)
- 修改加速时间参数(参考变频器手册地址)
5.2 变频器控制技巧
-
频率设定值转换:
- 变频器通常接收0-4000对应0-50Hz
- 需在程序中做线性转换:D300 = (目标频率/50)*4000
-
状态字解析:
- 建议定期读取变频器状态字(通常地址40020)
- 通过位操作判断运行状态、故障信息等
-
参数写入保护:
- 部分变频器需要先解除写保护才能修改参数
- 参考具体变频器的Modbus地址映射表
6. 高级应用与优化
6.1 多设备轮询机制
在实际系统中,通常需要与多个设备通讯,推荐采用轮询方式:
-
建立设备轮询表:
- 使用D寄存器存储各设备站号、指令类型等
- 通过指针方式循环访问
-
时间间隔控制:
- 每个通讯指令间插入50-100ms延时
- 使用定时器实现自动轮询
-
错误处理:
- 设置重试计数器(通常3次)
- 超时后自动跳过当前设备
6.2 通讯质量监控
建议增加的监控功能:
-
错误计数器:
- 在D8000中记录通讯错误次数
- 超过阈值触发报警
-
数据校验:
- 对关键参数增加范围检查
- 异常值触发重新读取
-
通讯状态指示灯:
- 通过Y输出点显示通讯状态
- 不同闪烁频率表示不同状态
7. 常见问题解决方案
7.1 典型错误代码处理
| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
| 通讯超时(M8063) | 接线错误/设备无响应 | 检查接线,确认设备上电 |
| 校验错误(M8061) | 参数设置不匹配 | 核对波特率、数据格式 |
| 非法指令(M8062) | 功能码不支持 | 查阅设备手册确认支持的功能码 |
| 地址错误 | 寄存器地址超出范围 | 核对设备Modbus地址映射表 |
7.2 现场调试技巧
-
分段测试法:
- 先用测试软件(如Modbus Poll)确认设备通讯正常
- 再测试PLC与单个设备的通讯
- 最后整合整个系统
-
信号监测:
- 使用示波器观察RS-485信号波形
- 确认信号质量(无畸变、毛刺)
-
接地处理:
- 确保所有设备共地
- 避免地环路引起的干扰
这套模板程序在现场应用中已经过多次验证,特别适合以下场景:
- 需要同时采集多台仪表数据
- 要求实时控制变频器运行
- 中等规模的数据采集监控系统
在实际项目中,建议根据具体设备的手册调整寄存器地址和数据处理方式。对于更复杂的应用,可以考虑增加通讯协议解析、数据打包等功能块的开发。
