一种伺服系统任意分频倍频方法、系统以及可编程器件

申请号 CN202010760657.3 申请日 2020-07-31 公开(公告)号 CN111865156B 公开(公告)日 2022-01-07
申请人 深圳市海浦蒙特科技有限公司; 发明人 郭喜华; 袁飞平; 张宁;
摘要 本 发明 涉及伺服系统技术领域,具体涉及一种伺服系统任意分频倍频方法、系统以及可编程器件,该方法包括:获取 编码器 本次读数和上次读数的数值差Δp以及编码器本次读数和上次读数间隔的时钟数Δt;根据数值差Δp和倍频系数N计算当前时钟脉冲来临时累加的倍频脉冲数sum,根据时钟数Δt和分频系数D计算预设时钟脉冲数M;判断sum是否大于M,若是则输出一个脉冲 信号 。本 申请 方法只需要在首次对计算出预设时钟脉冲数,以后每次时钟到来,只需要判断出当前时钟周期内累加的倍频脉冲数大于预设时钟脉冲数,则立即发出一个脉冲信号,这样处理不会存在余数,不会导致对余数部分的处理出现滞后现象,使得分频后脉冲信号可以实时的反应 电机 的 位置 。
权利要求

1.一种伺服系统任意分频倍频方法,其特征在于,包括:
获取编码器本次读数和上次读数的数值差Δp以及编码器本次读数和上次读数间隔的时钟数Δt;
根据所述数值差Δp和倍频系数N计算当前时钟脉冲来临时累加的倍频脉冲数sum,根据所述时钟数Δt和分频系数D计算预设时钟脉冲数M;
判断当前时钟脉冲来临时累加的倍频脉冲数sum是否大于所述预设时钟脉冲数M,若是则输出一个脉冲信号
所述预设时钟脉冲数M=Δt*C*D,C表示伺服系统每个脉冲信号周期内包括的时钟脉冲的个数;
所述根据所述数值差Δp和倍频系数N计算当前时钟脉冲来临时累加的倍频脉冲数sum包括:
从上次编码器读数开始每个时钟脉冲来临时累加一个Δp*N,sum为当前时钟脉冲来临时累加的(Δp*N)的和。
2.如权利要求1所述的伺服系统任意分频倍频方法,其特征在于,所述输出一个脉冲信号包括:根据预设的脉冲输出需求对输出的脉冲信号进行上升沿处理和/或下降沿处理,输出对应的脉冲信号。
3.如权利要求2所述的伺服系统任意分频倍频方法,其特征在于,还包括:根据所述数值差Δp的正负值确定编码器的读取方向,若Δp为正值则确定所述编码器的读取方向为正方向,若Δp为负值,则确定所述编码器的读取方向为负方向。
4.如权利要求3所述的伺服系统任意分频倍频方法,其特征在于,所述根据预设的脉冲输出需求对输出的脉冲信号进行上升沿处理和/或下降沿处理,输出对应的脉冲信号包括:
若所述编码器的读取方向为正方向则反转编码器的A相输出脉冲作为伺服系统输出的脉冲信号,若所述编码器的读取方向为负方向则反转编码器的B相输出脉冲作为伺服系统输出的脉冲信号。
5.一种伺服系统任意分频倍频系统,其特征在于,包括:
获取模,用于获取编码器本次读数和上次读数的数值差Δp以及编码器本次读数和上次读数间隔的时钟数Δt;
计算模块,用于根据所述数值差Δp和倍频系数N计算当前时钟脉冲来临时累加的倍频脉冲数sum,根据所述时钟数Δt和分频系数D计算预设时钟脉冲数M;
判断模块,用于判断当前时钟脉冲来临时累加的倍频脉冲数sum是否大于所述预设时钟脉冲数M;
脉冲输出模块,用于在判断出当前时钟脉冲来临时累加的倍频脉冲数sum大于所述预设时钟脉冲数M时输出一个脉冲信号;
所述预设时钟脉冲数M=Δt*C*D,C表示伺服系统每个脉冲信号周期内包括的时钟脉冲的个数;
所述根据所述数值差Δp和倍频系数N计算当前时钟脉冲来临时累加的倍频脉冲数sum包括:
从上次编码器读数开始每个时钟脉冲来临时累加一个Δp*N,sum为当前时钟脉冲来临时累加的(Δp*N)的和。
6.如权利要求5所述的伺服系统任意分频倍频系统,其特征在于,还包括脉冲处理模块,用于根据预设的脉冲输出需求对输出的脉冲信号进行上升沿处理和/或下降沿处理,输出对应的脉冲信号。
7.如权利要求6所述的伺服系统任意分频倍频系统,其特征在于,所述根据预设的脉冲输出需求对输出的脉冲信号进行上升沿处理和/或下降沿处理,输出对应的脉冲信号包括:
根据所述数值差Δp的正负值确定编码器的读取方向,若Δp为正值则确定所述编码器的读取方向为正方向,若Δp为负值,则确定所述编码器的读取方向为负方向;
若所述编码器的读取方向为正方向则反转编码器的A相输出脉冲作为伺服系统输出的脉冲信号,若所述编码器的读取方向为负方向则反转编码器的B相输出脉冲作为伺服系统输出的脉冲信号。
8.一种可编程器件,其特征在于,包括:
获取模块,用于获取编码器本次读数和上次读数的数值差Δp以及编码器本次读数和上次读数间隔的时钟数Δt;
计算模块,用于根据所述数值差Δp和倍频系数N计算当前时钟脉冲来临时累加的倍频脉冲数sum,根据所述时钟数Δt和分频系数D计算预设时钟脉冲数M;
判断模块,用于判断当前时钟脉冲来临时累加的倍频脉冲数sum是否大于所述预设时钟脉冲数M;
脉冲输出模块,用于在判断出当前时钟脉冲来临时累加的倍频脉冲数sum大于所述预设时钟脉冲数M时输出一个脉冲信号;
所述预设时钟脉冲数M=Δt*C*D,C表示伺服系统每个脉冲信号周期内包括的时钟脉冲的个数;
所述根据所述数值差Δp和倍频系数N计算当前时钟脉冲来临时累加的倍频脉冲数sum包括:
从上次编码器读数开始每个时钟脉冲来临时累加一个Δp*N,sum为当前时钟脉冲来临时累加的(Δp*N)的和。

