本发明实施方式涉及伺服电机技术领域,特别涉及一种多圈解算装置及多圈解算方法。
背景技术:
在工业制造中,需搭配交流永磁同步电机来驱动机床、机械手、雕刻机等装备。为实现对电机精确的三环控制,稳定准确的高精度旋转编码器必不可少,位置环的电机位置反馈值由编码器而来,高精度的绝对式编码器可以检测电机的单圈值和多圈值。
然而,发明人发现相关技术中至少存在如下问题:单圈值和多圈值在数值上都有上限,当超过一多圈值上限后,多圈值会溢出重新从1计算,此时编码器得到的电机的绝对位置并不准确。
技术实现要素:
本发明实施方式的目的在于提供一种多圈解算装置及多圈解算方法,能够解决多圈溢出的问题,准确记录电机的绝对位置。
为解决上述技术问题,本发明的实施方式提供了一种多圈解算装置,包括:编码器,所述编码器用于连接电机,并获取所述电机的当前多圈值;与所述编码器连接的控制器,所述控制器用于获取所述当前多圈值,统计所述当前多圈值达到预设多圈上限值的溢出次数,并根据所述当前多圈值、所述预设多圈上限值以及所述溢出次数确定所述电机的当前实际多圈值。
另外,还包括:与所述控制器连接的存储器;所述控制器用于将所述溢出次数写入所述存储器中,所述控制器还用于从所述存储器中读取所述溢出次数。
另外,所述存储器为电可擦可编程只读存储器。
另外,所述控制器包括:与所述编码器连接的fpga、以及与所述fpga和所述存储器连接的cpu;所述fpga用于获取所述编码器的当前多圈值,并将所述当前多圈值发送至所述cpu;所述cpu用于统计所述当前多圈值达到所述预设多圈上限值的所述溢出次数,并将所述溢出次数写入所述存储器中。
另外,所述cpu还用于接收实际多圈值获取请求,并触发所述fpga获取所述编码器的当前多圈值;所述fpga用于响应于所述实际多圈值获取请求、从所述存储器中读取所述溢出次数、并根据所述溢出次数和所述当前多圈值确定所述当前实际多圈值。
另外,所述cpu还用于接收电机位置查询请求,并触发所述fpga获取所述编码器的当前单圈值、以及当前多圈值;所述fpga用于响应于所述电机位置查询请求,从所述存储器中读取所述溢出次数,并根据所述当前单圈值、所述当前多圈值、所述预设多圈上限值以及所述溢出次数确定所述电机的实际角位置。
另外,还包括:与所述编码器连接的电池;所述电池用于在所述编码器的供电电源断电时为所述编码器供电。
另外,所述控制器还用于在检测到所述编码器断电时,获取所述编码器的当前多圈值,并存储所述当前多圈值。
本发明的实施方式还提供了一种多圈解算方法,,包括:获取电机的当前多圈值;统计所述当前多圈值达到预设多圈上限值的溢出次数;根据所述当前多圈值、所述预设多圈上限值以及所述溢出次数确定所述电机的当前实际多圈值。
另外,在所述统计所述当前多圈值达到预设多圈上限值的溢出次数之后,还包括:接收电机位置查询请求;响应于所述电机速度查询请求获取所述电机的当前单圈值;根据所述当前单圈值、所述当前多圈值、所述预设多圈上限值以及所述溢出次数确定所述电机的实际角位置。
本发明实施方式相对于相关技术而言提供了一种多圈解算装置,包括:编码器,编码器用于连接电机,并获取电机的当前多圈值;与编码器连接的控制器,控制器用于获取当前多圈值,统计当前多圈值达到预设多圈上限值的溢出次数,并根据当前多圈值、预设多圈上限值以及溢出次数确定电机的当前实际多圈值。本发明中与编码器连接的控制器记录编码器的多圈值达到预设多圈上限值的溢出次数,来根据当前多圈值、预设多圈上限值以及溢出次数来共同确定当前实际多圈值,解决多圈值溢出的问题;将多圈值的溢出次数考虑在内得到当前实际多圈值,从而能够根据当前实际多圈值准确得到电机的绝对位置。
附图说明
一个或多个实施方式通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施方式的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是根据本发明第一实施方式的多圈解算装置的结构示意图;
图2是根据本发明第一实施方式的多圈解算装置的另一种结构示意图;
图3是根据本发明第一实施方式的多圈解算装置的再一种结构示意图;
图4是根据本发明第二实施方式的多圈解算装置的流程示意图。
具体实施方式
为使本发明实施方式的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
所谓单圈和多圈编码器都是指式编码器,指式编码器可以在任何时刻,尤其是在刚上电的时刻,就能感知当前的角位置。单圈编码器只可以感知一圈之内的角位置;多圈编码器不仅可以感知一圈之内的角位置,而且可以感知编码器自使用之日起已经转过了多少圈。换句话说就是:单圈值编码器好像是一只钟表的秒钟(没有时钟和分钟)可以直接显示当前角位置,但是不能够累计增加。多圈值编码器就像是一只完整的钟表,既有秒钟也有时钟和分钟,不仅可以直接显示当前角位置,还可以看出累计多少。
发明人发现,现有单圈值和多圈值在数值上都有上限,例如:单圈上限值为8388608(23bit),多圈上限值为65536(16bit),电机每旋转一圈,多圈值加1,当电机连续一个方向旋转到多圈上限值时,多圈值将会溢出,重新从1开始计数,这时根据编码器encoder记录单圈值和多圈值计算得到的电机的角位置并不是绝对位置,因此需要一种方法来记录电机同向无限旋转时的绝对位置。
针对于此,本发明的第一实施方式涉及一种多圈解算装置,本实施方式的核心在于包括:编码器,编码器用于连接电机,并获取电机的当前多圈值;与编码器连接的控制器,控制器用于获取当前多圈值,统计当前多圈值达到预设多圈上限值的溢出次数,并根据当前多圈值、预设多圈上限值以及溢出次数确定电机的当前实际多圈值。
本发明中与编码器连接的控制器记录编码器的多圈值达到预设多圈上限值的溢出次数,来根据当前多圈值、预设多圈上限值以及溢出次数来共同确定当前实际多圈值,解决多圈值溢出的问题;将多圈值的溢出次数考虑在内得到当前实际多圈值,从而能够根据当前实际多圈值准确得到电机的绝对位置。
下面对本实施方式的多圈解算装置的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。
本实施方式中的多圈解算装置的结构示意图如图1所示:
具体地说,编码器encoder,编码器encoder为绝对式多圈值编码器encoder,编码器encoder用于连接电机motor,一般而言,编码器encoder套设于电机motor尾部,用于获取电机motor的单圈值和多圈值。与编码器encoder连接的控制器,控制器用于从编码器encoder获取电机motor的多圈值,并统计当前多圈值达到预设多圈上限值的溢出次数,并根据当前多圈值、预设多圈上限值以及溢出次数确定电机motor的当前实际多圈值,解决多圈值溢出的问题;将多圈值的溢出次数考虑在内得到当前实际多圈值,从而能够根据当前实际多圈值准确得到电机motor的绝对位置。其中,当前实际多圈值=预设多圈上限值*溢出次数 当前多圈值。
进一步地,多圈解算装置还包括:与控制器连接的存储器;控制器用于将溢出次数写入存储器中,控制器还用于从存储器中读取溢出次数。本实施例中通过设置与控制器连接的存储器,并将溢出次数写入存储器中保存,从而避免了控制器和编码器encoder断电时溢出次数丢失,而导致得到的多圈值不准确的问题。
可实现地,存储器为电可擦可编程只读存储器。电可擦可编程只读存储器(eeprom,electricallyerasableprogrammableread-onlymemory)是一种丢掉电后数据不丢失的存储芯片,可以在电脑上或专用设备上擦除掉已有信息,重新编程,可以即插即用。
进一步地,控制器包括:与编码器encoder连接的fpga、以及与fpga和存储器连接的cpu;fpga用于获取编码器encoder的当前多圈值,并将当前多圈值发送至cpu;cpu用于统计当前多圈值达到预设多圈上限值的溢出次数,并将溢出次数写入存储器中。
具体地说,如图1所示,电机motor尾部中安装了编码器encoder,编码器encoder套设在电机motor尾部,附图1中encoder为编码器encoder内部的原理,附图1中由虚曲线指出编码器encoder芯片的原理图,其中,编码器encoder由5.2v直流电驱动(1vcc、2gnd)。编码器encoder的单圈值、多圈值经差分信号输送到fpga中(3s 差分信号正、5s-差分信号负);fpga接收到差分信号后,对差分信号进行处理后输送到cpu中,以降低cpu的计算处理负担;cpu经过无限旋转解决方案将多圈值、多圈溢出值保存到存储器eeprom中,cpu可对存储器eeprom进行读写。
其中,差分传输是一种信号传输的技术,区别于传统的一根信号线一根地线的做法,差分传输在这两根线上都传输信号,这两个信号的振幅相同,相位相反。在这两根线上的传输的信号就是差分信号。信号接收端比较这两个电压的差值来判断发送端发送的逻辑状态。在电路板上,差分走线必须是等长、等宽、紧密靠近、且在同一层面的两根线。
在部分实施例中,fpga用于获取编码器encoder的当前多圈值,并将当前多圈值发送至cpu;cpu用于统计当前多圈值达到预设多圈上限值的溢出次数,并将溢出次数写入存储器中。
如图2所示,在部分实施例中,多圈解算装置还包括:与cpu连接的指令接收模块;指令接收模块用于接收用户输入的实际多圈值获取请求,并将实际多圈值获取请求发送至cpu;cpu还用于接收实际多圈值获取请求,并触发fpga获取编码器encoder的当前多圈值;fpga用于响应于实际多圈值获取请求、从存储器中读取溢出次数、并根据溢出次数和当前多圈值确定当前实际多圈值。如此,工作人员可以利用指令接收模块发送操作指令给cpu,由cpu来执行。
可实现地,如图2所示,多圈解算装置还包括:与cpu连接的显示模块;cpu用于从fpga获取电机的当前实际多圈值,并将绝对位置发送至显示模块;显示模块用于显示电机的当前实际多圈值。如此,工作人员可以直接在显示模块直观地看到电机的当前实际多圈值。
如图2所示,在部分施例中,多圈解算装置还包括:与cpu连接的指令接收模块;指令接收模块用于接收用户输入的电机位置查询请求,并将电机位置查询请求发送至cpu;cpu还用于接收电机motor位置查询请求,并触发fpga获取编码器encoder的当前单圈值、以及当前多圈值;fpga用于响应于电机motor位置查询请求,从存储器中读取溢出次数,并根据当前单圈值、当前多圈值、预设多圈上限值以及溢出次数确定电机motor的绝对位置。如此,工作人员可以利用指令接收模块发送电机位置查询请求给cpu,由cpu来执行。
可实现地,如图2所示,多圈解算装置还包括:与cpu连接的显示模块;cpu用于从fpga获取电机的绝对位置,并将绝对位置发送至显示模块;显示模块用于显示电机的绝对位置。如此,工作人员可以直接在显示模块直观地看到电机的绝对位置。
本实施例中当前单圈值用于确定电机motor的当前速度,当前单圈值和当前实际多圈值用于确定电机motor的绝对位置,具体的当前速度和电机motor的绝对位置的计算方式本实施方式中不进行赘述。
较佳的,还包括:与编码器encoder连接的电池battery;电池battery用于在编码器encoder的供电电源断电时为编码器encoder供电。本实施例中编码器encoder若保存多圈值需要外置电池battery供电(4bat 、6bat-),对于不是实时传输单圈值、多圈值、溢出次数的方案,若没有电池battery,断电后无法得到当前实际多圈值,因此,为了在断电后依然能够得到当前实际多圈值需为编码器encoder外接电池battery供电。
优选地,控制器还用于在检测到编码器encoder断电时,获取编码器encoder的当前多圈值,并存储当前多圈值。本实施例中控制器在检测到编码器encoder断电时,获取编码器encoder的当前多圈值,并将当前多圈值存储值存储器中,从而确保下次上电时,能够直接根据存储器内的多圈值和溢出次数以及编码器encoder的单圈值得到电机motor的绝对位置。
进一步地,编码器encoder设置有多个,每个编码器encoder分别连接一电机motor;控制器连接多个编码器encoder,控制器用于获取每个电机motor当前实际多圈值。
如图3所示,多圈解算装置包括编码器encoder1和编码器encoder2,encoder1连接motor1,encoder2连接motor2,encoder1和encoder2均与fpga连接。在实际应用中,编码器以及电机的数量不应以附图3所示的为限,可根据实际需求自行设置。该方案中一个控制器实现对多个电机motor的当前实际多圈值的获取,控制器还用于获取多个电机motor的绝对位置。
进一步地,指令接收模块用于接收多个电机motor的实际多圈值获取请求和/或电机motor的位置查询请求。显示模块用于接收并显示多个电机motor的当前实际多圈值和/或电机motor的绝对位置。
与相关技术相比,本发明实施方式提供了一种多圈解算装置,与编码器encoder连接的控制器记录编码器encoder的多圈值达到预设多圈上限值的溢出次数,来根据当前多圈值、预设多圈上限值以及溢出次数来共同确定当前实际多圈值,解决多圈值溢出的问题;将多圈值的溢出次数考虑在内得到当前实际多圈值,从而能够根据当前实际多圈值准确得到电机motor的绝对位置。
本发明的第二实施方式涉及一种多圈解算方法,本实施方式中多圈解算方法的流程示意图如图4所示,具体包括:
步骤101:获取电机的当前多圈值。
步骤102:统计当前多圈值达到预设多圈上限值的溢出次数。
步骤103:根据当前多圈值、预设多圈上限值以及溢出次数确定电机的当前实际多圈值。
针对上述步骤101和步骤103具体地说,利用编码器获取电机的当前多圈值,并统计当前多圈值达到预设多圈上限值的溢出次数,并根据当前多圈值、预设多圈上限值以及溢出次数确定电机的当前实际多圈值,解决多圈值溢出的问题;将多圈值的溢出次数考虑在内得到当前实际多圈值,从而能够根据当前实际多圈值准确得到电机的绝对位置。其中,当前实际多圈值=预设多圈上限值*溢出次数 当前多圈值。
在实际应用中,设置有无限旋转模式,当打开无限旋转模式时,则得到的多圈值为考虑溢出次数的实际多圈值;当关闭无限旋转模式时,则得到的多圈值为不考虑溢出次数的多圈值。
当无限旋转模式打开时,读出的当前多圈值备份并写入存储器,计算多圈值溢出次数,设定预设多圈上限值判定,并设置报警,当达到预设多圈上限值时,溢出次数加1。每当多圈溢出就触发多圈溢出标志位,每触发一次则将溢出次数写存储器,并将多圈备份值写存储器。当无限旋转模式没打开时,将溢出次数写入存储器中,并将多圈备份值写入存储器。
进一步地,在统计当前多圈值达到预设多圈上限值的溢出次数之后,还包括:接收电机位置查询请求;响应于电机速度查询请求获取电机的当前单圈值;根据当前单圈值、当前多圈值、预设多圈上限值以及溢出次数确定电机的绝对位置。
与相关技术相比,本发明实施方式提供了一种多圈解算方法,根据当前多圈值、预设多圈上限值以及溢出次数来共同确定当前实际多圈值,解决多圈值溢出的问题;将多圈值的溢出次数考虑在内得到当前实际多圈值,从而能够根据当前实际多圈值准确得到电机的绝对位置。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
不难发现,本实施方式为与第一实施方式相关的方法实施方式,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
1.一种多圈解算装置,其特征在于,包括:
编码器,所述编码器用于连接电机,并获取所述电机的当前多圈值;
与所述编码器连接的控制器,所述控制器用于获取所述当前多圈值,统计所述当前多圈值达到预设多圈上限值的溢出次数,并根据所述当前多圈值、所述预设多圈上限值以及所述溢出次数确定所述电机的当前实际多圈值。
2.根据权利要求1所述的多圈解算装置,其特征在于,还包括:与所述控制器连接的存储器;
所述控制器用于将所述溢出次数写入所述存储器中,所述控制器还用于从所述存储器中读取所述溢出次数。
3.根据权利要求2所述的多圈解算装置,其特征在于,所述存储器为电可擦可编程只读存储器。
4.根据权利要求2所述的多圈解算装置,其特征在于,所述控制器包括:与所述编码器连接的fpga、以及与所述fpga和所述存储器连接的cpu;
所述fpga用于获取所述编码器的当前多圈值,并将所述当前多圈值发送至所述cpu;
所述cpu用于统计所述当前多圈值达到所述预设多圈上限值的所述溢出次数,并将所述溢出次数写入所述存储器中。
5.根据权利要求4所述的多圈解算装置,其特征在于,所述cpu还用于接收实际多圈值获取请求,并触发所述fpga获取所述编码器的当前多圈值;
所述fpga用于响应于所述实际多圈值获取请求、从所述存储器中读取所述溢出次数、并根据所述溢出次数和所述当前多圈值确定所述当前实际多圈值。
6.根据权利要求4所述的多圈解算装置,其特征在于,所述cpu还用于接收电机位置查询请求,并触发所述fpga获取所述编码器的当前单圈值、以及当前多圈值;
所述fpga用于响应于所述电机位置查询请求,从所述存储器中读取所述溢出次数,并根据所述当前单圈值、所述当前多圈值、所述预设多圈上限值以及所述溢出次数确定所述电机的绝对位置。
7.根据权利要求1所述的多圈解算装置,其特征在于,还包括:与所述编码器连接的电池;
所述电池用于在所述编码器的供电电源断电时为所述编码器供电。
8.根据权利要求7所述的多圈解算装置,其特征在于,所述控制器还用于在检测到所述编码器断电时,获取所述编码器的当前多圈值,并存储所述当前多圈值。
9.一种多圈解算方法,其特征在于,包括:
获取电机的当前多圈值;
统计所述当前多圈值达到预设多圈上限值的溢出次数;
根据所述当前多圈值、所述预设多圈上限值以及所述溢出次数确定所述电机的当前实际多圈值。
10.根据权利要求9所述的多圈解算方法,其特征在于,在所述统计所述当前多圈值达到预设多圈上限值的溢出次数之后,还包括:
接收电机位置查询请求;
响应于所述电机速度查询请求获取所述电机的当前单圈值;
根据所述当前单圈值、所述当前多圈值、所述预设多圈上限值以及所述溢出次数确定所述电机的绝对位置。
技术总结