1. 项目概述
三轴点胶机是电子制造业中常见的自动化设备,主要用于PCB板、电子元器件等产品的精密点胶作业。这次分享的项目采用台达AS228T PLC作为主控制器,搭配威纶TK6071IQ触摸屏实现人机交互,整套系统已经在产线上稳定运行半年多,日均处理上千个工件。
特别说明:本文分享的程序代码均来自实际量产项目,所有参数和逻辑都经过现场验证,可直接用于类似设备开发。
作为自动化工程师,我深刻体会到工业控制程序与普通软件的最大区别在于可靠性要求。一个在办公室运行完美的程序,到了产线上可能因为一个未处理的异常导致整条线停产。这套三轴点胶程序从初版到稳定运行,前后经历了47次现场调试迭代,最终形成了现在这个包含完整安全机制、异常处理和操作便利性的版本。
2. 硬件平台选型解析
2.1 控制器选择:台达AS228T PLC
选择AS228T主要基于三个考量:
- 运动控制性能:支持3轴直线/圆弧插补,脉冲输出最高500kHz,满足点胶路径精度要求
- 编程便利性:支持结构化文本(ST)语言,比梯形图更适合复杂逻辑
- 扩展能力:自带24DI/16DO,可扩展模块应对传感器和阀门控制
实际使用中发现其内置的MC运动控制指令库非常稳定,特别是MC_MoveLinear指令在长时间运行中从未出现过丢步现象。
2.2 HMI选择:威纶TK6071IQ触摸屏
这款7寸屏的亮点在于:
- 800×480分辨率下仍保持流畅操作
- 与台达PLC的通讯延迟<50ms
- 支持多语言切换(本项目需要中英文界面)
3. 软件开发环境搭建
3.1 ISPSoft软件配置
台达新一代编程软件ISPSoft相比旧版DOPSoft有几个显著改进:
- 标签变量管理:支持导入/导出变量表,批量修改效率提升70%
- 在线调试:变量监控刷新率提升至100ms,调试运动参数时特别有用
- 版本对比:可直观查看不同版本程序的差异点
安装时需要注意:
- 必须安装AS系列插件包
- 建议关闭Windows防火墙以免影响在线仿真
- 工程属性中需设置正确的PLC型号和固件版本
3.2 威纶EasyBuilder Pro配置
触摸屏开发环境的关键设置:
ini复制[Communication]
PLCType=Delta_AS
Protocol=Modbus_RTU
BaudRate=115200
StationNumber=1
[System]
ScreenSwitchTime=300 ;无操作自动返回主页时间(秒)
4. 核心程序架构设计
4.1 运动控制模块
4.1.1 轴参数初始化
st复制// 轴配置结构体
TYPE AxisConfig :
STRUCT
Speed : INT; // 运行速度(mm/s)
Accel : INT; // 加速度(mm/s²)
Decel : INT; // 减速度(mm/s²)
SoftLimit+ : INT; // 正限位
SoftLimit- : INT; // 负限位
END_STRUCT
END_TYPE
// 实际初始化代码
X_Axis.Config(Speed:=300, Accel:=100, Decel:=80, SoftLimit+:=500);
Y_Axis.Config(Speed:=280, Accel:=110, Decel:=90, SoftLimit+:=400);
Z_Axis.Config(Speed:=200, Accel:=80, Decel:=60, SoftLimit+:=100);
调试中发现的问题及解决方案:
- Y轴加速度超过120时出现抖动 → 在触摸屏设置界面增加参数上限保护
- Z轴回零时偶尔过冲 → 在原点附近将速度降为30mm/s
4.1.2 运动状态机实现
st复制CASE CurrentStep OF
10: // 回原点流程
IF NOT Axis_Home(X_Axis) THEN
AlarmCode := 1001;
CurrentStep := 99;
END_IF
20: // Z轴预压胶
GlueValve(TRUE);
DELAY T#500ms; // 出胶稳定时间
30: // 直线插补运动
MC_MoveLinear(X:=TargetX, Y:=TargetY, Z:=TargetZ);
40: // 圆弧插补
MC_MoveCircular(Point1X, Point1Y, Radius:=10, Dir:=CW);
99: // 异常处理状态
HandleAlarm(AlarmCode);
END_CASE
4.2 人机交互设计
4.2.1 配方管理系统
st复制// 配方数据结构
TYPE RecipeData :
STRUCT
GlueType : INT; // 胶水类型
PathType : INT; // 路径类型(1=直线,2=圆弧)
GlueTime : TIME; // 点胶时间
SpeedRatio : REAL; // 速度系数
END_STRUCT
END_TYPE
// 配方选择逻辑
IF RecipeSelect = 1 THEN // 直线路径
ActiveRecipe.GlueTime := PathLength * 0.15 + T#50ms;
ELSIF RecipeSelect = 2 THEN // 圆弧路径
ActiveRecipe.GlueTime := (PathLength + CircleD) * 0.2;
END_IF
触摸屏界面设计要点:
- 采用三级菜单结构:主界面→功能选择→参数设置
- 关键参数输入框增加范围校验
- 运行状态区采用颜色编码:绿色-正常/黄色-警告/红色-故障
4.3 安全保护机制
4.3.1 运动安全检测
st复制// 轴同步检查
WaitSync := (ABS(X_Axis.ActPos - Y_Axis.ActPos) < 0.5)
AND (ABS(Y_Axis.ActPos - Z_Axis.ActPos) < 0.5);
// 真空压力监测
IF VacuumPressure < VacuumThreshold THEN
GlueValve(FALSE);
MC_Stop(ALL_AXES, Decel:=200);
RAISE AlarmCode := 2201;
// 自动回退程序
IF NOT RecoveryMove THEN
EmergencyShutdown();
END_IF
END_IF
4.3.2 IO安全处理
st复制// 急停连锁逻辑
IF EmergencyStop OR (NOT SafetyDoorClosed) THEN
MC_Stop(ALL_AXES, Decel:=500);
GlueValve(FALSE);
AirCylinder(FALSE);
END_IF
// 传感器状态字处理
SensorWord := DI_ReadByte(0);
LimitSwitch_X := (SensorWord AND 16#01) <> 0;
VacuumSensor := (SensorWord AND 16#02) <> 0;
5. 现场调试经验实录
5.1 运动轨迹优化
问题现象:圆弧路径终点出现胶量不均匀
解决方案:
- 在圆弧起点/终点增加50ms延时
- 调整插补前速度匹配算法:
st复制// 速度匹配算法
TargetSpeed := MIN(X_Axis.CmdSpeed, Y_Axis.CmdSpeed, Z_Axis.CmdSpeed);
MC_SetOverride(ALL_AXES, TargetSpeed);
5.2 胶量控制优化
不同胶水的流动特性对比:
| 胶水类型 | 粘度(cps) | 预压时间(ms) | 补偿系数 |
|---|---|---|---|
| 硅胶 | 5,000 | 500 | 1.2 |
| UV胶 | 800 | 300 | 0.9 |
| 环氧树脂 | 12,000 | 800 | 1.5 |
5.3 常见故障排查指南
故障现象表:
| 故障代码 | 现象描述 | 可能原因 | 解决方案 |
|---|---|---|---|
| 1001 | X轴回零失败 | 原点传感器污染 | 清洁传感器 |
| 2005 | 真空压力不足 | 气管泄漏 | 检查管路连接 |
| 3012 | 胶阀响应超时 | 电磁阀故障 | 更换阀体 |
6. 程序优化技巧
6.1 内存优化方案
- 使用结构体替代离散变量,节省30%数据存储空间
- 将不常用的配方数据存储在HMI端
- 采用位操作处理IO状态字
6.2 执行效率提升
st复制// 优化前的延时逻辑
DELAY T#100ms;
// 优化后的非阻塞延时
IF NOT DelayTimer.Q THEN
DelayTimer(IN:=TRUE, PT:=T#100ms);
ELSE
DelayTimer(IN:=FALSE);
// 延时到后执行的操作
END_IF
6.3 可维护性设计
- 版本注释规范:
st复制// [2023-07-15] Ver1.2.3
// 修改内容:优化Y轴加速度参数
// 修改人:张三
- 关键参数集中管理:
st复制// 系统参数区 ==========================
CONST
MAX_SPEED_X : INT := 300;
MAX_ACCEL_Y : INT := 110;
SAFE_DELAY : TIME := T#500ms;
END_CONST
这套三轴点胶程序经过半年多的产线验证,核心指标如下:
- 定位精度:±0.1mm
- 重复精度:±0.05mm
- 换型时间:<3分钟
- MTBF:>1500小时
在实际开发过程中,最大的收获是认识到工业控制程序必须考虑"防呆设计"——要假设操作人员会以各种意想不到的方式使用设备。比如我们在触摸屏上所有数值输入框都增加了上下限保护,在运动指令前加入各种状态检查,这些看似多余的代码,往往就是避免重大事故的最后防线。