1. 项目概述
在工业自动化控制系统中,PLC与变频器的通讯是实现电机精确控制的关键环节。作为一名从事自动化控制十余年的工程师,我经常遇到西门子Smart200 PLC与不同品牌变频器通讯的需求。今天我将分享两个最常用的通讯方案:与台达VFD-M系列变频器以及三菱E700/D700变频器的完整通讯实现。
这两个方案都经过实际项目验证,包含详细的接线图、参数设置和可直接使用的程序代码。特别适合以下场景:
- 需要快速搭建PLC与变频器通讯系统的工程师
- 面临多品牌变频器集成问题的项目团队
- 希望了解工业通讯协议实际应用的初学者
2. 通讯基础与方案选型
2.1 RS485通讯原理
工业现场最常用的通讯方式是RS485,它采用差分信号传输,具有以下特点:
- 抗干扰能力强:差分信号能有效抑制共模干扰
- 传输距离远:理论可达1200米(波特率降低时)
- 支持多点连接:一条总线可连接多个设备
在PLC与变频器通讯中,我们通常使用Modbus RTU协议,它是基于RS485的典型应用协议。
2.2 为什么选择自由口通讯
西门子Smart200 PLC提供两种串口通讯方式:
- 预定义协议(如Modbus主站)
- 自由口通讯(用户自定义协议)
我选择自由口通讯的原因:
- 灵活性高:可适配不同品牌的变频器协议
- 资源占用少:不需要额外加载库文件
- 响应速度快:直接控制底层通讯接口
注意:自由口通讯需要开发者对协议有较深理解,适合有一定经验的工程师
3. 与台达VFD-M变频器通讯实现
3.1 硬件连接详解
3.1.1 接线图与引脚定义
台达VFD-M系列变频器的通讯接口为RS485,具体引脚定义:
- SD+:数据正端
- SD-:数据负端
- GND:信号地
西门子Smart200的通讯端口定义:
- 端口3:RS485信号B(对应标准RS485的B线)
- 端口4:RS485信号A(对应标准RS485的A线)
3.1.2 实际接线注意事项
- 使用双绞屏蔽线:推荐使用AWG22规格的屏蔽双绞线
- 终端电阻设置:长距离通讯时(>50米),需要在总线两端加120Ω终端电阻
- 接地处理:屏蔽层单端接地(通常在PLC侧接地)
3.2 变频器参数设置
台达VFD-M需要设置以下关键参数:
| 参数号 | 参数名称 | 设置值 | 说明 |
|---|---|---|---|
| P00 | 主频率输入来源 | 2 | 通讯给定频率 |
| P01 | 运转信号来源 | 2 | 通讯控制启停 |
| P02 | 控制模式选择 | 2 | 通讯控制模式 |
| P20 | 通讯波特率 | 0 | 9600bps |
| P21 | 通讯数据格式 | 1 | 8N1格式 |
| P22 | 通讯应答延迟 | 0 | 无延迟 |
| P23 | 通讯站号 | 1 | 可设置为1-247 |
实操技巧:修改参数后需断电重启变频器才能生效
3.3 PLC程序开发
3.3.1 通讯初始化
stl复制// 网络1:初始化通讯端口
LD SM0.1 // 首次扫描时执行
MOVB 16#09, SMB30 // 设置自由口:9600bps,8位数据,无校验
MOVB 16#0A, SMB87 // 使能接收功能,字符间隔超时控制
MOVW 16#000A, SMW90 // 字符间隔超时10ms
MOVB 0, SMB94 // 最大接收字节数(动态设置)
ATCH INT_0, 23 // 接收完成中断
ATCH INT_1, 9 // 发送完成中断
ENI // 全局中断使能
3.3.2 数据帧构建与发送
台达变频器采用Modbus RTU协议,写单个寄存器命令格式:
| 字段 | 站号 | 功能码 | 寄存器地址 | 数据 | CRC校验 |
|---|---|---|---|---|---|
| 字节数 | 1 | 1 | 2 | 2 | 2 |
示例:设置频率为50Hz(对应十六进制3200)
stl复制// 网络2:构建发送数据
LD SM0.0
MOVB 1, VB100 // 站号
MOVB 6, VB101 // 功能码(写单个寄存器)
MOVW 16#000F, VW102 // 寄存器地址(频率设定)
MOVW 16#3200, VW104 // 频率值(50Hz)
MOVB 6, VB106 // 数据长度
MOVD &VB100, VD200 // 发送缓冲区指针
XMT VB100, 0 // 通过端口0发送
3.3.3 中断处理程序
stl复制// 网络3:接收中断(INT_0)
LD SM0.0
// 校验接收数据
MOVB SMB86, VB50 // 接收状态字节
MOVB SMB88, VB51 // 接收字节数
// 数据解析逻辑...
CRETI
// 网络4:发送中断(INT_1)
LD SM0.0
// 可设置发送完成标志位
MOVB 1, MB10 // 发送完成标志
CRETI
4. 与三菱E700/D700变频器通讯实现
4.1 硬件连接差异
三菱变频器RS485接口定义:
- RDA:接收数据+
- SDA:发送数据+
- SG:信号地
接线要点:
- Smart200的B(3)接RDA
- Smart200的A(4)接SDA
- 必须连接SG到PLC侧的GND
4.2 变频器参数设置
三菱变频器需要设置以下关键参数:
| 参数号 | 参数名称 | 典型值 | 说明 |
|---|---|---|---|
| Pr.117 | 站号 | 1 | 范围1-31 |
| Pr.118 | 波特率 | 96 | 9600bps |
| Pr.119 | 数据长度/校验 | 11 | 8N1格式 |
| Pr.120 | 通讯重试次数 | 3 | 建议值 |
| Pr.121 | 通讯超时 | 1 | 1秒 |
| Pr.122 | 校验间隔 | 0 | 无校验 |
| Pr.123 | 等待时间 | 9999 | 无等待 |
| Pr.79 | 运行模式 | 2 | 外部模式 |
4.3 PLC程序适配
4.3.1 协议差异处理
三菱变频器使用三菱专用协议(与Modbus类似但有差异),主要区别:
- 站号范围不同(1-31)
- 寄存器地址映射不同
- 控制命令代码不同
4.3.2 关键程序修改
启动命令示例(正转启动):
stl复制// 构建三菱变频器命令
MOVB 1, VB100 // 站号
MOVB 6, VB101 // 写命令
MOVW 16#2000, VW102 // 运行命令寄存器
MOVW 16#0002, VW104 // 正转命令
MOVB 6, VB106 // 数据长度
XMT VB100, 0 // 发送
频率设置示例(30Hz):
stl复制MOVB 1, VB100 // 站号
MOVB 6, VB101 // 写命令
MOVW 16#1000, VW102 // 频率设定寄存器
MOVW 16#0BB8, VW104 // 3000对应30.00Hz
MOVB 6, VB106 // 数据长度
XMT VB100, 0 // 发送
5. 调试技巧与常见问题
5.1 通讯故障排查步骤
-
检查物理连接
- 确认接线正确无误
- 测量A-B线间电阻(终端电阻应≈60Ω)
-
验证参数设置
- 确认双方波特率、数据格式一致
- 检查站号是否冲突
-
监控通讯信号
- 使用示波器观察信号波形
- 检查信号幅值(正常应>1.5V)
5.2 典型错误代码处理
| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
| 无响应 | 接线错误 | 检查A/B线是否接反 |
| 乱码 | 波特率不匹配 | 核对双方波特率设置 |
| 偶发通讯失败 | 干扰严重 | 加磁环、检查接地 |
| CRC错误 | 信号衰减 | 缩短距离或降低波特率 |
5.3 性能优化建议
-
增加通讯超时处理
stl复制// 在发送命令后启动定时器 LD M10.0 // 发送命令触发 TON T37, 1000 // 1秒超时 // 超时处理 LD T37 MOVB 1, MB20 // 通讯超时标志 R M10.0, 1 // 复位触发 -
实现通讯重试机制
stl复制// 重试计数器 LD SM0.0 MOVB VB200, VB201 // 当前重试次数 MOVB 3, VB202 // 最大重试次数 // 重试逻辑 LD M20.0 // 通讯失败标志 AB<= VB201, VB202 INC VB201 MOVB 1, M10.0 // 触发重试
6. 项目应用扩展
在实际项目中,我们还可以进一步优化这个通讯方案:
-
多变频器轮询控制
- 通过改变站号实现多设备控制
- 设计合理的轮询间隔(建议≥100ms)
-
状态监测与报警
- 定期读取运行状态、电流、故障代码
- 实现异常自动处��逻辑
-
参数批量设置
- 开发参数配置界面
- 实现参数组保存/恢复功能
我在最近一个包装线项目中应用这套方案,成功实现了Smart200同时控制8台不同品牌变频器,系统已稳定运行超过6000小时。关键经验是:
- 为每个通讯命令添加严格的超时控制
- 重要参数设置后增加验证读取环节
- 定期维护通讯连接状态监测日志
