基于FPGA实现的永磁直流电机多分辨率控制器的制作方法

文档序号:13009707阅读:550来源:国知局
基于FPGA实现的永磁直流电机多分辨率控制器的制作方法与工艺

本发明属于控制技术领域。



背景技术:

永磁直流力矩电机是有刷直流电机的一种,励磁磁场为永磁体,它除了具有较宽的调速范围、线性度好、刚性的机械特性以及容易控制的特点外,还具有输出转矩大、体积小、响应速度快、结构简单等优点,是一种能够带动较大负载,并且在较低转速下能够安全运行的伺服电动机。因而其在机械加工、生活办公、军事装备等领域都有较为广泛的应用。作为大部分控制系统的执行机构,电机控制在整个控制系统中发挥着至关重要的作用。但是由于有刷直流电机在控制过程中存在噪声干扰的问题,尤其是在低速控制中,噪声干扰对于转速的影响特别大,随着现代控制领域中控制精度要求的提高,对于电机的转速控制精度要求也在不断提高,然而传统的pid由于其自身的局限性难以满足日益增长的控制需求,且基于传统单片机实现的传统控制系统无法处理计算量较大的控制算法,因此需要开发出一种能够有效提高控制精度,并且保证整个控制系统足够稳定,处理速度较快的控制器。

永磁直流力矩电机的主要控制目标为在保证上升时间的同时,能够实现转速的快速稳定跟踪,解决永磁直流电机低速区测量噪声以及电机本身带有的固定频率的齿槽转矩噪声对转速造成扰动的问题。本发明从频率方向出发,利用小波变换的多频率分析的优势,设计了多分辨率控制器,传统pid控制器的比例项、积分项和微分项可以认为是对误差信号的三个频段进行线性加权求取控制输出,而小波变换的正好可以根据控制需求自由选取对控制信号进行多少个频率段的分解与重构,这样可以对电机低速区控制中存在的噪声干扰实现很好的抑制作用。由于在小波变换对信号的多频率分解和单向重构过程存在较多的累乘加计算过程,计算量较大。



技术实现要素:

本发明的目的是利用fpga平台进行控制器开发,以满足电机转速的快速跟踪需求的基于fpga实现的永磁直流电机多分辨率控制器。

本发明步骤是:

①多分辨率控制器:

利用小波变换对转速误差信号进行各个频率段的分解与单向重构,在单向重构的过程中对各频段的信号进行加权求和,求出控制输出电压;

小波变换将原始信号分解成不同分辨率组成部分进行表示:

通过对各个分辨率上的信号进行加权后相加得到控制器的输出,具体式子如下:

②pid控制器对偏差信号进行线性分解后,再进行加权以得到控制器控制输出

增量式离散pid控制算法如下:

u(k)=u(k-1)+kp[e(k)-e(k-1)]+kie(k)+kd(e(k)-2e(k-1)+e(k-2))(4)

③信号获取:

为了保证控制器的实时性与准确性,降低多分辨率控制器设计中mallat算法的边界效应,采用以下方式进行信号获取:

⑴选择合适的数据缓存的长度n;

⑵初始数据缓存为0,在当前采样时刻,当前数据以流水线形式先入先出方式进入缓存;

⑶将缓存的数据进行镜像存储,最新数据靠近缓存中心,即设在k时刻的转速误差为e(k),经对称添加形成的数据缓存窗数据为e(k-n+1),…e(k-2),e(k-1),e(k),e(k-1),e(k-2),…e(k-n+1);

④信号的多频率分解与重构:

对一个连续的转速误差信号e(t)属于l2空间,在m尺度下产生下面的近似序列

即每个近似序列可以表示为同一个函数e(t)进行缩放和平移后的加权之和,其中φ(τ)被称为尺度函数,如果用第(m+1)层的近似值来重定义第m层的近似值,这样函数φ(2mt)应该是第(m+1)层基函数φ(2m+1t)的一个线性组合,也就是

