原创 (多图) PID算法的FPGA实现

2015-3-24 11:48 514 2 2 分类: FPGA/CPLD
1.引言 在许多现代化的工业生产如冶金、电力等,实现对温度的精度控制至关重要的,不仅直接影响着产品的质量,而且还关系到生产安全、能源节约等一系列重大经济指标。 PID控制由于其鲁棒性好,可靠性高,在常规的温度控制中应用非常广泛。目前工程的实际应用中,大多数模糊PID控制器都利用单片机软件编程来实现,然而单片机的指令是按顺序执行的,实时性不强,加上软件实现容易受外界的干扰,抗干扰性能力差,对于实时性要求很高和外界干扰比较严重的系统不太适宜。本文选取FPGA(现场可编程门阵列)作为系统的主控制芯片,FPGA所有的信号都是时钟驱动的,对于程序的执行具有并行运算的能力,显著的提高了系统控制的实时性,在FPGA内部硬件实现还可以防止像单片机程序一样,在恶劣的环境条件下发生程序跑飞的问题。尤其是现在FPGA器件有越来越多的参考设计方案以及IP(知识产权)核心库方面的支持。利用FPGA设计的PID控制器一方面可以将实现PID算法的模块单独作为控制模块来使用,直接去实现对控制对象的调节,另一方面,基于FPGA的PID控制算法也可以将其作为系统内的IP核,以便在多路或复杂的系统上直接调用,加快研发设计速度。 2.PID算法分析 2.1 离散PID算法 PID控制系统是一个简单的闭环系统,如图1所示,PID系统框图中,整个系统主要包括比较器、PID控制器和控制对象,其中PID包括三个环节,即比例、积分和微分。

图1 PID系统框图
图1 PID系统框图

图1中的r(t)作为系统的给定值,y(t)作为系统的输出值,e(t)是给定值与输出值的偏差,所以系统的偏差可以求得: e(t)=r(t)-y(t) (1) u(t)作为控制系统中的中间便量,既是偏差e(t)通过PID控制算法处理后的输出量,又是被控对象的输入量,因此模拟PID控制器的控制规律为:

pidbonfpga02.JPG

其中,KP为模拟控制器的比例增益,TI为模拟控制器的积分时间常数,TD为模拟控制器的微分时间常数。 2.2 离散PID算法 为了用微处理器实现PID算法,我们需要将模拟PID离散化,根据采样时刻的偏差来实现PID算法,因此式(3.2)中的微分和积分项两项内容作离散化处理。 假设T为采样周期,则积分项可作如下变换:

pidbonfpga03.JPG

采样周期的时间非常短,故微分可以近似的表示为:

pidbonfpga04.JPG

将式(3)和式(4)带入式(2)后,可得到离散PID算法为(限于篇幅,推导过程省略):

pidbonfpga05.JPG

这个等式被叫做增量式PID控制算法。其中,乘积因子由PID控制参数KP、KI、KD确定:

pidbonfpga06.JPG

3.PID算法的FPGA实现 由公式(5)知,增量式PID控制算法的具体实现步骤为:先通过误差计算模块求出偏差值e(k)、e(k-1)、e(k-2),再通过乘积模块求出三个信号分别与乘积因子的相乘,最后对乘积项求和得到最后的控制量。图2所示为增量式PID算法结构图。 3.1 误差计算模块 误差计算模块的目的是为了求出三次相邻的偏差采样值,即公式(3.8)中提到的e(k)、e(k-1)、e(k-2),输入的给定值r(t)与实际输出值y(t)相减得到误差值。Verilog HDL程序代码如下,其中,ek0、ek1、ek2、rt、yt分别对应偏差值e(k)、e(k-1)、e(k-2)、r(t)、y(t)。

pidbonfpga07.JPG

将上述程序在Quartus II软件环境里完成编译后,其仿真结果如图3所示。

图2 增量式PID算法结构图
图2 增量式PID算法结构图

图3 误差模块仿真图
图3 误差模块仿真图

3.2 乘积和求和模块 通过误差计算模块求出e(k)、e(k-1)、e(k-2)后,由公式(5)知,要计算出控制量还必须将其分别与乘积因子做乘法运算,通过硬件描述语言来实现乘法运算的功能:

pidbonfpga10.JPG

按照上述程序,在Quartus II完成编译后,其仿真结果如图4所示。

图4 乘法器仿真图
图4 乘法器仿真图

