第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个点,精度和性能都兼顾。
  • 忽略加速度限制:曲线算出来位置没问题,但加速度超了。电机直接过载报警。所以生成表格后,一定要检查加速度曲线。

核心总结:电子凸轮的本质就是一张映射表。曲线选对了,参数算准了,表格生成对了,剩下的就是执行。别把简单的事情搞复杂了。