信捷PLC与变频器的RS485通信
一、通信基础准备
1.1 硬件连接
RS485通信采用差分信号传输,抗干扰能力强,适合工业现场的长距离通信。
确认 PLC型号是否支持RS485。信捷XC系列、XD系列、XDH系列等机型通常配备RS485端口,标识为 A+、B- 或 RS485+、RS485-。
准备 通信线缆:
- 使用屏蔽双绞线,线径不小于0.5mm²
- 屏蔽层单端接地,接在PLC端或变频器端,不要两端同时接地
连接 线路:
- PLC的
A+接变频器的RS485+(或A、SDA等,不同品牌标识不同) - PLC的
B-接变频器的RS485-(或B、SDB等) - 在总线末端(最远端设备)安装 120Ω终端电阻
设置 变频器参数。以下以汇川MD500系列为例:
| 参数代码 | 参数名称 | 设定值 | 说明 |
|---|---|---|---|
F0-02 |
命令源选择 | 2 |
通讯命令通道 |
F0-03 |
主频率源A选择 | 9 |
通讯给定 |
FA-00 |
通讯波特率 | 3 |
9600bps(需与PLC一致) |
FA-01 |
数据格式 | 0 |
无校验,8位数据,1位停止位 |
FA-02 |
本机地址 | 1 |
变频器站号(可设1-247) |
1.2 通信协议说明
Modbus RTU是工业现场最常用的协议,帧结构如下:
| 字段 | 字节数 | 说明 |
|---|---|---|
| 从站地址 | 1 | 目标设备站号,如 0x01 |
| 功能码 | 1 | 0x03 读保持寄存器,0x06 写单个寄存器,0x10 写多个寄存器 |
| 数据 | N | 地址、数量、数值等 |
| CRC校验 | 2 | 低位在前,高位在后 |
常用功能码对应操作:
| 功能码 | 操作 |
|---|---|
0x03 |
读取 变频器参数、状态、当前频率等 |
0x06 |
写入 单个参数,如运行指令、频率设定 |
0x10 |
批量写入 多个参数 |
二、信捷PLC程序编写
2.1 串口初始化配置
信捷PLC使用 RS 指令进行串口通信配置。在程序首个扫描周期 执行 初始化。
打开 XCPPro或XDPPro编程软件,新建 工程。
编写 初始化程序(梯形图或指令表):
LD SM0 // 首次扫描接通
RS D0 K0 K0 K9600 K0 // 串口配置
RS 指令参数详解:
| 参数位置 | 含义 | 常用设定 |
|---|---|---|
| 第1操作数 | 发送数据首地址 | D0 或自定义数据寄存器 |
| 第2操作数 | 发送字节数 | K0 表示由指令动态控制 |
| 第3操作数 | 接收数据首地址 | D0 或自定义数据寄存器 |
| 第4操作数 | 波特率 | K9600、K19200、K38400 等 |
| 第5操作数 | 数据格式 | K0=8N1无校验,K1=8E1偶校验,K2=8O1奇校验 |
2.2 发送数据帧构造
以向变频器写入运行频率为例(频率值5000表示50.00Hz,放大100倍存储)。
计算 CRC校验值。信捷PLC无内置CRC指令,需调用 自定义子程序或预先计算。
CRC-16 (Modbus) 计算步骤:
- 初始化 CRC寄存器为
0xFFFF - 遍历 每个数据字节:
- CRC与当前字节进行 异或运算
- 右移 8位,检查 最低位
- 若最低位为1,与 多项式
0xA001异或
- 交换 高低字节,低位在前发送
编写 CRC计算子程序(ST语言或梯形图实现):
# 伪代码示意,实际用PLC指令实现
def calc_crc(data_bytes):
crc = 0xFFFF
for byte in data_bytes:
crc ^= byte
for i in range(8):
if crc & 0x0001:
crc = (crc >> 1) ^ 0xA001
else:
crc >>= 1
# 交换高低字节
return ((crc & 0xFF) << 8) | (crc >> 8)
2.3 典型通信程序实例
场景一:启动变频器正转,设定频率30.00Hz
Modbus帧构造(功能码 0x06):
| 字节 | 内容 | 说明 |
|---|---|---|
| 1 | 0x01 |
变频器站号 |
| 2 | 0x06 |
写单个寄存器 |
| 3 | 0x20 |
寄存器地址高字节(频率设定地址 0x2000) |
| 4 | 0x00 |
寄存器地址低字节 |
| 5 | 0x0B |
频率值高字节(30.00Hz = 3000 = 0x0BB8) |
| 6 | 0xB8 |
频率值低字节 |
| 7 | 0xCB |
CRC低字节(计算所得) |
| 8 | 0x89 |
CRC高字节 |
PLC程序实现:
LD X0 // 启动按钮
MOV H01 D100 // 站号
MOV H06 D101 // 功能码
MOV H20 D102 // 地址高字节
MOV H00 D103 // 地址低字节
MOV H0B D104 // 数据高字节(30.00Hz)
MOV H00 D105 // 预留,功能码0x06只写单个寄存器
# 调用CRC计算,结果存入D106、D107
RS D100 K8 D200 K9600 K0 // 发送8字节,接收存D200开始
场景二:读取变频器当前输出频率
读取保持寄存器 0x1000(汇川MD500实际输出频率地址):
LD X1 // 读取按钮
MOV H01 D100 // 站号
MOV H03 D101 // 功能码03,读保持寄存器
MOV H10 D102 // 地址高字节(0x1000)
MOV H00 D103 // 地址低字节
MOV H00 D104 // 读取数量高字节
MOV H01 D105 // 读取数量低字节(读1个寄存器)
# 计算CRC,存入D106、D107
RS D100 K8 D200 K9600 K0 // 发送请求
# 接收数据处理:D200开始为从站响应
# D200=站号, D201=功能码, D202=字节数, D203/D204=频率数据
2.4 使用Modbus指令简化开发
信捷XD/XDH系列支持专用Modbus指令,大幅降低开发难度。
配置 Modbus从站表:
LD SM0
MODBUSCFG K1 D500 K10 // 配置10个从站,参数表从D500开始
Modbus参数表结构(每个从站占用5个寄存器):
| 偏移 | 含义 |
|---|---|
| +0 | 从站站号 |
| +1 | 功能码 |
| +2 | 寄存器地址 |
| +3 | 数据数量或数值 |
| +4 | 读写触发及状态 |
执行 Modbus读写:
LD X2 // 触发条件
MODBUSX K1 D500 D600 // 执行第1号从站配置,结果存D600
三、常见故障排查
3.1 通信不通的排查流程
3.2 典型问题速查
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| 偶尔通信失败 | 电磁干扰、屏蔽层未接地 | 检查 屏蔽层单端接地,远离 动力线布线 |
| 所有站都无响应 | 总线短路、终端电阻两端都接 | 测量 A+与B-间电压,正常为2-6V;拆除 一端终端电阻 |
| 特定站号不通 | 该站地址冲突或设备故障 | 单独测试 该设备,更换 地址重试 |
| 数据值错误 | 寄存器地址错位、高低字节颠倒 | 核对 设备手册地址表,交换 高低字节解析顺序 |
| CRC校验错误 | 校验算法实现有误、数据被干扰 | 验证 CRC子程序,增加 通信重试机制 |
四、完整项目示例
4.1 控制要求
- 1台信捷XD5-60R PLC控制3台汇川变频器
- 实现:启动/停止/正反转控制、频率设定、运行状态读取、故障监控
4.2 硬件配置
| 设备 | 站号 | 功能 |
|---|---|---|
| PLC主站 | — | Modbus RTU主站 |
| 1#变频器 | 1 | 主轴驱动 |
| 2#变频器 | 2 | 送料驱动 |
| 3#变频器 | 3 | 收卷驱动 |
4.3 关键程序结构
轮询控制逻辑:
// D10=当前轮询站号, D11=当前操作类型
// 操作类型: 0=写频率, 1=写命令, 2=读状态
LD SM0
INC D10
CMP D10 K3 M0 // 站号超过3则复位
LD M0
MOV K1 D10 // 站号循环1-2-3
// 根据操作类型切换
LD D11 K0
CALL P0 // 调用写频率子程序
LD D11 K1
CALL P1 // 调用写命令子程序
LD D11 K2
CALL P2 // 调用读状态子程序
INC D11
CMP D11 K3 M3
LD M3
MOV K0 D11 // 操作类型循环0-1-2
写运行命令子程序(正转启动):
P1:
// 构造帧: 01 06 2000 0001 43CA (正转运行)
// 2000H为控制命令字地址,0001H=正转,0002H=反转,0005H=停止
MOV D10 D100 // 站号
MOV H06 D101 // 功能码
MOV H20 D102 // 地址高
MOV H00 D103 // 地址低(控制命令字)
// 根据HMI设定决定命令值
LD M100 // 正转标志
MOV H00 D104
MOV H01 D105 // 正转命令0001H
LD M101 // 反转标志
MOV H00 D104
MOV H02 D105 // 反转命令0002H
LD M102 // 停止标志
MOV H00 D104
MOV H05 D105 // 停止命令0005H
CALL CRC_CALC // 计算CRC
RS D100 K8 D200 K9600 K0
RET
五、高级应用技巧
5.1 通信超时与重试
工业现场需考虑通信可靠性,加入 超时检测和自动重试:
LD X10 // 触发通信
SET M50 // 通信中标志
MOV K0 D20 // 清零超时计数器
TMR T0 K50 // 500ms超时定时器
// 通信完成检测
LD SM136 // RS指令完成标志
RST M50 // 清除通信中标志
RST T0
// 超时处理
LD T0
INC D20 // 超时次数+1
CMP D20 K3 M51 // 超过3次报警
LD M51
SET Y0 // 通信故障报警输出
5.2 多寄存器批量写入
使用功能码 0x10 可同时修改频率和运行命令,减少通信次数:
| 字节 | 内容 | 说明 |
|---|---|---|
| 1 | 0x01 |
站号 |
| 2 | 0x10 |
写多个寄存器 |
| 3-4 | 0x2000 |
起始地址(控制字) |
| 5-6 | 0x0002 |
寄存器数量(2个) |
| 7 | 0x04 |
字节数(2×2=4) |
| 8-9 | 0x0001 |
数据1:正转命令 |
| 10-11 | 0x1388 |
数据2:频率50.00Hz |
批量写入特别适合需要同时给定的场景,避免频率和命令分两次发送造成的时序问题。
六、参数地址速查
汇川MD500系列常用通信地址(其他品牌请参考对应手册):
| 地址 | 名称 | 说明 |
|---|---|---|
0x1000 |
运行频率 | 当前实际输出频率×100 |
0x1001 |
设定频率 | 当前目标频率×100 |
0x1002 |
母线电压 | 单位V |
0x1003 |
输出电压 | 单位V |
0x1004 |
输出电流 | 实际值×10,单位A |
0x2000 |
控制命令字 | 1=正转,2=反转,5=停止,6=自由停车,7=故障复位 |
0x2001 |
频率设定 | 目标频率×100 |
七、调试工具推荐
使用 以下工具可大幅提升调试效率:
- 串口调试助手:如Modbus Poll、SSCOM,验证 帧格式正确性
- USB转RS485转换器:电脑直连总线监控 通信数据
- 示波器:观察 A/B差分信号波形,判断物理层质量
- 信捷触摸屏:内置Modbus主站功能,可作为备用主站测试 变频器

暂无评论,快来抢沙发吧!