如果v(m+1)代表由正交集φ(2m+1t-k)组成的函数空间,v(m)代表由正交集φ(2mt-p)组成的另一个函数空间,这样可知这样的空间具有递归嵌套关系,即这样w(m)就代表着由空间e(2mt)向空间e(2m+1t)转换中的增添的偏差信息组成的空间,这样的空间由另一个正交集ψ(2mt)来组成,得到如下的式子:

其中函数ψ(2mt)被称之为小波函数,它和尺度函数φ(2mt)之间可以通过如下关系进行关联:

h(k)和g(k)是组成小波变换中比较重要的镜像滤波器组,这样就通过下式的小波变换来刻画误差信号e(t)

其中中上划线代表小波函数和尺度函数的共轭函数,c和d分别为对原序列信号e(t)进行分解后的趋势系数和细节系数;

⑤结合式(5)(6)(7)(8)(9)可以得到离散小波变换的滤波器表达式:

其中是小波分解中滤波器组h(k)和g(k)的共轭函数,而滤波器组函数可以由小波分解中选择的小波函数和尺度函数求得:

这样对于信号e(t)通过小波变化将其转换到趋势系数c和细节系数d,也就是将信号e(t)分解到各个频率;

⑥当需要将各种信号合成原始信号,就需要利用到mallat重构算法,式(12)所示的mallat重构算法是上述分解算法的逆过程,

⑦将中间小波系数和尺度系数分别进行采样后与相应的重构滤波器进行单向重构,从而获得原信号的多分辨率信号,当分解层次为3时,就能得到关于原信号的近似信号eh,细节信号el和中间分辨率的信号e1和e2;将原始信号分解成不同分辨率组成部分进行表示:

信号经过其分解后的信息量包含全频率段的信息,结果是非冗余且无遗漏的;

⑧针对直流电机存在多频率噪声的问题也通过对各个分辨率上的信号进行加权后相加得到控制器的输出,具体式子如下:

称之为多分辨率pid控制算法,即mspid。

本发明当需要处理哪个频率的信号时,便相应的调整其对应的常数增益即可,在直流电机控制中往往存在高频噪声,这时将相应的常数增益尽可能的调整为0,除了这种基本形式外,对其加以扩展,得到其一般形式:

其中ki是需要对信号的各频率进行加权的常数增益,fi(·)是一个可以自行选择的函数,根据实际控制场景来选择合适的函数。

本发明公开了一种基于fpga实现的永磁直流电机多分辨率转速控制器设计,不仅可以很好地解决传统pid对直流有刷电机控制精度较低,无法对误差信号进行细节分析的问题,而且充分利用了fpga的并行计算能力,提高了控制器的实时性,克服了目前现有永磁直流电机电控系统的不足。

本发明设计了永磁直流电机的多分辨率控制器,针对传统pid只能对转速误差信号在高中低三个频段进行线性加权,而无法解决较高控制精度的问题,多分辨率控制器充分利用多分辨率分析中小波变换的优势,对转速误差信号进行了多频率分解与单向重构操作,成功解决了永磁直流电机转速快速跟踪的控制问题。

基于fpga实现的永磁直流电机多分辨率控制器,在保证控制精度的同时能够极大提高控制器的运算速度,进而提高整个控制系统的实时性,且相对于传统硬件平台单片机等实现的控制系统,基于fpga实现的控制器抗干扰能力更强,处理速度更快,且更容易产品化,完成专用永磁直流电机控制器设计。

附图说明

图1是基于fpga实现的多分辨率控制器控制结构框图;

图2是mallat分解算法图;

图3是mallat重构算法图;

图4是信号多分辨率分解图;

图5是信号的单向重构图;

图6是对称数据缓存结构图;

图7是含噪声情况下电机转速输出图;

图8是信号分解与重构过程中的并行计算图;

图9是modelsim仿真波形图;

图10是控制器的总体电路结构图;

图11是fpga资源利用报告视图;

图12是多分辨率电机转速输出图;

图13是普通pid电机转速输出图。

具体实施方式

本发明步骤是:

①多分辨率控制器:

利用小波变换可以对原始信号进行多频段的分解与重构这一特点,多分辨率控制器首先转速误差信号进行一定长度的数据缓存,利用小波变换对转速误差信号进行各个频率段的分解与单向重构,在单向重构的过程中对各频段的信号进行加权求和,求出控制输出电压;

