本文来源于:施家邦 工控邦
本文通过LXM28多圈电机位置溢出补偿功能块在M262和LMC078两个伺服控制系统中不同的编程应用,展示了施耐德ESME和SoMachine全集成自动化编程软件平台的高性能,这两款软件在完美的支持了OEM PLC和Motion等设备的同时,还是一款能够提供最佳解决方案的软件,可用于开发、配置和调试机器控制器。
01.LXM28多圈电机的优势
LXM28伺服电机的编码器按圈数类型分为单圈和多圈两种,其中,28S多圈电机通过电池可以在伺服断电再上电后,保持住断电前的位置,在一些不方便安装原点开关的复杂的机械设备上,使用多圈伺服电机可以避免必须通过原点开关进行寻原点。另外,在一些因为特殊机械结构而导致寻一次原点需要很长时间的应用场合,多圈电机因为不用上电每次都寻原在从而提高了效率。
02.LXM28多圈位置溢出的分析
多圈伺服电机只向一个方向旋转时,因为伺服位置的值是32位的,范围为-2,147,483,648到2,147,483,647,电机旋转的圈数经过一定时间的累积,伺服电机的编码器位置值就会发生溢出。
03.多圈伺服电机位置发生溢出后再次上电电机位置不能保持的原因
LXM28S多圈伺服电机位置发生溢出后,PLC的程序会自动处理这种溢出,这样,在不断电源的情况下,PLC内部的浮点数形式的位置值在伺服电机的编码器位置值发生溢出时也一直是正确的,但是如果将设备停机后断电再次上电,就有可能发生断电前的伺服电机的位置值和上电后位置值对应不起来的情况。
也就是说再次上电电机位置不能保持的原因是因为PLC断电再重新上电后没有对LXM28S的轴位置的溢出进行补偿导致的。
当电机往一个方向转动的圈数足够大时,编码器反馈的位置值将超过 DINT 的限制。溢出是发生在位置 2,147,483,647跳变到-2,147,483,648(正向),或者-2,147,483,648到2,147,483,647(反向)。
对于模数轴来说,伺服的位置值有一个变化周期 ,变化范围:0~模值设定值。
例如:LXM28S的模值设置为120,轴配置的齿轮比后对应的每圈位置的是340用户单位,齿轮箱的减速比分子GearIn为10,分母GearOut为1 ,如图1所示。
图 1 28S轴的配置
在伺服电机的位置溢出一次后,断电前的轴位置(轴名称.lrPosition)为43.6,如果不做补偿,上电后的位置将在83.6左右,这样,PLC上电后的位置值和断电前的位置产生偏差,上电后PLC的浮点数的位置值和机械位置直接发生了移动,如果不做修正,机器的生产将因此而中断。
04.LXM28S多圈位置溢出时补偿值公式
我们需要根据多圈编码器的溢出次数和轴机械相关的参数设置,包括减速机的减速比、电机每圈旋转时对应的用户单位,将补偿值计算出来,在伺服断电再上电后,从而实现在伺服电机没有移动的情况下,断电前后PLC的位置相同。
例:电机每圈旋转时对应的用户单位PositionResolution等于340,减速机的GearIn等于 1,减速机的GearOut等于10,则LXM28S伺服电机每圈走过的距离是340.0*10/1,而28伺服电机每圈的脉冲数在PLC中固定为131072,伺服位置变动范围是:-2,147,483,648到2,147,483,647,即-16384圈*131072~16384圈*131072-1,也就是每次发生一次溢出需要补偿32768圈对应的用户单位,考虑溢出次数,我们得到补偿值的计算公式如下:
其中:
GearIn 和GearOut:是齿轮箱的减速比的分子和分母;
PositionResolution:为伺服电机旋转一圈对应位置值 ;
ModuloValue:模值;
MOD:将补偿值转换为模数轴位置值的示意符号。
05.多圈位置移动溢出位置补偿的三种方法
通过选择固定的减速比和模数值解决溢出问题
由补偿值的计算公式可知,在一些特殊的条件下,可以不需要做补偿,例如,恰当的选择减速比,即减速机选型时,将减速比固定为2的n 次方,即4,8,16..,这样32768除减速比就可以除尽,同时选择合适的模数值,使每圈对应位置工程量PositionResolution是模值ModuloValued 整数倍,例如将每圈对应位置工程量和模数值都设为360,这样补偿值就始终为零。
这种方法可靠性最好,不需要在PLC中对溢出编写程序进行修正,但是在实际工程项目中选择减速箱的减速比为2的n次方往往因为机械速度、解决方案替换等的限制而变的不可行,模数值的选择如果加上限制,在设计凸轮曲线时也会有很多不便之处。
通过驱动器的内部功能进行补偿
通过伺服驱动器的内部功能,功能类似LXM32系列的Modulo功能,是将伺服本身32位变动范围的位置值生成一个新的坐标系和新的位置值),使得新的回授位置不会产生溢出,而是保持一个范围内的数据变化。Modulo轴的工作示意图如图2所示。当设置Modulo的设置值后,驱动器的位置变动范围将变成0~3600.
图2 Modulo参数功能示意图
伺服位置值变动范围修改为模数值乘以减速比的整数倍,每圈对应的工程量单位,一般也采用固定值360,这样在程序中也不需要做补偿,但是目前LXM28不支持此功能。
通过功能块在PLC内部进行补偿
如果机械不允许发生变化,或者根据工艺的变化需要使用不同的模数值,这时,可以通过创建功能块并编写程序来完成位置溢出的补偿。
06.M262PLC系统中的LXM28S多圈位置溢出功能块
在M262伺服控制系统中,采用的是第三种位置补偿的方法,即:通过创建新的FB功能块在PLC内部进行补偿的方式。
(1)M262伺服控制系统中的工作过程
SERCOS通信工作正常后,根据配置的轴的机械参数(减速比、每圈对应的用户单位等等机械参数),PLC会把读取的伺服电机编码器的位置值翻译成以浮点数形式的轴的位置值。
无溢出时,FB功能块的补偿值为0。
有溢出时,FB功能块计算出补偿值,使设备断电再上电后的PLC内部位置值与外部机械的位置值保持正确的对应关系。
(2)创建FB多圈位置溢出补偿功能块
打开EcoStruxure软件,单击【应用程序树】→【Application】,选择程序组织单元,如图3所示。
图 3 创建程序组织单元
创建名称为【overflow_compensate】的FB多圈位置溢出补偿功能块,ST编程语言,如图4所示。
图 4 FB功能块的创建