2. 运动控制核心概念:位置、速度、加速度、加加速度(Jerk)、运动曲线(S曲线、T曲线)、插补算法简介

各位同学,欢迎来到第二章。

这一章,咱们聊聊运动控制的“基本功”。说白了,就是那些你天天用,但未必真吃透的概念。位置、速度、加速度,还有那个让人又爱又恨的加加速度(Jerk)。

我刚开始做运动控制那会儿,觉得只要把电机转起来就行。结果呢?机器一跑起来,抖得像筛糠,加工出来的零件全是毛刺。后来才明白,这些基础概念没搞懂,上层算法写得再花哨也是白搭。

2.1 从位置到加加速度:一个都不能少

咱们先捋一遍这几个物理量。它们之间的关系,其实就是微积分。

  • 位置(Position):就是物体在空间中的坐标。比如电机转了多少圈,或者滑块走到了哪个毫米刻度上。这是最直观的反馈。
  • 速度(Velocity):位置的变化率。说白了,就是单位时间走了多远。我习惯用脉冲/秒或者毫米/秒来算。
  • 加速度(Acceleration):速度的变化率。决定了电机从静止到高速需要多久。加速度太大,电机会“冲”过头;太小,又太磨叽。
  • 加加速度(Jerk):加速度的变化率。嗯,这个有点绕。你可以理解为“加速度的加速度”。

核心公式(离散域,FPGA里常用):

// 假设时间步长为 dt
位置(t+1) = 位置(t) + 速度(t) * dt
速度(t+1) = 速度(t) + 加速度(t) * dt
加速度(t+1) = 加速度(t) + 加加速度(t) * dt

为什么会引入Jerk?我举个例子。你在项目里遇到过那种“急停”吗?电机瞬间从高速降到零,加速度无穷大。这时候,机器会“哐”一声,整个机架都在抖。这就是Jerk太大的后果。

我曾经调试一台高速贴片机,就是被这个Jerk坑惨了。不加Jerk限制,贴片头一加速,元件就飞了。后来加了S曲线,才把振动压下去。

2.2 运动曲线:T曲线 vs S曲线

运动曲线,就是规划位置、速度、加速度随时间变化的轨迹。最常见的两种:T曲线和S曲线。

2.2.1 T曲线(梯形速度曲线)

T曲线,顾名思义,速度曲线像个梯形。分为三个阶段:匀加速、匀速、匀减速。

  • 优点:算法简单,计算量小。在FPGA里实现,几乎不占资源。
  • 缺点:加速度突变。在加速开始和结束的瞬间,Jerk是无穷大。这会导致机械冲击。

我建议,如果只是做简单的点位控制,比如传送带启停,T曲线够用了。但要是做高精度加工,比如CNC雕刻,T曲线出来的表面光洁度会很差。

2.2.2 S曲线(S形速度曲线)

S曲线,就是对加速度也做了平滑处理。速度曲线像个拉长的“S”。它通常有七个阶段:加加速度、匀加速、减加速度、匀速、加减速度、匀减速、减减速度。

  • 优点:运动极其平滑,Jerk可控。机械磨损小,定位精度高。
  • 缺点:算法复杂,计算量大。在FPGA里实现,需要精心设计状态机。

我的经验:在FPGA里做S曲线,别想着用浮点数。全部定点化,用移位代替除法。我曾经为了省几个LUT,把S曲线的查表法改成了多项式逼近,效果还不错。

2.3 插补算法简介

插补,就是让电机走出直线、圆弧,甚至任意曲线。单轴运动很简单,多轴联动才是难点。

常见的插补算法有:

  • 直线插补(Linear Interpolation):两轴联动,走一条直线。核心是DDA(数字微分分析器)算法。
  • 圆弧插补(Circular Interpolation):走一个圆弧。需要实时计算圆心角,对FPGA的实时性要求很高。
  • 样条插补(Spline Interpolation):走任意曲线。一般用B样条或NURBS曲线。这个在高端CNC里才用得到。

注意:插补算法的核心是“时间分割”。每个插补周期(比如1ms),都要计算出下一时刻各轴的位置。如果计算超时,电机就会抖动。我在一个项目里,就是因为插补周期没算准,导致两轴不同步,画出来的圆变成了椭圆。

2.4 知识体系总览

为了让你更直观地理解这些概念之间的关系,我画了一张图。你可以看到,从物理量到运动曲线,再到插补算法,是一条完整的链路。

运动控制核心概念知识体系 位置 (Position) 速度 (Velocity) 加速度 (Acceleration) 加加速度 (Jerk) T曲线 (梯形速度曲线) S曲线 (S形速度曲线) 插补算法:直线插补 | 圆弧插补 | 样条插补 物理量 → 运动曲线 → 插补算法,层层递进

2.5 避坑指南与实战建议

聊了这么多理论,说点实际的。我在项目里踩过的坑,你们就别再踩了。

关于Jerk的设定:不要为了追求极致的平滑,把Jerk设得太小。那样会导致加速时间过长,影响生产效率。我一般会先设一个较大的Jerk,然后根据实际振动情况逐步调小。记住,Jerk不是越小越好,而是“够用就好”。

关于插补周期:FPGA里做插补,周期一定要固定。我曾经用过一个可变周期的方案,结果速度一快,插补就丢步。后来改成固定1ms周期,用定时器中断触发,问题就解决了。

最后,送你一张速查表。调试的时候,对照着看,能省不少时间。

概念 物理意义 FPGA实现要点 常见问题
位置 坐标值 用计数器累加脉冲 溢出处理
速度 位置变化率 用定时器控制脉冲频率 低速抖动
加速度 速度变化率 用累加器改变频率 过冲
加加速度 加速度变化率 用状态机分段控制 计算资源占用

嗯,这一章的内容就到这儿。这些概念,你最好能背下来。因为后面的所有章节,都是建立在这些基础之上的。

专注资料整理