基于死区PID的温度控制设计毕业设计论文Word格式文档下载.docx
《基于死区PID的温度控制设计毕业设计论文Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于死区PID的温度控制设计毕业设计论文Word格式文档下载.docx(25页珍藏版)》请在冰豆网上搜索。
![基于死区PID的温度控制设计毕业设计论文Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-1/27/7268ea63-9b3f-4596-ab23-a60b4ff43f68/7268ea63-9b3f-4596-ab23-a60b4ff43f681.gif)
通过温度或转速的设定值和反馈值,计算其偏差,并使用PID控制算法输出控制信号,整定PID参数,改进PID算法,使被控的温度达到设定值。
具体实训内容包括PCI-1711过程卡的接线和测试、数据采集程序设计、PID算法程序设计、控制输出程序设计、人机界面程序设计、PID参数整定、实训报告。
3)本次实训的要求:
完成一个温度单回路控制系统的设计和调试过程。
2PCI1711多功能过程通道卡
2.1功能特点与技术指标
2.1.1功能特点
PCI-1711U和PCI-1711UL属于功能强大的低成本多功能PCI总线卡,PCI-1711U带有2个模拟量输出,PCI-1711UL则不带此输出。
PCI-1711/1711L完全符合PCI规格Rev2.1标准,支持即插即用。
PCI-1711/1711L提供16路数字输入和16路数字输出,使客户可以最大灵活的根据自己的需要来应用。
PCI-1711/1711L有1个可编程计数器,可用于A/D转换时的定时触发。
计数器芯片为82C54兼容的芯片,它包含了三个16位的10MHz时钟的计数器。
其中有一个计数器作为事件计数器,用来对输入通道的事件进行计数。
另外两个计数器级联成1个32位定时器,用于A/D转换时的定时触发。
PCI-1711/1711L卡上提供了FIFO(先入先出)存储器,可储存1KA/D采样值。
用户可以起用或禁用FIFO缓冲器中断请求功能。
当启用FIFO中断请求功能时,用户可以进一步指定中断请求发生在1个采样产生时还是在FIFO半满时。
该特性提供了连续高速的数据传输及Windows下更可靠的性能。
PCI-1711/1711L有一个自动通道/增益扫描电路。
在采样时,这个电路可以自己完成对多路选通开关的控制。
用户可以根据每个通道不同的输入电压类型来进行相应的输入范围设定。
所选择的增益值将储存在SRAM中。
这种设计保证了为达到高性能数据采集所需的多通道和高速采样,同时可以灵活的输入类型和进行范围的设定。
2.1.2技术指标
1)模拟量输入
输入方式:
双极输入
模拟量输入范围(V):
±
10,5,2.5,1.25,0.625
通道:
16路单端
分辨率:
12位
采样速率:
100kS/s
2)模拟量输出
12位
3)数字输入/输出
数字输入通道:
16
数字输出通道:
3)其他
定时器/计数器的分辨率:
16位
最高输入频率:
10MHz
2.2应用方法和步骤
第一步:
关掉计算机,将您的板卡插入到计算机后面空闲的PCI插槽中(注意:
在您手持板卡之前触摸一下计算机的金属机箱壳以免手上的静电损坏板卡。
)
第二步:
检查板卡是否安装正确,可以通过右击“我的电脑”,点击“属性”,
弹出“系统属性”框;
选中“硬件”页面,点击“设备管理器”;
将弹出画面,按图提示进行安装。
第三步:
从开始菜单/程序/AdvantechDeviceDriverV2.1/Advantech
DeviceManager,打开AdvantechDeviceManager,如下图:
图1研华程序运行界面
第四步:
开始测试板卡。
在图1的界面中点击“Test”,弹出图2。
在图2中可以进行模拟量输入、输出,数字量输入、输出等功能的测试,来确定板卡是否能正常工作
图2板卡测试界面
3方案设计
3.1加热器的过程特性
加热器的工作原理是把一个具有较多匝数的初级线圈和一个具有较少匝数的次级线圈安装在同一个铁芯上。
输入与输出的电压比等于线圈匝数之比,同时能量保持不变。
因此,次级线圈在低电压的条件下产生大电流。
此次实训中,要求使用的加热器的温度范围为0~100℃,对应的输出电流为4mA~20mA,使用220V电源供电。
在加热器加热的过程中,利用PID算法对加热器进行温度控制,使其温度稳步地逼近设定值,并在允许的偏差范围内有较小的波动。
其在工作的时候是通过外在的控制器给予它一个模拟的信号,通过转换变为电压信号来驱动加热器工作,在此同时它也会向控制器反馈它此时的温度状态,与设定温度相比较,用以达到实时控制调节,修正偏差的目的。
图3加热器的基本组成结构
3.2加热器温度控制系统的实现方案
对于加热器温度控制系统,在硬件上我们采用的是研华生产的PCI1711U板卡、计算机和一个用于实训的加热器。
在软件上我们采用的c++Builder进行带死区的PID控制算法的编写,以此来对加热器进行的控制输出。
从而有机的把软硬件整合成为一个整体,构成一个比较简易的加热器温度控制系统。
3.3PCI1711和加热器接线图设计
PCI1711U是直接与加热器相连接的,模拟量的输入端接加热器的输出端,数字量的输出端接加热器的输入端,并且在加热器的输出和地之间还需要接一个500Ω的电阻。
实际中,我们是将两个300Ω的电阻并联再和一个300Ω电阻串接起来得到的近似值,将4mA~20mA的电流转换成2V~10V的电压。
其具体的实物接线图和模块图如图4所示:
图4实物接线图与模块图
3.4控制程序的方案设计和模块划分
整个控制程序分为数据采集模块、PID控制算法模块、数据输出模块。
数据采集模块通过PCI1711来进行数值的采集,数值采集后再经过处理送到PID控制算法模块,经过计算产生得结果通过数据输出模块转换后送到PCI1711的模拟量输出端,然后送入加热器,对其进行温度的控制。
控制程序组成框图如图5所示:
图5控制程序组成框图
控制程序的方案设计主要分为界面设计、数据采集处理程序的设计、实时控制程序设计。
界面设计包括趋势曲线,设定值,过程量,控制量的柱形图显示以及死区设定的显示等。
数据采集和处理和处理程序设计包括PCI1711数据采集程序、D/A输出程序、标度换算等相应的程序设计。
实时控制程序包括PID算法、输出等程序的设计。
1)在趋势曲线的显示时,我们分别用红、蓝、绿三种颜色的线条显示SP、PV和MV的相应实时值,其值来自PID的算法程序的输出。
2)在编辑栏中我们可以修改死区PID控制算法的相应的参数P、I、D及死区的值等。
当修改完成后,我们可以点击确认按钮,程序运行。
点击退出,PID算法程序结束。
4数据采集与输出程序设计
4.1PCI1711数据采集与温度换算程序
加热器的温度的变化范围是0~100℃,输出电流为4mA~20mA,经过电阻转换为2V~10V的电压。
其具体的数据采集和温度的换算程序如下:
floatadv=DAQAI1->
RealInput(0);
PV_temp[599]=100.0*(adv-2)/(10-2);
//电压到温度
PV=PV_temp[599];
Edit_PV->
Text=FloatToStrF(PV,2,1,1);
En=SP-PV;
if(fabs(En)<
fabs(PID_DB))En=0;
//死区控制
En2=En1;
En1=En;
DeltaUn=q0*En+q1*En1+q2*En2;
Un=Un+DeltaUn;
if(Un>
100)
Un=100;
if(Un<
0)
Un=0;
4.2数字滤波算法及程序设计
本次课程设计在编写程序时没有用到数字滤波算法,这部分忽略。
4.3控制量与D/A代码换算及输出程序
在带死区的PID温度控制系统程序中无需输出程序。
5控制算法程序设计
一般基本的PID控制算法根据偏差的比例(P),积分(I),微分(D)进行控制(简称PID控制),是控制系统中应用最广泛的一种控制规律。
实际运行的是经验和理论的分析都表明,这种控制规律对许多工业控制时,都能得到满意的结果,不过用计算机实现PID控制,不是简单的把模拟PID控制规律数字话,而是进一步与计算机的逻辑判断功能结合,使得PID控制规律数字话,而是进一步与计算机的逻辑判断功能结合,使得PID控制更加灵活,更能满足生产过程提出的要求。
带死区的PID控制算法:
在计算机控制系统中,某些系统为了避免控制过于频繁,以消除由于频繁动作引起的震荡,又是采用所谓带有死区的PID控制系统,
其系统框图如图6所示:
图6带死区的PID控制系统框图
其相应的算法如下:
死区ε是一个可调参数,其具体数值可根据实际控制对象有实验确定。
它的值太小使得调节过于频繁,达不到稳定被调节的对象的目的:
如果它的值取得太大这系统产生很大之后;
当他的值去成0的时候就相当于常规PID控制算法。
该系统实际是一个非线性控制系统。
即当偏差绝对值小于ε的时候,p(K)=0;
当偏差绝对值大于ε,p(K)=e(K),输出以PID运算结果输出。
5.1温度设定曲线的程序实现
在绘制温度曲线时候,需要将温度的设定曲线和实际输出的温度曲线结合起来才能够体现出程序的实时性,具体的程序如下:
Image1->
Picture->
LoadFromFile("
qushi.bmp"
);
Canvas->
Pen->
Width=1;
Color=clRed;
Canvas->
MoveTo(0,300);
for(inti=0;
i<
480;
i++)Image1->
LineTo(i,300-sptrend[i]);
Color=clBlue;
LineTo(i,300-pvtrend[i]);
Color=clGreen;
LineTo(i,300-mvtrend[i]);
//Edit1->
Text=FloatToStrF(SP,0,4,4);
Edit2->
Text=FloatToStrF(PV,0,4,4);
Edit3->
Text=FloatToStrF(Un,0,4,4);
5.2死区PID算法
与基本PID相比,死区PID需要设置死区的数值,通过判断偏差与死区的大小来决定程序的下一步运行。
具体程序如下:
En=SP-PV;
fabs(PID_DB))En=0//死区控制;
En2=En1;
5.3PID控制算法的程序设计
此次加热器温度的控制采用死区PID算法进行控制,其算法流程图如图7所示:
图7死区PID算法流程图
6控制程序的调试
6.1主要调试内容
程序编写完成以后,为了验证系统的稳定性、可靠性和快速性,需要对程序进行运行,要经过反复的操作和验证后的才能得到一个稳定可靠的系统。
在系统的调试中,我们调试的主要内容包括:
硬件调试、各个部分子程序的调试、PID参数的整定调试等。
6.2调试方法
1)硬件:
在进行硬件调试的时候,为考虑到硬件的多方面情况,我们可以让硬件在极限条件进行工作,即在极限条件下检验其性能是否稳定,其个方面的指标是否有较大的波动,以验证其性能的优劣。
2)程序:
在操作界面上对开发的系统进行各种各样的试探性操作,改变PID参数和死区范围,观察程序是否存在没有考虑到的漏洞,以对其进行修改和调试。
3)PID参数的整定:
在参数整定过程中PID参数的整定以及死区范围的设定非常重要,也是整个系统调试的核心内容。
其参数整定的方法是根据被控过程的特性来确定PID控制器的比例系数、积分时间和微分时间的大小以及死区的范围。
在此次实训中,主要应用PID控制器参数的工程整定方法,其中主要包括临界比例法、反应曲线法和衰减法。
但是不管事哪种参数整定的方法,都必须在实际的系统中进行相应的调试、修改和完善,才能够找到控制的最佳参数。
6.3调试步骤和方法
在进行PID参数的整定过程中,我们将以P=10、I=20、D=0.1,死区设置为2为一个参照的基本参数,来说明在整定的过程中P、I、D三个参数对控制器性能的影响。
在此过程中,每次的整定都只将改变其中的一个参数,其他的参数不变,这样才能保证我们能够清晰的从整定实时趋势曲线的输出直观的判断出各个参数在控制器中的实时位置,从而更加深刻的理解PID控制器。
7PID参数的整定
7.1整定方法
通过查看课本及相关资料,PID各参数的主要整定方法如下:
1)首先只整定比例部分。
将比例部分由小变大,并观察相应的系统相应曲线,直到得到反应快,超调量小的响应曲线。
如果系统没有静差或静差以小到允许范围内,并且响应曲线以属满意,那么只须用比例控制器即可。
2)如果在比例调节的基础上还存在较大的系统静差,则加入积分环节。
整定时首先置积分时间一较大值,并将比例系数略缩小一点,然后减小积分时间,使在保持系统良好动态性能的情况下,静差得以消除。
在此过程中,可以根据响应曲线的好坏不断调整比例系数和积分时间,以期待得到满意的控制过程和整定参数。
3)若使用比例积分控制消除了静差,但动态过程反复调整仍不满意,则可加入微分环节,构成比例积分微分控制器。
在整定微分时间时,可以先将微分时间置为零。
在第二步的基础上,增大微分时间,同时相应的改变比例系数和积分时间,逐步凑试,以获得满意的调试结果和控制参数。
在计算机控制系统中,为了避免某些系统动作过于频繁引起的震荡,引入死区。
死区是一个可调参数,其具体数值可以根据实际控制的对象确定。
7.2整定结果及分析
图8死区PID算法输出曲线
通过以上对单一参数的调节,死区PID算法输出曲线如图8所示。
从图中我们可以发现在PID控制器中:
比例控制能迅速反应误差,从而减小误差,但比例控制不能消除稳态误差,比例系数的增大会导致系统的不稳定;
积分控制的作用是,只要系统存在误差,积分控制作用就不断的积累,输出控制量以消除误差,因而只要有足够长的时间,积分控制将能完全消除误差,积分作用太强会使系统超调加大,甚至使系统出现震荡;
微分控制可以减小超调量,克服震荡,使系统的稳定性提高,同时加快系统的动态响应速度,减小调整时间,从而改善系统的动态性能。
而死区范围的设置,也避免了系统中频繁的操作,引起更大的震荡,使得整个系统趋于更加稳定的运行状态。
但在设置死区是应注意,如果死区太小,调节会过于频繁,无法使被控对象稳定;
死区过大,容易是系统产生较大的滞后;
死区为零时,为基本PID调节。
8技术小结
本次实训,我们运用C++Builder软件并基于PCI1711板卡设计了加热器的温度控制系统。
本温度控制运用死区PID算法,在进行了PID参数的整定后各项指标基本上能够满足实训的要求。
在数字PID控制器中采样周期越小,其控制效果就越接近于连续PID的控制效果。
在参数整定时,没有完全按照参数试凑法进行参数整定,而是根据以往的实验和各参数的功能进行的凑试。
因此在最后得到的参数和曲线并不是最优的PID控制。
通过对死区的设定,可以发现,合适的设置死区,可以避免系统过于频繁的动作,可以减小系统的振荡。
但死区过大或者过小将会严重影响系统的稳定性以及引起系统较大的振荡或者滞后。
通过本次实训,进一步了解了各参数在系统的动态过程中的作用:
当比例系数过大时会引起系统的不稳定;
当比例系数太小时,又会使系统动作过于迟缓。
积分控制可以消除稳态误差,提高系统控制的精度,但是当积分时间太大时,积分的作用过于微弱,以至于不能够完全的消除系统的稳态误差。
然而微分作用可以改善系统的动态性能,但是当微分时间偏大或是偏小,都会导致系统的超调增大,从而使得系统的调节时间比较长。
所以在PID参数整定的过程中一定要,严格的遵循参数整定的方法,以便达到高效率、高精度的控制,才能完成本次控制系统的设计。
参考文献
[1]于海生,等.微型计算机技术[M].北京:
清华大学出版社,1999.
[2]于海生,等.计算机控制技术[M].北京:
机械工业出版社,2007.
[3]张宽达.c++Builuder6编程实例精解[M].北京:
机械工业出版社,1998.
[4]王锦标.计算机控制系统[M].北京:
清华大学出版社,2004.
附录:
死区PID控制程序
#include<
vcl.h>
#pragmahdrstop
#include"
PID1.h"
//---------------------------------------------------------------------------
#pragmapackage(smart_init)
#pragmalink"
DAQAILib_OCX"
DAQAOLib_OCX"
#pragmaresource"
*.dfm"
TForm1*Form1;
floatSP_temp[600];
floatMV_temp[600];
floatPV_temp[600];
floatP=100.0,I=9999.9,D=0.0,T=1.0;
floatSP,PV,MV;
floatEn=0.0,En1=0.0,En2=0.0;
floatq0,q1,q2;
floatDeltaUn=0.0,Un=0.0;
floatPID_DB=0.0;
__fastcallTForm1:
:
TForm1(TComponent*Owner)
:
TForm(Owner)
{
}
void__fastcallTForm1:
FormCreate(TObject*Sender)
DAQAI1->
Hide();
DAQAO1->
OpenDevice();
FormClose(TObject*Sender,TCloseAction&
Action)
CloseDevice();
Application->
Terminate();
Button_ExitClick(TObject*Sender)
Timer1Timer(TObject*Sender)
//-------------反馈信号采集-----------
floatadv=DAQAI1->
PV_temp[599]=100.0/8*(adv-2);
//PV显示
//--------------算法开始--------------
fabs(PID_DB))//死区控制
En=0;
En1=En;
q0=(100.0/P)*(T/I+D/T+1);
q1=(-100.0/P)*(2*D/T+1);
q2=(100.0/P)*(D/T);
Un=Un+Delta