FX1S PLC 与 D700 变频器的 RS485 通讯实现方案
FX1S PLC 本身无内置 RS485 端口,需通过扩展模块 FX1N-485-BD或FX2N-485-BD实现与三菱 D700 变频器的 RS485 通讯,核心协议为三菱专用协议(MC 协议) 或 Modbus-RTU 协议,以下是完整的硬件接线、参数配置、程序编写及故障排查步骤。
一、 硬件准备与接线
1. 硬件清单
| 设备 / 模块 | 作用 | 关键说明 |
|---|---|---|
| FX1S PLC | 主站控制器 | 需搭配 RS485 扩展板 |
| FX1N-485-BD | RS485 通讯扩展板 | 插在 FX1S 的 BD 扩展槽上 |
| D700 变频器 | 从站设备 | 内置 RS485 端口(端子为 SD/RD/RDA/SDA) |
| 双绞屏蔽线 | 通讯线缆 | 建议使用 RVSP 2×0.75mm²,减少干扰 |
| 终端电阻(120Ω) | 信号匹配 | 接在总线两端的 A/B 线之间 |
2. 接线方法(核心:A-A、B-B 对应)
FX1N-485-BD 与 D700 变频器的 RS485 端口引脚定义及接线如下:
| FX1N-485-BD 端子 | 信号含义 | D700 变频器端子 | 信号含义 | 接线要求 |
|---|---|---|---|---|
| RDA | 接收数据 +(A) | SDA | 发送数据 +(A) | 直接相连 |
| SDA | 发送数据 +(A) | SDA | 发送数据 +(A) | 直接相连 |
| RDB | 接收数据 -(B) | SDB | 发送数据 -(B) | 直接相连 |
| SDB | 发送数据 -(B) | SDB | 发送数据 -(B) | 直接相连 |
| SG | 信号地 | SG | 信号地 | 必须相连,共地抗干扰 |
注意事项:
二、 通讯参数配置(主从站参数必须一致)
1. D700 变频器参数配置(关键!)
D700 需设置通讯协议、站号、波特率等参数,默认支持Modbus-RTU,也可切换为 MC 协议,推荐用 Modbus-RTU(通用性强)。
| 参数代码 | 参数名称 | 设置值 | 说明 |
|---|---|---|---|
| Pr.117 | 通讯站号 | 1~31(例:1) | 从站地址,多台变频器需设不同值 |
| Pr.118 | 波特率 | 96(对应 9600bps) | 可选:12 (1200)、24 (2400)、48 (4800)、96 (9600) |
| Pr.119 | 数据位 / 停止位 / 校验位 | 0 | 0=8 位数据 + 1 位停止 + 偶校验;1=8 位 + 1 位 + 奇校验;2=7 位 + 1 位 + 偶校验 |
| Pr.120 | 通讯重试次数 | 0~10(例:3) | 通讯失败后重试次数,0 为不重试 |
| Pr.121 | 通讯超时时间 | 0~255(例:5) | 单位:100ms,5=500ms,超时变频器报警 |
| Pr.551 | 协议选择 | 0(默认) | 0=Modbus-RTU;1=MC 协议 |
参数设置步骤:
2. FX1S PLC 通讯参数配置(通过程序设置)
FX1S 需通过RS 指令(自由口通讯)配置 485 模块参数,与变频器参数保持一致,程序示例如下:
plc
// 通讯参数初始化:波特率9600、偶校验、8数据位、1停止位 MOV H0C8 D8120 // D8120=0C8H:波特率9600bps,偶校验,8N1 MOV K9 D8121 // D8121=9:通讯超时时间9×10ms=90ms MOV K0 D8122 // D8122=0:无硬件握手,软件握手
关键寄存器说明:
三、 程序编写(Modbus-RTU 协议,PLC 为主站)
1. Modbus-RTU 指令格式(关键)
PLC 通过RS 指令发送 Modbus-RTU 帧,实现对 D700 的频率写入、运行 / 停止控制、状态读取,核心功能码:
D700 变频器的 Modbus 寄存器地址映射(常用):
| 功能 | Modbus 地址(十进制) | 操作 | 说明 |
|---|---|---|---|
| 运行频率设定 | 40001 | 写 | 对应 Pr.7,单位 0.01Hz,写入 5000=50.00Hz |
| 运行指令 | 40002 | 写 | 0 = 停止;1 = 正转;2 = 反转 |
| 输出频率读取 | 40003 | 读 | 实际输出频率,单位 0.01Hz |
| 运行状态读取 | 40004 | 读 | 0 = 停止;1 = 运行;2 = 故障 |
2. PLC 程序示例(以 “写入频率 + 启动变频器” 为例)
目标:PLC 发送指令,设置变频器频率为 50Hz,启动正转运行
plc
// 程序段1:通讯发送缓冲区赋值(Modbus-RTU帧) LD M0 // M0=启动触发信号 MOV H01 D20 // 站号:1 MOV H06 D21 // 功能码:06H(单寄存器写入) MOV H9C41 D22 // 寄存器地址:40001→十六进制9C41H(高字节在前) MOV H1388 D23 // 写入值:5000→十六进制1388H(对应50.00Hz) MOV K8 D24 // 发送字节数:8字节 // 程序段2:发送Modbus帧(RS指令) RS D20 K8 Y0 // RS(发送缓冲区起始地址, 字节数, 串行输出点) // Y0为RS指令的触发点,需设为PLC未使用的输出点 // 程序段3:等待发送完成,触发运行指令 LD M8123 // M8123=1:发送完成 MOV H01 D30 // 站号:1 MOV H06 D31 // 功能码:06H MOV H9C42 D32 // 寄存器地址:40002 MOV H0001 D33 // 写入值:1(正转运行) MOV K8 D34 // 发送字节数:8 RS D30 K8 Y0 // 发送运行指令
3. 状态读取程序示例(读取变频器输出频率)
plc
// 程序段4:发送读指令(功能码03H,读寄存器40003) LD M1 // M1=读取触发信号 MOV H01 D40 // 站号:1 MOV H03 D41 // 功能码:03H MOV H9C43 D42 // 寄存器地址:40003 MOV H0001 D43 // 读取寄存器数量:1 MOV K8 D44 // 发送字节数:8 RS D40 K8 Y0 // 发送读指令 // 程序段5:接收数据并解析(存入D50) LD M8122 // M8122=1:接收完成 MOV D45 D50 // D45-D46为接收的频率值(高字节+低字节) DIV K100 D50 D50 // 换算为实际频率:5000→50.00Hz