小波变换将原始信号分解成不同分辨率组成部分进行表示:

信号经过其分解后的信息量包含全频率段的信息,结果是非冗余且无遗漏的。故可以根据分解的结果有针对性地对相关频带信息进行处理。

按照传统pid控制器三个参数kp,ki,kd分别是对偏差信号的不同频域信息进行加权的结构,于是在基于小波多分辨率分析的控制器设计中,通过对各个分辨率上的信号进行加权后相加得到控制器的输出,具体式子如下:

当需要处理哪个频率的信号时,便相应的调整其对应的常数增益即可,例如在实际控制中往往存在高频噪声,这时可以将相应的常数增益尽可能的调整为0。

由于多分辨率控制器的信号分解与重构过程存在大量的数据计算过程,特别是当控制精度需求较高时,需要将信号分解的更加详细,无疑增加了硬件处理器的计算负担,普通的单片机会出现处理速度不够的情况,难以保证电机转速快速跟踪的控制需求。本发明采用基于fpga实现的永磁直流电机多分辨率控制系统包括时钟模块、接口模块、控制器模块。

基于fpga的全硬件方案进行多分辨率控制器的实现,充分利用fpga的硬件特性,以较高时钟频率并行计算控制算法,从而增加系统的数据吞吐量,提升控制系统性能。基于fpga实现的多分辨率控制系统主要包括时钟模块、接口模块、控制器模块。

(1)时钟模块

时钟模块是为整个系统提供精准的时钟,利用fpga开发板上晶振提供的频率为125mhz的时钟,在xilinx系列的开发板上采用时钟锁相环(phase-lockedloop,pll)技术可以实现不同时钟频率的输入,以方便电路的调试,本发明为了节省芯片内部的锁相环资源,通过硬件语言verilog进行时钟的分频相移,以实现不同时钟频率的输入。

(2)接口模块

接口模块包括输入和输出接口,用于采集光电编码器的测量数据和输出控制永磁直流电机的pwm信号。输入接口主要用来测量以及求取永磁直流电机转速,通过测量固定周期t时间以内的编码器高低电平的数量可以求取当前电机转速,以及当前电机旋转方向,输出接口主要用来输出pwm驱动信号,由于电机控制当中的驱动需要采用pwm方波信号,所以需要将控制器求得的控制输出转化为pwm方波信号,通过fpga的io将其传送到驱动电路上。

(3)控制器模块

基于小波变换的多分辨率控制器在对转速误差信号进行分解与重构的过程中存在大量的并行乘法计算,对于以普通单片机为开发平台的控制系统而言,乘法操作会大大增加控制器的求解负担。本发明采用半自动模块化的fpga设计方法进行控制器的设计,充分利用fpga的并行计算能力对求解模块进行硬件加速,即简单的功能模块(例如输出输入接口模块)可以通过手工编写硬件语言的方法实现,复杂的算法模块(例如求解模块)借助xilinx公司推出的vivado开发工具中的高级综合工具hls自动生成硬件描述语言。求解模块的fpga硬件实现时,需要编写算法的c/c++代码,然后利用综合工具将算法的c/c++代码转成硬件语言描述代码,同时通过对算法的并行性分析和优化,可以充分利用fpga的流水线及并行计算能力。

在完成各个模块的单独设计并验证之后,将各个模块在顶层模块中进行集成综合,布局布线等完成整个控制系统的设计。这种模块化的控制系统有利于后期的更新维护,在不影响其他模块的情况下,便可以对某一个模块进行修改。最后将各个模块在顶层进行集成综合,以完成永磁直流电机多分辨率控制器的fpga实现。基于fpga实现的多分辨率控制器可以在满足控制精度需求的同时,充分提高算法的运算速度,提高了多分辨率控制器的实时性,为完成永磁直流电机转速跟踪提供了一种精度更高,速度更快的控制器。

