首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» PID算法的FPGA实现
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
PID算法的FPGA实现
发短消息
加为好友
Bazinga
当前离线
UID
1023230
帖子
5213
精华
0
积分
2607
阅读权限
70
在线时间
158 小时
注册时间
2013-12-20
最后登录
2015-10-22
金牌会员
UID
1023230
1
#
打印
字体大小:
t
T
Bazinga
发表于 2014-10-29 19:48
|
只看该作者
PID算法的FPGA实现
软件编程
,
实际应用
,
性能力
,
控制器
,
单片机
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中的r(t)作为系统的给定值,y(t)作为系统的输出值,e(t)是给定值与输出值的偏差,所以系统的偏差可以求得:
e(t)=r(t)-y(t) (1)
u(t)作为控制系统中的中间便量,既是偏差e(t)通过PID控制算法处理后的输出量,又是被控对象的输入量,因此模拟PID控制器的控制规律为:
其中,KP为模拟控制器的比例增益,TI为模拟控制器的积分时间常数,TD为模拟控制器的微分时间常数。
2.2 离散PID算法
为了用微处理器实现PID算法,我们需要将模拟PID离散化,根据采样时刻的偏差来实现PID算法,因此式(3.2)中的微分和积分项两项内容作离散化处理。
假设T为采样周期,则积分项可作如下变换:
采样周期的时间非常短,故微分可以近似的表示为:
将式(3)和式(4)带入式(2)后,可得到离散PID算法为(限于篇幅,推导过程省略):
这个等式被叫做增量式PID控制算法。其中,乘积因子由PID控制参数KP、KI、KD确定:
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)。
将上述程序在Quartus II软件环境里完成编译后,其仿真结果如图3所示。
图2 增量式PID算法结构图
图3 误差模块仿真图
3.2 乘积和求和模块
通过误差计算模块求出e(k)、e(k-1)、e(k-2)后,由公式(5)知,要计算出控制量还必须将其分别与乘积因子做乘法运算,通过硬件描述语言来实现乘法运算的功能:
按照上述程序,在Quartus II完成编译后,其仿真结果如图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)的值。
按照上述程序,在Quartus II完成编译后,其仿真结果如图5所示。
图5 PID求和模块仿真波形图
3.3 温度检测及输出控制电路设计
本文用到的温度测量器件是K型热电偶,温度测量范围为0~1200℃。热电偶输出的是模拟电压信号,必须进行A/D转换,同时还需对热电偶进行冷端补偿和非线形校正。为了解决上面的问题,本文采用的是K型热电偶专用数字转换器MAX6675芯片,MAX6675芯片内部集成了热电偶放大器,内置高达12位的模数转换器。还包括了非线性矫正、冷端补偿、断线检测等功能模块。MAX6675的工作温度范围为-20~85℃,温度的测量范围为0~1024℃,温度分辨率可以达到0.25℃。假设D为A/D转换后得到的数字量对应的十进制数值,那么测量温度值T可以通过如下公式算出:
输出控制电路采用的是PWM(脉宽调制)方式,实现对电阻炉的温度控制。光耦芯片选用MOC3061,用于对强弱电路的隔离,双向导通可控硅选用的是BT137_600E。如果占空比越高,那么相对可控硅导通的时间也就越长,电阻炉加热温度也就越高,反之温度也就会慢慢散热降低,从而达到控制炉温的目的。
4.结语
本文分析了PID算法,给出了在FPGA内部硬件实现增量式PID控制的主要设计思路。在电阻炉为控制对象的温控系统中,系统工作稳定,在整个过程没有出现震荡和较大波动,并且温度控制精度在始终保持在5%以内;系统的抗干扰能力增强,对现场的各种噪声和干扰具有较好的抑制作用。
收藏
分享
评分
the king of nerds
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议