一种编码器的数据读取方法、装置和读取数据的装置与流程

文档序号:19785908发布日期:2020-01-24 13:34阅读:537来源:国知局
一种编码器的数据读取方法、装置和读取数据的装置与流程

本发明涉及编码器与电机控制技术领域,尤其涉及一种编码器的数据读取方法、装置和读取数据的装置。



背景技术:

在伺服控制中,arm+fpga是常用的硬件方案。因为伺服控制对电机转轴位置获取的实时性要求高,所以采用实时性很高的fpga对编码器串行信号进行解码,得到编码器值和报警字。arm只需要对fpga进行读取就可以获得点击转轴位置。

但是,在系统上电过程中,arm、fpga、编码器由于器件特性不同,三者难以保证同一时刻上电。通常来说,arm与电机内编码器上电所需时间短,而带片外flash的fpga上电需要的时间最长。这将导致如下问题:当arm和编码器已经开始工作,并且arm对fpga端的编码器数据进行读取,此时fpga还未工作,arm将读取到错误的值。



技术实现要素:

为解决上述现有技术中,存在的fpga还未工作,arm将读取到错误的值的技术问题,本发明提供了一种编码器的数据读取方法、装置和读取数据的装置。

本发明提供了一种编码器的数据读取方法,包括:上电时,

s1,fpga分析来自编码器的复位反馈信号;

s2,根据所述分析结果,在确定所述编码器复位之后,所述fpga向arm发送复位成功信号;

s3,所述arm接收到所述复位成功信号,则控制使能信号。

本发明的有益效果:通过上述的方法,设置复位成功信号,可以使arm在上电后等待fpga准备好编码器,再对编码器使能信号进行控制,避免了arm读取到错误的值。

进一步地,所述s1中的所述复位反馈信号为编码器输出数据线上的电平脉冲;所述s2中的复位成功信号为高电平有效。

进一步的,所述分析的过程包括:所述fpga对所述电平脉冲进行计数,计数变量设为cnt;在所述计数变量cnt未达到预设阈值n之前,所述fpga置所述复位成功信号为0;在所述计数变量cnt达到预设阈值n时,所述fpga置所述复位成功信号为1。

上述进一步的有益效果:通过对编码器输出数据线上的电平脉冲进行计数,可以判断出编码器的复位状态,进而使用复位成功信号将复位状态发送给arm。

进一步的,所述arm一直等待所述复位成功信号有效,等待时间若超过预定的第一等待时间,则发出异常警报。

上述进一步的有益效果:通过预设arm等待所述复位成功信号有效的时间,可使使用者知道编码器状态。

进一步的,所述arm接收到所述复位成功信号后,向所述fpga发送应答信号。

上述进一步的有益效果:通过应答信号,arm可以从fpga接管使能信号的控制权。

本发明还提供一种从编码器读取数据的装置,包括arm和fpga,以及存储程序,其特征在于:所述arm和所述fpga用于读取程序,可执行上述方法的步骤。

本发明还提供一种编码器的数据读取装置,包括:分析模块,用于控制fpga分析来自编码器的复位反馈信号;

发送模块,用于控制根据所述分析结果,在确定所述编码器复位之后,所述fpga向arm发送复位成功信号;

控制模块,用于控制所述arm在接收到所述复位成功信号后控制使能信号。

本发明的有益效果:通过上述的数据读取装置,设置复位成功信号,可以使arm在上电后等待fpga准备好编码器,再对编码器使能信号进行控制,避免了arm读取到错误的值。

进一步地,所述分析模块控制的所述fpga分析来自所述编码器的所述复位反馈信号为所述编码器的输出数据线上的电平脉冲;所述发送模块控制所述fpga向arm发送的所述复位成功信号为高电平有效。

进一步地,所述分析模块包括:计数模块,用于控制fpga对所述电平脉冲进行计数,计数变量设为cnt;信号置0模块,用于在所述计数变量cnt未达到预设阈值n之前,所述fpga置所述复位成功信号为0;信号置1模块,用于在所述计数变量cnt达到预设阈值n时,所述fpga置所述复位成功信号为1。

上述进一步的有益效果:通过对编码器输出数据线上的电平脉冲进行计数,可以判断出编码器的复位状态,进而使用复位成功信号将复位状态发送给arm。

进一步地,所述控制模块包括:报警模块,用于上电时,所述arm一直等待所述复位成功信号有效,等待时间超过预定的第一等待时间,发出异常警报;应答模块,用于在所述arm接收到所述复位成功信号后,向所述fpga发送应答信号。

上述进一步的有益效果:通过预设arm等待所述复位成功信号有效的时间,可使使用者知道编码器状态;通过应答信号,arm可以从fpga接管使能信号的控制权。

附图说明

图1为本发明实施例提供的一种编码器的数据读取方法流程图之一;

图2为本发明实施例提供的一种编码器的数据读取方法流程图之二;

图3为本发明实施例提供的一种典型的编码器发送和接收电路;

图4为本发明实施例提供的一种编码器的数据读取方法的控制装置示意图;

图5为本发明实施例提供的对编码器复位成功与否的判定的示意图;

图6为本发明实施例提供的一种编码器控制权转换的功能块图;

图7为本发明实施例提供的一种从编码器读取数据的装置的示意图;

图8为本发明实施例提供的一种编码器的数据读取装置示意图。

具体实施方式

以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透彻理解本发明。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。

实施例1

如图1所示,本发明实施例1提供的是一种编码器的数据读取方法,该方法包括:上电时,s1,fpga分析来自编码器的复位反馈信号;s2,根据所述分析结果,在确定所述编码器复位之后,所述fpga向arm发送复位成功信号;s3,所述arm接收到所述复位成功信号,则控制使能信号。

现有技术中,存在器件上电不同的问题。在系统上电过程中,arm、fpga、编码器由于器件特性不同,三者难以保证同一时刻上电。通常来说,arm与电机内编码器上电所需时间短,而带片外flash的fpga上电需要的时间最长。这将导致如下问题:当arm和编码器已经开始工作,并且arm对fpga端的编码器数据进行读取,此时fpga还未工作,arm将读取到错误的值。

本发明的实施例提供一种编码器的数据读取方法,通过上述的方法,设置复位成功信号,可以使arm在上电后等待fpga准备好编码器,再对编码器使能信号进行控制,避免了arm读取到错误的值。

实施例2

如图3所示,在实施例1的基础上,一个编码器的发送和接收电路。虚线左侧是编码器一段,虚线右侧是pcb板上的编码器发送和接收电路,485芯片充当了编码器和fpga之间通信的桥梁,它完成电平转换功能,将编码器的差分信号转换成fpga能够识别的数字信号以及将fpga的数字信号转换成编码器的差分信号。sdat线、srq线和de线连接至fpga的引脚。sdat线为485芯片的输出,发送编码器反馈信号,同时作为fpga的输入,接收复位反馈信号。srq线作为485芯片的输入,接收复位信号,fpga的输出线,发送复位信号。de线在485芯片发送使能信号时,由fpga置低,接收时置高。

如图4所示,fpga与编码器的通信是半双工方式。fpga先发送命令字到srq线上,再从sdat线上接收编码器的返回数据。对编码器的操作是通过fpga对编码器发送对应命令字来完成的。复位操作有复位命令字,读取位置值有读取位置命令字。通常,上电阶段需要对编码器复位,复位完成之后再读取实时位置值。命令字发送:在发送时钟的上升沿,fpga将命令字从低位到高位依次送到srq线上,完成串行发送。发送时钟通常为2.5m。编码器在接收到命令字以后,会根据命令字做出应答,在sdat线上返回数据。数据接收:在接收时钟的上升沿,fpga依次将sdat线上的串行数据读入,并将串行数据转换成多比特数据,完成串行接收。接收时钟与发送时钟通常为同一个时钟。

实施例3

