一种基于FPGA实现伺服转角叠加简谐运动的方法与流程

文档序号:13031403阅读:340来源:国知局
一种基于FPGA实现伺服转角叠加简谐运动的方法与流程

本发明涉及一种基于fpga实现伺服转角叠加简谐运动的方法,实现了较复杂的合成简谐波运动,属于软硬结合调试的领域,适用于开发减震器寿命试验台,实现路谱测试。



背景技术:

fpga内部有大量的逻辑块以及逻辑块之间的互连线可供配置,与传统数字电路系统相比具有可编程、可靠性高、集成度高、速度快的优点,其将原来电路板级的设计通过配置器件内部的逻辑功能和输入/输出端口放在芯片中进行,在提高了电路性能的同时降低了印刷电路板设计的工作量和难度,提高了设计的灵活性和效率。

现代机电一体化市场对产品的精度要求随着工业自动化的快速发展越来越高,随之对伺服系统的要求也越来越严格。伺服电机因其具有工作平稳,响应迅速,及过载能力等优点在自动化行业得到重视,其广泛应用于喷绘机、写真机、医疗仪器及设备及计算机外设及精密仪器、工业控制系统、办公自动化、机器人等领域。伺服电机把收到的电信号转换成电动机轴上的角位移或角速,度输出,通过控制脉冲时间的长短来控制转动角度,其主要特点是自转现象随着信号电压的消失而消失,而且转速与转矩成反比,即转速随着转矩的增加而表现为匀速下降。传统的基于单片机的伺服系统受mcu计算速度及内部结构的限制,在面对越来越高要求伺服控制系统时遇到困难,fpga为实现高要求的电机控制提供了新思路。简单简谐运动实现已有较为成熟简单的方案,但叠加简谐运动的实现较为复杂。

matlab可运用与大量数据的计算和数据处理,作为一款功能强大的数学软件,matlab如今已运用于设计、开发、计算、图形、数据等多个行业。



技术实现要素:

针对上述现有技术中的缺陷,本发明的技术解决的问题是:克服现有技术的不足,将fpga应用于复杂叠加简谐运动的产生,可将双动试验机简化为单动并实现相同功能,加强了系统的灵活性,可操作性,降低了成本。

为实现上述目的,本发明是根据以下技术方案实现的:

一种基于fpga实现伺服转角叠加简谐运动系统,其特征在于,包括:地址模块、时间计数模块、方向模块、波形叠加模块、rom模块、ram模块、串口模块,上位机通过microusb数据线传输时间差数据到所述rom模块,通过所述串口模块传输实际细分数、实际测试转角、两列波的频率到所述ram模块;所述地址模块取址所述rom模块,获取时间差数据;所述时间计数模块从所述ram模块中获取实际细分数、实际测试转角、将要叠加的两列波的频率;所述时间计数模块从所述ram模块获取实际细分数、实际测试转角、将要叠加的两列波的频率,从所述地址模块中获取时间差数据;所述波形叠加模块从所述时间计数模块中获取两列波的计数时间到达信号,从所述地址模块中获取两列波在所述rom中的地址信息,经逻辑判断后发送脉冲信号;所述方向模块从所述地址模块中获取两列波在所述rom中的地址信息,从所述波形叠加模块中获取两列波的状态信息,经逻辑判断后得到方向信息,并发送方向信号。

一种基于fpga实现伺服转角叠加简谐运动的方法,所述方法是通过上述基于fpga实现伺服转角叠加简谐运动系统实现的,包括如下步骤:

步骤s1:上位机将标准化正弦函数n等分分割处理后,通过microusb数据线传输获得的时间差数据到rom模块中,所述rom模块用于存储标准化正弦函数时间差数据;

步骤s2:上位机通过串口模块传输实际细分数、实际测试转角、将要叠加的两列波的频率到ram模块中,所述ram模块存储传输的实际细分数、实际测试转角、将要叠加的两列波的频率数据;