基于fpga实现的永磁直流电机多分辨率转速跟踪控制系统的结构框图如图1所示,主要包括多分辨率控制器、光电编码器数据采集接口以及pwm驱动接口。fpga作为永磁直流电机控制单元的硬件实现平台,外接光电编码器数据采集和pwm驱动板;fpga控制单元首先通过光电编码器的数据传输端采集并利用硬件编程语言设计的光电编码器接口测算永磁直流电机转速n,多分辨率控制器根据永磁直流电机控制精度的需求对转速误差信号选择小波分解的层数,然后选择合适的重构增益对各个频率段的信号进行线性加权重构,求出输出信号,然后利用pwm接口输出pwm占空比方波信号,利用pwm驱动板控制永磁直流电机。

②pid控制器对偏差信号进行线性分解后,再进行加权以得到控制器控制输出

增量式离散pid控制算法如下:

u(k)=u(k-1)+kp[e(k)-e(k-1)]+kie(k)+kd(e(k)-2e(k-1)+e(k-2))(4)。

如果从频域角度分析传统pid控制算法的话,可以看出pid三个参数中比例系数kp就相当于对系统偏差信号e的整个频域部分进行加权,可以加快系统的响应速度,调节控制精度,积分系数ki相当于处理误差信号的低频部分,对低频信号进行加权,可以消除系统静差,然而由于在实际工业控制中噪声的存在,积分项在实际应用中往往会导致累积误差,对于误差信号的高频变化趋势信号利用微分项进行加权处理。可以看出传统pid是对于偏差信号的高、中、低三个频段通过分别调整常数增益再进行线性加权的方式来对系统进行控制的,本发明根据永磁直流电机的多频率噪声问题以及传统pid控制的局限性,提出了一种多分辨率pid控制器。

③信号获取:

为了保证控制器的实时性与准确性,降低多分辨率控制器设计中mallat算法的边界效应,采用以下方式进行信号获取:

⑴选择合适的数据缓存的长度n;

⑵初始数据缓存为0,在当前采样时刻,当前数据以流水线形式先入先出方式进入缓存;

⑶将缓存的数据进行镜像存储,最新数据靠近缓存中心,即设在k时刻的转速误差为e(k),经对称添加形成的数据缓存窗数据为e(k-n+1),…e(k-2),e(k-1),e(k),e(k-1),e(k-2),…e(k-n+1);具体误差信号缓存形式如图6所示。

④信号的多频率分解与重构:

对一个连续的转速误差信号e(t)属于l2空间(所有平方可积函数),在m尺度下产生下面的近似序列

即每个近似序列可以表示为同一个函数e(t)进行缩放和平移后的加权之和,其中φ(τ)被称为尺度函数,如果用第(m+1)层的近似值来重定义第m层的近似值,这样函数φ(2mt)应该是第(m+1)层基函数φ(2m+1t)的一个线性组合,也就是

如果v(m+1)代表由正交集φ(2m+1t-k)组成的函数空间,v(m)代表由正交集φ(2mt-p)组成的另一个函数空间,这样可知这样的空间具有递归嵌套关系,即这样w(m)就代表着由空间e(2mt)向空间e(2m+1t)转换中的增添的偏差信息组成的空间,这样的空间由另一个正交集ψ(2mt)来组成,得到如下的式子:

其中函数ψ(2mt)被称之为小波函数,它和尺度函数φ(2mt)之间可以通过如下关系进行关联:

h(k)和g(k)是组成小波变换中比较重要的镜像滤波器组,这样就通过下式的小波变换来刻画误差信号e(t)。

其中中上划线代表小波函数和尺度函数的共轭函数,c和d分别为对原序列信号e(t)进行分解后的趋势系数和细节系数。

⑤以上是对误差信号e(t)进行分解的过程,结合式(5)(6)(7)(8)(9)可以得到离散小波变换的滤波器表达式:

其中是小波分解中滤波器组h(k)和g(k)的共轭函数,而滤波器组函数可以由小波分解中选择的小波函数和尺度函数求得:

这样对于信号e(t)通过小波变化将其转换到趋势系数c和细节系数d,也就是将信号e(t)分解到各个频率。

⑥当需要将各种信号合成原始信号,就需要利用到mallat重构算法,式(12)所示的mallat重构算法是上述分解算法的逆过程,图2展示了小波分解过程,图3展示了mallat重构算法多级综合的过程。

