CN106092156B - 交流伺服串行通信编码器位置反馈脉冲分频输出系统和方法 - Google Patents
交流伺服串行通信编码器位置反馈脉冲分频输出系统和方法 Download PDFInfo
- Publication number
- CN106092156B CN106092156B CN201610633929.7A CN201610633929A CN106092156B CN 106092156 B CN106092156 B CN 106092156B CN 201610633929 A CN201610633929 A CN 201610633929A CN 106092156 B CN106092156 B CN 106092156B
- Authority
- CN
- China
- Prior art keywords
- pulse
- output
- mrow
- umber
- counter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01D—MEASURING NOT SPECIALLY ADAPTED FOR A SPECIFIC VARIABLE; ARRANGEMENTS FOR MEASURING TWO OR MORE VARIABLES NOT COVERED IN A SINGLE OTHER SUBCLASS; TARIFF METERING APPARATUS; MEASURING OR TESTING NOT OTHERWISE PROVIDED FOR
- G01D5/00—Mechanical means for transferring the output of a sensing member; Means for converting the output of a sensing member to another variable where the form or nature of the sensing member does not constrain the means for converting; Transducers not specially adapted for a specific variable
- G01D5/12—Mechanical means for transferring the output of a sensing member; Means for converting the output of a sensing member to another variable where the form or nature of the sensing member does not constrain the means for converting; Transducers not specially adapted for a specific variable using electric or magnetic means
- G01D5/244—Mechanical means for transferring the output of a sensing member; Means for converting the output of a sensing member to another variable where the form or nature of the sensing member does not constrain the means for converting; Transducers not specially adapted for a specific variable using electric or magnetic means influencing characteristics of pulses or pulse trains; generating pulses or pulse trains
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Transmission And Conversion Of Sensor Element Output (AREA)
- Measurement Of Length, Angles, Or The Like Using Electric Or Magnetic Means (AREA)
Abstract
本发明一种交流伺服串行通信编码器位置反馈脉冲分频输出系统和方法,由发出脉冲数计算模块、分频脉冲发生器模块、发出脉冲计数器模块、正交脉冲输出状态机模块和原点信号输出计数器模块构成,将通信接收到的编码器位置数据转化为脉冲输出至上位装置,本发明以采样周期内输出的脉冲数为切入点,给出了采样周期内输出的脉冲数的计算方法及修正手段,能够确保输出脉冲的个数,保证位置数据不丢失,系统的抗干扰性更好;且以采样周期内的系统时钟个数为溢出门限,以系统时钟为基准时钟,可以突破编码器实际单圈脉冲数的限制,能够产生比编码器原始单圈脉冲数更高的脉冲数输出,且给出了原点信号的产生方式,使整个系统更加完善。
Description
技术领域
本发明属于伺服控制技术领域,涉及一种交流伺服串行通信编码器位置反馈脉冲分频输出系统和方法。
背景技术
对于高精度的控制场合下,一般使用分辨率高的编码器,为了减少数据传输过程中受到的干扰,这类编码器大都使用串行通信的方式与伺服驱动器连接。在一些场合下,上位控制器需要伺服驱动器反馈编码器的位置脉冲,脉冲式编码器可以直接将分频后的脉冲输出给上位装置,而串行通信方式的编码器只包含位置数据,这就需要有一个方法,将通信接收到的编码器位置数据转化为脉冲输出至上位装置。
发明内容
本发明的目的是提供一种串行通信编码器位置反馈脉冲分频输出系统和方法,实现将编码器反馈的位置数据转化为相互正交的两路脉冲信号(OA信号和OB信号)输出,同时在原点位置输出一个原点信号(OZ信号),将通信接收到的编码器位置数据转化为脉冲输出至上位装置。
本发明一种串行通信编码器位置反馈脉冲分频输出系统,由发出脉冲数计算模块、分频脉冲发生器模块、发出脉冲计数器模块、正交 脉冲输出状态机模块和原点信号输出计数器模块构成,其中,
发出脉冲数计算模块,接收预置的编码器采样周期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的电平对其原点信号输出计数器的初值进行加减,当原点信号输出计数器值减小至零或者增大至电机旋转单圈输出脉冲数PPRSET时,将原点信号输出计数器值重置为电机旋转单圈输出脉冲数PPRSET或者重置为零,在原点信号输出计数器值为0时,输出原点信号。
所述的一种串行通信编码器位置反馈脉冲分频输出系统的输出方法,包括如下步骤:
步骤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内需要输出的脉冲输出频率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时,输出原点信号。
本发明以采样周期内输出的脉冲数为切入点,给出了采样周期内输出的脉冲数的计算方法及修正手段,能够确保输出脉冲的个数,保证位置数据不丢失,系统的抗干扰性更好;本发明以采样周期内的系统时钟个数为溢出门限,以系统时钟为基准时钟,可以突破编码器实际单圈脉冲数的限制,能够产生比编码器原始单圈脉冲数更高的脉冲数输出,且给出了原点信号的产生方式,使整个系统更加完善。
附图说明
图1是本发明电路的原理框图。
以下结合附图和实施例对本发明作进一步详述。
具体实施方式
在本实施例中,FPGA选用ALTERA公司的EP4CE6E22I7。
如图1所示,本发明一种串行通信编码器位置反馈脉冲分频输出系统,由发出脉冲数计算模块1、分频脉冲发生器模块2、发出脉冲计数器模块3、正交脉冲输出状态机模块4和原点信号输出计数器模块5构成,其中,
发出脉冲数计算模块1,接收预置的编码器采样周期T、电机旋转单圈输出脉冲数PPRSET、脉冲输出基准信号分频比DIV,编码器实际单圈脉冲数PPRE,计算编码器在采样周期T内需要发出的脉冲数 POPT,将在采样周期T内需要发出的脉冲数POPT和两次中断期间采样的位置数据的差值SMPT发送给发出脉冲计数器模块3,将计算得到的当前采样周期T内需要输出的脉冲输出频率POFRQ发送给分频脉冲发生器模块2,将电机旋转单圈输出脉冲数PPRSET发送给原点信号输出计数器模块5;
分频脉冲发生器模块2,根据发出脉冲数计算模块1给出的当前采样周期T内需要输出的脉冲输出频率POFRQ和系统时钟sysclk,计算其比值为:将2n作为溢出门限寄存器的溢出门限值,其中n满足2n>(T×SYSCLK)的条件,在每个系统时钟上升沿对累加准值进行累加,即对RATIO×2n进行累加,存取累加结果,将累加结果与溢出门限值比较,若大于,则输出进位标志carry信号,同时将累加结果减去溢出门限值,若小于,则继续累加直至大于溢出门限值,将该进位标志Carry信号作为所需的脉冲输出基准信号发送给发出脉冲计数器模块3;
发出脉冲计数器模块3,在分频脉冲发生器模块2开始输出脉冲输出基准信号时,对该脉冲输出基准信号的高电平时间进行计数,当计数值达到采样周期T内需要发出的脉冲数POPT时,阻断脉冲输出基准信号的高电平输出,在下一个采样周期T开始时清空上述计数值,在脉冲输出基准信号为高电平期间,根据两次中断期间采样的位置数据的差值SMPT的正负,来确定输出正向脉冲输出标志up和反向脉冲输出标志dn的电平,若SMPT为正,则正向脉冲输出标志up为高电平,反向脉冲输出标志dn为低电平;若SMPT为负,则正向脉冲 输出标志up为低电平,反向脉冲输出标志dn为高电平,并将正向脉冲输出标志up和反向脉冲输出标志dn实时发送给正交脉冲输出状态机模块4;
正交脉冲输出状态机模块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;
原点信号输出计数器模块5,接收预置的电机旋转单圈输出脉冲数PPRSET,根据正交脉冲输出状态机模块4输入的正向切换信号ring_up和反向切换信号ring_dn的电平对其原点信号输出计数器的初值进行加减,当原点信号输出计数器值减小至零或者增大至电机旋转单圈输出脉冲数PPRSET时,将原点信号输出计数器值重置为电机 旋转单圈输出脉冲数PPRSET或者重置为零,在原点信号输出计数器值为0时,输出原点信号。
本发明一种串行通信编码器位置反馈脉冲分频输出方法,具体实现包括如下步骤:
步骤1:由于原点信号位置与编码器本身的位置相关,因此需要在系统运行前根据编码器的实际位置对原点信号输出计数器模块5的原点信号输出计数器的初值进行校正,以系统运行前编码器位置数据校正原点信号输出计数器的初值OZ_CNT_INIT:
先获取编码器的初始位置值POS_DATA_INIT,然后计算原点信号输出计数器的初值OZ_CNT_INIT:
其中,PPRSET为电机旋转单圈输出脉冲数,PPRE为编码器实际单圈脉冲数;
由于原点信号与OA和OB脉冲信号要保持相同的相位关系,因此还要在系统运行前,以该原点信号输出计数器的初值OZ_CNT_INIT来修正两路互为正交的OA和OB脉冲信号的初始相位关系,以保证两路互为正交的OA和OB脉冲信号与原点信号的相位关系满足:
{OA,OB}=OZ_CNT_INIT[1:0] (7)
同时,计算正交脉冲输出状态机模块4的分频计数器的初值div_cnt_init:
其中oz_cnt_init_rem为OZ_CNT_INIT计算结果的余数;
上述校正均只在系统运行前运行一次;
步骤2、发出脉冲数计算模块1接收预置的编码器采样周期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为编码器实际单圈脉冲数;
这里引入脉冲输出基准信号分频比DIV,是为了在单圈输出脉冲数PPRSET较小时,保证计算精度,在此处放大的倍数,通过正交脉冲输出状态机模块4内的分频来抵消;
将计算得到的编码器在采样周期T内需要发出的脉冲数POPT和两次中断期间采样的位置数据的差值SMPT发送给发出脉冲计数器3;
步骤3、发出脉冲数计算模块1根据步骤2计算得到的编码器在采样周期T内需要发出的脉冲数POPT,计算出当前采样周期T内需要输出的脉冲输出频率POFRQ,并发送给分频脉冲发生器模块2:
步骤4、采样周期T内脉冲输出的最高频率为系统时钟sysclk,则当前采样周期T内需要输出的脉冲输出频率POFRQ与脉冲输出的最高频率的比值为:
将2n作为溢出门限寄存器的溢出门限值,其中n满足2n>(T×SYSCLK)的条件,在每个系统时钟上升沿对累加准值进行累加,即对RATIO×2n进行累加,存取累加结果,将累加结果与溢出门限值比较,若大于,则输出进位标志carry信号,同时将累加结果减去溢出门限值,若小于,则继续累加直至大于溢出门限值;将该进位标志Carry信号作为所需的脉冲输出基准信号发送给发出脉冲计数器模块3;
由于各项数据的计算需要消耗系统时钟,同时存在系统时钟偏移的情况,需要对脉冲输出频率POFRQ进行修正,修正后的比值公式如下:
根据计算消耗的系统时钟数以及中断周期的偏移取M值,一般取4~8之间的任意整数,用于抵消数据计算及系统时钟偏移消耗的时钟数,稍微增大输出脉冲的频率,确保不会减少输出的脉冲数;
上述公式(1)至(5)在每个采样周期T内均只运算一次;
步骤5、分频脉冲发生器模块2开始输出脉冲输出基准信号,发出脉冲计数器模块3对该脉冲输出基准信号的高电平时间进行计数, 当计数值达到采样周期T内需要发出的脉冲数POPT时,阻断脉冲输出基准信号的高电平输出,在下一个采样周期T开始时清空上述计数值,在脉冲输出基准信号为高电平期间,根据两次中断期间采样的位置数据的差值SMPT的正负,来确定输出正向脉冲输出标志up和反向脉冲输出标志dn的电平,若SMPT为正,则正向脉冲输出标志up为高电平,反向脉冲输出标志dn为低电平;若SMPT为负,则正向脉冲输出标志up为低电平,反向脉冲输出标志dn为高电平,并将正向脉冲输出标志up和反向脉冲输出标志dn实时发送给正交脉冲输出状态机模块4;
步骤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;
该脉冲输出正交化处理的具体做法为:通过正交脉冲输出状态机模块4输出两路互为正交的OA和OB脉冲信号,OA和OB脉冲信号组合起来共有00,01,11,10四种状态,通过正向切换信号ring_up和反向切换信号ring_dn的电平可以确定脉冲信号输出的正反相位(即两路脉冲信号的相位超前与滞后关系,正转为00,10,11,01,反转为00,01,11,10)和变换两路脉冲信号的状态,输出符合要求的两路正交脉冲信号;
步骤7、原点信号输出计数器模块5接收预置的电机旋转单圈输出脉冲数PPRSET,根据正交脉冲输出状态机模块4输入的正向切换信号ring_up和反向切换信号ring_dn的电平对原点信号输出计数器的初值OZ_CNT_INIT进行加减,当原点信号输出计数器值减小至零或者增大至电机旋转单圈输出脉冲数PPRSET时,将原点信号输出计数器值重置为电机旋转单圈输出脉冲数PPRSET或者重置为零,在原点信号输出计数器值为0时,输出原点信号。
以上所述,仅是本发明较佳实施例而已,并非对本发明的技术范围作任何限制,故凡是依据本发明的技术实质对以上实施例所作的任何细微修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (2)
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的电平对其原点信号输出计数器的初值进行加减,当原点信号输出计数器值减小至零或者增大至电机旋转单圈输出脉冲数PPRSET时,将原点信号输出计数器值重置为电机旋转单圈输出脉冲数PPRSET或者重置为零,在原点信号输出计数器值为0时,输出原点信号。
2.根据权利要求1所述的一种串行通信编码器位置反馈脉冲分频输出系统的输出方法,其特征在于包括如下步骤:
步骤1:在系统运行前根据编码器的实际位置对原点信号输出计数器模块的原点信号输出计数器的初值进行校正,以系统运行前编码器位置数据校正原点信号输出计数器的初值OZ_CNT_INIT:
先获取编码器的初始位置值POS_DATA_INIT,然后计算原点信号输出计数器的初值OZ_CNT_INIT:
<mrow>
<mi>O</mi>
<mi>Z</mi>
<mo>_</mo>
<mi>C</mi>
<mi>N</mi>
<mi>T</mi>
<mo>_</mo>
<mi>I</mi>
<mi>N</mi>
<mi>T</mi>
<mo>=</mo>
<mfrac>
<mrow>
<mi>P</mi>
<mi>O</mi>
<mi>S</mi>
<mo>_</mo>
<mi>D</mi>
<mi>A</mi>
<mi>T</mi>
<mi>A</mi>
<mo>_</mo>
<mi>I</mi>
<mi>N</mi>
<mi>I</mi>
<mi>T</mi>
</mrow>
<mrow>
<mi>P</mi>
<mi>P</mi>
<mi>R</mi>
<mi>E</mi>
</mrow>
</mfrac>
<mo>&times;</mo>
<mi>P</mi>
<mi>P</mi>
<mi>R</mi>
<mi>S</mi>
<mi>E</mi>
<mi>T</mi>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>6</mn>
<mo>)</mo>
</mrow>
</mrow>
其中,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为上次中断采样的位置数据;
<mrow>
<mi>P</mi>
<mi>O</mi>
<mi>P</mi>
<mi>T</mi>
<mo>=</mo>
<mfrac>
<mrow>
<mrow>
<mo>|</mo>
<mrow>
<mi>S</mi>
<mi>M</mi>
<mi>P</mi>
<mi>T</mi>
</mrow>
<mo>|</mo>
</mrow>
<mo>&times;</mo>
<mi>P</mi>
<mi>P</mi>
<mi>R</mi>
<mi>S</mi>
<mi>E</mi>
<mi>T</mi>
<mo>&times;</mo>
<mi>D</mi>
<mi>I</mi>
<mi>V</mi>
<mo>+</mo>
<mi>R</mi>
<mi>E</mi>
<mi>M</mi>
<mi>A</mi>
</mrow>
<mrow>
<mi>P</mi>
<mi>P</mi>
<mi>R</mi>
<mi>E</mi>
</mrow>
</mfrac>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>)</mo>
</mrow>
</mrow>
其中,PPRSET为预置的电机旋转单圈输出脉冲数,DIV为预置的脉冲输出基准信号分频比,取值1~32之间的任意整数,REMA为上次计算的余数,PPRE为编码器实际单圈脉冲数;
将计算得到的编码器在采样周期T内需要发出的脉冲数POPT和两次中断期间采样的位置数据的差值SMPT发送给发出脉冲计数器;
步骤3、发出脉冲数计算模块根据步骤2计算得到的编码器在采样周期T内需要发出的脉冲数POPT,计算出当前采样周期T内需要输出的脉冲输出频率POFRQ,并发送给分频脉冲发生器模块:
<mrow>
<mi>P</mi>
<mi>O</mi>
<mi>F</mi>
<mi>R</mi>
<mi>Q</mi>
<mo>=</mo>
<mfrac>
<mrow>
<mi>P</mi>
<mi>O</mi>
<mi>P</mi>
<mi>T</mi>
</mrow>
<mi>T</mi>
</mfrac>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>3</mn>
<mo>)</mo>
</mrow>
<mo>;</mo>
</mrow>
步骤4、采样周期T内脉冲输出的最高频率为系统时钟sysclk,则当前采样周期T内需要输出的脉冲输出频率POFRQ与脉冲输出的最高频率的比值为当前采样周期T内需要输出的脉冲输出频率POFRQ与系统时钟sysclk的比值:
将2n作为溢出门限寄存器的溢出门限值,其中n满足2n>(T×SYSCLK)的条件,在每个系统时钟上升沿对累加准值进行累加,即对RATIO×2n进行累加,存取累加结果,将累加结果与溢出门限值比较,若大于,则输出进位标志carry信号,同时将累加结果减去溢出门限值,若小于,则继续累加直至大于溢出门限值;将该进位标志Carry信号作为所需的脉冲输出基准信号发送给发出脉冲计数器模块;
对脉冲输出频率POFRQ进行修正,修正后的比值公式如下:
<mrow>
<mi>R</mi>
<mi>A</mi>
<mi>T</mi>
<mi>I</mi>
<mi>O</mi>
<mo>=</mo>
<mfrac>
<mrow>
<mi>P</mi>
<mi>O</mi>
<mi>F</mi>
<mi>R</mi>
<mi>Q</mi>
</mrow>
<mrow>
<mi>S</mi>
<mi>Y</mi>
<mi>S</mi>
<mi>C</mi>
<mi>L</mi>
<mi>K</mi>
</mrow>
</mfrac>
<mo>=</mo>
<mfrac>
<mrow>
<mi>P</mi>
<mi>O</mi>
<mi>P</mi>
<mi>T</mi>
</mrow>
<mrow>
<mi>T</mi>
<mo>&times;</mo>
<mi>S</mi>
<mi>Y</mi>
<mi>S</mi>
<mi>C</mi>
<mi>L</mi>
<mi>K</mi>
</mrow>
</mfrac>
<mo>=</mo>
<mo>></mo>
<mi>R</mi>
<mi>A</mi>
<mi>T</mi>
<mi>I</mi>
<mi>O</mi>
<mo>=</mo>
<mfrac>
<mrow>
<mi>P</mi>
<mi>O</mi>
<mi>P</mi>
<mi>T</mi>
</mrow>
<mrow>
<mi>T</mi>
<mo>&times;</mo>
<mi>S</mi>
<mi>Y</mi>
<mi>S</mi>
<mi>C</mi>
<mi>L</mi>
<mi>K</mi>
<mo>-</mo>
<mi>M</mi>
</mrow>
</mfrac>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>5</mn>
<mo>)</mo>
</mrow>
</mrow>
根据计算消耗的系统时钟数以及中断周期的偏移取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时,输出原点信号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610633929.7A CN106092156B (zh) | 2016-08-04 | 2016-08-04 | 交流伺服串行通信编码器位置反馈脉冲分频输出系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610633929.7A CN106092156B (zh) | 2016-08-04 | 2016-08-04 | 交流伺服串行通信编码器位置反馈脉冲分频输出系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106092156A CN106092156A (zh) | 2016-11-09 |
CN106092156B true CN106092156B (zh) | 2018-05-11 |
Family
ID=57455054
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610633929.7A Active CN106092156B (zh) | 2016-08-04 | 2016-08-04 | 交流伺服串行通信编码器位置反馈脉冲分频输出系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106092156B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106774147A (zh) * | 2016-11-28 | 2017-05-31 | 金舜 | 伺服驱动器位置给定脉冲齿轮比的自动设定方法 |
CN108453733B (zh) * | 2018-03-05 | 2020-04-21 | 北京镁伽机器人科技有限公司 | 具有反馈控制功能的机器人、运动控制系统、方法和介质 |
CN110764439B (zh) * | 2018-07-25 | 2022-09-06 | 上海英威腾工业技术有限公司 | 伺服驱动脉冲输出分频器及其使用方法 |
JP6761011B2 (ja) * | 2018-09-25 | 2020-09-23 | ファナック株式会社 | エンコーダ及び制御システム |
CN111147069A (zh) * | 2019-12-25 | 2020-05-12 | 深圳万讯自控股份有限公司 | 一种任意脉冲分频输出方法 |
CN113377045A (zh) * | 2021-06-08 | 2021-09-10 | 广东三姆森科技股份有限公司 | 一种基于fpga的多路位置比较输出装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6080321A (ja) * | 1983-10-11 | 1985-05-08 | Hitachi Ltd | エンコ−ダパルスの分周方法 |
JP3589527B2 (ja) * | 1996-07-17 | 2004-11-17 | 株式会社ミツトヨ | 変位測定装置 |
CN101226408B (zh) * | 2008-01-24 | 2011-07-20 | 南京埃斯顿自动控制技术有限公司 | 交流伺服绝对值编码器位置反馈脉冲分频输出方法及电路 |
CN102102997A (zh) * | 2010-12-28 | 2011-06-22 | 威海华东电源有限公司 | 正交串行输出旋转编码器任意分频装置及其实现方法 |
CN102412828A (zh) * | 2011-12-27 | 2012-04-11 | 哈尔滨工业大学 | 基于cpld的光电码盘正交脉冲任意小数分频系统及方法 |
-
2016
- 2016-08-04 CN CN201610633929.7A patent/CN106092156B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN106092156A (zh) | 2016-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106092156B (zh) | 交流伺服串行通信编码器位置反馈脉冲分频输出系统和方法 | |
CN102045062B (zh) | 一种基于Cordic算法的数字锁相环 | |
CN102035472B (zh) | 可编程数字倍频器 | |
CN106292839B (zh) | 实时时钟补偿电路及校准方法、装置 | |
CN103941622A (zh) | 基于fpga的高精度秒脉冲倍频出采样脉冲的方法 | |
CN103178851B (zh) | 一种产生spwm控制信号的新型采样方法 | |
CN104375006A (zh) | 一种快速同步相量修正方法 | |
CN109959825A (zh) | 一种基于拉格朗日插值法的非线性压控衰减器拟合校准方法 | |
CN107976700A (zh) | 一种卫星导航接收机秒脉冲的稳定输出方法 | |
CN106569033B (zh) | 一种高精度快速频率计 | |
CN107907850A (zh) | 三相电能表时钟校准和误差校准方法 | |
CN103383443A (zh) | 智能电网用模块化三相仪表检定装置 | |
CN103293363B (zh) | 一种互感器采样值延时补偿方法 | |
CN103197530B (zh) | 一种提高测时分辨率的装置 | |
CN106053936A (zh) | 一种获取电学信号瞬时频率的方法及系统 | |
CN105634473A (zh) | 移动终端的频率调整方法及装置 | |
CN109901382A (zh) | 一种数字控制系统的规则采样pwm优化方法 | |
CN103618578A (zh) | 一种基于数控衰减的射频信号功率捷变方法 | |
CN111510129A (zh) | 一种纯数字电路小数分频系统和分频方法 | |
CN104133409A (zh) | 一种对称性可调的三角波合成装置 | |
CN104363193B (zh) | 一种用于无人机地空宽带通信系统的接收终端方法 | |
CN109696603B (zh) | 一种双端行波测距的两侧外部时钟实时监测方法 | |
CN106922015A (zh) | 无线通信设备及其频率同步方法 | |
CN104270095B (zh) | 基于cpld的单片方波信号倍频器及输出任意倍频信号的方法 | |
CN201359721Y (zh) | 一种高速除法器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |