专利摘要
本发明公开了一种串行绝对编码器的编码方法,采用基于二叉树的方法按照深度优先的原则逐位迭代确定编码位,实现了绝对编码序列的生成,生成的编码序列的编码字长和编码数可以根据需要进行设定。本发明提供的编码方法,由于采用了基于二叉树的方法按照深度优先的原则迭代确定编码位,因此能够根据需要设置任意编码字长和编码数,并且所生成的编码序列能够同时支持串行和并行读码方式,从而提高了编码方法的通用性,降低了系统装置的成本和安装技术难度。
权利要求
1.一种串行绝对编码器的编码方法,其特征在于,包括如下步骤:
步骤1、设定编码数和初始编码值;
步骤2、采用二叉树按照深度优先的原则确定后一位编码位的取值,即为0或1,产生当前的编码序列;
步骤3、对步骤2生成的编码序列进行正、反向的合法性检查,如果校验结果为满足合法性,则执行步骤4;所述编码序列的编码字长为W;
所述正向合法性检查,即按照编码位的编号由小到大的顺序,遍历所述编码序列选择出所有的由连续的W位编码位组成的编码值,并求出每个编码值所对应的十进制的数值,将所有的十进制数值进行比较,如果存在相等的数值,则认为所述编码序列不满足合法性,如果不存在相等的数值,则认为所述编码序列满足合法性;
所述反向合法性检查,即按照编码位的编号由大到小的顺序,遍历所述编码序列选择出所有的由连续的W位编码位组成的编码值,并求出每个编码值所对应的十进制的数值,将所有的十进制数值进行比较,如果存在相等的数值,则认为所述编码序列不满足合法性;如果不存在相等的数值,则认为所述编码序列满足合法性;
如果校验结果为不满足合法性,则步骤2中确定的编码位选择另一个取值,形成新的编码序列再次进行校验,如果校验结果为满足,则执行步骤4;
如果校验结果仍为不满足合法性,则回退到步骤2中所确定的编码位的前一位编码位重新进行选择,如果校验结果为满足,则执行步骤4,如果校验结果为不满足,则继续回退到再前一位编码位重新进行选择,直到校验结果为满足时,执行步骤4;
步骤4、存储当前生成的编码序列,当编码序列中的编码位个数小于步骤1中设定的编码数时,返回步骤2迭代计算后续编码位;否则执行步骤5;
步骤5、存储最终生成的编码序列。
2.根据权利要求1所述的方法,其特征在于,所述步骤2中的二叉树深度优先原则为,设定当后一位编码位的值为0时为左子树,当后一位编码位的值为1时为右子树,按照先左后右深度优先的遍历原则来生成编码序列。
3.根据权利要求1所述的方法,其特征在于,设定编码字长,且将所述步骤2中的编码序列中编码位的编号按照由小到大的顺序进行排序,则所述步骤3中的正向合法性检查的过程为,按照编码位的编号由小到大的顺序,遍历当前编码序列选择出所有的由连续的、设定编码字长个编码位组成的编码值,并求出每个编码值所对应的十进制的数值,将所有的十进制数值进行比较,如果存在相等的数值,则认为当前编码序列不满足编码合法性约束;如果不存在相等的数值,则认为满足编码合法性约束;
所述步骤3中的反向合法性检查为,按照编码位的编号由大到小的顺序,遍历当前编码序列选择出所有的由连续的、设定编码字长个编码位组成的编码值,并求出每个编码值所对应的十进制的数值,将所有的十进制数值进行比较,如果存在相等的数值,则认为当前编码序列不满足编码合法性约束;如果不存在相等的数值,则认为满足编码合法性条件。
4.根据权利要求1所述的方法,其特征在于,所述步骤3中回退到步骤2中所确定的编码位的前一位编码位重新进行选择的过程为,当前一位编码位的取值为0时,则设定该编码位的取值为1,然后进行正、反向合法性检查;当前一位编码位的取值为1时,则直接继续回退到再前一位编码位进行判断。
说明书
技术领域
本发明涉及自动控制领域,具体涉及一种串行绝对编码器的编码方法。
背景技术
目前,编码器主要有增量式和绝对式两种类型。相对于增量式编码器,绝对式编码器是在光栅上按照一定的规则刻录编码,每一位置都有唯一的编码与之对应,而且当出现断电的情况时,重新上电后这种对应关系仍保持不变,由此保证了数据的可靠性和稳定性。对于编码器的读码,有串行读码和并行读码两种方式。由于现有的编码方法中,主要包括二进制码如格雷码、十进制码和六十进制码等,以及在这些编码的基础上进行优化改进的编码方法。
以上这些编码方法,一般只能通过并行读码的方式才能实现,导致成本偏高和设备安装的困难;另外,当需要进一步提高测量精度时,就需要增加码道,这对编码器的小型化带来困难;最后,由于这些编码方法都是在约定的编码方式上进行的修改,因此难以实现任意设置编码字长得到通用编码。
发明内容
有鉴于此,本发明提供了一种串行绝对编码器的编码方法,采用基于二叉树的方法按照深度优先的原则逐位迭代确定编码位,实现了绝对编码序列的生成,生成的编码序列的编码字长和编码数可以根据需要进行设定。
本发明提供了一种串行绝对编码器的编码方法,包括如下步骤:
步骤1、设定编码数和初始编码值;
步骤2、采用二叉树按照深度优先的原则确定后一位编码位的取值,即为0或1,产生当前的编码序列;
步骤3、对步骤2生成的编码序列进行正、反向的合法性校验,如果校验结果为满足合法性,则执行步骤4;
如果校验结果为不满足合法性,则步骤2中确定的编码位选择另一个取值,形成新的编码序列再次进行校验,如果校验结果为满足,则执行步骤4;
如果校验结果仍为不满足合法性,则回退到步骤2中所确定的编码位的前一位编码位重新进行选择,如果校验结果为满足,则执行步骤4,如果校验结果为不满足,则继续回退到再前一位编码位重新进行选择,直到校验结果为满足时,执行步骤4;
步骤4、存储当前生成的编码序列,当编码序列中的编码位个数小于步骤1中设定的编码数时,返回步骤2迭代计算后续编码位;否则执行步骤5;
步骤5、存储最终生成的编码序列。
进一步地,所述步骤2中的二叉树深度优先原则为,设定当后一位编码位的值为0时为左子树,当后一位编码位的值为1时为右子树,按照先左后右深度优先的遍历原则来生成编码序列。
进一步地,设定编码字长,且将所述步骤2中的编码序列中编码位的编号按照由小到大的顺序进行排序,则所述步骤3中的正向合法性校验的过程为,按照编码位的编号由小到大的顺序,遍历当前编码序列选择出所有的由连续的、设定编码字长个编码位组成的编码值,并求出每个编码值所对应的十进制的数值,将所有的十进制数值进行比较,如果存在相等的数值,则认为当前编码序列不满足编码合法性约束;如果不存在相等的数值,则认为满足编码合法性约束;
所述步骤3中的反向合法性校验为,按照编码位的编号由大到小的顺序,遍历当前编码序列选择出所有的由连续的、设定编码字长个编码位组成的编码值,并求出每个编码值所对应的十进制的数值,将所有的十进制数值进行比较,如果存在相等的数值,则认为当前编码序列不满足编码合法性约束;如果不存在相等的数值,则认为满足编码合法性条件。
进一步地,所述步骤3.2中回退到步骤2中所确定的编码位的前一位编码位重新进行选择的过程为,当前一位编码位的取值为0时,则设定该编码位的取值为1,然后进行正、反向合法性校验;当前一位编码位的取值为1时,则直接继续回退到再前一位编码位进行判断。
有益效果:
本发明提供的编码方法,由于采用了基于二叉树的方法按照深度优先的原则迭代确定编码位,因此能够根据需要设置任意编码字长和编码数,并且所生成的编码序列能够同时支持串行和并行读码方式,从而提高了编码方法的通用性,降低了系统装置的成本和安装技术难度。
附图说明
图1为本发明采用的二叉树检索思想的示意图。
图2为本发明根据设计的算法得到的编码数为0100000010、编码字长为10、优先考虑0的编码序列的部分二叉树表示。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
本发明提供了一种串行绝对编码器的编码方法,其基本思想是:基于预先设定的编码数、编码字长和初始编码值,采用基于二叉树的方法按照深度优先的原则逐位迭代选择剩余编码位的值为0或1,再对生成的编码进行正反向的合法性校验,即,验证编码值是否唯一,校验合格则完成绝对编码序列的生成过程。
本发明所采用的二叉树思想,如图1所示,即,设定好初始编码数、编码字长和初始编码值,开始进行二叉树选择,判断初始编码值的后一位编码位取值为0时是否能够满足所有编码值的正向、反向唯一性要求,如果能够满足则继续判断下一位编码位的取值;否则,令初始编码值的后一位编码位取值为1,判断此时是否能够满足所有编码值的正向、反向唯一性要求,如果能够满足则继续判断下一位编码位的取值;否则,返回上一位编码位重复上述过程,生成的编码序列如图2所示。
实施例一:采用本发明提供的编码方法,实现编码的过程包括如下步骤:
步骤1、设定编码数为N、编码字长为W和初始编码值,通常情况下初始编码值设置为由W位0组成的编码值;
步骤2、设定一个长度可变的数组T,表示为T={b1,b2,...,bi,bi+1,...,bm},其中,bi为数组中的编码位,1≤i≤N,W≤m≤N;
步骤3、将初始编码值存储到数组T中,此时的数组T为包含了W个0的数组,即T={b1,b2,...,bi,bi+1,...,bW}={0,0,...,0,0,...,0};
步骤4、选择数组T中最后一位即bW作为二叉树的根节点,设定当bW+1=1时,表示bW+1为节点bW的右子树;而当bW+1=0时,表示bW+1为节点bW的左子树;这里,我们采取先左后右深度优先的遍历方法来生成编码序列,即在数组T中依次增加bW+j,其中,-W≤j≤(N-W),令j=1;
步骤5、依据先左后右深度优先的优先原则,首先设定bW+j=0,并将bW+j的值存储到数组T中的第W+j位,此时,数组T为:
T={b1,b2,...,bi,bi+1,...,bW,...,bw+j}={0,0,...,0,0,...,0,...,0};
在数组T中进行编码的正向和反向合法性检查:
步骤5.1、正向合法性检查,即按照编码位的编号由小到大的顺序,遍历数组T选择出所有的由连续的W位编码位组成的编码值,并求出每个编码值所对应的十进制的数值,将所有的十进制数值进行比较,如果存在相等的数值,则认为数组T不满足编码合法性约束,即,bW+j=0的值有误,执行步骤6;如果不存在相等的数值,则认为数组T满足编码合法性约束,执行步骤5.2;
步骤5.2、反向合法性检查,即按照编码位的编号由大到小的顺序,遍历数组T选择出所有的由连续的W位编码位组成的编码值,并求出每个编码值所对应的十进制的数值,将所有的十进制数值进行比较,如果存在相等的数值,则认为数组T不满足编码合法性约束,即,bW+j=0的值有误,执行步骤6;如果不存在相等的数值,则认为数组T满足编码合法性约束,执行步骤8;
步骤6、设定bW+j=1,并将bW+j的值存储到数组T中的第W+j位,此时,数组T为:
T={b1,b2,...,bi,bi+1,...,bW,...,bw+j}={0,0,...,0,0,...,0,...,1};
在数组T中进行编码的正向和反向合法性检查:
步骤6.1、正向合法性检查,即按照编码位的编号由小到大的顺序,遍历数组T选择出所有的由连续的W位编码位组成的编码值,并求出每个编码值所对应的十进制的数值,将所有的十进制数值进行比较,如果存在相等的数值,则认为数组T不满足编码合法性约束,即,bW+j=1的值有误,执行步骤7;如果不存在相等的数值,则认为数组T满足编码合法性约束,执行步骤6.2;
步骤6.2、反向合法性检查,即按照编码位的编号由大到小的顺序,遍历数组T选择出所有的由连续的W位编码位组成的编码值,并求出每个编码值所对应的十进制的数值,将所有的十进制数值进行比较,如果存在相等的数值,则认为数组T不满足编码合法性约束,即,bW+j=1的值有误,执行步骤7;如果不存在相等的数值,则认为数组T满足编码合法性约束,执行步骤8;
步骤7、令j自减1,当bW+j=0时,执行步骤6;当bW+j=1时,执行步骤7,即当编码位的取值为1时,则直接继续回退到再前一位编码位进行判断;
步骤8、令j自加1,当j≤(N-W)时,执行步骤5,否则执行步骤9;
步骤9、此时的数组T为满足合法性要求的编码数为N、编码字长为W的编码序列。
本发明设计的串行绝对编码器的编码方法,可以采用串行读码的方式,此外,如果不考虑成本和安装难度,也可以通过并行读取的方法一次性读取W位连续编码。当采用串行读码方式时,在编码器首次运行时需要成功连续阅读W个编码位后才能准确判断当前位置,其中,W为编码字长,之后则只需要移动一个编码位即可检测出当前的位置信息。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
一种串行绝对编码器的编码方法专利购买费用说明
Q:办理专利转让的流程及所需资料
A:专利权人变更需要办理著录项目变更手续,有代理机构的,变更手续应当由代理机构办理。
1:专利变更应当使用专利局统一制作的“著录项目变更申报书”提出。
2:按规定缴纳著录项目变更手续费。
3:同时提交相关证明文件原件。
4:专利权转移的,变更后的专利权人委托新专利代理机构的,应当提交变更后的全体专利申请人签字或者盖章的委托书。
Q:专利著录项目变更费用如何缴交
A:(1)直接到国家知识产权局受理大厅收费窗口缴纳,(2)通过代办处缴纳,(3)通过邮局或者银行汇款,更多缴纳方式
Q:专利转让变更,多久能出结果
A:著录项目变更请求书递交后,一般1-2个月左右就会收到通知,国家知识产权局会下达《转让手续合格通知书》。
动态评分
0.0