现在可计算出α0e(k)、α1e(k-1)、α2e(k-2)三个乘积项的计算结果,将上面三个乘积项求和就可以得出控制量△u(k)。程序代码如下所示,其中输入val0[15..0]、val1[15..0]、val2[15..0] 分别对应α0e(k)、α1e(k-1) 、α2e(k-2)乘积的结果,输出val[15..0]就是控制量△u(k)的值。

pidbonfpga12.JPG

按照上述程序,在Quartus II完成编译后,其仿真结果如图5所示。

图5 PID求和模块仿真波形图
图5 PID求和模块仿真波形图

3.3 温度检测及输出控制电路设计 本文用到的温度测量器件是K型热电偶,温度测量范围为0~1200℃。热电偶输出的是模拟电压信号,必须进行A/D转换,同时还需对热电偶进行冷端补偿和非线形校正。为了解决上面的问题,本文采用的是K型热电偶专用数字转换器MAX6675芯片,MAX6675芯片内部集成了热电偶放大器,内置高达12位的模数转换器。还包括了非线性矫正、冷端补偿、断线检测等功能模块。MAX6675的工作温度范围为-20~85℃,温度的测量范围为0~1024℃,温度分辨率可以达到0.25℃。假设D为A/D转换后得到的数字量对应的十进制数值,那么测量温度值T可以通过如下公式算出:

pidbonfpga14.JPG

输出控制电路采用的是PWM(脉宽调制)方式,实现对电阻炉的温度控制。光耦芯片选用MOC3061,用于对强弱电路的隔离,双向导通可控硅选用的是BT137_600E。如果占空比越高,那么相对可控硅导通的时间也就越长,电阻炉加热温度也就越高,反之温度也就会慢慢散热降低,从而达到控制炉温的目的。 4.结语 本文分析了PID算法,给出了在FPGA内部硬件实现增量式PID控制的主要设计思路。在电阻炉为控制对象的温控系统中,系统工作稳定,在整个过程没有出现震荡和较大波动,并且温度控制精度在始终保持在5%以内;系统的抗干扰能力增强,对现场的各种噪声和干扰具有较好的抑制作用。
广告

文章评论 0条评论)

登录后参与讨论
相关推荐阅读
王工一 2015-04-13 16:56
基于DSP的车载导航系统硬件电路设计与实现
数字信号微处理器DSP具有高速运行与数据处理的功能,以其高性能和低功耗的优势为实时导航系统的数学计算提供了有效的硬件平台。在现代武器装备中,设计了基于DSP芯片的车载导航系统,其在民用和军事领域均发挥...
王工一 2015-04-13 16:54
(多图) 采用MTK+DSP的双目视角非接触3D指纹识别系统
采用指纹信息作为身份识别手段的应用已经很广泛,但传统的指纹信息识别身份时存在容易被仿造的缺点。3D指纹信息不但可以进一步提高指纹识别率而且可以很好地克服该缺点。在此主要介绍利用双目视角技术采集3D指纹...
王工一 2015-04-13 16:54
(多图) 基于STM32的带触摸屏的无线解说器
本实例是以STM32F103系列单片机作为核心处理器,利用VS1003芯片进行音频解码的一种无线解说器。通过对触摸显示屏的操作,实现手持部分和终端部分二者的无线通讯。系统采用大容量的SD卡作为存储部分...
王工一 2015-04-01 09:36
以C语言理解I2C总线:边看源代码边读波形
I2C 只是用两条双向的线,一条 Serial Data Line (SDA) ,另一条Serial Clock (SCL)。 SCL:上升沿将数据输入到每个EEPROM器件中;下降沿驱动EEPR...
王工一 2015-03-31 17:34
用软件管理电源系统的硬件
假如您考虑到软件团队相对于其硬件伙伴所拥有的以下优势,那么就可以体会出:电源系统设计师和数字 ASIC/FPGA/微处理器电路板设计人员对于从事软件工程的同事略感 “羡慕” 或许是合乎情理的。 ● ...
王工一 2015-03-31 17:28
(多图) 基于单片机设计的便携防盗密码输入器
为解决开放式密码输入装置存在安全隐患的问题,提供一种密码输入方式与密码输入装置。使该装置即便在没有任何防护的情况下从根本上杜绝了密码被他人因窥视而被盗。 用户掌握开机密码才可开启PC机及进入用户工作...
广告
我要评论
0
2
广告