1. 电子凸轮追剪技术概述
在包装、印刷、金属加工等连续生产线中,追剪控制是确保材料在高速运动中实现精准切割的关键技术。传统机械凸轮由于物理结构的限制,存在调整困难、磨损严重等问题。电子凸轮技术通过软件算法模拟凸轮曲线,实现了柔性化控制。
麦格米特作为工业自动化领域的知名品牌,其电子凸轮追剪算法具有典型代表性。该算法核心是通过数学建模生成虚拟凸轮曲线,控制伺服系统在运动过程中触发切割动作。与机械凸轮相比,电子方案具有三大优势:
- 参数可在线调整(如追剪长度、速度曲线)
- 支持多种曲线类型(梯形、S型、多项式)
- 维护成本低(无机械磨损)
2. 算法核心原理拆解
2.1 运动相位规划
追剪控制本质是主从轴同步问题。以包装膜切割为例:
- 主轴:输送辊编码器信号作为位置基准
- 从轴:切刀伺服需完成"加速追赶→同步切割→减速返回"的循环
关键相位参数包括:
- 同步窗口(通常为追剪长度的70%-90%)
- 前馈补偿量(抵消机械传动延迟)
- 加减速时间(影响设备振动)
2.2 曲线生成算法
麦格米特采用分段多项式插值法生成S型曲线,其数学表达为:
code复制Position(t) =
A·t³ + B·t² + C·t + D (加速段)
V_max·t + E (匀速段)
-A·(t-t1)³ + F (减速段)
实际工程中会做三点优化:
- 加加速度(Jerk)限制防止机械冲击
- 速度前馈补偿传输带弹性变形
- 位置容差带消除编码器量化误差
3. PLC实现详解
3.1 变量定义与初始化
以结构化文本(ST)为例:
pascal复制VAR
// 运动参数
MasterPosition : LREAL; // 主轴编码器位置
SlavePosition : LREAL; // 从轴实际位置
TargetPos : LREAL; // 当前目标位置
// 工艺参数
CutLength : LREAL := 5.0; // 追剪长度(m)
SyncRatio : LREAL := 0.8; // 同步区比例
MaxSpeed : LREAL := 10.0; // 最大线速度(m/s)
// 算法中间变量
Phase : INT; // 当前相位(0:加速 1:同步 2:减速)
LastSyncPos : LREAL; // 上次同步位置
END_VAR
3.2 主控制逻辑
采用状态机实现多段运动控制:
pascal复制CASE Phase OF
0: // 加速追赶阶段
TargetPos := MasterPosition * 1.2; // 超前补偿
IF MasterPosition >= CutLength*(SyncRatio-0.1) THEN
Phase := 1;
END_IF
1: // 同步切割阶段
TargetPos := MasterPosition;
IF MasterPosition >= CutLength*SyncRatio THEN
ExecuteCut(); // 触发切割
Phase := 2;
END_IF
2: // 减速返回阶段
TargetPos := LastSyncPos - (MasterPosition - LastSyncPos);
IF SlavePosition <= 0 THEN
Phase := 0;
LastSyncPos := LastSyncPos + CutLength;
END_IF
END_CASE
关键点:同步阶段采用"位置环+速度前馈"控制,前馈量建议设为系统延迟时间的1.5倍
4. 跨平台移植指南
4.1 移植到其他品牌PLC
以西门子S7-1200为例需注意:
- 数据类型转换:LREAL需改为REAL
- 运动控制指令替换:
- 麦格米特的MC_MoveAbsolute → 西门子的MC_MoveAbsolute
- 中断处理差异:西门子使用OB块而非直接中断
4.2 移植到高级语言(Python示例)
python复制class ElectronicCam:
def __init__(self, cut_length=5.0, sync_ratio=0.8):
self.cut_length = cut_length
self.sync_ratio = sync_ratio
self.phase = 0 # 0:加速 1:同步 2:减速
def update(self, master_pos):
if self.phase == 0:
if master_pos >= self.cut_length*(self.sync_ratio-0.1):
self.phase = 1
return master_pos * 1.2
elif self.phase == 1:
if master_pos >= self.cut_length*self.sync_ratio:
self.trigger_cut()
self.phase = 2
return master_pos
else: # phase 2
if master_pos - self.cut_length*self.sync_ratio > self.cut_length*0.2:
self.phase = 0
return 2*self.cut_length*self.sync_ratio - master_pos
5. 工程实践要点
5.1 参数整定步骤
- 先设定保守速度(额定值的60%)
- 调整同步区比例直至切割位置稳定
- 逐步提高速度观察振动情况
- 最后微调前馈补偿量
5.2 常见故障处理
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 切割位置波动大 | 同步区过窄 | 增大SyncRatio(0.7→0.85) |
| 末端振动明显 | 减速段曲线太陡 | 增加减速时间或改用S型曲线 |
| 偶尔漏切 | 系统延迟未补偿 | 加大速度前馈系数 |
5.3 性能优化技巧
- 采用查表法替代实时计算:预先计算好位置曲线存入数组
- 使用Q格式数优化浮点运算:在定点PLC中提升计算速度
- 增加预测算法:通过历史数据预测下一周期位置
在实际项目中,我们曾通过以下配置将追剪精度控制在±0.3mm内:
- 同步区比例:82%
- 前馈补偿:2个扫描周期
- 曲线类型:7段S型曲线
- 控制周期:1ms
这种电子凸轮方案相比机械凸轮,调试时间缩短了70%,并且支持通过HMI随时修改工艺参数。对于需要频繁换产的生产线,优势尤为明显。