步骤s3:时间计数模块结合rom模块中的标准正弦函数的个数,ram模块中存储的实际细分数、实际测试转角、将要叠加的两列波的频率数据分别计算得到两列波在rom模块中对标准正弦函数的取址间隔。获取从地址模块中取得的经过处理的时间差数据,从零进行计数,计数间隔为8ns,分别得到两列波的计数达到信号,计数达到时,计数器归零;当从地址模块中获得的取址间隔达到标志位为1时,生成对应波形的预脉冲发送信号;

步骤s4:地址模块从时间计数模块中获取计数达到信号和两列波在rom模块中对标准正弦函数的取址间隔,分别判断两列波的取址间隔是否达到,如果达到,将取址间隔达到标志位置1,否则取址地址加一,当取址的地址到达rom模块中存储标准正弦函数的最大地址,则取址地址置零并继续以上判断。每次取址,获取rom中的时间差数据,并对获取的时间差数据进行处理,用于时间计数模块的计数;

步骤s5:波形叠加模块从时间计数模块获取对应波形的预脉冲发送信号,从地址模块获取两列波的地址,根据判断条件判断是否发送脉冲,如果发送脉冲信号,则将脉冲发送标志置为1,否则置为0;

步骤s6:当方向模块从波形叠加模块获得的脉冲发送标志为1,则从地址模块获取两列波的当前的取址地址,根据判断条件判断要发送的方向信号为0或1,并发送对应的方向信号。

上述技术方案中,在步骤s1中,rom数据的采集利用matlab完成,通过定间距采集时间数据和通过对定间距采集方向的数据进行求导,再通过数据整理、优化,使之能被fpga计数器匹配,同时设计并初始化rom用于存储数据。

上述技术方案中,在步骤s3中的取址间隔的获取方法为:对于任意的一个波

其中,计数时间δt,对于不同的最大幅值,发脉冲的时间间隔和波的幅值、移相没有关系,只取决于频率大小;

其中,若不考虑两列叠加波的实际细分数,输入波的时间差数据和标准正弦波的时间差数据有以下关系:

t=2πf1δt,

反算得输入波和标准波的时间差数据关系为:

在步骤s4中将获取的时间差数据进行处理是先得到δt,再将δt转化成8的倍数得到δt′,得到的δt′即为处理后的时间差数据;

若考虑输入波的细分数n,输入波和标准波的发脉冲的时间间隔为:

δt=δt1+δt2+…+δtmt为标准正弦波的时间差数据,c为标准正弦波细分数,n为大于等于1的整数,f1为输入的任意波形的频率,δt为输入波的时间差数据,m为取址间隔。

上述技术方案中,在步骤s5中判断是否发送脉冲的方法为,所述叠加波为任意频率幅值的两列波叠加:

发送脉冲以低频波为基准,低频波每个步进发送一个脉冲,如果此区间内高频波与低频波为同向且有脉冲发生,则增发一个脉冲,如果高频波与低频波为反向且有脉冲发生,则两列波的脉冲抵消都不发送。

上述技术方案中,在步骤s6中,判断两列波方向信号为0或1的方法为:首先定义在高频波时间字上,对应的低频波的导数为上一次的低频波时间字上的导数,反之,在低频波时间字上时,对应的高频波的导数为上一次的高频波时间字上的导数,其中导数和y=cost正负相同且存在关系

每个标准正弦函数的δt对应一个实际波的δt,则在δt到达时,只需查看δt对应的波形导数正负,导数为正则方向信号为1,导数为负则方向信号为0,而按照顺序提取的δt唯一对应地址线,转化为根据地址来进行判断,即若标准正弦细分数为c,则在范围内的时间差数据对应的地址代表导数为正,范围内的时间差数据对应的地址代表导数为负。

上述技术方案中,在步骤s6中,所述方向信号的发送是通过下述方法实现的:

(1)根据发送脉冲的方式,低频波每个步进发送一个脉冲,如果高频波与低频波为反向且有脉冲发生,则两列波的脉冲抵消都不发送,那么,在这个区间的方向数据延续上一次发脉冲时的方向不变;

