第四章 电子凸轮(CAM)基础:凸轮曲线类型与主从轴同步
各位工程师朋友,今天我们来聊聊电子凸轮。说实话,我刚入行那会儿,一听到「凸轮」两个字,脑子里全是机械加工件——那种金属疙瘩,磨得锃亮,装在机器上嘎嘎响。后来做了运动控制,才发现电子凸轮才是真正的「软刀子」,灵活、精准、可调,简直是包装机械的灵魂。
电子凸轮,说白了就是用软件模拟机械凸轮的轮廓。你想想看,机械凸轮换一个就要停机、拆装、调试,半天时间就没了。电子凸轮呢?改几个参数,下载一下,搞定。我在一条装盒产线上就遇到过,客户要求换包装规格,机械凸轮得重新加工,工期两周。换成电子凸轮,我当场改曲线,半小时搞定。嗯,这就是差距。
核心概念:电子凸轮 = 主从轴之间的位置映射关系。主轴转一圈,从轴按照预设曲线走一个周期。这个映射关系,就是凸轮表。
4.1 凸轮曲线类型
曲线类型决定了从轴的运动特性。选错了,机器抖、噪音大、寿命短。选对了,平稳、高效、耐用。我见过太多工程师随便选个S型曲线就完事,结果高速运行时振动大得吓人。这里我给大家梳理一下最常见的四种曲线。
4.1.1 梯形曲线
梯形曲线是最简单的。加速段、匀速段、减速段,三段式。加速度在切换点突变,说白了就是「急加速、急减速」。好处是计算简单,响应快。坏处呢?冲击大,机械磨损严重。
适用场景:低速、低精度、对冲击不敏感的场合。比如一些简单的送料机构。
我个人习惯:除非客户预算极低,否则我不会用梯形曲线。为什么?因为后期维护成本太高。我曾经在一个纸箱成型机上用过梯形曲线,三个月后凸轮从动件就磨损了,客户投诉不断。后来换成修正梯形,问题解决。
4.1.2 修正梯形曲线
修正梯形曲线在梯形的基础上,把加速度突变点做了圆滑处理。说白了,就是给「急加速」和「急减速」加了缓冲。加速度变化率(Jerk)不再是无穷大,而是有限值。
修正梯形是工业界的「万金油」。它兼顾了梯形曲线的快速性和S型曲线的平稳性。我在大多数包装机械项目中,首选就是修正梯形。
我的经验:修正梯形曲线的加速度变化率一般设为梯形曲线的1/3到1/2。这样既能减少冲击,又不会让加减速时间过长。具体数值,建议根据实际负载做仿真验证。
4.1.3 S型曲线
S型曲线,也叫正弦加速度曲线。它的加速度是正弦波形状,从零开始平滑增加到峰值,再平滑减小到零。整个运动过程没有加速度突变,冲击最小。
但是,S型曲线的计算量最大,而且加减速时间比梯形曲线长。如果你追求极致的平稳性,比如药品包装、精密电子装配,S型曲线是首选。
避坑指南:我曾经在一个高速贴标机上用S型曲线,结果发现从轴跟不上主轴的速度。为什么?因为S型曲线的加减速时间太长,导致从轴在高速段停留时间不足。后来我改用修正梯形,配合速度前馈,才解决了问题。所以,S型曲线不是万能的,要结合系统带宽来选。
4.1.4 多项式曲线
多项式曲线,就是用多项式函数来拟合凸轮轮廓。最常见的是3次、5次、7次多项式。次数越高,曲线越平滑,但计算量也越大。
多项式曲线的最大优势是灵活性。你可以通过调整多项式系数,定制任意形状的凸轮曲线。比如,有些特殊工艺要求从轴在某个位置停留一段时间,或者要求特定的速度曲线,这时候多项式曲线就派上用场了。
我建议:除非你有明确的数学推导,否则不要轻易用高阶多项式。我在一个项目中用过7次多项式,结果曲线出现振荡,从轴在高速时抖动。后来降到5次,问题解决。记住,越高阶越容易「过拟合」。
| 曲线类型 | 冲击程度 | 计算复杂度 | 适用速度 | 典型应用 |
|---|---|---|---|---|
| 梯形 | 大 | 低 | 低速 | 简单送料 |
| 修正梯形 | 中 | 中 | 中高速 | 通用包装 |
| S型 | 小 | 高 | 中低速 | 精密装配 |
| 多项式 | 可调 | 高 | 全速域 | 特殊工艺 |
4.2 电子凸轮表生成
凸轮表,就是主从轴的位置映射表。主轴角度(0~360°)对应从轴位置。生成凸轮表,就是把曲线离散化成一系列点。
生成步骤其实不复杂:
- 确定主轴分辨率:一般取3600点(0.1°步长)或7200点(0.05°步长)。分辨率越高,曲线越平滑,但占用内存也越大。
- 计算从轴位置:根据选定的曲线类型,计算每个主轴角度对应的从轴位置。
- 写入控制器:把计算好的位置数组下载到运动控制器中。
下面是一个简单的凸轮表生成代码示例(伪代码):
// 生成修正梯形凸轮表
// 参数:主轴分辨率 3600点,从轴行程 100mm
int points = 3600;
float camTable[points];
float stroke = 100.0;
for (int i = 0; i < points; i++) {
float angle = (float)i / points * 360.0;
// 修正梯形曲线计算
float position = ModifiedTrapezoid(angle, stroke);
camTable[i] = position;
}
// 写入控制器
WriteCamTable(camTable, points);
注意:凸轮表生成后,一定要做仿真验证。我见过有人直接下载到控制器,结果从轴反向运动,差点撞机。原因就是曲线计算时符号搞反了。所以,先仿真,再下载,这是铁律。
4.3 主从轴同步
主从轴同步,是电子凸轮的核心。主轴可以是虚拟轴(比如编码器模拟),也可以是实轴(比如电机轴)。从轴跟随主轴运动,两者之间的位置关系由凸轮表定义。
同步的关键参数有三个:
- 同步比:主轴转一圈,从轴走多少行程。比如同步比1:1,主轴转一圈,从轴走一个周期。
- 相位偏移:主轴和从轴之间的起始角度差。调整相位偏移,可以改变从轴的动作时机。
- 电子齿轮比:如果主轴和从轴的物理分辨率不同,需要用电子齿轮比做匹配。
我遇到过的一个坑:有一次调试一台枕式包装机,主轴是编码器,从轴是伺服电机。凸轮表下载后,从轴动作总是慢半拍。查了半天,发现是电子齿轮比设错了。主轴编码器是2500线,伺服电机是17位绝对值编码器,两者分辨率差了十几倍。我忘了设置电子齿轮比,导致从轴位置计算错误。嗯,从那以后,我每次都会先检查分辨率匹配。
下面是一个主从轴同步的配置示例:
// 配置主从轴同步
// 主轴:编码器通道1,分辨率2500线
// 从轴:伺服轴1,分辨率131072线(17位)
// 设置电子齿轮比
SetGearRatio(masterAxis, slaveAxis, 131072, 2500);
// 加载凸轮表
LoadCamTable(slaveAxis, camTable, 3600);
// 启动同步
EnableCamSync(slaveAxis, masterAxis, 0); // 0表示相位偏移为0
调试技巧:启动同步后,先低速运行,观察从轴是否跟随。如果从轴有抖动或滞后,可以调整速度前馈和加速度前馈参数。我一般先调速度前馈,再调加速度前馈,这样效率最高。
知识体系总览
下面这张图,是我自己总结的电子凸轮知识体系。你可以把它当作调试时的「地图」。
好了,这一章的内容就到这里。电子凸轮的基础知识,说白了就是三件事:选对曲线、生成好表、调好同步。这三件事做好了,包装机械的运动控制就稳了八成。剩下的两成,是现场经验和故障处理,我们后面章节再聊。