在工业自动化控制系统中,PLC与变频器的通讯一直是现场实施的关键环节。这次我参与的自动化改造项目,需要实现三菱FX1N PLC对三台台达MS300变频器的集中控制。核心需求包括:
选择Modbus RTU协议主要基于三点考虑:
主控单元:
通讯模块:
执行单元:
硬件连接要点:
重要提示:MS300的RS485接口定义与常规不同,其SG端子实际为信号地,需与485BD的SDA/SDB形成完整回路。
标准请求帧格式:
| 字段 | 站号 | 功能码 | 起始地址 | 数据长度 | 数据区 | CRC校验 |
|---|---|---|---|---|---|---|
| 字节 | 1 | 1 | 2 | 2 | N | 2 |
台达MS300特殊寄存器:
关键参数设置:
assembly复制MOV K6 D8120 // 通讯格式设置
// b0-b2: 波特率(011=9600)
// b3: 停止位(0=1bit)
// b4-b5: 校验(01=偶校验)
// b7: 协议(0=无协议)
RS指令详解:
assembly复制RS D100 D200 K8 K10
// D100: 发送缓冲区首地址
// D200: 接收缓冲区首地址
// K8: 发送字节数
// K10: 接收缓冲区长度
assembly复制// 频率设定子程序
LD M0 // 启动条件
MOV K8192 D0 // 寄存器地址2000H
MOV K50 D2 // 设定频率50.00Hz
MOV K10 D4 // 目标站号
MOV H06 D6 // 功能码06H(写单寄存器)
CALL P10 // 调用通讯子程序
// 正转控制
LD M1
MOV K8193 D0 // 寄存器地址2001H
MOV K1 D2 // 正转指令01H
MOV K10 D4 // 目标站号
MOV H06 D6 // 功能码06H
CALL P10
assembly复制P10:
// 构建Modbus帧
MOV D4 D100 // 站号
MOV D6 D101 // 功能码
MOV D0 D102 // 寄存器地址高字节
MOV D0+1 D103 // 寄存器地址低字节
MOV D2 D104 // 数据高字节
MOV D2+1 D105 // 数据低字节
// CRC计算
CALL P20 // CRC计算子程序
// 发送指令
SET M8122 // 发送请求
WAIT M8123 // 等待发送完成
RST M8122
// 接收处理
WAIT M8123 // 等待接收完成
... // 数据解析部分
RET
MCGS组态要点:
操作建议:增加频率渐变功能,避免突变导致电机冲击。
通讯超时:
数据错误:
assembly复制LD M8000
OUT T0 K50 // 50ms超时定时器
实际调试中发现,当通讯距离超过50米时,建议增加RS485中继器。我在某生产线项目中采用这种方案后,通讯稳定性从原来的92%提升到99.8%。