2、运动控制核心概念:轴、坐标系、运动模式(点位、连续、回零)、PLCopen标准简介

大家好,我是老张。今天咱们聊聊运动控制里最基础、也最绕不开的几个概念。说实话,我带过不少新人,发现很多人一开始就被这些术语搞晕了。轴是什么?坐标系怎么建?运动模式有啥区别?别急,我一个一个给你拆开讲。

2.1 轴——运动控制的最小单元

轴,说白了就是电机带动的那个自由度。你想想看,一个机械臂能上下动,那就是一个轴;能左右转,又是一个轴。我习惯把轴比作人的关节——每个关节独立活动,但组合起来就能完成复杂动作。

在PLCopen标准里,轴被抽象成一个对象。它有位置、速度、加速度这些属性。嗯,这里要注意:轴不一定是物理存在的。比如电子凸轮里的虚拟轴,它没有电机,但照样能参与运算。

核心要点:轴是运动控制的原子单位。你写的所有运动指令,最终都是发给某个轴的。

我在项目中遇到过一件事:有个同事把两个物理轴当成一个轴来配置,结果一启动就撞限位。后来我告诉他,每个轴必须单独初始化,哪怕它们物理上联轴器连着。这个坑,我踩过。

2.2 坐标系——让轴们协同工作

单轴运动很简单,但多轴联动就得上坐标系了。坐标系是什么?它定义了多个轴之间的空间关系。比如一个XY平台,X轴和Y轴垂直相交,它们的交点就是原点。

我个人习惯把坐标系分成两类:

  • 机床坐标系:出厂就定死的,一般不能改。比如龙门铣的绝对零点。
  • 工件坐标系:你编程时用的。可以偏移、旋转,方便你按图纸尺寸写程序。

为什么会这样分?因为实际加工时,工件装夹位置不可能每次都一样。你总不能每次改程序吧?所以PLCopen标准里提供了坐标系变换的功能。你只需要设定一个偏移量,系统自动帮你算。

我的经验:坐标系变换的精度,取决于你标定的精度。我曾经用激光跟踪仪标定一个六轴机器人,花了整整一天。但标定完,重复定位精度从0.5mm降到了0.02mm。值不值?你自己掂量。

2.3 运动模式——点位、连续、回零

运动模式,就是轴怎么动。PLCopen定义了三种基本模式,我一个个说。

2.3.1 点位运动(Point-to-Point)

点位运动,也叫PTP。它只关心起点和终点,中间路径不管。比如你让一个轴从100mm走到200mm,它怎么走?加速、匀速、减速,走一条S曲线。至于中间经过150mm时速度是多少?不重要。

这种模式适合什么场景?搬运、点焊、点胶。你只需要保证到点位置准,中间别撞就行。

// 一个简单的点位运动指令(PLCopen风格)
MC_MoveAbsolute(
    Axis := Axis1,
    Position := 200.0,
    Velocity := 100.0,
    Acceleration := 500.0,
    Deceleration := 500.0,
    Jerk := 2000.0,
    Execute := TRUE
);

避坑指南:我曾经在一条生产线上用点位运动做圆弧插补,结果轨迹全是折线。后来才意识到,点位运动不保证路径形状。要做圆弧,得用连续运动模式。

2.3.2 连续运动(Continuous Path)

连续运动,也叫CP。它不光管起点终点,还管中间路径。比如你要画一个圆,点位运动做不到,但连续运动可以。它会实时插补,让轴们按照你设定的轨迹走。

连续运动的核心是插补算法。直线插补、圆弧插补、样条插补……这些算法决定了轨迹的平滑度。我建议你重点关注两个参数:

  • 插补周期:一般1ms到10ms。周期越短,轨迹越平滑,但对CPU压力越大。
  • 前瞻距离:系统提前看多远的路。前瞻越长,加减速越平滑,但内存占用越大。

你想想看,如果插补周期是10ms,而你的速度是100mm/s,那每10ms才计算一次位置。轨迹能平滑吗?显然不能。所以高速加工时,插补周期必须短。

2.3.3 回零运动(Homing)

回零,就是找原点。每次上电,轴都不知道自己在哪里。你得让它找个参考点,把位置清零。这个过程叫回零。

PLCopen标准里定义了多种回零模式:

模式 描述 适用场景
模式0 直接找限位开关,然后反向找Z脉冲 增量式编码器
模式1 找正限位,然后反向找Z脉冲 有正限位开关
模式2 找负限位,然后反向找Z脉冲 有负限位开关
模式7 直接找Z脉冲,不依赖限位 绝对式编码器

嗯,这里要注意:回零的可靠性直接影响后续所有运动。我见过一个案例,回零时没找到Z脉冲,结果原点偏了0.1mm。后面所有加工都偏了。排查了三天才发现是回零参数设错了。

我的建议:回零速度别设太快。我一般设成正常运动速度的10%~20%。慢是慢了点,但可靠。你想想看,省下来的调试时间,够你回零几百次了。

2.4 PLCopen标准简介

PLCopen是什么?它是一个国际组织,专门制定PLC编程的标准。运动控制这块,他们搞了个PLCopen Motion Control标准。说白了,就是让大家写运动控制程序时,函数名、参数、行为都统一。

为什么要统一?你想想看,以前换一个品牌的驱动器,整个程序都得重写。有了PLCopen,函数接口一样,底层驱动换一下就行。我这些年用过三菱、西门子、倍福,程序结构基本没变过。

PLCopen标准的核心是功能块(Function Block)。每个功能块封装一个运动功能,比如:

  • MC_Power:使能轴
  • MC_MoveAbsolute:绝对定位
  • MC_MoveRelative:相对定位
  • MC_Home:回零
  • MC_Stop:停止

每个功能块都有标准的输入输出引脚。比如Execute是触发信号,Done是完成信号,Error是错误信号。你只要按这个规范写,代码可读性极高。

个人经验:PLCopen标准里有个状态机,定义了轴的各种状态:待机、运行、停止、错误等。我建议你把状态机画出来,贴在工位上。调试时看一眼就知道轴在什么状态,排查问题快很多。

2.5 知识体系总览

下面这张图,是我自己总结的运动控制核心概念关系图。你看一眼,就能明白轴、坐标系、运动模式、PLCopen标准之间怎么关联的。

运动控制核心概念关系图 运动控制系统 轴 (Axis) 坐标系 (CS) 运动模式 PLCopen标准 物理轴 / 虚拟轴 位置 / 速度 / 加速度 机床坐标系 工件坐标系 点位运动 (PTP) 连续运动 (CP) 回零运动 (Homing) 功能块 (FB) 状态机 最小执行单元 空间关系定义 运动行为分类 编程接口规范 四个概念相互独立又紧密关联,共同构成运动控制的知识基础

这张图我画了好几次才满意。你看,轴是基础,坐标系是空间框架,运动模式是行为方式,PLCopen是编程规范。四者缺一不可。

好了,这一章的内容就这些。核心概念先吃透,后面讲状态机实现时,你才不会懵。记住我一句话:运动控制没有捷径,基础打牢了,什么复杂项目都不怕。


公众号:蓝海资料掘金营,微信deep3321