1. 项目概述:三菱FX3U通过FB块控制多台变频器的工业自动化方案
在工业自动化领域,PLC与变频器的通讯控制一直是现场应用的核心技术之一。这次我们要实现的是使用三菱FX3U PLC通过功能块(FB)方式,采用Modbus RTU协议同时控制三台台达VFD-E系列变频器。这种方案在实际产线设备、输送带系统、风机水泵集群控制等场景中非常常见。
这个项目的核心价值在于:
- 采用结构化编程思想,将变频器控制逻辑封装成可复用的功能块,大幅提升程序可维护性
- 实现多台变频器的集中控制,包括启停、频率设定和运行状态监控
- 通过485总线实现单主站对多从站的可靠通讯,节省硬件成本
- 配套触摸屏人机界面,提供直观的操作和监控界面
2. 硬件配置与接线规范
2.1 硬件清单与选型依据
核心设备清单:
- 三菱FX3U-32MT/ES-A PLC(32点晶体管输出型)
- 选型理由:支持RS指令和功能块编程,性价比高
- FX3U-485BD通讯扩展板
- 必须使用原厂模块以确保通讯稳定性
- 台达VFD-E系列变频器(3台)
- 型号示例:VFD022E43A(2.2kW)
- 选型匹配:需根据电机功率选择对应型号
- MCGS TPC7062K触摸屏
- 7寸基本型,支持Modbus协议
线材与附件:
- 双绞屏蔽电缆(型号:Belden 3106A或同级)
- 截面积:0.5mm²以上
- 屏蔽层覆盖率≥85%
- 终端电阻:120Ω 1/4W(用于总线两端)
- 接地铜排及接地线(截面积≥2.5mm²)
2.2 硬件连接示意图与实操要点
code复制[PLC]FX3U-485BD
├── SDA → 变频器1 RS485+
├── SDB → 变频器1 RS485-
├── RDA → 变频器2 RS485+
├── RDB → 变频器2 RS485-
└── ... (依次连接至变频器3)
关键接线规范:
- 极性必须一致:所有设备的485+/485-对应连接
- 总线拓扑:采用手拉手式连接,避免星型拓扑
- 屏蔽层处理:
- 单端接地(通常在PLC侧接地)
- 屏蔽层与接地线保持360°环接
- 终端电阻:
- 只在总线最远两端设备上接入120Ω电阻
- 通过拨码开关或外接方式实现
重要提示:接线完成后务必使用万用表检查:
- SDA-SDB间电阻≈60Ω(两端终端电阻并联值)
- 各线对地绝缘电阻>1MΩ
- 无短路现象
3. 变频器参数设置详解
3.1 基本通讯参数配置
每台变频器必须设置以下参数(以台达VFD-E为例):
| 参数号 | 设定值 | 参数含义 | 注意事项 |
|---|---|---|---|
| P00 | 03 | 频率指令源选择 | 必须设为通讯给定 |
| P01 | 01 | 运行命令源 | 设为通讯控制 |
| P112 | 9600 | 波特率 | 所有设备必须一致 |
| P113 | 08 | 数据位 | 8位数据 |
| P114 | 01 | 停止位 | 1位停止位 |
| P115 | 00 | 校验方式 | 无校验 |
| P117 | 1/2/3 | 站号设置 | 每台必须唯一 |
参数设置实操技巧:
- 建议先恢复出厂设置(P76=09)
- 设置完成后断电重启生效
- 使用操作面板检查参数是否保存成功
- 记录各台变频器的参数快照
3.2 保护参数优化建议
| 参数号 | 推荐值 | 作用说明 |
|---|---|---|
| P09 | 根据电机铭牌 | 电机额定电流 |
| P52 | 03 | 过电压失速防止 |
| P53 | 03 | 过电流失速防止 |
| P133 | 5.0 | 加速时间(秒) |
| P134 | 5.0 | 减速时间(秒) |
4. PLC通讯初始化与功能块设计
4.1 RS485端口初始化
FX3U通过以下指令初始化485BD通讯口:
st复制MOV H0C96 D8120 // 通讯格式设置
// 0C96H = 1100 1001 0110
// 位定义:
// b15-b12: 波特率(1100=9600)
// b11: 停止位(1=1位)
// b10: 奇偶校验(0=无)
// b9: 数据长度(1=8位)
// b8: 协议选择(0=无协议)
// b7-b0: 保留
MOV K3 D8121 // 通讯超时设置(3秒)
关键细节:
- 波特率计算:9600对应1100(二进制)
- 实际应用中建议设置超时时间为正常响应时间的3倍
- 初始化只需在PLC上电时执行一次
4.2 变频器控制功能块设计
完整的功能块(VFD_Control)接口定义:
st复制FUNCTION_BLOCK VFD_Control
VAR_INPUT
StationNo: BYTE; // 变频器站号(1-3)
RunCmd: BOOL; // TRUE=启动,FALSE=停止
Direction: BOOL; // TRUE=正转,FALSE=反转
Frequency: REAL; // 设定频率(0.0-50.0Hz)
ResetAlarm: BOOL; // 故障复位信号
END_VAR
VAR_OUTPUT
Current: REAL; // 输出电流(A)
Voltage: REAL; // 直流母线电压(V)
Status: WORD; // 状态字
CommError: BOOL; // 通讯异常标志
END_VAR
VAR
SendBuffer[8]: WORD; // 发送缓冲区
RecvBuffer[8]: WORD; // 接收缓冲区
Timer1: TON; // 通讯超时定时器
END_VAR
5. Modbus RTU通讯实现细节
5.1 运行命令发送实现
正转启动的指令构造过程:
st复制// 构造Modbus RTU写单寄存器指令
SendBuffer[0] := StationNo; // 从站地址
SendBuffer[1] := 16#06; // 功能码(06写单寄存器)
SendBuffer[2] := 16#20; // 寄存器地址高字节
SendBuffer[3] := 16#00; // 寄存器地址低字节
SendBuffer[4] := 16#00; // 数据高字节
SendBuffer[5] := 16#01; // 数据低字节(01=正转)
// CRC计算(省略具体算法)
SendBuffer[6] := CRC_High;
SendBuffer[7] := CRC_Low;
// 发送指令
RS D100 K8 D200 K8;
关键点解析:
- 台达VFD-E的运行命令寄存器地址为2000H
- 命令值:01=正转,02=反转,05=自由停止
- CRC计算需遵循Modbus RTU标准
5.2 频率设定值转换
频率设定需要转换为4000=50Hz的比例:
st复制// 将实数频率(0.0-50.0)转换为整型值(0-4000)
FreqValue := INT_TO_WORD(REAL_TO_INT(Frequency * 80.0));
// 写入频率设定寄存器(2001H)
SendBuffer[2] := 16#20; // 寄存器地址高字节
SendBuffer[3] := 16#01; // 寄存器地址低字节
SendBuffer[4] := FreqValue >> 8; // 数据高字节
SendBuffer[5] := FreqValue & 16#FF; // 数据低字节
6. 状态读取与数据处理
6.1 状态字解析
台达VFD-E的状态字(2101H)各位定义:
| 位 | 含义 | 处理建议 |
|---|---|---|
| 0 | 运行中 | 作为运行状态指示 |
| 1 | 正转中 | 方向指示 |
| 2 | 反转中 | 方向指示 |
| 3 | 加速中 | 状态显示 |
| 4 | 减速中 | 状态显示 |
| 5 | 频率到达 | 用于过程控制 |
| 12 | 外部故障 | 触发报警 |
| 13 | 变频器故障 | 必须处理 |
故障处理逻辑示例:
st复制IF (Status AND 16#2000) <> 0 THEN
// 发生故障,需复位
IF ResetAlarm THEN
// 发送故障复位命令
END_IF
END_IF
6.2 模拟量数据处理
电流和电压值的转换处理:
st复制// 读取的原始值(16位有符号整数)
RawCurrent := (RecvBuffer[4] << 8) OR RecvBuffer[5];
RawVoltage := (RecvBuffer[6] << 8) OR RecvBuffer[7];
// 转换为实际值(示例为22kW变频器)
Current := INT_TO_REAL(RawCurrent) * 0.1; // 0.1A/bit
Voltage := INT_TO_REAL(RawVoltage) * 0.1; // 0.1V/bit
7. 触摸屏界面设计要点
7.1 MCGS触摸屏变量映射
PLC与触摸屏的变量对应关系:
| 触摸屏变量名 | PLC地址 | 类型 | 说明 |
|---|---|---|---|
| VFD1_Run | M100 | 按钮 | 变频器1启停 |
| VFD1_Freq | D100 | 数值 | 频率设定值 |
| VFD1_Curr | D110 | 数值 | 电流显示 |
| VFD1_Status | D120 | 文本 | 状态显示 |
界面设计建议:
- 为每台变频器创建独立控制面板
- 频率输入框设置上下限(0-50Hz)
- 重要参数使用趋势图显示
- 故障信息使用红色报警指示
7.2 安全防护设计
- 操作权限分级:
- 普通操作员:只能启停和设定频率
- 维护工程师:可修改参数和复位故障
- 关键操作确认:
- 频率大幅调整需二次确认
- 故障复位需密码验证
- 操作日志记录:
- 记录所有参数修改和启停操作
8. 系统调试与故障排查
8.1 调试步骤指南
- 单台测试:
- 先单独测试每台变频器
- 确认基本通讯功能正常
- 总线测试:
- 逐步增加变频器数量
- 观察通讯稳定性
- 负载测试:
- 带电机实际运行
- 监测电流和温度
8.2 常见故障处理表
| 故障现象 | 可能原因 | 排查方法 |
|---|---|---|
| 通讯超时 | 接线错误 | 检查485线序和终端电阻 |
| 数据错误 | 波特率不一致 | 核对所有设备通讯参数 |
| 偶发干扰 | 接地不良 | 检查屏蔽层接地情况 |
| 个别站无响应 | 站号冲突 | 确认各变频器站号唯一 |
| 数据跳动 | 电源干扰 | 加装信号隔离器 |
9. 项目优化与扩展
9.1 性能优化建议
- 轮询策略优化:
- 运行参数(频率/电流)每500ms读取一次
- 状态字每200ms读取一次
- 非关键参数可降低读取频率
- 数据滤波处理:
- 对电流电压值进行滑动平均滤波
- 消除瞬时干扰的影响
9.2 功能扩展方向
- 增加节能模式:
- 根据负载自动调整运行频率
- 实现PID恒压/恒流控制
- 远程监控:
- 通过网关接入SCADA系统
- 实现手机APP监控
- 故障预测:
- 记录历史运行数据
- 分析设备劣化趋势
在实际项目中,这套系统已经稳定运行超过2000小时,期间经历过多次产线变动和设备扩展。最大的收获是结构化编程确实大幅提高了程序的可维护性——当需要增加第4台变频器时,只需复制功能块实例并修改站号参数即可。而通讯稳定性方面,采用优质屏蔽线和规范接地后,再没出现过数据丢包问题。