本发明涉及自动化数据,特别涉及一种电机位置控制的计算方法及装置。
背景技术:
1、在自动化应用中,为了让自动化设备能够进行精确的定位,通常使用上位装置发送脉冲指令或位置指令来进行电机的位置控制。输入的脉冲指令或位置指令是对负载位移进行设定,而电机的位置指令是编码器单位,两者的单位不同,因此需要使用到电子齿轮比进行比例换算。即电子齿轮比的作用是将输入的脉冲数或位置量乘以电子齿轮比的结果来作为电机位置控制的位置指令。
2、其中,电子齿轮比包含以下两个参数:电子齿轮比分子和齿轮比分母,使用整数变量表示。此时,假定电子齿轮比的齿轮比分子为a,齿轮比分母为b,输入的脉冲数为x,经过电子齿轮比计算的输出的脉冲为y,则有如下计算公式:x×a/b=y。在位置控制中,若有新的x值时,会重复调用电子齿轮比计算则公式扩展为:∑x×a/b=∑y。
3、在现有技术中,基于电子齿轮比来计算电机位置控制所需的输出脉冲y的计算方法包括:
4、(1)输出脉冲y的计算遵循上述计算规则:x×a/b=y余数m,其中,由于输出脉冲y的计算结果可能无法整除,所以需要引入余数m,上述x、y、a、b、m都是整数变量。
5、在此过程中,涉及的计算过程包括1个整形乘法、1个整形除法、1个取余运算和1个加法,上述加法为余数m的累加。上述计算过程在每个周期都要实时计算的。
6、这种方法存在以下缺点:除法运算和取余运算的运算效率较差,相比于乘法和加减法,运算效率较差。特别当mcu不支持除法指令时,需要更多的时间。并且当齿轮比分母b的数据宽度越大时,则除法计算效率会显著下降。而在嵌入式mcu软件平台计算时,计算效率太差会影响系统的实时性。
7、(2)电子齿轮比计算遵循上述计算规则:x×a/b=y,其中输入脉冲x是整数变量,输出脉冲y使用浮点变量。此时,齿轮比分子a和齿轮比b转换成浮点数进行计算。但是电机在使用输出脉冲y进行位置控制时只会取其整数数值。
8、这种方法存在以下缺点:齿轮比分子和齿轮比分母使用浮点数会导致计算得到的输出脉冲y有累计误差的问题,当经过很多次的计算后,输出脉冲y的结果将会与理论值产生偏差并逐渐拉大,因此存在计算较差的问题,这个在位置控制上不可接受。
9、因此,现有电机位置控制的计算方法无法兼顾计算精度和计算效率。
技术实现思路
1、为了解决现有技术的上述问题,本发明提供一种电机位置控制的计算方法及装置,兼顾电机位置控制的计算精度和计算效率。
2、为了达到上述目的,本发明采用的技术方案为:
3、第一方面,本发明提供一种电机位置控制的计算方法,包括步骤:
4、s1、预先计算电子齿轮比的比值g=a/b,其中,齿轮比分子a和齿轮比分母b为整形变量,比值g为浮点变量;
5、s2、将所述比值g与实时输入脉冲xn相乘,得到第一输出脉冲yf,其中,所述实时输入脉冲xn为整形变量,所述第一输出脉冲yf为浮点变量;
6、s3、对所述第一输出脉冲yf进行取整,得到实时输出脉冲yn,其中,所述实时输出脉冲yn为整形变量;
7、s4、通过xn×a=yn×b+mn来计算得到实时余数mn,根据所述实时余数mn和上一次的最终余数mlast来计算当前的最终余数m,其中,所述实时余数mn、上一次的最终余数mlast和当前的最终余数m均为整形变量;
8、s5、根据所述最终余数m对所述实时输出脉冲yn进行误差修正,得到用于电机位置控制的最终输出脉冲y。
9、本发明的有益效果在于:本发明虽然新增了取整运算、浮点乘法以及加减运算,但是相较于整形除法和取余运算来说,极大地提升了计算效率,以提升嵌入式系统的实时性;同时,保留了余数m对实时输出脉冲yn进行误差修,保证了最终输出脉冲y的计算精度,从而兼顾电机位置控制的计算精度和计算效率。
10、可选地,所述步骤s5包括以下步骤:
11、若所述最终余数m大于齿轮比分母b,则将所述实时输出脉冲yn加1后作为电机位置控制的最终输出脉冲y,否则直接将所述实时输出脉冲yn作为电机位置控制的最终输出脉冲y。
12、可选地,所述步骤s5还包括以下步骤:
13、若所述最终余数m大于齿轮比分母b,则将所述最终余数m减去所述齿轮比分母b之后作为下一次的最终余数mlast。
14、可选地,所述步骤s4中通过xn×a=yn×b+mn来计算得到实时余数mn包括以下步骤:
15、将所述实时输入脉冲xn和所述齿轮比分子a相乘得到第一结果值;
16、将所述实时输出脉冲yn和所述齿轮比分母b相乘得到第二结果值;
17、将所述第一结果值减去所述第二结果值得到实时余数mn。
18、可选地,所述步骤s1仅在所述齿轮比分子a或所述齿轮比分母b发生变化时重新计算。
19、第二方面,本发明提供一种电机位置控制的计算装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
20、s1、预先计算电子齿轮比的比值g=a/b,其中,齿轮比分子a和齿轮比分母b为整形变量,比值g为浮点变量;
21、s2、将所述比值g与实时输入脉冲xn相乘,得到第一输出脉冲yf,其中,所述实时输入脉冲xn为整形变量,所述第一输出脉冲yf为浮点变量;
22、s3、对所述第一输出脉冲yf进行取整,得到实时输出脉冲yn,其中,所述实时输出脉冲yn为整形变量;
23、s4、通过xn×a=yn×b+mn来计算得到实时余数mn,根据所述实时余数mn和上一次的最终余数mlast来计算当前的最终余数m,其中,所述实时余数mn、上一次的最终余数mlast和当前的最终余数m均为整形变量;
24、s5、根据所述最终余数m对所述实时输出脉冲yn进行误差修正,得到用于电机位置控制的最终输出脉冲y。
25、可选地,所述步骤s5包括以下步骤:
26、若所述最终余数m大于齿轮比分母b,则将所述实时输出脉冲yn加1后作为电机位置控制的最终输出脉冲y,否则直接将所述实时输出脉冲yn作为电机位置控制的最终输出脉冲y。
27、可选地,所述步骤s5还包括以下步骤:
28、若所述最终余数m大于齿轮比分母b,则将所述最终余数m减去所述齿轮比分母b之后作为下一次的最终余数mlast。
29、可选地,所述步骤s4中通过xn×a=yn×b+mn来计算得到实时余数mn包括以下步骤:
30、将所述实时输入脉冲xn和所述齿轮比分子a相乘得到第一结果值;
31、将所述实时输出脉冲yn和所述齿轮比分母b相乘得到第二结果值;
32、将所述第一结果值减去所述第二结果值得到实时余数mn。
33、可选地,所述步骤s1仅在所述齿轮比分子a或所述齿轮比分母b发生变化时重新计算。
34、其中,第二方面所提供的一种电机位置控制的计算装置所对应的技术效果参照第一方面所提供的一种电机位置控制的计算方法的相关描述。