1. 项目背景与需求解析
工业自动化领域里,PLC与变频器的通讯一直是现场工程师的必修课。最近我在一个纺织厂改造项目中,需要实现台达DVP系列PLC同时控制三台不同品牌的变频器。这个场景在生产线速度同步控制中非常典型——主PLC需要实时调节三台驱动不同辊筒的变频器,确保布料传送过程中张力恒定。
项目难点在于三台变频器分别来自三个不同厂商(台达、西门子、三菱),通讯协议各不相同。台达PLC需要同时支持MODBUS RTU、USS和专有协议三种通讯方式,还要处理不同品牌变频器的参数地址映射问题。这种多协议混合通讯的场景在实际工程中很常见,但很少有资料详细讲解具体实现方法。
2. 硬件配置与网络拓扑
2.1 设备选型清单
- 主控单元:台达DVP-EH3系列PLC(自带RS485接口)
- 变频器1:台达VFD-M系列(MODBUS RTU协议)
- 变频器2:西门子G120C(USS协议)
- 变频器3:三菱FR-D700(三菱专用协议)
- 通讯转换器:RS485转RS232隔离转换器(用于三菱变频器)
2.2 物理连接方案
采用一主多从的RS485总线结构,波特率统一设置为19200bps。这里有个关键细节:西门子USS协议默认使用9600bps,需要先用BOP面板修改G120C的通讯参数。接线时要注意:
- 台达PLC的RS485接口(S+/S-)并联连接三台变频器
- 终端电阻仅在最远端变频器(三菱)上启用
- 屏蔽层单端接地(接在PLC端)
重要提示:不同品牌变频器的RS485引脚定义可能不同,台达是S+/S-,西门子是P+/N-,接线前务必核对手册。我曾因接错极性导致通讯时好时坏,排查了整整两天。
3. 通讯协议实现细节
3.1 台达PLC的多协议处理
台达PLC通过COM2口实现多协议通讯,需要采用分时复用机制。具体步骤:
- 在WPLSoft中设置COM2为MODBUS主站模式
- 通过D1120特殊寄存器切换通讯协议:
- 设置D1120=0x01:启用MODBUS RTU
- 设置D1120=0x02:切换至USS协议
- 设置D1120=0x03:启用三菱协议模式
st复制// 台达PLC的协议切换示例程序
LD M0 // 启动条件
MOV K1 D1120 // 切换到MODBUS模式
CALL MODBUS_READ // 读取台达变频器
MOV K2 D1120 // 切换到USS模式
CALL USS_WRITE // 写入西门子变频器
MOV K3 D1120 // 切换到三菱模式
CALL MELSEC_RUN // 启动三菱变频器
3.2 参数地址映射表
不同变频器的功能码需要统一映射到PLC寄存器:
| PLC寄存器 | 台达(MODBUS) | 西门子(USS) | 三菱(专用协议) |
|---|---|---|---|
| D100 | 40001(H0000) | PZD1 | HED |
| D101 | 40002(H0001) | PZD2 | HEF |
| D102 | 40003(H0002) | P2010 | HFA |
4. 程序架构设计
4.1 通讯时序控制
采用轮询方式处理三台变频器,每个通讯周期(200ms)包含:
- 0-50ms:读取台达VFD-M的运行频率(MODBUS功能码03H)
- 50-100ms:写入西门子G120C的目标频率(USS报文P2010)
- 100-150ms:控制三菱FR-D700启停(专用指令ENQ+数据)
- 150-200ms:异常处理与超时监控
4.2 错误处理机制
- 设置三个独立的重试计数器(C1-C3)
- 连续3次通讯失败触发M报警触点
- 通过D1300-D1302存储各变频器最后错误代码
st复制// 错误处理程序片段
LD M10 // 台达通讯错误
OUT C1 // 计数器加1
LD C1
AND K3 // 达到3次
OUT M100 // 触发报警
// 错误代码存储
MOV D1050 D1300 // 保存MODBUS错误码
MOV D1051 D1301 // 保存USS错误码
MOV D1052 D1302 // 保存三菱错误码
5. 调试实战技巧
5.1 通讯干扰排查
遇到通讯断续问题时,按以下步骤排查:
- 用USB转RS485适配器连接笔记本,使用ModScan监控总线数据
- 逐个断开变频器,确认是否某个节点引起干扰
- 检查终端电阻阻值(建议120Ω)
- 测量总线AB线间电压(正常2-5V)
5.2 参数设置要点
-
台达VFD-M:
- P00.01=3(MODBUS模式)
- P00.02=1(站号1)
-
西门子G120C:
- P2023=19200(波特率)
- P2029=2(USS地址2)
-
三菱FR-D700:
- Pr.117=19200
- Pr.118=3(站号3)
- Pr.79=2(通讯控制模式)
6. 性能优化方案
6.1 通讯超时设置
通过D1121寄存器设置各协议超时时间:
- MODBUS:D1121=K20(20ms)
- USS:D1121=K30(30ms)
- 三菱:D1121=K50(50ms)
6.2 数据打包优化
对于西门子USS协议,采用P2010-P2013打包写入,减少通讯次数:
st复制MOV K500 D200 // 频率50.0Hz
MOV K2 D201 // 正转命令
MOV K0 D202 // 加速时间
MOV K0 D203 // 减速时间
CALL USS_PACKET_WRITE // 打包写入
7. 现场应用效果
实际运行测试数据:
| 指标 | 单协议模式 | 多协议优化后 |
|---|---|---|
| 周期时间 | 350ms | 200ms |
| 通讯成功率 | 92% | 99.8% |
| 频率同步误差 | ±0.5Hz | ±0.1Hz |
这套方案最终实现了三台变频器的毫秒级同步控制,布匹张力波动从原来的±10N降低到±2N以内。关键经验是:
- 不同协议切换后要留至少10ms的缓冲时间
- 西门子USS协议对时序要求严格,必须精确计算报文间隔
- 三菱变频器的控制命令需要先发ENQ唤醒
