ZeroOne AI
← 返回文章列表

运动控制电子凸轮(Electronic Cam)设计:从运动需求到 Trio FLEXLINK 凸轮曲线公式推导

👁 1
分类:机器人自动化

高速包装、旋转刀、飞剪等设备中,从轴需要在指定位置加速、减速、超前、滞后且全程平滑,这就是电子凸轮设计问题。本文以 Trio Motion Controller + FLEXLINK/CamGen + 旋转刀为例,从运动需求出发,讲解 Base Move 基础同步 + Excitation Move 凸轮补偿的结构,并完整推导 OffsetSinSpeedConstCurve 曲线中 c1/c2/c3/k2/k3 的数学公式:由位移连续、速度连续与总位移约束联立求解;最后给出产品长度 100~400mm 动态变化时的参数化电子凸轮算法(SmoothStep 平滑过渡 + FLEXLINK 自动生成曲线)。

在高速包装、旋转刀、飞剪、印刷、贴标、灌装以及连续送料设备中,经常会遇到这样一种运动控制需求:

从轴需要跟随主轴运动,但又不能始终保持简单的 1:1 电子齿轮关系,而是需要在指定位置加速、减速、超前、滞后,并且整个过程必须平滑。

这种问题就是典型的电子凸轮(Electronic Cam)设计问题。

传统机械设备通过凸轮机构实现这种运动关系,而现代伺服系统可以通过软件实时计算"主轴位置 → 从轴位置"的映射关系,实现机械凸轮的电子化。

本文以 Trio Motion Controller + FLEXLINK/CamGen + 旋转刀为例,从运动需求、数学模型、速度曲线、位置曲线,到最终公式推导,完整介绍电子凸轮的设计方法。

一、什么是电子凸轮?

电子凸轮可以理解为:

Y = f(X)

其中:

主轴可以是:

从轴可以是:

例如:

主轴位置 X
 │
 ▼
 ┌───────────────┐
 │ Electronic Cam │
 │ Y = f(X)      │
 └───────────────┘
 │
 ▼
从轴位置 Y

因此,电子凸轮的核心并不是"控制电机转速",而是:

建立主轴位置与从轴位置之间的数学关系。

速度、加速度实际上都是由位置曲线进一步求导得到的。

二、为什么不能简单使用电子齿轮?

假设输送带速度为 V_M,旋转刀需要始终保持 V_S = V_M,这时使用电子齿轮即可。

例如:

主轴:100 mm
从轴:100 mm

即:

Y/X = 1

但是旋转刀实际工作时通常并不是这样。

例如:

   旋转刀
    ↓
 ┌────────┐
 │        │
────┴────────┴───── 传送带

刀具可能需要:

  1. 前段快速加速;
  2. 中间区域与产品同步;
  3. 完成切割;
  4. 后段快速减速;
  5. 回到下一次切割位置。

因此从轴的速度必须动态变化:

速度
 ↑
 │        ┌──────────┐
 │       /            \
 │______/              \________
 │
 └──────────────────────────────→ 主轴位置

这就是电子凸轮。

三、旋转刀电子凸轮的典型工艺要求

以一个连续输送的旋转刀系统为例。

假设:

旋转刀:

0° → 360°

其中:

90° → 270°

是刀具与产品同步工作的区域。

也就是说:

90°~270° 这 180° 范围是有效同步区。

假设产品跟踪长度为 L,产品长度可以动态变化:

100 ≤ L ≤ 400

工艺要求:

L = 100 mm,整个有效区域都可以高速同步:

100 mm
┌──────────────────────────────┐
│          高速同步            │
└──────────────────────────────┘

L = 150 mm,要求:

高速同步:50 mm
低速调整:100 mm

L = 200 mm,要求:

高速同步:50 mm
低速调整:150 mm

L = 400 mm,要求:

高速同步:50 mm
低速调整:350 mm

同时:

100~400 mm 之间不能出现速度突变,需要平滑过渡。

这就构成了一个动态电子凸轮问题。

四、电子凸轮应该从"位置"开始设计

