1. 项目概述
最近完成了一个工业自动化控制项目,使用三菱FX5U PLC通过专用协议与三菱E700变频器进行通讯,并配合昆仑通态TPC7022NI触摸屏实现人机交互。这个方案在实际生产线中已经稳定运行了3个月,今天就来详细分享一下具体实现过程和经验心得。
在工业控制领域,PLC与变频器的通讯一直是自动化工程师需要掌握的核心技能。相比传统的硬接线控制方式,通讯控制具有布线简单、参数调整灵活、可扩展性强等优势。三菱的专用协议通讯方式相比Modbus等通用协议,具有更高的传输效率和更丰富的功能支持。
2. 硬件配置与连接
2.1 硬件选型说明
本次项目使用的核心硬件包括:
- 三菱FX5U-32MT/ES PLC:32点晶体管输出型,内置RS485通讯接口
- 三菱FR-E700-0.75K变频器:0.75kW功率,支持专用协议通讯
- 昆仑通态TPC7022NI触摸屏:7英寸,支持三菱协议
选择FX5U是因为它相比FX3U系列性能更强,内置的RS485接口可以直接用于变频器通讯,无需额外扩展通讯模块。E700变频器是经济型产品,但完全满足一般调速控制需求。
2.2 硬件连接详解
PLC与变频器的接线需要特别注意以下几点:
-
通讯线缆选择:
- 使用屏蔽双绞线(如BELDEN 9841)
- 屏蔽层单端接地(通常在PLC侧接地)
- 线径不小于0.5mm²
-
端子连接:
- FX5U的RS485接口对应端子为SDA、SDB、SG
- E700变频器的通讯端子为PU接口的2、1、5脚
- 具体连接方式:
- PLC SDA → 变频器PU-2(S+)
- PLC SDB → 变频器PU-1(S-)
- PLC SG → 变频器PU-5(接地)
-
终端电阻设置:
- 在最后一个变频器的PU接口上安装120Ω终端电阻
- 通过PU接口的跳线开关设置
注意:通讯线缆应远离动力线敷设,最小平行间距不小于30cm,交叉时应垂直交叉。
3. 参数配置
3.1 变频器参数设置
E700变频器需要设置以下关键参数:
| 参数号 | 参数名称 | 设定值 | 说明 |
|---|---|---|---|
| Pr.117 | 站号 | 1 | 变频器在通讯网络中的地址 |
| Pr.118 | 通讯速率 | 96 | 对应9600bps |
| Pr.119 | 停止位长 | 10 | 1位停止位 |
| Pr.120 | 奇偶校验 | 2 | 偶校验 |
| Pr.121 | 通讯重试次数 | 3 | 通讯错误时重试3次 |
| Pr.122 | 通讯校验时间 | 9999 | 不进行通讯校验 |
| Pr.123 | 等待时间设定 | 0 | 无等待时间 |
| Pr.124 | CR/LF选择 | 1 | 有CR无LF |
| Pr.79 | 运行模式 | 1 | 通讯运行模式 |
设置步骤:
- 按MODE键进入参数设定模式
- 旋转旋钮选择参数号
- 按SET键进入参数值设定
- 旋转旋钮调整参数值
- 按SET键确认
- 长按SET键2秒保存
3.2 PLC参数设置
在GX Works3中配置PLC参数:
- 打开"参数"→"PLC参数"
- 在"内置端口设置"中配置:
- 协议:专用协议
- 通讯速率:9600bps
- 数据位:7位
- 停止位:1位
- 校验:偶校验
- 在"PLC系统设置"中:
- 设置适当的扫描周期(建议10ms)
- 启用通讯中断功能
4. 程序设计
4.1 通讯协议分析
三菱专用协议采用ASCII码格式,基本帧结构如下:
code复制[控制代码][站号][指令代码][数据][校验和][结束代码]
常用指令代码:
- HFA:频率写入
- HED:运行指令
- H7A:频率读取
- H7B:输出电流读取
校验和为站号到数据的ASCII码和的最低字节。
4.2 PLC程序实现
4.2.1 变量定义
st复制// 触摸屏交互变量
VAR
// HMI输入
StartCmd AT %MX100 : BOOL; // 启动命令
StopCmd AT %MX101 : BOOL; // 停止命令
FreqSet AT %MD100 : REAL; // 频率设定值(0.0-50.0Hz)
AccTime AT %MD104 : UINT; // 加速时间(0.1-3600s)
DecTime AT %MD106 : UINT; // 减速时间(0.1-3600s)
// HMI输出
RunStatus AT %MX200 : BOOL; // 运行状态
FaultStatus AT %MX201 : BOOL; // 故障状态
ActualFreq AT %MD200 : REAL; // 实际输出频率
OutputCurrent AT %MD204 : REAL; // 输出电流
// 内部变量
TxBuffer[20] : BYTE; // 发送缓冲区
RxBuffer[20] : BYTE; // 接收缓冲区
ComErrorCount : UINT; // 通讯错误计数
LastUpdateTime : TIME; // 最后更新时间
END_VAR
4.2.2 通讯处理程序
st复制// 主循环程序
IF (StartCmd AND NOT RunStatus) THEN
// 发送启动命令
TxBuffer[0] := 16#05; // ENQ
TxBuffer[1] := 16#31; // 站号'1'
TxBuffer[2] := 16#45; // 'E'
TxBuffer[3] := 16#44; // 'D'
TxBuffer[4] := 16#30; // '0'正向启动
TxBuffer[5] := 16#30; // '0'
TxBuffer[6] := CalcCheckSum(TxBuffer, 1, 5);
TxBuffer[7] := 16#0D; // CR
RS485_SEND(TxBuffer, 8);
ComTimer(100);
END_IF
// 频率设定处理
IF (FreqSet <> LastFreqSet) THEN
// 将频率值转换为0-4000对应0-50.00Hz
FreqHex := REAL_TO_UINT(FreqSet * 80.0);
TxBuffer[0] := 16#05; // ENQ
TxBuffer[1] := 16#31; // 站号'1'
TxBuffer[2] := 16#46; // 'F'
TxBuffer[3] := 16#41; // 'A'
TxBuffer[4] := BYTE_TO_HEX(FreqHex >> 8);
TxBuffer[5] := BYTE_TO_HEX(FreqHex AND 16#FF);
TxBuffer[6] := CalcCheckSum(TxBuffer, 1, 5);
TxBuffer[7] := 16#0D; // CR
RS485_SEND(TxBuffer, 8);
ComTimer(100);
LastFreqSet := FreqSet;
END_IF
// 状态读取处理
IF (ComTimer.Q) THEN
// 读取运行频率
TxBuffer[0] := 16#05; // ENQ
TxBuffer[1] := 16#31; // 站号'1'
TxBuffer[2] := 16#37; // '7'
TxBuffer[3] := 16#41; // 'A'
TxBuffer[4] := 16#30; // '0'
TxBuffer[5] := 16#30; // '0'
TxBuffer[6] := CalcCheckSum(TxBuffer, 1, 5);
TxBuffer[7] := 16#0D; // CR
RS485_SEND(TxBuffer, 8);
ComTimer(200);
END_IF
// 接收处理
IF (RS485_RECEIVE(RxBuffer, 20)) THEN
// 解析返回数据
IF (RxBuffer[0] = 16#06) THEN // ACK
// 命令执行成功
ComErrorCount := 0;
ELSIF (RxBuffer[0] = 16#15) THEN // NAK
// 命令执行失败
ComErrorCount := ComErrorCount + 1;
ELSE
// 数据返回帧
ActualFreq := (HEX_TO_BYTE(RxBuffer[4]) << 8 + HEX_TO_BYTE(RxBuffer[5])) / 80.0;
RunStatus := (HEX_TO_BYTE(RxBuffer[6]) AND 16#01) <> 0;
FaultStatus := (HEX_TO_BYTE(RxBuffer[7]) AND 16#80) <> 0;
END_IF
END_IF
5. 触摸屏界面设计
昆仑通态TPC7022NI触摸屏使用MCGS嵌入版组态软件进行开发,主要界面包括:
5.1 主控制界面
- 频率设定输入框:0.00-50.00Hz,小数点后2位
- 启动/停止按钮:带状态指示灯
- 实际频率显示:数字+模拟表盘
- 输出电流显示:数字+柱状图
- 故障报警指示区
5.2 参数设置界面
- 加速时间设定:0.1-3600秒
- 减速时间设定:0.1-3600秒
- 电机额定参数设置
- 通讯参数设置(密码保护)
5.3 监控界面
- 运行时间统计
- 故障历史记录
- I/O状态监控
- 通讯状态监控
6. 调试经验与问题解决
6.1 常见问题排查
-
通讯无响应
- 检查接线是否正确,特别是SDA/SDB是否接反
- 确认终端电阻是否安装
- 使用示波器检查信号波形
-
偶发性通讯中断
- 检查接地是否良好
- 增加通讯重试机制
- 调整通讯超时时间
-
数据错误
- 确认双方通讯参数一致
- 检查校验和计算是否正确
- 降低通讯速率测试
6.2 性能优化建议
-
通讯时序优化
- 将状态查询与命令发送分开处理
- 非必要不进行频繁参数写入
- 采用变化触发机制,只有参数变化时才发送
-
程序结构优化
- 使用状态机管理通讯流程
- 添加通讯超时处理
- 实现通讯错误自动恢复
-
抗干扰措施
- 通讯线使用独立线槽
- 在PLC侧加装信号隔离器
- 变频器侧加装磁环
7. 项目扩展方向
-
多变频器控制
- 通过站号区分不同变频器
- 采用轮询方式依次控制
- 增加同步运行功能
-
与上位机集成
- 添加Modbus TCP网关
- 实现远程监控
- 数据采集存储
-
安全功能增强
- 急停硬接线回路
- 安全扭矩关闭功能
- 故障安全处理机制
在实际应用中,这套系统已经稳定控制了三台7.5kW电机组成的输送线系统,运行半年无故障。对于初次尝试这种方案的工程师,建议先在小功率系统上验证,熟悉后再应用到重要产线中。
