菜鸟0001
级别: 正式会员
精华主题: 0
发帖数量: 20 个
工控威望: 95 点
下载积分: 323 分
在线时间: 48(小时)
注册时间: 2023-09-05
最后登录: 2024-04-03
查看菜鸟0001的 主题 / 回贴
楼主  发表于: 56天前
绝对值伺服脉冲控制,大家是怎么用的,485读出编码器值换算成距离吗
冲出枪林弹雨
冲出枪林弹雨
级别: 家园常客
精华主题: 0
发帖数量: 114 个
工控威望: 592 点
下载积分: 263 分
在线时间: 72(小时)
注册时间: 2020-09-05
最后登录: 2024-05-09
查看冲出枪林弹雨的 主题 / 回贴
1楼  发表于: 54天前
引用
引用楼主菜鸟0001于2024-03-17 13:50发表的 绝对值伺服用法 :
绝对值伺服脉冲控制,大家是怎么用的,485读出编码器值换算成距离吗


这个要看看驱动器的寄存器是哪一种,有的是直接给出脉冲总数,有的是分多圈和单圈;楼上的说了脉冲总数的,下面是另一种:485实时读多圈和单圈寄存器数据;多圈寄存器是电机转一圈 +1;单圈寄存器就是编码器硬件精度,比如23位编码器就是8388608个脉冲;实际位置就是 = 多圈寄存器*电机转一圈的位移距离 + { (当前单圈寄存器 - 设定原点时的单圈寄存器)  / 8388608 }*电机转一圈的位移距离
程序上注意点一个是要有个设原点的按钮,就是获取当前单圈寄存器当做原点单圈寄存器数;另一个就是通讯延时的问题,电机速度为0后的100ms以上数据再保存,位置会比较准
技术交流vx: Electric973
冲出枪林弹雨
冲出枪林弹雨
级别: 家园常客
精华主题: 0
发帖数量: 114 个
工控威望: 592 点
下载积分: 263 分
在线时间: 72(小时)
注册时间: 2020-09-05
最后登录: 2024-05-09
查看冲出枪林弹雨的 主题 / 回贴
2楼  发表于: 54天前
引用
引用第9楼冲出枪林弹雨于2024-03-18 22:46发表的  :


这个要看看驱动器的寄存器是哪一种,有的是直接给出脉冲总数,有的是分多圈和单圈;楼上的说了脉冲总数的,下面是另一种:485实时读多圈和单圈寄存器数据;多圈寄存器是电机转一圈 +1;单圈寄存器就是编码器硬件精度,比如23位编码器就是8388608个脉冲;实际位置就是 = 多圈寄存器*电机转一圈的位移距离 + { (当前单圈寄存器 - 设定原点时的单圈寄存器)  / 8388608 }*电机转一圈的位移距离
程序上注意点一个是要有个设原点的按钮,就是获取当前单圈寄存器当做原点单圈寄存器数;另一个就是通讯延时的问题,电机速度为0后的100ms以上数据再保存,位置会比较准


当然了,也可以直接把总数设置为原点位置,以下供参考:
PROGRAM Main  VAR      MultiTurnValue : INT;    // 多圈寄存器的值      SingleTurnValue : INT;    // 单圈寄存器的值      AbsolutePosition : INT;   // 绝对位置值      MaxSingleTurnValue : INT := 8388608; // 23位编码器单圈最大值为8388608   END_VAR   // 计算绝对位置  // 绝对位置是多圈值乘以单圈的最大值加上单圈值  AbsolutePosition := (MultiTurnValue * MaxSingleTurnValue) + SingleTurnValue;   END_PROGRAM
技术交流vx: Electric973