很多人在设计运动曲线时,第一反应是直接设计速度:

速度 → 加速 → 匀速 → 减速

实际上更推荐从 Y = f(X) 开始。

因为:

V = dY/dX

而加速度则可以继续通过求导得到。

所以:

位置曲线
 ↓ 一阶导
速度曲线
 ↓ 二阶导
加速度曲线

因此电子凸轮设计的核心是:

首先保证位置连续,再保证速度连续,最后根据需要保证加速度和 Jerk 连续。

五、Trio FLEXLINK 的基本思想

Trio 提供的 FLEXLINK() 正适合这种应用。

基本格式:

FLEXLINK(
  base_dist,     基础运动距离
  excite_dist,   凸轮补偿距离
  link_dist,     主轴联动总距离
  base_in,       凸轮开始前的预留
  base_out,      凸轮结束后的预留
  excite_acc,    凸轮加速比例
  excite_dec,    凸轮减速比例
  link_axis,     从轴
  options,       曲线类型选项
  start_pos      起始位置
)

它将运动分成两个部分:

最终运动 = Base Move + Excitation Move

也就是:

基础同步运动
+
凸轮补偿运动

六、Base Move:基础同步运动

Base Move 可以理解成一个电子齿轮。

例如:

base_dist = 100
link_dist = 100

表示:

主轴运动 100 → 从轴运动 100

也就是:

Y_base = X

如果:

base_dist = 270
link_dist = 360

则基础运动比例:

K = 270/360 = 0.75

即:

Y_base = 0.75X

七、Excitation Move:凸轮补偿

Excitation 是在基础运动上增加一个平滑变化量。

例如:

base_dist = 270
excite_dist = 90

那么最终:

Y = 270 + 90 = 360

因此:

Base        Excitation        Total
270      +  90          =     360

这正是旋转刀非常有用的结构。

八、CamGen 中的典型曲线

Trio CamGen 可以生成类似 OffsetSinSpeedConstCurve 的曲线。

它实际上由五段组成:

0        x1     x2        x3     x4       1
│--------│------│---------│------│--------│
  Idle    加速    匀速      减速    Idle

例如:

x1 = 0.30
x2 = 0.42
x3 = 0.58
x4 = 0.70

对应:

0~30%   不进行 Excitation
30~42%  SIN 加速
42~58%  匀速
58~70%  SIN 减速
70~100% 保持 Excitation 终值

因此整个曲线非常适合高速运动机构。

九、为什么采用 SIN 曲线?

假设速度采用:

v = c(1 − cosθ)

其中:

0 ≤ θ ≤ π

那么:

起点:v = 0

终点:v = 2c

速度会平滑地从 0 增加到最大值。

积分后得到位置:

y = (c/k)(θ − sinθ)

其中:

k = π/(x2 − x1)

这就是 CamGen 中使用的核心公式之一。

十、CamGen 常数是如何计算出来的?

这是电子凸轮设计中非常重要的一部分。

例如:

x1 = 0.30
x2 = 0.42
x3 = 0.58
x4 = 0.70

basedist = 270
excitedist = 90

CamGen 生成:

c1 = 160.7
c2 = 321.4
c3 = 160.7

k2 = -115.7
k3 = 51.43

这些数字并不是经验参数。

它们是由位移连续 + 速度连续 + 总位移约束推导出来的。

十一、第一段 SIN 曲线

程序:

factor = PI / (x2 - x1)
theta = (x - x1) * factor

y = c1 / factor * (theta - sin(theta))

其中:

factor = π/(x2 − x1)

当前例子:

x2 − x1 = 0.42 − 0.30 = 0.12

因此:

factor = π/0.12

约为:

26.18

十二、为什么 c2 = 2c1?

SIN 加速段结束时:

θ = π

速度公式:

v = c1(1 − cosθ)

所以:

v = c1(1 − cosπ)

因为:

cosπ = −1

所以:

v = 2c1

而中间匀速段速度就是 c2。

为了保证速度连续:

c2 = 2c1

因此:

c2 = 2 × c1

十三、c1 如何计算?

第一段 SIN 位移:

