本发明涉及到编码器技术领域,尤其涉及一种位置式编码器过零翻转时转速计算的算法。
背景技术:
在控制领域,经常需要涉及旋转部件的使用,在旋转部件的自控控制过程中,旋转部件的位置或者转速反馈是整个闭环控制的必不可少环节。
编码器是将信号或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。编码器把角位移或直线位移转换成电信号,前者称为码盘,后者称为码尺。按照读出方式编码器可以分为接触式和非接触式两种;按照工作原理编码器可分为增量式和绝对式两类。增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表示位移的大小。绝对式编码器的每一个位置对应一个确定的数字码,因此它的示值只与测量的起始和终止位置有关,而与测量的中间过程无关。
公开号为cn106849954a,公开日为2017年06月13日的中国专利文献公开了一种针对片上网络的低功耗、抗串扰的编码方法,包括如下步骤:
(1)并行输入数据的每一数据线均以四位为一组编码,根据组内相邻数据间翻转情况分为两种情况:翻转次数大于1,则该组数据采用第一、三位或第二、四位取反的方式进行编码,同时将标志信号flag置“1”;翻转次数小于或等于1,则该组数据保持不变,标志信号flag置“0”;
(2)对编码后的并行数据进行并串转换得到低阶的并行数据,并将转换后的并行数据暂存在寄存器模块中;
(3)通过低阶并行数据中依时序相邻的两列数据进行按位异或运算,若运算结果出现连续两个或更多个“1”,则对其中时序在后的数据自身对应于连续“1”的连续若干个数据位进行异或运算,若依然是“1”,则说明相邻数据线上出现“10”→“01”或“01”→“10”,将串扰标志位flag_anticrosstalk置“1”,从而判定存在最坏情况串扰;否则,判定不存在最坏情况串扰,串扰标志位flag_anticrosstalk置“0”;
(4)对应于flag_anticrosstalk等于“1”的数据位,在依时序相邻的两个数据bt-1和bt之间插入屏蔽码bt-1,屏蔽码bt-1根据bt-1=bt-1⊕bt bt-1bt计算得到;对应于flag_anticrosstalk等于“0”的数据位,在依时序相邻的两个数据之间插入数据bt-1或bt,最终所述低阶的并行数据与相应的屏蔽码并行数据依时序间隔排列整合为时序加倍的待发送数据。
该专利文献公开的低功耗、抗串扰的编码方法,从减少数据间的翻转次数的角度考虑,改变数据的编码方式,相比于原始数据,翻转次数可降低37.56%,但是,编码器在过零翻转时,转速的计算仍然困难,且计算精度差。
技术实现要素:
本发明为了克服上述现有技术的缺陷,提供一种位置式编码器过零翻转时转速计算的算法,本发明在过零翻转时,转速的计算简单易行,适用于各类精度的位置式编码器转速的计算,计算精度高。
本发明通过下述技术方案实现:
一种位置式编码器过零翻转时转速计算的算法,其特征在于,包括以下步骤:
a、当需要通过位置式编码器计算位置或者转速时,利用计算机数据特性,通过对编码器反馈数据进行无符号整形数据左移倍数放大;
b、再将有符号整形变量转换为无符号整形数据,设上一次采样值为c1,此刻采样值为c2,两次采样的间隔时间为t;
c、再通过上一次采样值c1-此刻采样值c2,得到采样间隔数值,将采样间隔数值除以相应的放大倍数,得到真实的编码器两次采样反馈值的差值。
所述步骤a中,无符号整形数据左移倍数放大具体是指将12位编码器数据类型设置为2个字节的无符号整形数据,左移4位,放大16倍。
所述步骤b中,将有符号整形变量转换为无符号整形数据具体是指将数据转换为2个字节的有符号数据。
所述步骤c中,将采样间隔数值除以相应的放大倍数具体是指通过公式v=(c2-c1)/t得到转速值,将转速值缩小16倍,即得到真实速度值。
本发明的有益效果是:
“a、当需要通过位置式编码器计算位置或者转速时,利用计算机数据特性,通过对编码器反馈数据进行无符号整形数据左移倍数放大;b、再将有符号整形变量转换为无符号整形数据,设上一次采样值为c1,此刻采样值为c2,两次采样的间隔时间为t;c、再通过上一次采样值c1-此刻采样值c2,得到采样间隔数值,将采样间隔数值除以相应的放大倍数,得到真实的编码器两次采样反馈值的差值”,通过充分利用无符号整形数据格式和有符号整形数据格式的特点,以及计算机数据溢出的特性,能够有效规避编码器在过零翻转时计算位置差和转速时的困难和复杂程度,较现有技术而言,在过零翻转时,转速的计算简单易行,适用于各类精度的位置式编码器转速的计算,计算精度高。
附图说明
下面将结合说明书附图和具体实施方式对本发明作进一步的具体说明:
图1为本发明8位有符号示意图;
图2为本发明8位无符号示意图。
具体实施方式
实施例1
一种位置式编码器过零翻转时转速计算的算法,包括以下步骤:
a、当需要通过位置式编码器计算位置或者转速时,利用计算机数据特性,通过对编码器反馈数据进行无符号整形数据左移倍数放大;
b、再将有符号整形变量转换为无符号整形数据,设上一次采样值为c1,此刻采样值为c2,两次采样的间隔时间为t;
c、再通过上一次采样值c1-此刻采样值c2,得到采样间隔数值,将采样间隔数值除以相应的放大倍数,得到真实的编码器两次采样反馈值的差值。
实施例2
一种位置式编码器过零翻转时转速计算的算法,包括以下步骤:
a、当需要通过位置式编码器计算位置或者转速时,利用计算机数据特性,通过对编码器反馈数据进行无符号整形数据左移倍数放大;
b、再将有符号整形变量转换为无符号整形数据,设上一次采样值为c1,此刻采样值为c2,两次采样的间隔时间为t;
c、再通过上一次采样值c1-此刻采样值c2,得到采样间隔数值,将采样间隔数值除以相应的放大倍数,得到真实的编码器两次采样反馈值的差值。
所述步骤a中,无符号整形数据左移倍数放大具体是指将12位编码器数据类型设置为2个字节的无符号整形数据,左移4位,放大16倍。
实施例3
一种位置式编码器过零翻转时转速计算的算法,包括以下步骤:
a、当需要通过位置式编码器计算位置或者转速时,利用计算机数据特性,通过对编码器反馈数据进行无符号整形数据左移倍数放大;
b、再将有符号整形变量转换为无符号整形数据,设上一次采样值为c1,此刻采样值为c2,两次采样的间隔时间为t;
c、再通过上一次采样值c1-此刻采样值c2,得到采样间隔数值,将采样间隔数值除以相应的放大倍数,得到真实的编码器两次采样反馈值的差值。
所述步骤a中,无符号整形数据左移倍数放大具体是指将12位编码器数据类型设置为2个字节的无符号整形数据,左移4位,放大16倍。
所述步骤b中,将有符号整形变量转换为无符号整形数据具体是指将数据转换为2个字节的有符号数据。
实施例4
一种位置式编码器过零翻转时转速计算的算法,包括以下步骤:
a、当需要通过位置式编码器计算位置或者转速时,利用计算机数据特性,通过对编码器反馈数据进行无符号整形数据左移倍数放大;
b、再将有符号整形变量转换为无符号整形数据,设上一次采样值为c1,此刻采样值为c2,两次采样的间隔时间为t;
c、再通过上一次采样值c1-此刻采样值c2,得到采样间隔数值,将采样间隔数值除以相应的放大倍数,得到真实的编码器两次采样反馈值的差值。
所述步骤a中,无符号整形数据左移倍数放大具体是指将12位编码器数据类型设置为2个字节的无符号整形数据,左移4位,放大16倍。
所述步骤b中,将有符号整形变量转换为无符号整形数据具体是指将数据转换为2个字节的有符号数据。
所述步骤c中,将采样间隔数值除以相应的放大倍数具体是指通过公式v=(c2-c1)/t得到转速值,将转速值缩小16倍,即得到真实速度值。
下面针对无符号整形数据格式和有符号整形数据格式及规避过零翻转进行详细说明:
1、无符号整形数据格式和有符号整形数据格式
以8位数据为例,无符号整形范围0到255,数据储格式为原码:
1=[00000001]原
128=[10000000]原
129=[10000001]原
255=[11111111]原
有符号整形范围-127到 128,数据存储格式为补码,正数补码等于原码:
-1=[10000001]原=[11111110]反=[11111111]补
-127=[11111111]原=[10000000]反=[10000001]补
可以看出:有符号数据类型-1的存储格式和无符号数据类型255存储格式相同[11111111]。有符号数据类型-127和无符号数据类型129存储格式相同[10000001]。因此将无符号数据类型转换为有符号数据类型,129将变成-127,255将变成-1。16位整形数据及32位整形数据同理。
应用上述原理,针对编码器的数据位长度,将其数据左移放大到8位、16位或者32位数据,并将数据类型转换为有符号数据。
以12位位置编码器为例:原数值范围:0到4095。数据放大16倍,范围变为:0到65520,在将数据类型转换为有符号数据类型。位置编码器一个循环为:0,16...32768,-32752...-16,0,16。
2、规避过零翻转
两个数据翻转区数值差计算:
正向:16-(-1)=32=2*16;
反向:-16-16=-32=-2*16;
正向:-32752-32752=-65504=-(-32)=32=2*16;
反向:32752-(-32752)=65504=-32=-2*16;
再将计算所得数据缩小16倍,即可得到真实的数值。无论正转反转,都不用考虑编码器数据过零翻转的问题。
1.一种位置式编码器过零翻转时转速计算的算法,其特征在于,包括以下步骤:
a、当需要通过位置式编码器计算位置或者转速时,利用计算机数据特性,通过对编码器反馈数据进行无符号整形数据左移倍数放大;
b、再将有符号整形变量转换为无符号整形数据,设上一次采样值为c1,此刻采样值为c2,两次采样的间隔时间为t;
c、再通过上一次采样值c1-此刻采样值c2,得到采样间隔数值,将采样间隔数值除以相应的放大倍数,得到真实的编码器两次采样反馈值的差值。
2.根据权利要求1所述的一种位置式编码器过零翻转时转速计算的算法,其特征在于:所述步骤a中,无符号整形数据左移倍数放大具体是指将12位编码器数据类型设置为2个字节的无符号整形数据,左移4位,放大16倍。
3.根据权利要求1所述的一种位置式编码器过零翻转时转速计算的算法,其特征在于:所述步骤b中,将有符号整形变量转换为无符号整形数据具体是指将数据转换为2个字节的有符号数据。
4.根据权利要求1所述的一种位置式编码器过零翻转时转速计算的算法,其特征在于:所述步骤c中,将采样间隔数值除以相应的放大倍数具体是指通过公式v=(c2-c1)/t得到转速值,将转速值缩小16倍,即得到真实速度值。
技术总结