1. 项目背景与核心需求
凌晨三点的实验室里,机械臂划破空气的嘶鸣声格外刺耳。这台水果糖粒包装机原型机正在执行第237次测试循环,传送带上的糖果像受检阅的士兵一样整齐列队。作为工业自动化领域的老兵,我深知这种精密包装设备的灵魂在于PLC程序的可靠性设计。传统机械式包装机存在称重误差大(±5g)、卡料率高(约3%)等问题,而我们的目标是将精度控制在±0.5g以内,卡料率降低到0.1%以下。
这个项目的技术难点主要集中在三个方面:
- 多轴同步控制:需要协调传送带、振动给料机、称重传感器和热封装置等6个运动单元
- 动态称重补偿:解决糖粒下落过程中的空气阻力影响
- 故障自恢复:当发生卡料时,系统需要在300ms内完成诊断并执行恢复动作
2. 硬件架构设计
2.1 核心部件选型
经过三个月的对比测试,我们最终确定的硬件配置方案如下表所示:
| 部件名称 | 型号 | 关键参数 | 选型理由 |
|---|---|---|---|
| PLC主控 | 西门子S7-1200 | 4×100kHz高速输入, 2×RS485接口 | 支持结构化文本编程和PID闭环控制 |
| 称重传感器 | HBM PW15C3 | 量程5kg, 精度±0.1g | 温度漂移<0.01g/℃ |
| 伺服电机 | 安川SGMAH-08A | 400W, 3000rpm, 17bit编码器 | 响应时间<5ms |
| 振动给料机 | 自制电磁式 | 振动频率0-100Hz可调 | 配合PID实现流量精确控制 |
特别说明:振动给料机的电磁线圈需要额外加装温度传感器,我们曾在连续工作2小时后发生过线圈过热导致参数漂移的事故。
2.2 电气图纸关键细节
在控制柜布线时,有几点血泪教训:
- 模拟量信号线(如称重传感器)必须采用双绞屏蔽线,且与动力线保持20cm以上距离。初期测试时因电磁干扰导致称重值跳变达±3g
- 急停回路必须采用硬线连接,不能通过PLC软逻辑实现。我们曾因程序跑飞导致急停失效,损失了一整批齿轮箱
- 所有电机驱动器需配置再生电阻,否则快速制动时母线电压会飙升损坏模块
3. 控制程序设计
3.1 主控制循环架构
采用周期性任务+中断触发的混合架构,下面是核心框架代码:
st复制PROGRAM MAIN
VAR
// 全局变量声明
ActualCycleTime : TIME := T#20MS; // 实测循环周期
MasterTimer : TON := (PT:=T#50MS); // 看门狗计时器
END_VAR
// 主循环体
IF NOT gEmergencyStop THEN
// 运动控制任务(20ms周期)
IF MasterTimer(IN:=TRUE, PT:=ActualCycleTime).Q THEN
MasterTimer(IN:=FALSE);
FB_MotionControl();
FB_WeightMonitoring();
ActualCycleTime := NOW() - LastCycleTime;
END_IF
// 异步事件处理
IF gAlarmTrigger THEN
FB_AlarmHandler();
END_IF
END_IF
这个架构的精妙之处在于:
- 通过ActualCycleTime动态监测实际循环时间,当超过50ms时会自动触发看门狗报警
- 将实时性要求高的运动控制放在定时任务中,保证时序确定性
- 异步事件通过标志位触发,避免阻塞主循环
3.2 称重补偿算法
传统包装机的静态称重方式在糖粒下落时会产生约0.3-0.8g的负偏差。我们开发的动态补偿算法包含三个关键步骤:
-
建立下落轨迹模型:
st复制// 抛物线运动方程参数 FallingDistance := 0.5 * Gravity * POW(FallingTime, 2) + InitialSpeed * FallingTime; -
实时采样滤波:
st复制// 移动平均滤波(窗口大小=5) FilteredWeight := (Sample[0] + 2*Sample[1] + 3*Sample[2] + 2*Sample[3] + Sample[4]) / 9; -
提前量补偿:
st复制// 根据当前速度预测落点 IF FeedRate > 30.0 THEN Compensation := 0.25 * FeedRate / 100.0; ELSE Compensation := 0.15 * FeedRate / 100.0; END_IF
实测数据显示,该算法将称重误差从原来的±1.2g降低到±0.4g,效果显著。
4. 故障诊断与恢复
4.1 卡料检测机制
我们在三个关键位置布置了光电传感器阵列:
- 振动盘出口(检测糖粒堆积)
- 称重斗入口(检测桥接现象)
- 热封工位(检测薄膜粘连)
对应的状态监测代码:
st复制FUNCTION_BLOCK FB_JamDetection
VAR_INPUT
SensorArray : ARRAY[1..3] OF BOOL;
MotorCurrent : REAL; // 电机电流反馈
END_VAR
VAR_OUTPUT
JamLocation : INT; // 卡料位置代码
Severity : REAL; // 严重程度0-100%
END_VAR
// 多条件联合判断
IF SensorArray[1] AND (MotorCurrent > 2.5) THEN
JamLocation := 16#01; // 振动盘卡料
Severity := LIMIT(0.0, (MotorCurrent-2.5)*20.0, 100.0);
ELSIF NOT SensorArray[2] AND (MotorCurrent < 0.8) THEN
JamLocation := 16#02; // 称重斗桥接
Severity := 70.0; // 固定严重等级
END_IF
4.2 自恢复策略
针对不同故障类型采取分级恢复措施:
| 故障代码 | 类型 | 第一响应 | 第二响应 | 第三响应 |
|---|---|---|---|---|
| 16#01 | 振动盘卡料 | 振动频率+20%持续2s | 反向振动1秒 | 停机报警 |
| 16#02 | 称重桥接 | 气枪脉冲吹扫 | 机械手轻敲3次 | 进入维护模式 |
| 16#03 | 薄膜粘连 | 热封温度提升10℃ | 延长冷却时间50% | 更换薄膜卷 |
实际运行数据显示,约85%的卡料故障能在第一响应阶段自动解除,大幅减少人工干预。
5. 人机交互设计
5.1 HMI界面布局
采用分层式菜单设计,主界面包含四大功能区:
- 运行监控区:实时显示包装速度、累计产量、当前故障代码
- 参数设置区:分为专家模式和用户模式,通过密码切换
- 维护向导:提供带动画指引的保养流程
- 数据记录:存储最近500条报警事件和工艺参数变更记录
经验分享:触摸屏响应延迟要控制在200ms以内,我们测试发现超过300ms时操作员会误认为没点击成功而重复操作。
5.2 配方管理系统
为适应不同糖粒类型(硬糖、软糖、夹心糖),开发了多配方切换功能:
st复制FUNCTION_BLOCK FB_RecipeManagement
VAR
CurrentRecipe : INT := 0;
RecipeData : ARRAY[0..9] OF STRUCT
VibratorSpeed : INT;
HeatingTemp : REAL;
CoolingTime : TIME;
END_STRUCT;
END_VAR
// 配方调用示例
CASE SugarType OF
1: // 硬糖
CurrentRecipe := 0;
FB_Heater.SetTemp(RecipeData[0].HeatingTemp);
2: // 软糖
CurrentRecipe := 1;
FB_Heater.SetTemp(RecipeData[1].HeatingTemp);
END_CASE
6. 调试与优化
6.1 PID参数整定
通过阶跃响应法整定振动给料机的PID参数,过程如下:
- 先将Kp设为0,Ki和Kd设为0,逐步增大Kp直到系统开始振荡(临界增益法)
- 记录振荡周期Tu和临界增益Ku,按Ziegler-Nichols公式计算初始参数:
code复制Kp = 0.6*Ku = 0.8 Ki = 1.2*Ku/Tu = 0.05 Kd = 0.075*Ku*Tu = 0.2 - 在实际运行中微调,最终采用Kp=0.85, Ki=0.03, Kd=0.18的组合
6.2 运动曲线优化
使用S型速度曲线代替传统的梯形曲线,显著降低机械冲击:
st复制FUNCTION_BLOCK FB_SpeedProfile
VAR_INPUT
TargetPos : REAL;
MaxSpeed : REAL;
Accel : REAL;
END_VAR
VAR_OUTPUT
CommandSpeed : REAL;
END_VAR
// S曲线算法
IF CurrentPos < TargetPos*0.3 THEN
CommandSpeed := MaxSpeed * SIN(90*(CurrentPos/TargetPos));
ELSIF CurrentPos > TargetPos*0.7 THEN
CommandSpeed := MaxSpeed * SIN(90*((TargetPos-CurrentPos)/TargetPos));
ELSE
CommandSpeed := MaxSpeed;
END_IF
实测表明,采用S曲线后机械臂寿命延长了40%,噪音降低15分贝。
7. 工程实施要点
在设备现场安装时,有几个容易被忽视的关键点:
- 接地系统:必须采用独立的接地极,接地电阻<4Ω。曾因与厂房电网共地导致PLC频繁死机
- 气路处理:压缩空气需经过三级过滤(40μm+5μm+0.1μm),露点温度<-20℃
- 防震措施:振动给料机底座要加装10mm厚橡胶垫,否则长期运行后螺栓会松动
- 环境监测:控制柜内需安装温湿度传感器,当温度>45℃时自动启动冷却风扇
经过三个月的连续运行测试,最终设备达到以下性能指标:
- 包装速度:45包/分钟(设计目标40包)
- 称重精度:±0.35g(优于设计指标)
- 卡料率:0.07%(行业平均水平3%)
- 故障恢复时间:平均2.3秒(传统设备需30秒以上)