(2)以低频波为基准,低频波每个步进发送一个脉冲,如果此区间内高频波与低频波为同向且有脉冲发生,依据两列波的方向发送正的方向数据或负的方向数据。

本发明与现有技术相比,具有如下有益效果:

(1)本发明将标准简谐波的数据提前存储于rom中,取用方便,响应快速;

(2)本发明将fpga应用于控制伺服电机的运转,通过计数器来定时发送脉冲信号和方向信号,精度更高,开发更灵活;

(3)本发明采用双简谐波片上合成方法,能在片上合成任意频率幅值的两列简谐波。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。

图1为fpga实现伺服转角简谐运动的方法原理图;

图2为fpga实现伺服转角简谐运动的方法系统模块图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。

伺服电机简谐运动的关键在于确定脉冲发射时间,计算时间数据通过软件matlab来实现,确定标准正弦波的细分数为20000,运用扫描的原理,从t=0开始,按精度要求t每次取10-6逐次扫描到每个细分处,再通过数据整理、优化,使之能被fpga计数器匹配,同时设计并初始化rom用于存储数据。图1为fpga实现伺服转角简谐运动的方法原理图,其中fpga的pmod中的3.3v与伺服电机驱动器的pulse1和sign1相连,为伺服电机提供3.3v电源;fpga的pmod中的gnd与伺服电机驱动器gnd相连;fpga的pmod中的一个端口输出脉冲信号pulse与伺服电机驱动器pulse2相连,为伺服电机提供脉冲信号;fpga的pmod中的一个端口输出方向信号dir与伺服电机驱动器sign2相连,为伺服电机提供方向信号;图2为fpga实现伺服转角简谐运动的方法系统模块图。如图1-2所示,本发明的一种基于fpga实现伺服转角叠加简谐运动系统,包括:地址模块、时间计数模块、方向模块、波形叠加模块、rom模块、ram模块、串口模块,上位机通过microusb数据线传输时间差数据到所述rom模块,通过所述串口模块传输实际细分数、实际测试转角、两列波的频率到所述ram模块;所述地址模块取址所述rom模块,获取时间差数据;所述时间计数模块从所述ram模块中获取实际细分数、实际测试转角、将要叠加的两列波的频率;所述时间计数模块从所述ram模块获取实际细分数、实际测试转角、将要叠加的两列波的频率,从所述地址模块中获取时间差数据;所述波形叠加模块从所述时间计数模块中获取两列波的计数时间到达信号,从所述地址模块中获取两列波在所述rom中的地址信息,经逻辑判断后发送脉冲信号;所述方向模块从所述地址模块中获取两列波在所述rom中的地址信息,从所述波形叠加模块中获取两列波的状态信息,经逻辑判断后得到方向信息,并发送方向信号。

本发明的一种基于fpga实现伺服转角叠加简谐运动的方法,所述方法是通过上述基于fpga实现伺服转角叠加简谐运动系统实现的,包括如下步骤:

步骤s1:上位机将标准化正弦函数n等分分割处理后,通过microusb数据线传输获得的时间差数据到rom模块中,所述rom模块用于存储标准化正弦函数时间差数据;

步骤s2:上位机通过串口模块传输实际细分数、实际测试转角、将要叠加的两列波的频率到ram模块中,所述ram模块存储传输的实际细分数、实际测试转角、将要叠加的两列波的频率数据;

步骤s3:时间计数模块结合rom模块中的标准正弦函数的个数,ram模块中存储的实际细分数、实际测试转角、将要叠加的两列波的频率数据分别计算得到两列波在rom模块中对标准正弦函数的取址间隔。获取从地址模块中取得的经过处理的时间差数据,从零进行计数,计数间隔为8ns,分别得到两列波的计数达到信号,计数达到时,计数器归零;当从地址模块中获得的取址间隔达到标志位为1时,生成对应波形的预脉冲发送信号;