在实施例1的基础上,本实施例中所述s1中的所述复位反馈信号为编码器输出数据线上的电平脉冲;所述s2中的复位成功信号为高电平有效。所述分析的过程包括:所述fpga对所述电平脉冲进行计数,计数变量设为cnt;在所述计数变量cnt未达到预设阈值n之前,所述fpga置所述复位成功信号为0;在所述计数变量cnt达到预设阈值n时,所述fpga置所述复位成功信号为1。

如图5所示,对编码器复位成功与否的判定。图中encoderok即为所述复位成功信号。fpga对编码器发送复位指令会对所有错误进行复位,例如编码器超速、溢出、电池报警等、每隔20us发送一次复位指令,连续发10次即可完成复位。由编码器的复位要求描述可以知道,编码器的复位过程其实就是给编码器发送复位命令,并且这个复位命令要持续一段时间,这个时间至少要大于200us。文中的cnt是对sdat线上的下降沿脉冲进行计数(编码器收到fpga发出的复位命令后,必定会有反馈,表现在sdat线上产生高低电平),它的值表示了复位时间的长短。优选的cnt取为n=500,通常来说,当cnt为500的时候复位时间大于200us,可以完成复位功能,当然n的取值也可以小于或大于500,在实际中只要能进行可靠复位即可。

实施例4

在实施例2的基础上,本实施例中,如图2所示,在fpga分析编码器复位成功和arm在预定时间内读取到复位成功信号为1的正常情况下,数据读取方法流程为步骤s11至s17;在fpga分析编码器复位失败和arm在预定时间内未读取到复位成功信号为1的异常情况下,数据读取方法流程为步骤s11至s13再接s18至s21。

其中,编码器控制权转换在fpga中由选择器实现,verilog代码如下:

生成的功能块图如图6所示,输入信号包括时钟信号clk、fpga端读取到的arm的应答信号ans、由arm控制的编码器控制字发送使能信号rq_start_arm以及由fpga控制的编码器控制字发送使能信号rq_start_fpga;输出信号包括编码器控制字发送使能信号rq_start和编码器控制字data_id。

实施例5

如图7所示,在实施例1的基础上,本实施例提供一种从编码器读取数据的装置,包括arm和fpga,以及存储程序,所述arm和所述fpga用于读取所述程序,执行本发明的各个实施例中的方法流程中的步骤。

fpga先发送命令字到srq线上,再从sdat线上接收编码器的返回数据。对编码器的操作是通过fpga对编码器发送对应命令字来完成的。复位操作有复位命令字,读取位置值有读取位置命令字。通常,上电阶段需要对编码器复位,复位完成之后再读取实时位置值。命令字发送:在发送时钟的上升沿,fpga将命令字从低位到高位依次送到srq线上,完成串行发送。发送时钟通常为2.5m。编码器在接收到命令字以后,会根据命令字做出应答,在sdat线上返回数据。数据接收:在接收时钟的上升沿,fpga依次将sdat线上的串行数据读入,并将串行数据转换成多比特数据,完成串行接收。接收时钟与发送时钟通常为同一个时钟。

实施例6

如图8所示,本实施例涉及一种编码器的数据读取装置,包括:分析模块,用于控制fpga分析来自编码器的复位反馈信号;发送模块,用于控制根据所述分析结果,在确定所述编码器复位之后,所述fpga向arm发送复位成功信号;控制模块,用于控制所述arm在接收到所述复位成功信号后控制使能信号。所述分析模块控制的所述fpga分析来自所述编码器的所述复位反馈信号为所述编码器的输出数据线上的电平脉冲;所述发送模块控制所述fpga向arm发送的所述复位成功信号为高电平有效。所述分析模块包括:计数模块,用于控制fpga对所述电平脉冲进行计数,计数变量设为cnt;信号置0模块,用于在所述计数变量cnt未达到预设阈值n之前,所述fpga置所述复位成功信号为0;信号置1模块,用于在所述计数变量cnt达到预设阈值n时,所述fpga置所述复位成功信号为1。所述控制模块包括:报警模块,用于上电时,所述arm一直等待所述复位成功信号有效,等待时间超过预定的第一等待时间,发出异常警报;应答模块,用于在所述arm接收到所述复位成功信号后,向所述fpga发送应答信号。

读者应理解,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1