⑦根据多分辨率分析思想,可以利用小波变换中的mallat算法将直流电机的转速偏差信号分解成不同分辨率的趋势信号和细节信号。具体来说,首先进行小波分析过程,对信号进行小波分析产生的是一序列的中间系数,这些系数代表着原始信号在所用的基函数下的比重,也就是小波系数和尺度系数。原始信号经过尺度滤波器和小波滤波器滤波后再经过向下二采样后就能得到第一层的近似系数和细节系数,继续往下分解,近似系数就可以作为第一层的原始信号,其通过尺度滤波器和小波滤波器的滤波即可得到第二层的近似系数和小波系数;根据选择的分解层数,上述的分解过程可以一直重复下去。

而求取控制输出量电压u的过程就类似小波mallat重构算法中的做法,但是不同的是求取控制输出量电压不是将原始信号进行完全重构,而是需要得到原始的各个频段的信号将中间小波系数和尺度系数分别进行采样后与相应的重构滤波器进行单向重构,从而获得原信号的多分辨率信号,当分解层次为3时,其分解综合的过程如图4所示,就能得到关于原信号的近似信号eh,细节信号el和中间分辨率的信号e1和e2;

通过上述分解,如图5所示,将原始信号分解成不同分辨率组成部分进行表示:

信号经过其分解后的信息量包含全频率段的信息,结果是非冗余且无遗漏的。故可以根据分解的结果有针对性地对相关频带信息进行处理。

⑧按照传统pid控制器三个参数kp,ki,kd分别是对偏差信号的不同频域信息进行加权的结构,于是在基于小波多分辨率分析的控制器设计中,针对直流电机存在多频率噪声的问题也通过对各个分辨率上的信号进行加权后相加得到控制器的输出,具体式子如下:

上述只是多分辨率控制算法的基本形式,可以看得出来和传统pid控制算法形式很类似,称之为多分辨率pid控制算法,即mspid。

本发明当需要处理哪个频率的信号时,便相应的调整其对应的常数增益即可,在直流电机控制中往往存在高频噪声,这时将相应的常数增益尽可能的调整为0,除了这种基本形式外,对其加以扩展,得到其一般形式:

其中ki是需要对信号的各频率进行加权的常数增益,类似pid控制中的三个参数。fi(·)是一个可以自行选择的函数,根据实际控制场景来选择合适的函数,如加入非线性部分、积分或者微分项等。

图1展示了永磁直流电机多分辨率控制器结构框图。将偏差信号e进行存储,将其缓存为一个序列信号,然后利用多分辨率分析对其进行分解与重构,在得到偏差信号的各个分辨率信号后,通过调整增益系数ki对各个频率段的信号进行处理以及现行加权,得到控制器输出u,对被控对象进行控制。

信号的长度和小波分解的层数

在多分辨率控制器的设计中,系统控制器输出是通过输入信号小波分解后进行加权得到的,也就是说输入的偏差信号的信息影响整个系统的控制效果。当信号的数据窗的长度很大时,待分解的信号所包含的信息就越丰富,这样经过分解后的各个分辨率的信号就越准确,但是如果数据窗的长度过长,在某种情况下,会导致控制器的输出有信息延迟现象,这样的话会影响到实时控制的效果,且数据越多,小波变换的计算量也会越大,即会增大控制器的计算负担。而分解层次的选择则会影响分解数据的精度,分解层次越多,就越能将输入的偏差信号序列精细化,有利于后期的滤波处理,但是过多的分解层次也会造成后期多分辨率控制器需要调节的参数增多。本发明采用以下不等式关系确定分解层次s:

其中n是缓存信号长度,f是小波滤波器长度。

控制系统的fpga实现

本发明采用基于fpga的硬件实现方案来进行小波控制器的设计,其中fpga选用的是xilinx的zybo开发板。控制器的fpga具体开发流程为:首先在matlab中进行控制算法的离线仿真验证,并对算法耗时计算过程进行分析。然后,将控制系统进行模块划分(包括时钟模块、接口模块、控制器模块),数据处理求解模块借助综合工具生成硬件描述语言,接口模块手动编写硬件描述语言代码。各个模块设计完成之后,分别进行modelsim功能仿真验证,如果控制器的功能不正确,则对硬件代码进行修改,直至功能正确。验证通过后,通过编写顶层文件将所有模块集成连接,然后进行编译综合、布局布线,最后在fpga中进行控制系统的板级验证。具体实施步骤如下:

