1. 项目概述:基于FX5U的四轴伺服机器人控制系统
凌晨三点的车间里,FX5U的RUN指示灯规律闪烁,四台伺服电机发出轻微的嗡鸣声。这个由三菱FX5U PLC控制的四轴伺服机器人系统,是我去年在东莞某自动化产线升级项目中的核心成果。系统采用结构化编程方法,整合了威纶通HMI、J4系列伺服驱动器和六轴机械臂,实现了物料分拣-装配-检测的全自动化流程。
整套系统最显著的特点是采用了面向对象的结构化编程架构。与传统的梯形图编程相比,每个伺服轴都被封装为独立的Axis对象,包含状态监测、运动控制、报警处理等完整方法。这种设计使得四轴控制程序代码量减少了40%,而调试效率提升了近两倍。现场运行数据显示,系统定位精度达到±0.02mm,节拍时间控制在3.5秒以内,完全满足汽车零部件装配的工艺要求。
2. 硬件架构设计要点
2.1 电气控制系统组成
项目采用的硬件配置方案经过多次现场验证:
- 主控制器:三菱FX5U-64MT/ES(32点输入/32点晶体管输出)
- HMI:威纶通MT8102IE 10.1寸触摸屏
- 伺服系统:4套MR-J4-70B伺服驱动器+HF-KP73B伺服电机
- 安全组件:欧姆龙G9SA-301急停继电器+Keyence GL-R08H安全光幕
- 供电系统:明纬NES-350-24开关电源+施耐德GV2ME16断路器
特别需要注意的是,伺服驱动器的供电必须独立配置25A断路器。在调试期间,我们曾遇到Y轴加速时导致系统重启的问题,最终发现是原配置的16A断路器无法承受瞬间峰值电流(实测达到42A)。解决方案是在每个伺服驱动器前加装延时熔断器,主回路改用32A断路器。
2.2 关键接线规范
电气图纸设计时有几个易错点需要特别注意:
- 伺服电机编码器线必须采用双绞屏蔽线(如MR-JCCBL3M-H),屏蔽层在驱动器侧单端接地
- 所有数字量输入信号需配置RC滤波电路(典型值:1kΩ+0.1μF)
- 模拟量IO必须与动力线分开走线槽,最小保持50mm间距
- 接地系统采用星型拓扑,接地电阻要求<4Ω
重要提示:曾有个项目因编码器线未屏蔽导致定位漂移,故障现象是每天下午3点准时出现位置偏差,最终发现是附近变频器谐波干扰所致。
3. 软件架构与核心功能实现
3.1 结构化编程框架设计
FX5U的结构化文本(ST)编程采用了模块化架构:
structuredtext复制// 主程序结构
PROGRAM MAIN
VAR
Axis1 : Axis_CTRL; // X轴控制实例
Axis2 : Axis_CTRL; // Y轴控制实例
Robot : Robot_IFC; // 机械手接口
HMI : HMI_Data; // 触摸屏数据交换
END_VAR
// 程序执行流程
Axis1.Run();
Axis2.Run();
Robot.Process();
HMI.Update();
每个Axis_CTRL功能块包含以下方法:
- ServoOn():伺服使能控制
- MoveAbsolute():绝对位置运动
- HomeSearch():回零操作
- ErrorHandle():故障处理
3.2 四轴联动控制算法
多轴插补运动是本项目的技术难点,我们采用三菱自带的MC_Power和MC_MoveAbsolute指令组合实现:
structuredtext复制// 同步启动两轴运动
MC_Power(Axis1, TRUE, Enable);
MC_Power(Axis2, TRUE, Enable);
MC_MoveAbsolute(Axis1, 100.0, 50.0, 20.0, 10.0);
MC_MoveAbsolute(Axis2, 150.0, 50.0, 20.0, 10.0);
关键参数说明:
- 速度曲线采用S型加减速(参数S=10.0)
- 位置容差设置为0.05mm(对应伺服参数Pn500=500)
- 动态制动延迟时间设定为200ms(Pn50A=2000)
3.3 威纶通HMI设计技巧
触摸屏界面开发有几个实用技巧:
- 地址映射使用间接寻址:设置全局变量地址为LW0,实际IO地址通过公式计算
lua复制-- 夹爪状态显示地址计算 local addr = 0x4000 + (3*16) + 12 -- U3.12对应地址 SetData(addr, "MODBUS", 1, "Gripper_Status") - 报警界面采用位触发动画:将报警变量地址与矢量图状态绑定
- 趋势图采样周期设置为100ms(需与PLC的采样定时器同步)
4. 伺服参数配置详解
4.1 电子齿轮比计算
以X轴传动系统为例:
code复制电机端齿轮齿数 = 24
负载端齿轮齿数 = 120
编码器分辨率 = 131072 (17bit)
电子齿轮比 = (负载齿数/电机齿数) × (编码器分辨率/每转脉冲数)
= (120/24) × (131072/10000)
= 5 × 13.1072
= 65.536
对应伺服参数:
Pn202 = 65536 (分子)
Pn203 = 1000 (分母)
特别注意:三菱伺服的位置指令单位默认为0.1μm,若希望1脉冲=1μm,需设置:
code复制Pn200.1=1 // 设置指令单位为μm
Pn210=1 // 每指令单位脉冲数
4.2 刚性调整参数
伺服增益参数设置经验值:
code复制Pn100 = 35 // 位置环增益
Pn101 = 100 // 速度环增益
Pn102 = 2000 // 速度环积分时间
Pn103 = 50 // 转矩滤波器
调试方法:
- 先将Pn100设为较小值(如15)
- 逐步增加直到出现轻微振动
- 回调至振动消失时的80%值
- 用同样方法调整Pn101
5. 典型问题排查指南
5.1 伺服电机异常振动
可能原因及解决方案:
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 低速振动 | 机械共振 | 调整Pn110陷波滤波器频率 |
| 高速振动 | 增益过高 | 降低Pn100/Pn101值 |
| 停止时抖动 | 摩擦补偿不足 | 增加Pn150摩擦补偿量 |
5.2 位置偏差过大
常见故障链分析:
- 检查编码器线是否松动(测量A+/A-间电压应为1Vpp)
- 确认电子齿轮比计算是否正确(特别是Pn200.1设置)
- 监测伺服负载率(通过MR Configurator2软件)
- 检查机械传动背隙(用千分表测量反向间隙)
5.3 HMI通信异常
威纶通常见通信故障处理流程:
- 检查PLC接口模块指示灯状态
- 确认HMI通信参数(波特率/站号)与PLC一致
- 使用EBPro的在线监控功能查看通信报文
- 检查终端电阻设置(RS485需在末端加120Ω电阻)
6. 系统安全设计规范
6.1 安全回路设计
急停电路必须符合Category 3标准:
code复制急停按钮 → 安全继电器 → 伺服使能回路
↘ PLC急停输入
↘ 气动阀控制电源
安全继电器触点应同时切断:
- 伺服驱动器的主电源(通过MC接触器)
- PLC的急停输入信号(%IX0.0)
- 所有输出模块的电源(通过辅助触点)
6.2 软件互锁逻辑
机器人协作区域的安全逻辑示例:
structuredtext复制// 安全区域判断
SafeZoneClear := NOT (%IX1.0 OR %IX1.1); // 光幕信号取反
// 机械手使能条件
RobotEnable := Axis1.InPosition
AND Axis2.InPosition
AND SafeZoneClear
AND NOT EmergencyStop;
7. 项目文档管理建议
完整的项目文档应包含:
- 电气图纸(Eplan格式+PDF版本)
- PLC程序(带详细注释的结构化文本)
- HMI工程文件(EBPro格式)
- 伺服参数备份(MR Configurator2配置文件)
- IO分配表(Excel格式,含信号说明)
文档版本控制建议采用日期编码规则:
code复制ROBOT_CTRL_[YYYYMMDD]_[VERSION]
例如:ROBOT_CTRL_20230815_2.1
每次修改需更新以下内容:
- 程序头部的修订记录
- 电气图纸的修订云图
- 参数变更记录表
这套系统经过半年生产验证,关键改进点包括将伺服更新周期从4ms调整为2ms,机械手轨迹平滑算法升级为三次样条插补。最让我自豪的是,通过结构化编程实现的故障自诊断功能,将平均故障修复时间从原来的47分钟缩短到8分钟。
