1. 三菱FX1N与E700变频器的Modbus通讯实战
在工业自动化领域,PLC与变频器的通讯一直是项目实施的常见需求。三菱FX1N作为经典的小型PLC,配合E700系列变频器,通过485总线实现Modbus通讯,这种组合在中小型自动化项目中应用广泛。本文将详细解析硬件连接、参数配置、程序编写及调试过程中的关键要点。
1.1 硬件配置与接线规范
硬件准备是项目成功的第一步。我们需要以下核心设备:
- 三菱FX1N PLC主机(建议FX1N-24MT或以上型号)
- FX1N-485BD通讯扩展板
- 三菱E700系列变频器(如FR-E720S)
- 双绞屏蔽线(建议使用AWG22规格的485专用电缆)
接线环节需要特别注意信号线的对应关系:
code复制485BD板卡端子 变频器PU口端子
SDA → SDB
SDB → SDA
RDA → RDB
RDB → RDA
SG → SG
注意:必须采用手拉手拓扑结构,末端设备需要接通终端电阻。E700变频器侧通过拨码开关设置110Ω终端电阻,这是保证信号完整性的关键。
实际布线时建议:
- 使用双绞屏蔽线,屏蔽层单端接地(通常在PLC侧)
- 避免与动力线平行走线,最小保持30cm间距
- 通讯距离超过50米时,建议增加485中继器
1.2 变频器参数配置详解
E700变频器的通讯参数需要通过操作面板进行设置。以下是关键参数及其技术含义:
| 参数编号 | 设定值 | 功能说明 |
|---|---|---|
| Pr.117 | 1 | 站号地址,范围1-247 |
| Pr.118 | 192 | 波特率选择(192=9600bps) |
| Pr.119 | 8 | 数据位长度(8位) |
| Pr.120 | 2 | 停止位长度(2位) |
| Pr.121 | 9999 | 通讯超时(9999=不检测) |
| Pr.122 | 0.1 | 通讯校验间隔时间(秒) |
| Pr.123 | 2 | 通讯协议(2=RTU模式) |
| Pr.124 | 0 | 无CR/LF附加 |
参数设置完成后,必须断电重启变频器使设置生效。建议先用操作面板测试变频器本地运行是否正常,再接入通讯系统。
2. PLC端通讯配置与程序设计
2.1 PLC通讯参数设置
FX1N通过D8120特殊寄存器配置通讯参数。对于本例的9600bps/8数据位/1停止位/无校验设置,对应的十六进制值为H0087。参数计算逻辑如下:
code复制位定义:
b15-b12:保留(0)
b11:和校验有无(0=无)
b10:停止位(0=1位,1=2位)
b9-b8:数据长度(01=7位,10=8位)
b7-b4:波特率(1000=9600)
b3-b0:协议模式(0111=专用协议)
组合计算:
0 0 0 0 | 0 | 1 | 10 | 1000 | 0111
→ 0000 0100 1000 0111
→ 0x0487 (实际验证应为H0087)
在PLC程序中,通常使用上电初始化脉冲M8002进行参数设置:
assembly复制LD M8002
MOV H87 D8120
2.2 Modbus功能码解析
理解Modbus功能码是编程的基础。本项目中涉及的主要功能码:
| 功能码 | 名称 | 作用 | 对应PLC指令 |
|---|---|---|---|
| 01H | 读线圈状态 | 读取变频器运行状态 | RSMOV K1 K1 |
| 03H | 读保持寄存器 | 读取输出频率等数据 | RSMOV K1 K3 |
| 06H | 写单寄存器 | 写入频率/控制命令 | RS指令 |
2.3 核心程序段实现
2.3.1 数据读取程序
assembly复制LD M8000 ; 运行常ON触点
RSMOV K1 K1 D100 K4 ; 读取站号1的线圈状态(功能码01H)
RSMOV K1 K3 D110 K2 ; 读取站号1的保持寄存器(功能码03H)
- D100:存储返回的运行状态(bit0=运行中,bit1=正转等)
- D110:存储返回的频率值(需进行量纲转换)
2.3.2 控制命令写入
assembly复制LD X0 ; 正转按钮
RS D0 K6 K1 ; 写入正转命令(功能码06H)
LD X1 ; 反转按钮
RS D1 K6 K1 ; 写入反转命令
LD X2 ; 停止按钮
RS D2 K6 K1 ; 写入停止命令
其中D0-D2预先存储了对应的控制代码:
assembly复制MOV K1 D0 ; 正转命令=1
MOV K2 D1 ; 反转命令=2
MOV K0 D2 ; 停止命令=0
3. 触摸屏界面设计与数据对接
3.1 威纶通触摸屏配置要点
-
频率显示元件:
- 绑定寄存器:D110
- 数据显示格式:32位浮点
- 量程转换:0-5000 → 0.0-50.00Hz
-
状态指示灯:
- 运行指示:绑定D100.0
- 故障指示:绑定D100.3
- 正反转指示:分别绑定D100.1和D100.2
-
控制按钮:
- 正转按钮:写入M0
- 反转按钮:写入M1
- 停止按钮:写入M2
- 频率设定:绑定D200(需在PLC中做浮点转换)
3.2 频率设定处理
E700变频器的频率设定寄存器地址为40014H(十进制对应40020),在程序中需要特殊处理:
assembly复制; 频率设定值处理
LD M3 ; 频率设定确认按钮
FLT D200 D210 ; 将整数转换为浮点
MOV K13 D300 ; 寄存器地址偏移量(40014H-40001H)
RS D300 K6 K1 ; 写入频率设定值
4. 调试技巧与常见问题排查
4.1 通讯故障排查步骤
-
基础检查:
- 确认485接线正确,A-B线没有反接
- 检查终端电阻是否启用
- 验证PLC与变频器供电稳定
-
信号测量:
- 使用万用表测量SDA-SDB间电压(正常应有2-6V波动)
- 测量SG与其他端子间电阻(应无短路)
-
参数验证:
- 确认双方波特率、数据格式完全一致
- 检查站号是否冲突
4.2 典型错误代码处理
| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
| 通讯超时 | 波特率不匹配 | 检查D8120与Pr.118设置 |
| 数据错误 | 校验方式不一致 | 确认Pr.121设置 |
| 无响应 | 站号设置错误 | 核对Pr.117与程序中的站号 |
| 随机错误 | 电磁干扰 | 检查布线,增加磁环 |
4.3 性能优化建议
- 对于实时性要求高的场合,可将Pr.121(通讯超时)设置为200ms
- 多设备通讯时,适当增加Pr.122(校验间隔)到0.2-0.5s
- 长距离通讯建议降低波特率到4800bps
- 在PLC程序中增加通讯错误计数和重试机制
5. 项目扩展与适配
5.1 支持其他变频器型号
本方案框架可适配任何支持Modbus RTU的变频器,主要修改点:
-
台达VFD-M系列:
- 频率寄存器地址:2000H
- 控制命令代码:1=正转,2=反转
-
西门子MM420:
- 需要设置P2010=6(波特率9600)
- 控制字地址:40001H
5.2 上位机集成方案
通过Python实现PC与PLC的Modbus通讯:
python复制import minimalmodbus
instrument = minimalmodbus.Instrument('COM3', 1) # 端口,站号
instrument.serial.baudrate = 9600
# 读取频率
frequency = instrument.read_register(13, 1) # 寄存器地址13(40014H)
# 写入控制命令
instrument.write_register(0, 1) # 正转命令
实际项目中,建议采用OPC UA等标准化接口实现更可靠的数据交换。