(1)离线仿真验证

直流电机运转在低速区时,噪声对其速度控制有很大的干扰,故在仿真中跟踪给定的低转速1rad/s来验证控制器的抗噪能力。设置信号分解层次s=3和待分解的信号长度n=32来进行控制器的设计与验证。

为了验证多分辨率控制器相对于普通pid控制器的抗噪能力,在仿真过程中加入了白噪声信号,对比普通pid控制器和多分辨率控制器实验结果如图7所示。可以发现在加入白噪声信号后,普通的pid控制算法电机转速输出出现比较大的抖动,而多分辨率控制算法能够有效将噪声干扰滤出,实现比较平滑的转速跟踪过程。

1)时钟模块设计

时钟模块是为整个系统提供精准的时钟,fpga时钟频率为125mhz,通过时钟模块可以方便地变换时钟频率,以方便电路的调试。本发明采用手动编写分频器的形式变换时钟频率。

2)接口模块设计

在电机的闭环速度控制中,控制器需要得到电机的转速信号,此处可以用光电编码器获取电机转速,然后将控制器计算得到的占空比转为pwm信号作用在电机驱动上。故需要编写光电编码器测速程序和pwm产生程序。

①光电编码器测速程序

本次采用的光电编码器为长春华特公司生产的高性能增量式光电编码器e2065ad8系列,其脉冲数为65536,可以准确的测量电机在低转速运行状态下的转速值。可以在fpga代码中可以通过设置一个定时器和计数器来计算脉冲数求取电机转速,在verilog代码中,定时器和计数器非常容易实现,任意触发器电路都可以作为定时器或计数器,这也是其和普通单片机的区别。

②pwm生成程序

本次被控对象电机为稀土永磁直流力矩电动机,其具有快速响应,低转速,大力矩,特性线性度好,力矩波动小等特点,而且结构简单,紧凑,是一种高精度伺服系统功率元件。选用的电机驱动器型号是brt60a,其中的驱动是(带有mos管irlr7843)irs2184芯片,该驱动具有较好的抗干扰能力,输入3.3v和5v兼容,最大承受的电流是60a,且能输出正负脉冲的pwm,其能很好的满足电机的控制需求。

一般情况下电机驱动的pwm频率不宜过高或过低,频率太高,驱动器的开发损失较大,频率过低,电机会出现振动,且电磁噪声也比较明显,故此处采用10khz的pwm波对其进行驱动。pwm主要原理在于计数器和一个固定的数值duty作比较以输出0或1。为了得到频率为10khz的方波,需要在计数器大于12500(时钟周期为8ns)时置零,为了得到特定占空比的pwm,可以通过计算duty的值,此处的duty=12500*u,u为多分辨率控制器控制输出的占空比结果。

3)控制器模块设计

①定点数据设计

多分辨率控制器在matlab中验证通过后,基于算法的m语言描述编写相应的c/c++程序代码。由于浮点数据类型占用的硬件资源比较多,并且计算速度较慢,而定点数据类型使得每个数据都是位精准的,占用资源少,计算速度快,且易于传输和存储,因此,故本发明用定点数据模型代替浮点数据类型。在vivadohls中有关于整数和小数的定点模板,分别为ap_[u]int<w>和ap_[u]fixed<w,i,q,o,n>,模板中参数的具体意义如下:

[u]:意味着所设计的数据是否有符号,添加u则为无符号,如ap_uint<w>意味着无符号的整型定点数;

w:数据的总位宽;

i:在进行定点小数设计过程中设计,其代表整数位位宽;

对于q、o、n等参数的设置由于本发明并未涉及,故全部采用系统默认方式。