y1 = c1(x2 − x1)

最后一段减速位移:

y3 = c3(x4 − x3)

如果加速和减速对称:

c3 = c1

总 Excitation 距离为 E。

因此:

E = c1(x2 − x1) + c2(x3 − x2) + c3(x4 − x3)

如果:

x2 − x1 = x4 − x3 = A

且:

c2 = 2c1

则:

E = c1·A + 2c1·B + c1·A

即:

E = 2c1(A + B)

所以:

c1 = E / [2(A + B)]

对于当前参数:

A = 0.12,B = 0.16,E = 90

因此:

c1 = 90 / [2 × (0.12 + 0.16)]

得到:

c1 = 160.714

于是:

c2 = 321.428

c3 = 160.714

与 CamGen 生成的:

c1 = 160.7
c2 = 321.4
c3 = 160.7

完全一致。

十四、k2 如何计算?

匀速段公式:

y = c2·x + k2

因此需要保证:

SIN 曲线
 ↓
匀速直线

连接点位置连续。

在 x = x2 处:

c2·x2 + k2 = c1(x2 − x1)

所以:

k2 = c1(x2 − x1) − c2·x2

代入:

k2 = 160.714 × 0.12 − 321.428 × 0.42

得到:

k2 = −115.714

也就是:

k2 = -115.7

十五、k3 如何计算?

减速段:

y = c3 / factor * (theta - sin(theta)) + k3

在减速开始位置 x = x3 处,必须与匀速段相等。

因此:

c3(x4 − x3) + k3 = c2·x3 + k2

得到:

k3 = c2·x3 + k2 − c3(x4 − x3)

代入当前参数:

k3 = 321.428 × 0.58 − 115.714 − 160.714 × 0.12

得到:

k3 = 51.428

即:

k3 = 51.43

至此,CamGen 中的所有关键常数都可以自己推导出来。

十六、最终 CamGen 公式

因此整个 Excitation 曲线可以写成:

y(x) =
  0                       0 ≤ x < x1
  (c1/k)(θ − sinθ)        x1 ≤ x < x2
  c2·x + k2               x2 ≤ x < x3
  (c3/k)(θ − sinθ) + k3   x3 ≤ x < x4
  E                       x4 ≤ x ≤ 1

其中:

加速段:θ = (x − x1)·k,k = π/(x2 − x1)

减速段:θ = π + (x − x3)·k

最终 Trio 表中的位置:

Y(x) = x × BaseDistance + y(x)

这就是完整的电子凸轮位置函数。

十七、对应到旋转刀

对于旋转刀:

0°                360°
│-----------------│

可以把一个完整刀轴周期定义为:

0%                100%
│-----------------│

例如:

0~30%    Base 同步
30~42%   加速
42~58%   高速同步
58~70%   减速
70~100%  Base 同步

最终得到平滑的刀轴速度:

刀轴速度

        ┌─────────────┐
       /               \
______/                 \______

而不是:

        ┌─────────────┐
_______/               \_______
        ↑              ↑
      突然加速       突然减速

后者会造成:

十八、为什么需要"速度连续"?

电子凸轮最基本的要求之一就是:

V_left = V_right

例如:

SIN 加速
 ↓
●──────── 匀速

连接点不能出现速度突变:

速度
│      /
│     /
│    /
│____●────────
     ↑
    突变

正确情况应该是:

速度
│      ________
│     /
│    /
│___/

这样伺服电机不会突然改变速度。

十九、进一步要求:加速度连续

如果设备速度非常高,仅仅保证速度连续还不够。

还需要:

A_left = A_right

进一步可以考虑 Jerk(加加速度):

J = dA/dt

因此常见曲线可以分为:

曲线平滑程度应用
线性 Ramp★★低速机构
5次多项式★★★★高速机械
7次多项式★★★★★高动态
9次多项式★★★★★高精度高速
SIN★★★★通用电子凸轮

Trio FLEXLINK 的 options 中就提供了这些曲线类型。

二十、FLEXLINK 参数与电子凸轮的关系