说明书全文

一种伺服系统任意分频倍频方法、系统以及可编程器件

技术领域

[0001] 本发明涉及伺服系统技术领域,具体涉及一种伺服系统任意分频倍频方法、系统以及可编程器件。

背景技术

[0002] 在伺服系统中,分频输出功能用于反馈电机位置,给上位装置使用。分频输出是把从电机编码器读到的位置按照一定的比例转换成脉冲个数,上位装置通过对脉冲进行计数以获得电机转子位置。
[0003] 根据读取电机编码器的方式不同,可以将编码器分为增量型编码器以及通信型编码器,对于增量型编码器,分频输出可以通过直接对AB信号分频实现实时2的n次方分频,但是这种方法无法实现任意系数分频倍频。对于通信型编码器,只能通过对连续两次读数求差,然后根据分频系数计算出两次读取间隔时间应该发出的脉冲数。传统方法实现任意分频倍频时,通常将分频倍频系数(R)表示为倍频系数N/分频系数D,然后计算两次编码器读数之差Δp,接着计算Δp*N/D以获得两次编码器读数间隔时间Δt 内应该发出的脉冲数以及余数,而现有技术中一般对余数的处理延续要下一个处理周期,即下一次获取编码器读数之差Δp的时候,这样就会存在一定的延时性,导致余数部分的处理实时性较差,并且也容易出错,因此输出的脉冲序列无法准确反应出电机的位置,将导致上位装置读到的电机位置严重滞后于真实的电机位置,使得伺服系统对电机的控制精度差。