步骤s4:地址模块从时间计数模块中获取计数达到信号和两列波在rom模块中对标准正弦函数的取址间隔,分别判断两列波的取址间隔是否达到,如果达到,将取址间隔达到标志位置1,否则取址地址加一,当取址的地址到达rom模块中存储标准正弦函数的最大地址,则取址地址置零并继续以上判断。每次取址,获取rom中的时间差数据,并对获取的时间差数据进行处理,用于时间计数模块的计数;

步骤s5:波形叠加模块从时间计数模块获取对应波形的预脉冲发送信号,从地址模块获取两列波的地址,根据判断条件判断是否发送脉冲,如果发送脉冲信号,则将脉冲发送标志置为1,否则置为0;

步骤s6:当方向模块从波形叠加模块获得的脉冲发送标志为1,则从地址模块获取两列波的当前的取址地址,根据判断条件判断要发送的方向信号为0或1,并发送对应的方向信号。

在步骤s1中,rom数据的采集利用matlab完成,通过定间距采集时间数据和通过对定间距采集方向的数据进行求导,再通过数据整理、优化,使之能被fpga计数器匹配,同时设计并初始化rom用于存储数据。

在步骤s3中,由于到末尾后需重新返回开始,使电机周期性运动,故需要判断地址是否到达末尾,如若到达,地址回到开头,并清零计数器以达到重复周期运动的目的。

在步骤s3中的取址间隔的获取方法为:对于任意的一个波

其中,计数时间δt,对于不同的最大幅值,发脉冲的时间间隔和波的幅值、移相没有关系,只取决于频率大小;

其中,若不考虑两列叠加波的实际细分数,输入波的时间差数据和标准正弦波的时间差数据有以下关系:

t=2πf1δt,

反算得输入波和标准波的时间差数据关系为:

在步骤s4中将获取的时间差数据进行处理是先得到δt,再将δt转化成8的倍数得到δt′,得到的δt′即为处理后的时间差数据;

若考虑输入波的细分数n,输入波和标准波的发脉冲的时间间隔为:

δt=δt1+δt2+…+δtmt为标准正弦波的时间差数据,c为标准正弦波细分数,n为大于等于1的整数,f1为输入的任意波形的频率,δt为输入波的时间差数据,m为取址间隔。

上述技术方案中,在步骤s5中判断是否发送脉冲的方法为,所述叠加波为任意频率幅值的两列波叠加:

发送脉冲以低频波为基准,低频波每个步进发送一个脉冲,如果此区间内高频波与低频波为同向且有脉冲发生,则增发一个脉冲,如果高频波与低频波为反向且有脉冲发生,则两列波的脉冲抵消都不发送。

在步骤s6中,判断两列波方向信号为0或1的方法为:首先定义在高频波时间字上,对应的低频波的导数为上一次的低频波时间字上的导数,反之,在低频波时间字上时,对应的高频波的导数为上一次的高频波时间字上的导数,其中导数和y=cost正负相同且存在关系

每个标准正弦函数的δt对应一个实际波的δt,则在δt到达时,只需查看δt对应的波形导数正负,导数为正则方向信号为1,导数为负则方向信号为0,而按照顺序提取的δt唯一对应地址线,转化为根据地址来进行判断,即若标准正弦细分数为c,则在范围内的时间差数据对应的地址代表导数为正,范围内的时间差数据对应的地址代表导数为负。

在步骤s6中,所述方向信号的发送是通过下述方法实现的:

(1)根据发送脉冲的方式,低频波每个步进发送一个脉冲,如果高频波与低频波为反向且有脉冲发生,则两列波的脉冲抵消都不发送,那么,在这个区间的方向数据延续上一次发脉冲时的方向不变;

(2)以低频波为基准,低频波每个步进发送一个脉冲,如果此区间内高频波与低频波为同向且有脉冲发生,依据两列波的方向发送正的方向数据或负的方向数据。

伺服电机使用脉冲序列+符号的控制方式,且正向为1,反向为0,故选择指令脉冲极性为0,指令脉冲输入为3模式的控制方式,此种控制方式下需输入脉冲、方向、3.3v和接地端。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

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