第3章 电子凸轮原理:凸轮曲线的数学定义与生成逻辑
电子凸轮,说白了就是用软件模拟机械凸轮。机械凸轮靠物理轮廓传递运动,电子凸轮靠一张数据表——主轴位置对应从轴位置。这张表怎么来的?就是靠数学曲线算出来的。
我刚开始接触电子凸轮时,总觉得这东西很玄。后来拆开一看,核心就三件事:选曲线、定关系、生成表格。今天咱们就把这三件事掰开揉碎讲清楚。
3.1 凸轮曲线的数学定义
曲线决定了从轴怎么动。不同的曲线,加减速特性完全不同。我常用的有三种:正弦、摆线、多项式。
3.1.1 正弦曲线(Sinusoidal)
正弦曲线是最基础的。它的速度曲线是正弦波,加速度也是连续的。说白了,就是启动和停止都很平滑。
数学表达式:
y = h * [0.5 - 0.5 * cos(π * x / L)]
其中:h = 总行程,L = 主轴总行程,x = 主轴当前位置
我在项目中遇到过一个问题:用正弦曲线做高速追剪,结果切出来的料头总是不齐。后来发现,正弦曲线在终点位置的速度变化太缓,导致从轴在同步区有微小抖动。嗯,这里要注意——正弦曲线适合低速或中速场景,高速场景慎用。
3.1.2 摆线曲线(Cycloidal)
摆线曲线是我个人最常用的。它的加速度是正弦波,没有突变,理论上振动最小。
数学表达式:
y = h * [x/L - sin(2π * x / L) / (2π)]
摆线曲线的特点:
- 加速度连续且平滑
- 最大加速度比正弦曲线低约20%
- 适合高速、高精度场景
我记得有一次做飞剪项目,客户要求每分钟切200次。试了正弦曲线,振动太大。换成摆线曲线,问题直接解决。所以我的习惯是:没有特殊要求,优先选摆线。
3.1.3 多项式曲线(Polynomial)
多项式曲线最灵活。你可以通过调整系数,定制任意形状的曲线。常用的有3次、5次、7次多项式。
我的经验:5次多项式是黄金选择。它既能保证加速度连续,又能灵活调整速度曲线。3次多项式加速度有突变,7次多项式计算量太大,实际中很少用。
5次多项式表达式:
y = h * [10*(x/L)^3 - 15*(x/L)^4 + 6*(x/L)^5]
你想想看,为什么是5次?因为5次多项式可以保证位置、速度、加速度都连续。这在高速运动中特别重要——加速度不连续,机器就会抖。
3.2 主轴与从轴的关系
电子凸轮的核心就是主轴和从轴的映射关系。主轴通常是编码器或虚拟轴,从轴跟随主轴运动。
避坑指南:我曾经犯过一个低级错误——把主轴和从轴的关系理解成简单的比例关系。实际上,电子凸轮是非线性映射。主轴匀速转动,从轴可以加速、减速、暂停、反向。这才是电子凸轮的价值所在。
3.2.1 主从关系类型
| 类型 | 描述 | 典型应用 |
|---|---|---|
| 位置同步 | 从轴位置跟随主轴位置 | 飞剪、追剪 |
| 速度同步 | 从轴速度跟随主轴速度 | 印刷、包装 |
| 相位同步 | 从轴相位跟随主轴相位 | 旋转切割 |
飞剪和追剪,用的都是位置同步。主轴每转一圈,从轴完成一次完整的运动周期——加速、同步、减速、回零。
3.2.2 同步区与非同步区
一个完整的电子凸轮周期,分为两个区域:
- 同步区:从轴与主轴速度一致,完成切割动作
- 非同步区:从轴加速或减速,回到起始位置准备下一次切割
我习惯把同步区设计在主轴角度的30°~60°范围内。为什么?因为同步区越长,切割质量越好,但留给加减速的时间就越短。这是个权衡。
3.3 电子凸轮表的生成逻辑
电子凸轮表,就是一张二维表。主轴位置作为输入,查表得到从轴位置。生成这张表,需要经过四个步骤。
3.3.1 步骤一:确定运动参数
先要明确几个关键参数:
- 主轴总行程(通常为360°)
- 从轴总行程(切割长度)
- 同步区角度范围
- 最大速度、最大加速度
我的习惯:先把这些参数写在纸上,再开始编程。参数没定好,后面全是白干。
3.3.2 步骤二:选择曲线类型
根据应用场景选曲线:
| 场景 | 推荐曲线 | 理由 |
|---|---|---|
| 低速切割(<60次/分) | 正弦曲线 | 实现简单,计算量小 |
| 中速切割(60~150次/分) | 摆线曲线 | 加速度平滑,振动小 |
| 高速切割(>150次/分) | 5次多项式 | 可定制性强,适应高速 |
3.3.3 步骤三:计算离散点
把连续曲线离散化成表格。我一般用1024个点,精度够用,计算量也不大。
// 伪代码示例:生成摆线曲线凸轮表
for i = 0 to 1023:
x = i / 1024 * 360 // 主轴位置
if x in 同步区:
y = 摆线曲线(x) // 从轴位置
else:
y = 回零曲线(x) // 从轴回到起始位置
凸轮表[i] = (x, y)
避坑指南:我曾经直接在主循环里实时计算曲线,结果CPU负载飙到90%。后来改成预计算表格,查表执行,CPU负载降到15%。记住:凸轮表是预计算的,不是实时算的。
3.3.4 步骤四:验证与优化
生成表格后,一定要验证:
- 检查位置曲线是否连续
- 检查速度曲线是否平滑
- 检查加速度是否在允许范围内
我习惯用Excel或Python画个曲线图,一眼就能看出问题。有一次我发现加速度曲线有尖峰,查了半天,原来是同步区和非同步区的过渡点没处理好。加了一段过渡曲线,问题解决。
3.4 电子凸轮核心逻辑图
下面这张图,把电子凸轮的生成逻辑串起来了。从参数输入到表格输出,每一步都离不开。
3.5 实际项目中的避坑经验
做了这么多年运动控制,踩过的坑不少。挑几个典型的说说:
- 曲线选择不当:有一次用正弦曲线做高速追剪,结果从轴在同步区抖动。换成摆线曲线,问题解决。记住:高速场景优先摆线或多项式。
- 离散点太少:我见过有人用256个点生成凸轮表,结果从轴运动不平滑。我的建议:至少1024个点,精度和性能都兼顾。
- 忽略加速度限制:曲线算出来位置没问题,但加速度超了。电机直接过载报警。所以生成表格后,一定要检查加速度曲线。
核心总结:电子凸轮的本质就是一张映射表。曲线选对了,参数算准了,表格生成对了,剩下的就是执行。别把简单的事情搞复杂了。