发明内容

[0004] 本发明主要解决的技术问题是采用现有技术中的分频倍频方法得到的脉冲序列无法准确反应电机位置的问题。
[0005] 一种伺服系统任意分频倍频方法,包括:
[0006] 获取编码器本次读数和上次读数的数值差Δp以及编码器本次读数和上次读数间隔的时钟数Δt;
[0007] 根据所述数值差Δp和倍频系数N计算当前时钟脉冲来临时累加的倍频脉冲数sum,根据所述时钟数Δt和分频系数D计算预设时钟脉冲数M;
[0008] 判断当前时钟脉冲来临时累加的倍频脉冲数sum是否大于所述预设时钟脉冲数M,若是则输出一个脉冲信号。
[0009] 在一种实施例中,所述预设时钟脉冲数M=Δt*C*D,C表示伺服系统每个脉冲信号周期内包括的时钟脉冲的个数;
[0010] 所述根据所述数值差Δp和倍频系数N计算当前时钟脉冲来临时累加的倍频脉冲数sum包括:
[0011] 从上次编码器读数开始每个时钟脉冲来临时累加一个Δp*N,sum为当前时钟脉冲来临时累加的多个(Δp*N)的和。
[0012] 在一种实施例中,所述输出一个脉冲信号包括:根据预设的脉冲输出需求对输出的脉冲信号进行上升沿处理和/或下降沿处理,输出对应的脉冲信号。
[0013] 在一种实施例中,还包括:根据所述数值差Δp的正负值确定编码器的读取方向,若Δp为正值则确定所述编码器的读取方向为正方向,若Δp 为负值,则确定所述编码器的读取方向为负方向。
[0014] 在一种实施例中,所述根据预设的脉冲输出需求对输出的脉冲信号进行上升沿处理和/或下降沿处理,输出对应的脉冲信号包括:
[0015] 若所述编码器的读取方向为正方向则反转编码器的A相输出脉冲作为伺服系统输出的脉冲信号,若所述编码器的读取方向为负方向则反转编码器的B相输出脉冲作为伺服系统输出的脉冲信号。
[0016] 一种伺服系统任意分频倍频系统,包括:
[0017] 获取模,用于获取编码器本次读数和上次读数的数值差Δp以及编码器本次读数和上次读数间隔的时钟数Δt;
[0018] 计算模块,用于根据所述数值差Δp和倍频系数N计算当前时钟脉冲来临时累加的倍频脉冲数sum,根据所述时钟数Δt和分频系数D计算预设时钟脉冲数M;
[0019] 判断模块,用于判断当前时钟脉冲来临时累加的倍频脉冲数sum是否大于所述预设时钟脉冲数M;
[0020] 脉冲输出模块,用于在判断出当前时钟脉冲来临时累加的倍频脉冲数 sum大于所述预设时钟脉冲数M时输出一个脉冲信号。
[0021] 在一种实施例中,所述预设时钟脉冲数M=Δt*C*D,C表示伺服系统每个脉冲信号周期内包括的时钟脉冲的个数;
[0022] 所述根据所述数值差Δp和倍频系数N计算当前时钟脉冲来临时累加的倍频脉冲数sum包括:
[0023] 从上次编码器读数开始每个时钟脉冲来临时累加一个Δp*N,sum为当前时钟脉冲来临时累加的多个(Δp*N)的和。
[0024] 在一种实施例中,还包括脉冲处理模块,用于根据预设的脉冲输出需求对输出的脉冲信号进行上升沿处理和/或下降沿处理,输出对应的脉冲信号。
[0025] 在一种实施例中,所述根据预设的脉冲输出需求对输出的脉冲信号进行上升沿处理和/或下降沿处理,输出对应的脉冲信号包括:
[0026] 根据所述数值差Δp的正负值确定编码器的读取方向,若Δp为正值则确定所述编码器的读取方向为正方向,若Δp为负值,则确定所述编码器的读取方向为负方向;
[0027] 若所述编码器的读取方向为正方向则反转编码器的A相输出脉冲作为伺服系统输出的脉冲信号,若所述编码器的读取方向为负方向则反转编码器的B相输出脉冲作为伺服系统输出的脉冲信号。
[0028] 一种可编程器件,包括:
[0029] 获取模块,用于获取编码器本次读数和上次读数的数值差Δp以及编码器本次读数和上次读数间隔的时钟数Δt;
[0030] 计算模块,用于根据所述数值差Δp和倍频系数N计算当前时钟脉冲来临时累加的倍频脉冲数sum,根据所述时钟数Δt和分频系数D计算预设时钟脉冲数M;
[0031] 判断模块,用于判断当前时钟脉冲来临时累加的倍频脉冲数sum是否大于所述预设时钟脉冲数M;
[0032] 脉冲输出模块,用于在判断出当前时钟脉冲来临时累加的倍频脉冲数 sum大于所述预设时钟脉冲数M时输出一个脉冲信号。
[0033] 依据上述实施例提供的伺服系统任意分频倍频方法,包括:获取编码器本次读数和上次读数的数值差Δp以及编码器本次读数和上次读数间隔的时钟数Δt;根据数值差Δp和倍频系数N计算当前时钟脉冲来临时累加的倍频脉冲数sum,根据时钟数Δt和分频系数D计算预设时钟脉冲数M;判断当前时钟脉冲来临时累加的倍频脉冲数sum是否大于预设时钟脉冲数M,若是则输出一个脉冲信号。本实施例的伺服系统任意分频倍频方法,只需要在首次对计算出预设时钟脉冲数,以后每次时钟脉冲到来时,只需要判断出当前时钟脉冲来临时累加的倍频脉冲数大于预设时钟脉冲数,则立即发出一个脉冲信号,这样处理不会存在余数,也不会导致对余数部分的处理出现滞后现象,使得分频后脉冲信号可以实时的反应电机的位置,使得伺服系统对电机的控制更加精确。附图说明
[0034] 图1为本申请实施例的分频倍频方法流程图
[0035] 图2为本申请实施例的分频倍频系统结构框图

