关于BECKHOFF 中使用伺服实现分度盘功能的心得

在倍福控制器中,我们难免会遇到用伺服实现分度盘的功能,一般需要实现以下几个功能:

    1.每次旋转角度相同,不能有累计误差

    2.一直向一个方向旋转,且不能发生溢出,掉电位置要保持

    3.旋转出现故障后要记忆当前的位置,恢复后继续之前的位置旋转

接下来我们逐一分析功能实现。

首先,每次旋转角度相同,我们优先想到的是MC_MoveRelative功能,但是容易有累计误差,所以此处轴控制选择MC_MoveModulo模长定位,如下图,在NC轴控制处选择Modulo,单位选择°

    

接下来在NC轴Encoder参数下的reference system选择如图所示,防止编码器数值产生突变,若

选择ABSOLUTE模式,电机在旋转一定圈数后会出现编码器溢出,定位异常

另外,当伺服一直向一个方向旋转,编码器数值一直增大,而倍福中存储编码器数值的寄存器分为高32位和低32位,如下图所示,其中低32位可掉电保持,高32位无法掉电保持。为了使当前模内位置能够保持,我们需要对电子齿轮比进行设定,使2^32刚好为模长的N倍,这样即使高32位数据丢失,那么对于我们来说只是丢失了圈数,我们的模内位置不会发生改变。

若编码器为26位,减速比为M,伺服内部电子齿轮比为K,那么分度盘旋转一个模长360°则需要脉冲数为2^26*M/K

假设 :2^32=2^26*M/K*N   则N = (2^32/2^26)*K/M=2^6*K/M  ,若要使N为一个整数,K/M有许多取值,为了使后续计算方便,我们这里取最简单的K/M=1,那么伺服驱动器参数中的电子齿轮比 

           K=M                         分子/分母=M/1          

这样一来,即使高32位溢出,那么我们的模内位置也是不会发生变化的

接下来设置NC编码器的参数,Scaling Factor Numerator 设置为模长360°,Scaling Factor DenoMinator 设置为分度盘转一圈的脉冲数  2^26/K*M,K=M,该参数就要设置为2^26

这里需要说明的是,若使用模长定位,那么当前的位置需要获取当前模内位置

变量为AxisRef.NcToPlc.ModuloActPos

关于“旋转出现故障后要记忆当前的位置,恢复后继续之前的位置旋转”,需要我们每次启动运行时,记录一下目标位置,在出现故障恢复第一时间,首先移动至目标位,这样就可以与之前的运动完美衔接

关于目标位置的计算,使用下图指令

首先计算当前位置对应最近的分割位置(此处模长360,分割数3,每次旋转120),然后再计算下一分割位置,防止直接使用当前位置会有累计误差;且计算出的下一或者上一分割位置需要使用MODABS指令进行处理,防止出现模内位置为负值,以及超过模长

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值