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标准之间怎么关联的。
这张图我画了好几次才满意。你看,轴是基础,坐标系是空间框架,运动模式是行为方式,PLCopen是编程规范。四者缺一不可。
好了,这一章的内容就这些。核心概念先吃透,后面讲状态机实现时,你才不会懵。记住我一句话:运动控制没有捷径,基础打牢了,什么复杂项目都不怕。
公众号:蓝海资料掘金营,微信deep3321