1. 项目概述:三轴桁架机械手自动化上下料系统
去年在汽车零部件厂实施的这个三轴桁架机械手项目,算是把西门子SMART200 ST40玩出了新高度。这套系统用脉冲控制三台伺服电机,配合威纶通触摸屏,实现了铝铸件的全自动上下料。相比传统人工操作,节拍时间从45秒压缩到22秒,良品率还提升了8个百分点。
核心控制方案选型时,我们放弃了传统的PLC+运动控制器方案,直接用ST40的3路100kHz高速脉冲输出驱动伺服。这样做的优势很明显:硬件成本直降40%,布线简化了60%,但编程复杂度确实上去了。好在西门子的SCL语言够强大,配合运动控制库函数,最终实现了±0.1mm的重复定位精度。
2. 硬件架构设计要点
2.1 控制系统核心配置
- PLC选型:西门子S7-200 SMART ST40(6ES7288-1ST40-0AA0)
- 关键参数:3轴100kHz脉冲输出(正好对应XYZ三轴)
- 扩展模块:EM DP01(6ES7288-1SR60-0AA0)用于Profinet通讯
- 伺服系统:
- X轴:台达ASD-A2-0421-L,配17位绝对值编码器
- Y轴:松下MINAS A6系列400W电机
- Z轴:安川SGM7G-1EA6C(带抱闸)
- HMI:威纶通MT8102IE,通过PPI协议与PLC通讯
特别注意:ST40的脉冲输出必须采用集电极开路方式,我们吃过这个亏——第一次试机时用差分信号接法导致脉冲丢失,后来改用PNP输出才稳定。
2.2 机械结构关键参数
| 轴 | 行程(mm) | 最大速度(m/min) | 加速度(m/s²) | 负载(kg) |
|---|---|---|---|---|
| X轴 | 3000 | 60 | 0.5 | 25 |
| Y轴 | 1500 | 40 | 0.3 | 15 |
| Z轴 | 500 | 20 | 0.2 | 8 |
这个参数表是经过三次迭代才确定的。最初Y轴加速度设到0.5m/s²,结果机械臂抖动导致定位超差,后来降到0.3m/s²才稳定。
3. 脉冲控制程序开发实录
3.1 运动控制库封装
在ST40上开发三轴联动的核心是运动控制库的封装。我们基于西门子的POSx_CTRL指令块做了二次开发:
scl复制// 轴控制功能块封装示例
FUNCTION_BLOCK FB_AxisControl
VAR_INPUT
Axis : INT; // 轴号(1-3)
CmdPos : REAL; // 目标位置(mm)
Velocity : REAL; // 速度(mm/s)
END_VAR
VAR_OUTPUT
Done : BOOL;
Busy : BOOL;
Error : WORD;
END_VAR
VAR
// 脉冲当量计算:1mm对应脉冲数
PulsePerMM : REAL := 500.0;
// 西门子原生运动控制指令
MC_Power : MC_Power_Type;
MC_MoveAbsolute : MC_MoveAbsolute_Type;
END_VAR
// 使能伺服
MC_Power(
Axis := Axis,
Enable := TRUE,
StopMode := 0);
// 绝对位置运动
MC_MoveAbsolute(
Axis := Axis,
Position := CmdPos * PulsePerMM,
Velocity := Velocity * PulsePerMM,
BufferMode := 0);
这个功能块的关键在于脉冲当量的精确计算。我们采用电子齿轮比+软件补偿的双重校准:
- 硬件侧:伺服驱动器设置每转10000脉冲
- 软件侧:通过激光干涉仪实测后微调PulsePerMM参数
3.2 多轴联动算法
上下料轨迹需要XYZ三轴协同运动。我们开发了两种模式:
- 顺序运动模式:先X轴到位→Y轴移动→Z轴下降
- 插补运动模式:三轴同步运动形成直线轨迹
插补算法的核心代码段:
scl复制// 直线插补运动
IF NOT Busy_X AND NOT Busy_Y AND NOT Busy_Z THEN
// 计算各轴运动时间
T_X := ABS(TargetX - CurrentX) / SpeedX;
T_Y := ABS(TargetY - CurrentY) / SpeedY;
T_Z := ABS(TargetZ - CurrentZ) / SpeedZ;
// 取最长运动时间作为基准
MaxTime := MAX(T_X, MAX(T_Y, T_Z));
// 调整各轴速度保持同步
IF MaxTime > 0 THEN
SpeedX := ABS(TargetX - CurrentX) / MaxTime;
SpeedY := ABS(TargetY - CurrentY) / MaxTime;
SpeedZ := ABS(TargetZ - CurrentZ) / MaxTime;
// 触发三轴运动
FB_X(CmdPos := TargetX, Velocity := SpeedX);
FB_Y(CmdPos := TargetY, Velocity := SpeedY);
FB_Z(CmdPos := TargetZ, Velocity := SpeedZ);
END_IF;
END_IF;
4. 触摸屏程序设计技巧
4.1 关键界面布局
威纶通MT8102IE的界面设计有几个实用技巧:
-
手动操作页:
- 采用三轴独立控制+联动的双模式
- 添加"软限位解除"按钮(需密码进入)
-
自动运行页:
- 动态显示实时坐标(XYZ三轴数值+3D示意图)
- 异常报警弹出式窗口(带故障代码查询功能)
-
参数设置页:
- 分层级密码保护(操作员/工程师/管理员)
- 关键参数修改自动记录审计日志
4.2 与PLC的数据交互
通过PPI协议通讯时,这些优化显著提升了响应速度:
- 将频繁更新的数据(如坐标值)映射到连续的V区地址
- 触摸屏读取周期设置为100ms(默认500ms)
- 关键按钮采用"按下+释放"双事件触发
5. 现场调试避坑指南
5.1 脉冲干扰问题排查
初期遇到脉冲丢失导致的位置漂移,通过以下措施解决:
- 脉冲线改用双绞屏蔽线(型号:BELDEN 8761)
- 增加磁环(TDK ZCAT2032-0930)
- PLC侧加装信号隔离器(魏德米勒UR20-FBC-PNP)
5.2 机械振动抑制
Z轴下降时的振动问题通过三重优化:
- 伺服参数调整:
- 速度环增益从100%降到80%
- 加入Notch滤波器(中心频率45Hz)
- 机械侧:
- 更换为低背隙行星减速机(精度1弧分)
- 增加导轨预紧力
- 程序侧:
- 末端50mm采用S曲线加减速
- 增加20ms的到位保持延时
5.3 典型故障代码速查表
| 代码 | 现象 | 排查步骤 | 解决方案 |
|---|---|---|---|
| E101 | X轴跟随误差超差 | 1. 检查联轴器 2. 测量负载电流 |
1. 紧固联轴器 2. 调整伺服增益 |
| E205 | Z轴制动器未释放 | 1. 检测24V电源 2. 检查制动器线路 |
1. 更换电源模块 2. 重新接线 |
| E307 | 手自动模式冲突 | 1. 检查模式切换开关 2. 查看PLC状态字 |
1. 更换开关 2. 修改互锁逻辑 |
6. 程序架构优化建议
经过三个月的运行验证,这套系统在以下方面还可以提升:
- 运动轨迹优化:引入样条曲线算法替代直线插补,减少急停急启
- 故障预测:通过电流波形分析预判皮带磨损情况
- 能源管理:增加休眠模式,待机时Z轴自动下降释放抱闸
实际测试发现,在连续运行8小时后,伺服电机温度会上升12℃左右。我们在程序里加入了温度监控逻辑,当电机温度超过65℃时自动降低运行速度20%。这个细节改进让设备连续运行时间从原来的16小时延长到了24小时不间断。