具体实施方式

[0036] 下面通过具体实施方式结合附图对本发明作进一步详细说明。其中不同实施方式中类似元件采用了相关联的类似的元件标号。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他元件、材料、方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。
[0037] 另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。
[0038] 实施例一
[0039] 在本发明实施例中,提供一种伺服系统任意分频倍频方法,如图1,该分频倍频方法包括:
[0040] 步骤101:获取编码器本次读数和上次读数的数值差Δp以及编码器本次读数和上次读数间隔的时钟数Δt;
[0041] 步骤102:根据数值差Δp和倍频系数N计算当前时钟脉冲来临时累加的倍频脉冲数sum,根据时钟数Δt和分频系数D计算预设时钟脉冲数M;
[0042] 步骤103:判断当前时钟脉冲来临时累加的倍频脉冲数sum是否大于预设时钟脉冲数M,若是则输出一个脉冲信号。
[0043] 本实施例的伺服系统任意分频倍频方法,只需要在首次对计算出预设时钟脉冲数,以后每次时钟脉冲到来时,只需要判断出当前时钟脉冲来临 (来到)时累加的倍频脉冲数大于预设时钟脉冲数,则立即发出一个脉冲信号,这样处理不会存在余数,也不会导致对余数部分的处理出现滞后现象,使得分频后脉冲信号可以实时的反应电机的位置,使得伺服系统对电机的控制更加精确。在数据处理时,实时的对倍频脉冲数进行累加,无须除法运算,降低了系统资源利用率。
[0044] 具体的,在步骤101中,伺服系统等待编码器读取完成标志,若读取完成标志到达则记录编码器本次读数,并计算本次读取与上次读取的数值差Δp以及间隔时钟数Δt。
[0045] 在步骤102中,预设时钟脉冲数M=Δt*C*D,C表示伺服系统每个脉冲信号周期内包括的时钟脉冲的个数,例如伺服系统每个脉冲信号周期内包括100个时钟脉冲;其中,sum表示当前时钟脉冲来临时累加的倍频脉冲数值;其中,从上次编码器读数开始每个时钟脉冲来临时累加一个Δp*N, sum为当前时钟脉冲来临时累加的所有(Δp*N)的值,即对前一个时钟脉冲来临时的sum累加一个Δp*N,得到当前时钟脉冲来临时的sum。例如,倍频系数N=4,分频系数D=1,获取的编码器本次读数和上次读数的数值差Δp=2,编码器本次读数和上次读数间隔的时钟数Δt=3,伺服系统每个脉冲信号周期内包括的时钟脉冲的个数C=100,则预设时钟脉冲数M=Δ t*C*D=300,Δp*N=8,从上次编码器读数开始每个时钟脉冲来临时累加一个Δp*N,例如当前时第38个时钟脉冲到来时,则此时累积了38个Δp*N,即为sum=304,此时判断出sum>M,即(sum‑M)大于0,则伺服系统输出一个脉冲信号,即脉冲序列。
[0046] 传统的分频倍频方法先根据分频倍频系数算出Δt时间内应发脉冲数,例如在上述参数的基础上,采用传统的方法计算出Δt时间内应发脉冲数为2个脉冲,则还剩下余数,等到下次再继续计算以对该余数进行处理,这样处理的方法实时性不好,导致脉冲宽度无法准确反应电机转速,导致上位装置读到的电机位置严重滞后于真实的电机位置,使得实际电机位置存在误差,导致控制不准确。本方法通过积分的方法直接计算脉冲宽度,节省两次除法运算,大大降低资源占用,并实现不定步长计算(即先计算好脉冲宽度),如果判断出当前时钟脉冲来临时累加的倍频脉冲数大于预设时钟脉冲数,则输出一个脉冲信号,这样能够实现极好的实时性,并且脉冲宽度能够准确跟随电机速度,以对电机实现精确的控制。
[0047] 其中,本实施例中上述步骤101和步骤102中的计算预设时钟脉冲数 M过程只需要在系统首次启动时候获取一次并计算即可,以后每次系统只需要计算当前时钟脉冲来临时累加的倍频脉冲数sum,然后再执行步骤 103,若判断当前时钟脉冲来临时累加的倍频脉冲数sum大于预设时钟脉冲数M,则输出一个脉冲信号。这样伺服系统的处理器无须对步骤1和步骤 102中的计算预设时钟脉冲数M过程进行反复处理,这样占用空间小,提高了系统的计算效率。
[0048] 进一步的,在另一种实施例中,在输出脉冲信号时还需要根据系统预设的脉冲输出需求对脉冲信号进行对应的处理,例如如果需要输出正交脉冲,则需要首先根据数值差Δp的正负值确定编码器的读取方向,若Δp 为正值则确定编码器的读取方向为正方向,若Δp为负值,则确定编码器的读取方向为负方向。然后对输出的脉冲信号进行上升沿处理和/或下降沿处理,输出对应的脉冲信号。例如,若编码器的读取方向为正方向则反转编码器的A相输出脉冲作为伺服系统输出的脉冲形式,若编码器的读取方向为负方向则反转编码器的B相输出脉冲作为伺服系统输出的脉冲形式。
[0049] 本实施例的分频倍频方法能够在不使用除法器的情况下实现分频倍频输出,并且本实施例的方法兼容所有种类编码器,对于通信类编码器,输出延时时间为一个编码器读取周期(几十微秒级),能够用于多轴同步等高实时性要求场合。
[0050] 实施例二:
[0051] 请参考图2,本实施例提供一种伺服系统任意分频倍频系统,该分频倍频系统包括:获取模块301、计算模块302、判断模块303和脉冲输出模块304。
[0052] 其中,获取模块301用于获取编码器本次读数和上次读数的数值差Δp 以及编码器本次读数和上次读数间隔的时钟数Δt。
[0053] 计算模块302用于根据数值差Δp和倍频系数N计算当前时钟脉冲来临时累加的倍频脉冲数sum,根据时钟数Δt和分频系数D计算预设时钟脉冲数M。
[0054] 判断模块303用于判断当前时钟脉冲来临时累加的倍频脉冲数sum是否大于预设时钟脉冲数M。
[0055] 脉冲输出模块304用于在判断出当前时钟脉冲来临时累加的倍频脉冲数sum大于预设时钟脉冲数M时输出一个脉冲信号。
[0056] 进一步的,本实施例的分频倍频系统还包括脉冲处理模块305,脉冲处理模块305用于根据预设的脉冲输出需求对输出的脉冲信号进行上升沿处理和/或下降沿处理,输出对应的脉冲信号。例如,根据数值差Δp的正负值确定编码器的读取方向,若Δp为正值则确定编码器的读取方向为正方向,若Δp为负值,则确定编码器的读取方向为负方向;若编码器的读取方向为正方向则反转编码器的A相输出脉冲作为伺服系统输出的脉冲形式,若编码器的读取方向为负方向则反转编码器的B相输出脉冲作为伺服系统输出的脉冲形式。
[0057] 本实施例的分频倍频系统能够在不使用除法器的情况下实现分频倍频输出,并且本实施例的系统兼容所有种类编码器,对于通信类编码器,输出延时时间为一个编码器读取周期(几十微秒级),能够用于多轴同步等高实时性要求场合。
[0058] 实施例三
[0059] 本实施例提供一种可编程器件,例如FPGA或者CPLD,该可编程器件包括如图2所示的获取模块301、计算模块302、判断模块303和脉冲输出模块304。
[0060] 其中,获取模块301用于获取编码器本次读数和上次读数的数值差Δp 以及编码器本次读数和上次读数间隔的时钟数Δt。
[0061] 计算模块302用于根据数值差Δp和倍频系数N计算当前时钟脉冲来临时累加的倍频脉冲数sum,根据时钟数Δt和分频系数D计算预设时钟脉冲数M。
[0062] 判断模块303用于判断当前时钟脉冲来临时累加的倍频脉冲数sum是否大于预设时钟脉冲数M。
[0063] 脉冲输出模块304用于在判断出当前时钟脉冲来临时累加的倍频脉冲数sum大于预设时钟脉冲数M时输出一个脉冲信号。
[0064] 在另一种实施例中,该可编程器件还包括脉冲处理模块305,脉冲处理模块305用于根据预设的脉冲输出需求对输出的脉冲信号进行上升沿处理和/或下降沿处理,输出对应的脉冲信号。例如,根据数值差Δp的正负值确定编码器的读取方向,若Δp为正值则确定编码器的读取方向为正方向,若Δp为负值,则确定编码器的读取方向为负方向;若编码器的读取方向为正方向则反转编码器的A相输出脉冲作为伺服系统输出的脉冲形式,若编码器的读取方向为负方向则反转编码器的B相输出脉冲作为伺服系统输出的脉冲形式。
[0065] 本实施例的可编程器件能够在不使用除法器的情况下实现分频倍频输出,并且本实施例的可编程器件兼容所有种类编码器,对于通信类编码器,输出延时时间为一个编码器读取周期(几十微秒级),能够用于多轴同步等高实时性要求场合。
[0066] 以上应用了具体个例对本发明进行阐述,只是用于帮助理解本发明,并不用以限制本发明。对于本发明所属技术领域的技术人员,依据本发明的思想,还可以做出若干简单推演、变形或替换。
QQ群二维码
意见反馈