可以把 FLEXLINK 理解成:

           FLEXLINK
              │
  ┌───────────┴───────────┐
  ↓                       ↓
Base Move            Excitation
  │                       │
基础同步              凸轮补偿
  │                       │
  └───────────┬───────────┘
              ↓
        从轴最终位置

几个核心参数:

二十一、旋转刀项目中的设计思路

针对前面的 100~400 mm 动态跟踪长度,可以建立如下算法。

首先输入产品跟踪长度 L,然后计算高速同步区域 HighLen(L)。

例如:

L = 100 → HighLen = 100
L = 150 → HighLen = 50
L = 200 → HighLen = 50
L = 300 → HighLen = 50
L = 400 → HighLen = 50

但是不能简单写成:

if L <= 100:
    HighLen = 100
else:
    HighLen = 50

因为在 L = 100 → 101 时会产生巨大跳变。

所以应该使用平滑函数。

例如 SmoothStep:

S(t) = 3t² − 2t³

定义:

t = (L − 100)/50

限制:

0 ≤ t ≤ 1

然后:

HighLen = 50 + 50(1 − S(t))

这样:

L = 100 → HighLen = 100
L = 150 → HighLen = 50

中间自动平滑变化。

二十二、进一步计算高速区角度

旋转刀有效同步区:

180°

因此:

θ_H = 180° × HighLen / L

例如:

L = 100:

θ_H = 180°,整个 90°~270° 都是高速同步。

L = 200:

θ_H = 180 × 50/200 = 45°

即高速区域可以设计为 90°~135°。

然后 135°~270° 进行平滑低速调整。

L = 400:

θ_H = 180 × 50/400 = 22.5°

高速区进一步缩短。

二十三、最终形成动态电子凸轮

整个系统可以设计成:

产品跟踪长度 L
 │
 ▼
┌─────────────────┐
│  HighLen 计算    │
│  100~400mm      │
└────────┬────────┘
         │
         ▼
  高速区角度计算
         │
         ▼
┌──────────────────┐
│ 电子凸轮参数生成  │
│ x1 x2 x3 x4      │
│ c1 c2 c3         │
│ k2 k3            │
└────────┬─────────┘
         │
         ▼
   FLEXLINK/CAM
         │
         ▼
  Trio 运动控制器
         │
         ▼
    旋转刀伺服

这样就不需要针对 100/150/200/250/300/350/400 mm 分别制作七套凸轮表。

而是:

输入产品长度 → 自动计算凸轮参数 → 自动生成运动曲线。

二十四、工程设计时最重要的几个原则

  1. 先设计位置,再设计速度
    核心是 Y = f(X),而不是直接控制 V = f(X)。

  2. 保证位移连续
    Y_left = Y_right

  3. 保证速度连续
    V_left = V_right

  4. 高速设备最好保证加速度连续
    A_left = A_right

  5. 尽量控制 Jerk
    高速旋转刀尤其需要考虑 J = dA/dt。

  6. 不要让产品长度变化导致凸轮参数突变
    应该 100mm → 120mm → 150mm → 200mm 连续调整,而不是 100mm 一套 Cam、101mm 又另一套 Cam。

二十五、总结

电子凸轮本质上是一个数学映射:

Y = f(X)

通过这个映射,可以让从轴按照主轴的位置自动改变运动速度。

Trio 的 FLEXLINK() 则进一步将运动拆分成:

FinalMove = BaseMove + ExcitationMove

其中:

对于旋转刀、飞剪、连续送料等设备,真正值得设计的不是一张固定的 CAMTABLE,而是一套:

"产品长度 → 高速跟踪区 → 凸轮参数 → 位置曲线 → 速度/加速度曲线 → Trio FLEXLINK"

的参数化电子凸轮算法。

这样当产品从 100 mm 改成 150 mm、200 mm 甚至 400 mm 时,系统都可以实时重新计算凸轮,而不需要重新手工制作凸轮表。

最终目标不是让电机"按照某个速度运行",而是让旋转刀的每一个角度,都与传送带的每一个位置建立确定、连续、可计算的运动关系。

评论(0