机械结构是一个循环的链条.只往一个方向转..
链条上平均分布了8个点
要求是每一次都走到同一个位置上..
现在用的方案是用 mc_home_lxm28来做 mode 26
(即向正方向高速回零,.碰到原点开关之后低速继续向正方向运行.原点下降沿为0)
然后通过home功能块上的position 来做原点漂移
28伺服在1.7.0之后的固件.需要讲P5-76参数设为1来启用原点偏移..不然设置position数值是没有效果的
这里遇到一个奇怪的事情...就是position这个数值的正负..跟我想象的不太一样
我理解的如果是正数.它应该回完零之后继续向正反向走
然而事实是..这个数如果是正数..它回向反方向移动
我的理解是...最终位置为0 position中的位置.是原点开关下降沿距离最终位置的数值..
所以正数是往反方向走..负数是向正方向走..
这个写数据 是向P5-76的canopen地址中写数值
写的是1 地址是16进制的454C (这个地址在服务数据对象中我没有找到.只有454D,没办法在那个里面组态.所以只能通过写参数去写)
长度是两个字节.就是一个字 u16
这个一定要在伺服控制器的状态为连接完成之后去写.不然会error
我是用cia405去判断了所有伺服都在准备好状态之后发出一个初始化信号.
用这个信号去写数据.
用这个home功能块现在是实现了每次停止都是同样的位置..
但是在回零出零的时候会有一个明显的停顿
这个是home功能块底层机制决定的.应该就是一个movevelocity 转一个relative 所以有一个停顿
我之前使用relative 转另一个relative 虽然能解决这个停顿的问题.
但是由于扫描周期的原因 会导致每次走得都不准...虽然我已经把 relative功能块放在了task里面
但是周期执行的..
像实验一下外部输入点触发中断事件..看看能不能做到更准确并且没有停顿的运行方式
有没有大神有更好的方法能分享一下??