(12)发明专利申请
(10)申请公布号 CN 106092156 A(43)申请公布日 2016.11.09
(21)申请号 201610633929.7(22)申请日 2016.08.04
(71)申请人 泉州市桑川电气设备有限公司
地址 362000 福建省泉州市鲤城区江南高
新技术电子信息产业园区二期C1号(72)发明人 陈鑫 张镭 陈天成 王天来
张畅 (74)专利代理机构 泉州市文华专利代理有限公
司 35205
代理人 陈雪莹(51)Int.Cl.
G01D 5/244(2006.01)
权利要求书3页 说明书8页 附图1页
CN 106092156 A(54)发明名称
交流伺服串行通信编码器位置反馈脉冲分频输出系统和方法(57)摘要
本发明一种交流伺服串行通信编码器位置反馈脉冲分频输出系统和方法,由发出脉冲数计算模块、分频脉冲发生器模块、发出脉冲计数器
正交脉冲输出状态机模块和原点信号输出模块、
计数器模块构成,将通信接收到的编码器位置数据转化为脉冲输出至上位装置,本发明以采样周期内输出的脉冲数为切入点,给出了采样周期内输出的脉冲数的计算方法及修正手段,能够确保输出脉冲的个数,保证位置数据不丢失,系统的抗干扰性更好;且以采样周期内的系统时钟个数为溢出门限,以系统时钟为基准时钟,可以突破编码器实际单圈脉冲数的限制,能够产生比编码器原始单圈脉冲数更高的脉冲数输出,且给出了原点信号的产生方式,使整个系统更加完善。
CN 106092156 A
权 利 要 求 书
1/3页
1.一种串行通信编码器位置反馈脉冲分频输出系统,其特征在于:由发出脉冲数计算模块、分频脉冲发生器模块、发出脉冲计数器模块、正交脉冲输出状态机模块和原点信号输出计数器模块构成,其中,
发出脉冲数计算模块,接收预置的编码器采样周期T、电机旋转单圈输出脉冲数PPRSET、脉冲输出基准信号分频比DIV,编码器实际单圈脉冲数PPRE,计算编码器在采样周期T内需要发出的脉冲数POPT,将在采样周期T内需要发出的脉冲数POPT和两次中断期间采样的位置数据的差值SMPT发送给发出脉冲计数器模块,将计算得到的当前采样周期T内需要输出的脉冲输出频率POFRQ发送给分频脉冲发生器模块,将电机旋转单圈输出脉冲数PPRSET发送给原点信号输出计数器模块;
分频脉冲发生器模块,根据发出脉冲数计算模块给出的当前采样周期T内需要输出的脉冲输出频率POFRQ和系统时钟sysclk,计算其比值为:
将2n作为溢出门限寄存器的溢出门限值,其中n满足2n>(T×SYSCLK)的条件,在每个系统时钟上升沿对累加准值进行累加,即对RATIO×2n进行累加,存取累加结果,将累加结果与溢出门限值比较,若大于,则输出进位标志carry信号,同时将累加结果减去溢出门限值,若小
将该进位标志Carry信号作为所需的脉冲输出基准信于,则继续累加直至大于溢出门限值,
号发送给发出脉冲计数器模块;
发出脉冲计数器模块,在分频脉冲发生器模块开始输出脉冲输出基准信号时,对该脉冲输出基准信号的高电平时间进行计数,当计数值达到采样周期T内需要发出的脉冲数POPT时,阻断脉冲输出基准信号的高电平输出,在下一个采样周期T开始时清空上述计数值,在脉冲输出基准信号为高电平期间,根据两次中断期间采样的位置数据的差值SMPT的正负,来确定输出正向脉冲输出标志up和反向脉冲输出标志dn的电平,若SMPT为正,则正向脉冲输出标志up为高电平,反向脉冲输出标志dn为低电平;若SMPT为负,则正向脉冲输出标志up为低电平,反向脉冲输出标志dn为高电平,并将正向脉冲输出标志up和反向脉冲输出标志dn实时发送给正交脉冲输出状态机模块;
正交脉冲输出状态机模块,置分频计数器初值div_cnt_init,根据发出脉冲计数器模块输出的正向脉冲输出标志up和反向脉冲输出标志dn,对分频计数器初值进行加减,当正向脉冲输出标志up为高电平时,该分频计数器值加1,当反向脉冲输出标志dn为高电平时,该分频计数器值减1,当正向脉冲输出标志up为高电平且分频计数器值等于脉冲输出基准信号分频比DIV时,将分频计数器值清零,同时输出正向切换信号ring_up;当反向脉冲输出标志dn为高电平且分频计数器值为0时,重置分频计数器值为脉冲输出基准信号分频比DIV的值,同时输出反向切换信号ring_dn;当正向切换信号Ring_up为高电平时,将OA脉冲信号超前OB脉冲信号九十度;当反向切换信号Ring_dn为高电平时,将OA脉冲信号滞后OB脉冲信号九十度,通过该脉冲输出正交化处理,即可得到所需的两路互为正交的 脉冲输出信号OA和OB信号,同时将正向切换信号ring_up和反向切换信号ring_dn输出至原点信号输出计数器模块;
原点信号输出计数器模块,接收预置的电机旋转单圈输出脉冲数PPRSET,根据正交脉冲输出状态机模块输入的正向切换信号ring_up和反向切换信号ring_dn的电平对其原点信号输出计数器的初值进行加减,当原点信号输出计数器值减小至零或者增大至电机旋转
2
CN 106092156 A
权 利 要 求 书
2/3页
单圈输出脉冲数PPRSET时,将原点信号输出计数器值重置为电机旋转单圈输出脉冲数PPRSET或者重置为零,在原点信号输出计数器值为0时,输出原点信号。
2.根据权利要求1所述的一种串行通信编码器位置反馈脉冲分频输出系统的输出方法,其特征在于包括如下步骤:
步骤1:在系统运行前根据编码器的实际位置对原点信号输出计数器模块的原点信号输出计数器的初值进行校正,以系统运行前编码器位置数据校正原点信号输出计数器的初值OZ_CNT_INIT:
先获取编码器的初始位置值POS_DATA_INIT,然后计算原点信号输出计数器的初值OZ_CNT_INIT:
其中,PPRSET为电机旋转单圈输出脉冲数,PPRE为编码器实际单圈脉冲数;在系统运行前,以该原点信号输出计数器的初值OZ_CNT_INIT来修正两路互为正交的OA和OB脉冲信号的初始相位关系,以保证两路互为正交的OA和OB脉冲信号与原点信号的相位关系满足:
{OA,OB]=OZ_CNT_INIT[1:0](7)同时,计算正交脉冲输出状态机模块的分频计数器的初值div_cnt_init:
其中oz_cnt_init_rem为OZ_CNT_INIT计算结果的余数;上述校正均只在系统运行前运行一次;步骤2、发出脉冲数计算模块接收预置的编码器采样周期T、电机旋转单圈输出脉冲数PPRSET、脉冲输出基准信号分频比DIV,编码器实际单圈脉冲数PPRE,计算编码器在采样周期T内需要发出的脉冲数POPT,计算公式如下:
SMPT=POS_DATAn-POS_DATAn-1 (1)其中,SMPT为信号采样中断期间的编码器脉冲数,即两次中断期间采样的位置数据的差值,POS_DATAn为本次中断采样的位置数据,POS_DATAn-1为上次中断采样的位置数据;
其中,PPRSET为预置的电机旋转单圈输出脉冲数,DIV为预置的脉冲输出基准信号分频比,取值1~32之间的任意整数,REMA为上次计算的余数,PPRE为编码器实际单圈脉冲数;
将计算得到的编码器在采样周期T内需要发出的脉冲数POPT和两次中断期间采样的位置数据的差值SMPT发送给发出脉冲计数器;
步骤3、发出脉冲数计算模块根据步骤2计算得到的编码器在采样周期T内需要发出的脉冲数POPT,计算出当前采样周期T内需要 输出的脉冲输出频率POFRQ,并发送给分频脉冲发生器模块:
步骤4、采样周期T内脉冲输出的最高频率为系统时钟sysclk,则当前采样周期T内需要
3
CN 106092156 A
权 利 要 求 书
3/3页
输出的脉冲输出频率POFRQ与脉冲输出的最高频率的比值为:
将2n作为溢出门限寄存器的溢出门限值,其中n满足2n>(T×SYSCLK)的条件,在每个系统时钟上升沿对累加准值进行累加,即对RATIO×2n进行累加,存取累加结果,将累加结果与溢出门限值比较,若大于,则输出进位标志carry信号,同时将累加结果减去溢出门限值,若小于,则继续累加直至大于溢出门限值;将该进位标志Carry信号作为所需的脉冲输出基准信号发送给发出脉冲计数器模块;
对脉冲输出频率POFRQ进行修正,修正后的比值公式如下:
根据计算消耗的系统时钟数以及中断周期的偏移取M值,一般取4~8之间的任意整数,确保不会减少输出的脉冲数;
上述公式(1)至(5)在每个采样周期T内均只运算一次;步骤5、分频脉冲发生器模块开始输出脉冲输出基准信号,发出脉冲计数器模块对该脉冲输出基准信号的高电平时间进行计数,当计数值达到采样周期T内需要发出的脉冲数POPT时,阻断脉冲输出基准信号的高电平输出,在下一个采样周期T开始时清空上述计数值, 在脉冲输出基准信号为高电平期间,根据两次中断期间采样的位置数据的差值SMPT的正负,来确定输出正向脉冲输出标志up和反向脉冲输出标志dn的电平,若SMPT为正,则正向脉冲输出标志up为高电平,反向脉冲输出标志dn为低电平;若SMPT为负,则正向脉冲输出标志up为低电平,反向脉冲输出标志dn为高电平,并将正向脉冲输出标志up和反向脉冲输出标志dn实时发送给正交脉冲输出状态机模块;
步骤6、正交脉冲输出状态机模块根据发出脉冲计数器模块输出的正向脉冲输出标志up和反向脉冲输出标志dn,对分频计数器的初值div_cnt_init进行加减,当正向脉冲输出标志up为高电平时,该分频计数器值加1,当反向脉冲输出标志dn为高电平时,该分频计数值减1,当正向脉冲输出标志up为高电平且分频计数值等于脉冲输出基准信号分频比DIV时,将分频计数值清零,同时输出正向切换信号ring_up;当反向脉冲输出标志dn为高电平且分频计数值为0时,重置分频计数值为脉冲输出基准信号分频比DIV的值,同时输出反向切换信号ring_dn,当正向切换信号Ring_up为高电平时,将OA脉冲信号超前OB脉冲信号九十度;当反向切换信号Ring_dn为高电平时,将OA脉冲信号滞后OB脉冲信号九十度,通过该脉冲输出正交化处理,即可得到所需的两路互为正交的脉冲输出信号OA和OB信号,同时将正向切换信号ring_up和反向切换信号ring_dn输出至原点信号输出计数器模块;
步骤7、原点信号输出计数器模块接收预置的电机旋转单圈输出 脉冲数PPRSET,根据正交脉冲输出状态机模块输入的正向切换信号ring_up和反向切换信号ring_dn的电平对原点信号输出计数器的初值OZ_CNT_INIT进行加减,当原点信号输出计数器值减小至零或者增大至电机旋转单圈输出脉冲数PPRSET时,将原点信号输出计数器值重置为电机旋转单圈输出脉冲数PPRSET或者重置为零,在原点信号输出计数器值为0时,输出原点信号。
4
CN 106092156 A
说 明 书
1/8页
交流伺服串行通信编码器位置反馈脉冲分频输出系统和方法
技术领域
[0001]本发明属于伺服控制技术领域,涉及一种交流伺服串行通信编码器位置反馈脉冲分频输出系统和方法。
背景技术
[0002]对于高精度的控制场合下,一般使用分辨率高的编码器,为了减少数据传输过程中受到的干扰,这类编码器大都使用串行通信的方式与伺服驱动器连接。在一些场合下,上位控制器需要伺服驱动器反馈编码器的位置脉冲,脉冲式编码器可以直接将分频后的脉冲
这就需要有一个方法,将通信输出给上位装置,而串行通信方式的编码器只包含位置数据,
接收到的编码器位置数据转化为脉冲输出至上位装置。
发明内容
[0003]本发明的目的是提供一种串行通信编码器位置反馈脉冲分频输出系统和方法,实现将编码器反馈的位置数据转化为相互正交的两路脉冲信号(OA信号和OB信号)输出,同时在原点位置输出一个原点信号(OZ信号),将通信接收到的编码器位置数据转化为脉冲输出至上位装置。
[0004]本发明一种串行通信编码器位置反馈脉冲分频输出系统,由发出脉冲数计算模块、分频脉冲发生器模块、发出脉冲计数器模块、正交 脉冲输出状态机模块和原点信号输出计数器模块构成,其中,
[0005]发出脉冲数计算模块,接收预置的编码器采样周期T、电机旋转单圈输出脉冲数PPRSET、脉冲输出基准信号分频比DIV,编码器实际单圈脉冲数PPRE,计算编码器在采样周期T内需要发出的脉冲数POPT,将在采样周期T内需要发出的脉冲数POPT和两次中断期间采样的位置数据的差值SMPT发送给发出脉冲计数器模块,将计算得到的当前采样周期T内需要输出的脉冲输出频率POFRQ发送给分频脉冲发生器模块,将电机旋转单圈输出脉冲数PPRSET发送给原点信号输出计数器模块;[0006]分频脉冲发生器模块,根据发出脉冲数计算模块给出的当前采样周期T内需要输出的脉冲输出频率POFRQ和系统时钟sysclk,计算其比值为:
将2n作为溢出门限寄存器的溢出门限值,其中n满足2n>(T×SYSCLK)的条件,在每个系统时钟上升沿对累加准值进行累加,即对RATIO×2n进行累加,存取累加结果,将累加结果与溢出门限值比较,若大于,则输出进位标志carry信号,同时将累加结果减去溢出门限值,若小于,则继续累加直至大于溢出门限值,将该进位标志Carry信号作为所需的脉冲输出基准信号发送给发出脉冲计数器模块;[0007]发出脉冲计数器模块,在分频脉冲发生器模块开始输出脉冲输出基准信号时,对该脉冲输出基准信号的高电平时间进行计数,当计数值达到采样周期T内需要发出的脉冲数POPT时,阻断脉冲输出基准信号的高电平输出,在下一个采样周期T开始时清空上述计数
5
CN 106092156 A
说 明 书
2/8页
值,在 脉冲输出基准信号为高电平期间,根据两次中断期间采样的位置数据的差值SMPT的正负,来确定输出正向脉冲输出标志up和反向脉冲输出标志dn的电平,若SMPT为正,则正向脉冲输出标志up为高电平,反向脉冲输出标志dn为低电平;若SMPT为负,则正向脉冲输出标志up为低电平,反向脉冲输出标志dn为高电平,并将正向脉冲输出标志up和反向脉冲输出标志dn实时发送给正交脉冲输出状态机模块;[0008]正交脉冲输出状态机模块,置分频计数器初值div_cnt_init,根据发出脉冲计数器模块输出的正向脉冲输出标志up和反向脉冲输出标志dn,对分频计数器初值进行加减,当正向脉冲输出标志up为高电平时,该分频计数器值加1,当反向脉冲输出标志dn为高电平时,该分频计数器值减1,当正向脉冲输出标志up为高电平且分频计数器值等于脉冲输出基准信号分频比DIV时,将分频计数器值清零,同时输出正向切换信号ring_up;当反向脉冲输出标志dn为高电平且分频计数器值为0时,重置分频计数器值为脉冲输出基准信号分频比DIV的值,同时输出反向切换信号ring_dn;当正向切换信号Ring_up为高电平时,将OA脉冲信号超前OB脉冲信号九十度;当反向切换信号Ring_dn为高电平时,将OA脉冲信号滞后OB脉冲信号九十度,通过该脉冲输出正交化处理,即可得到所需的两路互为正交的脉冲输出信号OA和OB信号,同时将正向切换信号ring_up和反向切换信号ring_dn输出至原点信号输出计数器模块;
[0009]原点信号输出计数器模块,接收预置的电机旋转单圈输出脉冲数PPRSET,根据正交脉冲输出状态机模块输入的正向切换信号ring_up 和反向切换信号ring_dn的电平对其
当原点信号输出计数器值减小至零或者增大至电机原点信号输出计数器的初值进行加减,
旋转单圈输出脉冲数PPRSET时,将原点信号输出计数器值重置为电机旋转单圈输出脉冲数PPRSET或者重置为零,在原点信号输出计数器值为0时,输出原点信号。
[0010]所述的一种串行通信编码器位置反馈脉冲分频输出系统的输出方法,包括如下步骤:
[0011]步骤1:在系统运行前根据编码器的实际位置对原点信号输出计数器模块的原点信号输出计数器的初值进行校正,以系统运行前编码器位置数据校正原点信号输出计数器的初值OZ_CNT_INIT:
[0012]先获取编码器的初始位置值POS_DATA_INIT,然后计算原点信号输出计数器的初值OZ_CNT_INIT:
[0013]
其中,PPRSET为电机旋转单圈输出脉冲数,PPRE为编码器实际单圈脉冲数;
[0015]在系统运行前,以该原点信号输出计数器的初值OZ_CNT_INIT来修正两路互为正交的OA和OB脉冲信号的初始相位关系,以保证两路互为正交的OA和OB脉冲信号与原点信号的相位关系满足:[0016]{OA,OB}=OZ_CNT_INIT[1:0] (7)[0017]同时,计算正交脉冲输出状态机模块的分频计数器的初值div_cnt_init:
[0018]
[0014]
其中oz_cnt_init_rem为OZ_CNT_INIT计算结果的余数;
6
CN 106092156 A[0019]
说 明 书
3/8页
上述校正均只在系统运行前运行一次;
[0020]步骤2、发出脉冲数计算模块接收预置的编码器采样周期T、电机旋转单圈输出脉冲数PPRSET、脉冲输出基准信号分频比DIV,编码器实际单圈脉冲数PPRE,计算编码器在采样周期T内需要发出的脉冲数POPT,计算公式如下:[0021]SMPT=POS_DATAn-POS_DATAn-1 (1)[0022]其中,SMPT为信号采样中断期间的编码器脉冲数,即两次中断期间采样的位置数据的差值,POS_DATAn为本次中断采样的位置数据,POS_DATAn-1为上次中断采样的位置数据;
[0023]
其中,PPRSET为预置的电机旋转单圈输出脉冲数,DIV为预置的脉冲输出基准信号
分频比,取值1~32之间的任意整数,REMA为上次计算的余数,PPRE为编码器实际单圈脉冲数;
[0025]将计算得到的编码器在采样周期T内需要发出的脉冲数POPT和两次中断期间采样的位置数据的差值SMPT发送给发出脉冲计数器;[0026]步骤3、发出脉冲数计算模块根据步骤2计算得到的编码器在采样周期T内需要发出的脉冲数POPT,计算出当前采样周期T内需要输出的脉冲输出频率POFRQ,并发送给分频脉冲发生器模块:
[0027][0028]
[0024]
步骤4、采样周期T内脉冲输出的最高频率为系统时钟sysclk,则当前采样周期T内
需要输出的脉冲输出频率POFRQ与脉冲输出的最 高频率的比值为:
[0029]
将2n作为溢出门限寄存器的溢出门限值,其中n满足2n>(T×SYSCLK)的条件,在每
个系统时钟上升沿对累加准值进行累加,即对RATIO×2n进行累加,存取累加结果,将累加结果与溢出门限值比较,若大于,则输出进位标志carry信号,同时将累加结果减去溢出门限值,若小于,则继续累加直至大于溢出门限值;将该进位标志Carry信号作为所需的脉冲输出基准信号发送给发出脉冲计数器模块;[0031]对脉冲输出频率POFRQ进行修正,修正后的比值公式如下:
[0030][0032][0033]
根据计算消耗的系统时钟数以及中断周期的偏移取M值,一般取4~8之间的任意整数,确保不会减少输出的脉冲数;
[0034]上述公式(1)至(5)在每个采样周期T内均只运算一次;[0035]步骤5、分频脉冲发生器模块开始输出脉冲输出基准信号,发出脉冲计数器模块对该脉冲输出基准信号的高电平时间进行计数,当计数值达到采样周期T内需要发出的脉冲数POPT时,阻断脉冲输出基准信号的高电平输出,在下一个采样周期T开始时清空上述计数值,在脉冲输出基准信号为高电平期间,根据两次中断期间采样的位置数据的差值SMPT的
7
CN 106092156 A
说 明 书
4/8页
正负,来确定输出正向脉冲输出标志up和反向脉冲输出标志dn的电平,若SMPT为正,则正向脉冲输出标志up为高电平,反向脉冲输出标志dn为低电平;若SMPT为负,则正向脉冲输出 标志up为低电平,反向脉冲输出标志dn为高电平,并将正向脉冲输出标志up和反向脉冲输出标志dn实时发送给正交脉冲输出状态机模块;[0036]步骤6、正交脉冲输出状态机模块根据发出脉冲计数器模块输出的正向脉冲输出标志up和反向脉冲输出标志dn,对分频计数器的初值div_cnt_init进行加减,当正向脉冲输出标志up为高电平时,该分频计数器值加1,当反向脉冲输出标志dn为高电平时,该分频计数值减1,当正向脉冲输出标志up为高电平且分频计数值等于脉冲输出基准信号分频比DIV时,将分频计数值清零,同时输出正向切换信号ring_up;当反向脉冲输出标志dn为高电平且分频计数值为0时,重置分频计数值为脉冲输出基准信号分频比DIV的值,同时输出反向切换信号ring_dn,当正向切换信号Ring_up为高电平时,将OA脉冲信号超前OB脉冲信号九十度;当反向切换信号Ring_dn为高电平时,将OA脉冲信号滞后OB脉冲信号九十度,通过该脉冲输出正交化处理,即可得到所需的两路互为正交的脉冲输出信号OA和OB信号,同时将正向切换信号ring_up和反向切换信号ring_dn输出至原点信号输出计数器模块;[0037]步骤7、原点信号输出计数器模块接收预置的电机旋转单圈输出脉冲数PPRSET,根据正交脉冲输出状态机模块输入的正向切换信号ring_up和反向切换信号ring_dn的电平对原点信号输出计数器的初值OZ_CNT_INIT进行加减,当原点信号输出计数器值减小至零或者增大至电机旋转单圈输出脉冲数PPRSET时,将原点信号输出计数器值 重置为电机旋转单圈输出脉冲数PPRSET或者重置为零,在原点信号输出计数器值为0时,输出原点信号。[0038]本发明以采样周期内输出的脉冲数为切入点,给出了采样周期内输出的脉冲数的计算方法及修正手段,能够确保输出脉冲的个数,保证位置数据不丢失,系统的抗干扰性更好;本发明以采样周期内的系统时钟个数为溢出门限,以系统时钟为基准时钟,可以突破编码器实际单圈脉冲数的限制,能够产生比编码器原始单圈脉冲数更高的脉冲数输出,且给出了原点信号的产生方式,使整个系统更加完善。附图说明
[0039]图1是本发明电路的原理框图。
[0040]以下结合附图和实施例对本发明作进一步详述。
具体实施方式
[0041]在本实施例中,FPGA选用ALTERA公司的EP4CE6E22I7。[0042]如图1所示,本发明一种串行通信编码器位置反馈脉冲分频输出系统,由发出脉冲数计算模块1、分频脉冲发生器模块2、发出脉冲计数器模块3、正交脉冲输出状态机模块4和原点信号输出计数器模块5构成,其中,[0043]发出脉冲数计算模块1,接收预置的编码器采样周期T、电机旋转单圈输出脉冲数PPRSET、脉冲输出基准信号分频比DIV,编码器实际单圈脉冲数PPRE,计算编码器在采样周期T内需要发出的脉冲数 POPT,将在采样周期T内需要发出的脉冲数POPT和两次中断期间采样的位置数据的差值SMPT发送给发出脉冲计数器模块3,将计算得到的当前采样周期T内需要输出的脉冲输出频率POFRQ发送给分频脉冲发生器模块2,将电机旋转单圈输出脉冲数
8
CN 106092156 A
说 明 书
5/8页
PPRSET发送给原点信号输出计数器模块5;[0044]分频脉冲发生器模块2,根据发出脉冲数计算模块1给出的当前采样周期T内需要输出的脉冲输出频率POFRQ和系统时钟sysclk,计算其比值为:
其中n满足2n>(T×SYSCLK)的条件,在每个系统时将2n作为溢出门限寄存器的溢出门限值,钟上升沿对累加准值进行累加,即对RATIO×2n进行累加,存取累加结果,将累加结果与溢出门限值比较,若大于,则输出进位标志carry信号,同时将累加结果减去溢出门限值,若小于,则继续累加直至大于溢出门限值,将该进位标志Carry信号作为所需的脉冲输出基准信号发送给发出脉冲计数器模块3;[0045]发出脉冲计数器模块3,在分频脉冲发生器模块2开始输出脉冲输出基准信号时,对该脉冲输出基准信号的高电平时间进行计数,当计数值达到采样周期T内需要发出的脉冲数POPT时,阻断脉冲输出基准信号的高电平输出,在下一个采样周期T开始时清空上述计数值,在脉冲输出基准信号为高电平期间,根据两次中断期间采样的位置数据的差值SMPT的正负,来确定输出正向脉冲输出标志up和反向脉冲输出标志dn的电平,若SMPT为正,则正向脉冲输出标志up为高电平,反向脉冲输出标志dn为低电平;若SMPT为负,则正向脉冲 输出标志up为低电平,反向脉冲输出标志dn为高电平,并将正向脉冲输出标志up和反向脉冲输出标志dn实时发送给正交脉冲输出状态机模块4;[0046]正交脉冲输出状态机模块4,置分频计数器初值div_cnt_init,根据发出脉冲计数器模块3输出的正向脉冲输出标志up和反向脉冲输出标志dn,对分频计数器值进行加减,当正向脉冲输出标志up为高电平时,该分频计数器值加1,当反向脉冲输出标志dn为高电平时,该分频计数器值减1,当正向脉冲输出标志up为高电平且分频计数器值等于脉冲输出基准信号分频比DIV时,将分频计数器值清零,同时输出正向切换信号ring_up;当反向脉冲输出标志dn为高电平且分频计数器值为0时,重置分频计数器值为脉冲输出基准信号分频比DIV的值,同时输出反向切换信号ring_dn;当正向切换信号Ring_up为高电平时,将OA脉冲信号超前OB脉冲信号九十度;当反向切换信号Ring_dn为高电平时,将OA脉冲信号滞后OB脉冲信号九十度,通过该脉冲输出正交化处理,即可得到所需的两路互为正交的脉冲输出信号OA和OB信号,同时将正向切换信号ring_up和反向切换信号ring_dn输出至原点信号输出计数器模块5;
[0047]原点信号输出计数器模块5,接收预置的电机旋转单圈输出脉冲数PPRSET,根据正交脉冲输出状态机模块4输入的正向切换信号ring_up和反向切换信号ring_dn的电平对其原点信号输出计数器的初值进行加减,当原点信号输出计数器值减小至零或者增大至电机旋转单圈输出脉冲数PPRSET时,将原点信号输出计数器值重置为电机 旋转单圈输出脉冲数PPRSET或者重置为零,在原点信号输出计数器值为0时,输出原点信号。[0048]本发明一种串行通信编码器位置反馈脉冲分频输出方法,具体实现包括如下步骤:
[0049]步骤1:由于原点信号位置与编码器本身的位置相关,因此需要在系统运行前根据编码器的实际位置对原点信号输出计数器模块5的原点信号输出计数器的初值进行校正,以系统运行前编码器位置数据校正原点信号输出计数器的初值OZ_CNT_INIT:[0050]先获取编码器的初始位置值POS_DATA_INIT,然后计算原点信号输出计数器的初
9
CN 106092156 A
说 明 书
6/8页
值OZ_CNT_INIT:
[0051]
其中,PPRSET为电机旋转单圈输出脉冲数,PPRE为编码器实际单圈脉冲数;
[0053]由于原点信号与OA和OB脉冲信号要保持相同的相位关系,因此还要在系统运行前,以该原点信号输出计数器的初值OZ_CNT_INIT来修正两路互为正交的OA和OB脉冲信号的初始相位关系,以保证两路互为正交的OA和OB脉冲信号与原点信号的相位关系满足:[0054]{OA,OB}=OZ_CNT_INIT[1:0] (7)[0055]同时,计算正交脉冲输出状态机模块4的分频计数器的初值div_cnt_init:
[0056]
[0052]
其中oz_cnt_init_rem为OZ_CNT_INIT计算结果的余数;[0057]上述校正均只在系统运行前运行一次;[0058]步骤2、发出脉冲数计算模块1接收预置的编码器采样周期T、电机旋转单圈输出脉冲数PPRSET、脉冲输出基准信号分频比DIV,编码器实际单圈脉冲数PPRE,计算编码器在采样周期T内需要发出的脉冲数POPT,计算公式如下:[0059]SMPT=POS_DATAn-POS_DATAn-1 (1)[0060]其中,SMPT为信号采样中断期间的编码器脉冲数,即两次中断期间采样的位置数据的差值,POS_DATAn为本次中断采样的位置数据,POS_DATAn-1为上次中断采样的位置数据;
[0061]
其中,PPRSET为预置的电机旋转单圈输出脉冲数,DIV为预置的脉冲输出基准信号
分频比,取值1~32之间的任意整数,REMA为上次计算的余数,PPRE为编码器实际单圈脉冲数;
[0063]这里引入脉冲输出基准信号分频比DIV,是为了在单圈输出脉冲数PPRSET较小时,保证计算精度,在此处放大的倍数,通过正交脉冲输出状态机模块4内的分频来抵消;
[0064]将计算得到的编码器在采样周期T内需要发出的脉冲数POPT和两次中断期间采样的位置数据的差值SMPT发送给发出脉冲计数器3;[0065]步骤3、发出脉冲数计算模块1根据步骤2计算得到的编码器在采样周期T内需要发出的脉冲数POPT,计算出当前采样周期T内需要输出的脉冲输出频率POFRQ,并发送给分频脉冲发生器模块2:
[0066][0067]
[0062]
步骤4、采样周期T内脉冲输出的最高频率为系统时钟sysclk,则当前采样周期T内
需要输出的脉冲输出频率POFRQ与脉冲输出的最高频率的比值为:
[0068][0069]
将2n作为溢出门限寄存器的溢出门限值,其中n满足2n>(T×SYSCLK)的条件,在每
10
CN 106092156 A
说 明 书
7/8页
个系统时钟上升沿对累加准值进行累加,即对RATIO×2n进行累加,存取累加结果,将累加结果与溢出门限值比较,若大于,则输出进位标志carry信号,同时将累加结果减去溢出门限值,若小于,则继续累加直至大于溢出门限值;将该进位标志Carry信号作为所需的脉冲输出基准信号发送给发出脉冲计数器模块3;
[0070]由于各项数据的计算需要消耗系统时钟,同时存在系统时钟偏移的情况,需要对脉冲输出频率POFRQ进行修正,修正后的比值公式如下:
[0071]
根据计算消耗的系统时钟数以及中断周期的偏移取M值,一般取4~8之间的任意
用于抵消数据计算及系统时钟偏移消耗的时钟数,稍微增大输出脉冲的频率,确保不整数,
会减少输出的脉冲数;
[0073]上述公式(1)至(5)在每个采样周期T内均只运算一次;[0074]步骤5、分频脉冲发生器模块2开始输出脉冲输出基准信号,发出脉冲计数器模块3对该脉冲输出基准信号的高电平时间进行计数, 当计数值达到采样周期T内需要发出的脉冲数POPT时,阻断脉冲输出基准信号的高电平输出,在下一个采样周期T开始时清空上述计数值,在脉冲输出基准信号为高电平期间,根据两次中断期间采样的位置数据的差值SMPT的正负,来确定输出正向脉冲输出标志up和反向脉冲输出标志dn的电平,若SMPT为正,则正向脉冲输出标志up为高电平,反向脉冲输出标志dn为低电平;若SMPT为负,则正向脉冲输出标志up为低电平,反向脉冲输出标志dn为高电平,并将正向脉冲输出标志up和反向脉冲输出标志dn实时发送给正交脉冲输出状态机模块4;[0075]步骤6、正交脉冲输出状态机模块4根据发出脉冲计数器模块3输出的正向脉冲输出标志up和反向脉冲输出标志dn,对分频计数器的初值div_cnt_init进行加减,当正向脉冲输出标志up为高电平时,该分频计数器值加1,当反向脉冲输出标志dn为高电平时,该分频计数值减1,当正向脉冲输出标志up为高电平且分频计数值等于脉冲输出基准信号分频比DIV时,将分频计数值清零,同时输出正向切换信号ring_up;当反向脉冲输出标志dn为高电平且分频计数值为0时,重置分频计数值为脉冲输出基准信号分频比DIV的值,同时输出反向切换信号ring_dn,当正向切换信号Ring_up为高电平时,将OA脉冲信号超前OB脉冲信号九十度;当反向切换信号Ring_dn为高电平时,将OA脉冲信号滞后OB脉冲信号九十度,通过该脉冲输出正交化处理,即可得到所需的两路互为正交的脉冲输出信号OA和OB信号,同时将正向切换信号ring_up和反向切换信号ring_dn输出至原点信 号输出计数器模块5;[0076]该脉冲输出正交化处理的具体做法为:通过正交脉冲输出状态机模块4输出两路互为正交的OA和OB脉冲信号,OA和OB脉冲信号组合起来共有00,01,11,10四种状态,通过正向切换信号ring_up和反向切换信号ring_dn的电平可以确定脉冲信号输出的正反相位(即两路脉冲信号的相位超前与滞后关系,正转为00,10,11,01,反转为00,01,11,10)和变换两路脉冲信号的状态,输出符合要求的两路正交脉冲信号;[0077]步骤7、原点信号输出计数器模块5接收预置的电机旋转单圈输出脉冲数PPRSET,根据正交脉冲输出状态机模块4输入的正向切换信号ring_up和反向切换信号ring_dn的电平对原点信号输出计数器的初值OZ_CNT_INIT进行加减,当原点信号输出计数器值减小至零或者增大至电机旋转单圈输出脉冲数PPRSET时,将原点信号输出计数器值重置为电机旋
11
[0072]
CN 106092156 A
说 明 书
8/8页
转单圈输出脉冲数PPRSET或者重置为零,在原点信号输出计数器值为0时,输出原点信号。[0078]以上所述,仅是本发明较佳实施例而已,并非对本发明的技术范围作任何限制,故凡是依据本发明的技术实质对以上实施例所作的任何细微修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
12
CN 106092156 A
说 明 书 附 图
1/1页
图1
13
因篇幅问题不能全部显示,请点此查看更多更全内容