②通过算法分析,根据不同变量的变化范围,合理地设计其数据类型,通过精确的位宽控制可以在不影响精度的前提下减少资源的消耗,提高计算性能。根据离线仿真结果可以很方便的获得各个变量的取值范围,对于一些不容易获得范围的中间变量,可以把数据的位宽和整数位的位宽设置大点,防止中间变量计算溢出出错。本发明的控制算法中主要变量的具体定点数据类型设计如表1

表1主要变量的具体定点数据类型设计

③硬件代码生成

设计完定点模型控制器后将算法的c/c++程序代码转换成fpga硬件描述语言代码。本发明一方面采用fpga对控制器进行硬件提速,另一方面对控制算法进行电路结构优化。在硬件语言中,除法比乘法浪费资源和时间,且如果乘数是2的幂次,还可以用左移运算代替乘法以提速。循环是c/c++语言中一项关键属性,其是一种很典型的串行执行程序,故在vivadohls中对循环进行的展开操作,就是一种硬件加速过程。当循环体内部循环之间没有相互关系,就可以将循环完全展开,这是一种并行执行的思想;当循环体内部的循环相互有联系,就可以进行循环平坦化处理,这是一种流水线执行的思想。无论哪种情况,都能完成循环体的硬件加速。在本设计中,小波分解和小波重构函数中包含大量的循环,故在此可以设计循环的展开优化,当然循环的展开的代码最终生成的硬件描述语言代码会增加fpga的占用资源,这一点可以针对实际情况加以调整,如可以选择部分展开等。通过图8可以看出在转速误差信号分解与重构的过程中可以充分利用fpga的并行计算能力提高在线运算速度。在fpga内部,各变量的存储结构有多种,例如ram存储,寄存器存储。由于ram存储的变量不能同时读取,这样会降低系统的运行速度,故本发明将所有变量全部采用寄存器存储。

④功能验证

为了验证设计出来的控制器硬件描述语言代码的正确性,本文利用硬件描述语言专业仿真软件modelsim对生成的代码进行离线仿真验证,通过编写测试激励,再与控制器软件代码相同的输入下进行仿真,最终得到modelsim仿真的波形图如图9所示。

4)模块集成

在完成了控制器算法的硬件语言生成以及硬件接口的驱动程序后,就可以将所有的硬件代码放到xilinx官方的fpga开发工具vivado中进行综合布局布线,然后生成fpga的配置文件即完成控制器的设计。通过rtl综合视图可以发现控制器的总体电路结构如图10所示,其和设计的控制器相同,主要是由两个接口结构和一个控制算法结构组成。经综合后fpga的资源报告如图11所示,可以发现多分辨率控制算法所占的硬件资源在所选的zybo板卡下的表现。其中lut即为查找表资源,主要负责控制器的逻辑变换和存储等,这一部分资源占用26%;ff为触发器资源,主要负责算法中的时序,这一部分占用23%;lutram和bram为一些存储单元,主要负责算法中的数据存储,这一部分资源消耗较少,主要是因为算法里面的矩阵较少,数据也不多;而dsp资源则是负责算法中的乘法运算的快速实现,由于前面的优化,这一部分资源消耗较多,占用整个板卡的90%,一方面也是由于此板卡较为低端,dsp资源非常少,另一方面也在于算法中存在不少的乘法运算的缘故。综合看来,可以发现本次设计的多分辨率控制器的硬件消耗并未超过板卡限制,所选的fpga板卡满足其要求,而且控制器在fpga的硬件并行加速下,具有非常优异的性能。

永磁直流电机实物控制

为了验证本发明设计的基于fpga的多分辨率控制器,采用如图12所示的永磁直流电机及其外围硬件对控制器的控制效果进行验证。永磁直流电机控制系统硬件平台包括fpga开发板,光电编码器,永磁直流电机,pwm直流电机驱动板。为了对实验效果进行验证,针对该永磁直流电机设计了普通pid控制器进行对比。两组实验均跟踪转速为3rad/s,5rad/s和7rad/s。

实物实验结果如图13所示。通过和普通pid控制对比,可以发现,发明的基于fpga的多分辨率控制器可以更好的处理永磁直流电机低速区噪声扰动过大的问题,具有很好的控制效果,为永磁直流电机的低速区控制提供了一种新的解决思路。

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