4. 点位运动指令:绝对运动指令(MOV)、相对运动指令(MOVR)、回零指令(HOME)

点位运动,说白了就是让电机从A点跑到B点。听起来简单吧?但这里面的门道可不少。我刚开始做运动控制那会儿,就因为在MOV和MOVR之间选错了,结果设备撞了限位,吓得我一身冷汗。今天咱们就把这三个最基础的指令掰开揉碎了讲清楚。

4.1 绝对运动指令(MOV)

绝对运动,就是告诉电机:「你给我跑到坐标100的位置去」。不管电机当前在哪儿,它都会朝着目标位置跑。这个「绝对」是相对于原点(零点)来说的。

核心要点:MOV指令的目标位置是相对于原点的固定坐标值。

举个例子:假设原点在0,当前电机在50的位置。你执行 MOV 100,电机会从50跑到100。如果电机在200的位置,你执行 MOV 100,它会从200往回跑到100。

// 绝对运动指令示例
MOV 1000    // 电机运行到绝对位置1000
MOV 0       // 电机返回原点位置0
MOV -500    // 电机运行到负方向500的位置

我个人习惯在设备初始化或者换料完成后使用MOV。比如一个三轴点胶平台,每次换完PCB板,我都会用MOV把点胶头先移到安全位置,再开始工作。这样能避免撞到夹具。

小技巧:如果你用的是伺服电机,第一次上电后一定要先执行回零操作,否则MOV指令的参考系是不准的。我吃过这个亏,设备跑飞了才知道原点都没找。

4.2 相对运动指令(MOVR)

相对运动就更有意思了。它不关心目标位置的绝对值,只关心「从当前位置再走多少距离」。说白了就是增量运动。

还是刚才的例子:电机在50的位置,执行 MOVR 100,它会从50走到150。如果电机在200的位置,执行 MOVR 100,它会从200走到300。

// 相对运动指令示例
MOVR 500    // 从当前位置正向移动500个单位
MOVR -200   // 从当前位置反向移动200个单位
MOVR 0      // 原地不动(虽然没人会这么写)

你想想看,什么时候用MOVR最合适?我告诉你,做连续送料或者步进式加工的时候。比如一个传送带,每次前进100mm送一个工件,用MOVR就特别顺手。不用每次计算绝对位置,直接写 MOVR 100 循环执行就行。

注意:MOVR指令容易累积误差。如果你连续执行100次MOVR 10,理论上应该走了1000,但实际上因为机械间隙、编码器精度等问题,最终位置可能偏了零点几。我曾经在一个精密装配项目里就因为这个被坑了,后来改成了每10次用MOV校准一次。

4.3 回零指令(HOME)

回零,也叫找原点。这是所有运动控制系统的「定海神针」。没有原点,MOV和MOVR都是空中楼阁。

HOME指令的执行逻辑一般是:电机以较快的速度朝限位开关方向跑,碰到限位后减速,然后反向低速寻找精确的原点信号(通常是Z相信号或光耦信号)。

// 回零指令示例
HOME        // 执行回零操作,回到机械原点
HOME FAST   // 快速回零(某些控制器支持)
HOME SLOW   // 慢速回零(用于调试)

嗯,这里要注意:不同厂家的控制器,HOME指令的行为可能不一样。有的需要你先指定回零方向,有的会自动判断。我建议你在调试阶段,先用慢速回零观察一遍动作流程,确认没问题了再改成正常速度。

避坑指南:我曾经在一个项目里,因为回零速度设得太快,电机直接撞坏了限位开关。后来我养成了一个习惯:回零速度不要超过额定转速的30%,而且一定要在回零指令前加一个延时,确保驱动器已经完全准备好。

4.4 三种指令的对比与选择

指令 参考系 典型应用场景 注意事项
MOV 绝对坐标(基于原点) 定点定位、换料、初始化 必须先回零,否则位置不准
MOVR 相对坐标(基于当前位置) 步进送料、连续加工、手动微调 注意累积误差,定期校准
HOME 机械原点 上电初始化、异常恢复、换刀 速度不宜过快,注意限位保护

说白了,选哪个指令取决于你的应用场景。如果你需要精确知道每个位置在全局坐标系下的值,用MOV。如果你只关心相对位移量,用MOVR。而HOME,是每次上电后必须执行的第一条指令。

4.5 知识体系结构图

点位运动指令知识体系 MOV(绝对运动) MOVR(相对运动) HOME(回零) 特性 • 基于原点坐标 • 位置固定不变 • 需先回零 特性 • 基于当前位置 • 增量式运动 • 注意累积误差 特性 • 寻找机械原点 • 上电必须执行 • 速度不宜过快 三者配合使用:HOME初始化 → MOV/MOVR执行任务

4.6 实战经验总结

最后,我把自己这些年用这三个指令的经验浓缩成几句话:

  • 上电第一件事:执行HOME。别偷懒,别以为上次断电前位置记住了。伺服断电后编码器位置会丢失,不回零就是找死。
  • MOV和MOVR混用要小心:如果你在一个程序里既用MOV又用MOVR,一定要搞清楚当前坐标系。我见过有人用MOVR走了一段,然后又用MOV想回到原点,结果跑到了莫名其妙的位置。
  • 回零失败的处理:如果HOME指令执行时碰到限位就停了,别急着复位。先手动把电机往反方向推一点,再试一次。如果连续失败,检查限位开关和原点传感器。
  • 速度规划:不管是MOV还是MOVR,启动和停止时都要加加减速。直接全速启动会丢步,全速停止会过冲。这个咱们后面讲加减速的时候再细说。

我的习惯:每次写完运动程序,我都会在调试模式下单步执行一遍,观察每个指令执行后的实际位置。特别是第一次用MOVR的时候,我会在代码里加一个临时变量记录累计位移,防止跑飞了还不知道。

好了,点位运动指令就讲到这里。这三个指令是运动控制的基础,就像盖房子的砖头。你把它用熟了,后面学插补、电子凸轮这些高级功能就会轻松很多。


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