做定位控制的朋友们,我想问一句:你们被原点回归(也叫回零、回参考点)坑过吗?
反正我是被坑过好几次。说出来不怕你们笑话,同一个问题我栽了三次跟头,才彻底搞明白怎么回事。
第一次翻车:伺服一上电就疯跑,把限位撞了
那是我第一次做三菱FX5U配合MR-JE伺服的项目,给一台切纸机做伺服送料。设备其实很简单,就是伺服带丝杆推纸,切一刀送一段。
我在程序里调用了DSZR指令做原点回归,感觉挺简单的——给个信号,伺服自己跑回原点不就完了吗?
结果一上电,伺服直接反向全速猛跑,Duang一声撞到了硬限位。设备抖动了几下,丝杆嘎嘎响。还好硬限位质量过硬,不然丝杆直接报废,那可就大几万没了。
我检查了半天,最后发现是原点回归方向设置反了。三菱DSZR指令默认的回归方向跟我的近点狗(DOG信号)安装位置正好相反。伺服找不到近点狗信号,就一直疯跑直到撞限位。
解决方案其实很简单:把[D8200]这个特殊寄存器里的回归方向位改一下,或者改近点传感器的安装位置。
但我当时不知道啊,排查了整整一个下午,说明书翻来覆去看了三遍,还是厂里的老师傅过来瞟了一眼,说:”你小子回归方向设反了吧。”一语点醒梦中人。
第二次翻车:原点位置每次都偏一点,产品越切越长
第二个项目是在一家包装印刷厂,给一台模切机做升级。模切机要求高精度定位,每次切完后要回到同一个原点位置,误差不能超过0.1mm。
我用的是三菱FX3U带两路脉冲输出,配台达的ASDA-B2伺服。DSZR指令跑起来没问题了,但操作工反馈说:”切了200张以后,位置明显偏了,越切越歪。”
我过去一看,确实,第一张和最后一张差了将近2mm。对于一个模切机来说,这已经属于废品了。
这次排查时间更长。起初怀疑是丝杆间隙,换了预压螺母的丝杆,问题依旧。又怀疑是伺服编码器精度不够,换了高分辨率编码器的伺服,还是不行。
最后我发现是DOG信号的触发方式有问题。我用的是一个光电开关做近点狗,但这个开关的响应时间有5ms左右的离散抖动。伺服以200mm/s的速度运行时,5ms的抖动就对应1mm的位置误差。
这还不是最坑的。最坑的是——我忘了在每次回零后把当前机械位置写到断电保持区。每次断电重启后,PLC记录的当前位置跟实际位置差了老远,重新回零时又因为近点狗信号的抖动,每次都回不到同一个地方。
后来我改成了高速近点狗+Z相脉冲结合的方式:近点狗信号先粗略定位,然后用伺服编码器的Z相脉冲(每转一个脉冲)做精确定位。Z相脉冲的信号抖动量在微秒级,对应位置误差可以忽略不计。
改了以后,连续测了1000次回零,位置偏差稳定在±0.02mm以内。这次终于对了。
第三次翻车:多轴联动的原点同步问题
第三个项目是给一个做PCB钻孔机的厂家写程序。四轴伺服联动,钻孔精度要求50微米。
这次我学聪明了,按照前面总结的经验,每根轴都用”近点狗+Z相脉冲”的方式做回零,单轴精度完全没问题。但问题出在——四个轴不是同时回到原点的。
每次开机,四个轴各自以不同的速度、不同的距离跑回原点。先到位的轴停在那里等,后到位的轴还在跑。等所有轴都到位后,再执行下一步。
听起来没什么问题对吧?问题大了去了。
每次上电后四轴回到的原点位置组合,跟关机前的位置组合之间有一个微妙的偏差。虽然单轴精度在0.02mm以内,但四个轴的累积误差叠加起来,钻头跟预设的钻孔位置就有了偏差,尤其是做阵列孔的时候,最后几排孔直接偏出去了。
这个问题我想了整整两天,最后拍脑袋想出了一个土办法——设置一个”绝对原点”:
- 在机床的机械零点位置安装一个独立的绝对位置传感器
- 每次回零时,四轴先各自用传统方式回零
- 然后统一低速移动到绝对原点位置做二次校准
- 校准完成后,把这个绝对位置写入断电保持寄存器
说白了就是加了一道”校零”工序。虽然多花了10秒钟,但精度问题彻底解决了。
我总结的原点回归万能模板
被坑了三次以后,现在我写原点回归程序都用一套固定的模板,分享给大家:
第一步:确认你的回零方式
- 近点狗式(DOG):最常用,适合大多数场合
- 限位开关式:没有近点狗时用,精度一般
- Z相脉冲式:高精度场合必选
- 推最优组合:近点狗粗定位 + Z相脉冲精定位
第二步:参数设置
- 回归方向:一定要跟你的近点狗安装位置匹配
- 爬行速度:接近原点时降到低速,一般设10-50mm/s
- 高速速度:快速回归时的速度,根据行程长度合理设置
第三步:软件处理
- 每次回零完成后,把机械绝对位置写入断电保持寄存器
- 上电时先读取断电保持位置,如果数据异常则强制要求回零
- 多轴系统中,所有轴回零完成后做一个统一的同步信号
第四步:验证标准
- 连续回零50次,记录每次的位置偏差
- 偏差值不超过你精度要求的1/3才算合格
- 在不同温度下(冷机/热机)各测一遍
一个小工具分享
我现在在调试三菱PLC原点回归的时候,会先在GX Works3里做一个回零测试模拟程序,把电子凸轮的功能虚拟跑一遍。确认逻辑没问题了,再接实际伺服。这个习惯帮我省了很多在现场调试的时间。
大家有兴趣的话,我回头可以整理一份三菱FX5U和西门子S7-1200的原点回归标准化程序模板发出来。
好了,今天就先聊到这。你们被原点回归坑过吗?欢迎在评论区分享你的”翻车”经历,独坑坑不如众坑坑嘛!