完整版PID单回路温度控制系统实训报告.docx
- 文档编号:4072182
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:21
- 大小:249.60KB
完整版PID单回路温度控制系统实训报告.docx
《完整版PID单回路温度控制系统实训报告.docx》由会员分享,可在线阅读,更多相关《完整版PID单回路温度控制系统实训报告.docx(21页珍藏版)》请在冰豆网上搜索。
完整版PID单回路温度控制系统实训报告
关于计算机控制系统综合实训报告
1.实习内容及其要求
1.1实训目的
掌握计算机控制系统的组成结构
掌握数字PID控制算法的应用
掌握数字PID参数的整定
掌握数字PID算法改进
掌握计算机控制系统的硬件连接、调试方法与步骤
1.2实训内容
计算机控制系统的一般形式
给定值r
基于AC6611的温度控制系统组成
Tt
AC
赭11
遍厦测重芟庄器阔虫囂
O
轧mv
通过温度的设定值和反馈值,计算其偏差,并使用基本PID、或不完全微分
PID或微分先行PID或死区PID或积分分离PID或积分限幅PID控制算法输出控制信号,整定PID参数,使被控的温度达到设定值。
具体实训内容包括AC6611
过程卡的接线和测试、数据采集程序设计、PID算法程序设计、控制输出程序设
计、人机界面程序设计、PID参数整定、实训报告。
1.3实训要求
完成一个基本PID或不完全微分PID或微分先行PID或死区PID或积分分离PID或积分限幅PID单回路温度控制系统的设计和调试过程。
通过实训,让学生了解计算机控制系统的基本组成,提出计算机控制系统的设计思路,初步学会计算机控制系统软硬件设计及调试的方法,具备技术实现能力;基本上能够处理实践过程中出现的问题并提出解决办法,进一步提高学生的计算机应用水平。
2.AC6611多功能过程通道卡
2.1功能特点及技术指标
AC6611是一款廉价通用A/D、D/A板,AD工作在查询方式,采用PCI总线支持即插即用、无需地址跳线。
AC6611具有16路单端模拟输入、32路开关量(16路输入及16路输出)、一路12位D/A。
AC6611采用大规模可编程门阵列设计。
AC6611性能参数
(1)模拟量输入(A/D)
•A/D转换器:
120KHZ,12位A/D,ADS7816,A/D内置采样保持器。
•工作方式:
软件查询。
•16路单端输入,输入阻抗:
1MQ
•最大输入耐压电压:
<+12V/—5.5V,瞬时输入耐压:
-25V-+30V
•连接器:
DB25PL式输入连接器。
•A/D最大通过率:
70KHZ,输入通道建立时间<8uS
•双极性输入范围:
错误!
未找到引用源。
5V,单极性输入范围:
5V、10V。
输入范围跳线器选择,对应输入幅度及精度如下:
输入
系统精度(FSR
跳字
0—10V
0.1%
错误!
未找到引用
源。
1LSB
0—5V
0.1%
错误!
未找到引
用源。
1.5LSB
-5V—+5V
0.1%
错误!
未找到引用
源。
1LSB
(2)模拟量输出(D/A)
•1路12位DA分辨率12位,精度:
0.2%,
•电压输出,最大输出电流:
5毫安。
•输出零点误差小于土10毫伏。
•输出范围:
10伏、土10伏,跳线器选择。
•输出建立时间小于:
50微秒。
•输出插座:
DB25孔)连接器。
(3)开关量输入/输出
•16路开关量输入(2个8位),16路开关量输出(2个8位)
•TTL电平(兼容3伏逻辑)
•开关量输出复位后为输出为低电平“0”
•输出高电压>2.5V,低电压<0.5V,最大输出电流:
8mA
•输入电流:
<0.1mA输入高电压门限:
〉2V,低电压:
〈0.8V
•输入耐压:
高电平最大耐压:
8伏,低电平:
-0.4伏。
•连接器:
40脚扁平电缆插座。
(4)其它
•符合PCIV2.1标准,供电:
+5伏、+12伏、-12伏。
•AC661占用64个I/O选通空间(自动分配)。
•工作温度:
0-70C,尺寸:
12(W)X9(H)(厘米)
2.2应用方法和步骤
以WindowsXP平台下安装AC6611驱动程序为例:
1关闭计算机的电源;
2将ac6611板卡插入PCI槽中;
3打开计算机电源,启动WindowsXP,WindowsXP将会显示找到新硬件;
4在“找到新硬件向导”对话窗中选择“从列表或指定位置安装”,下一步;
5选择驱动所在目录,进行安装();
6按找到新硬件向导的提示进行下一步;
7WindowsXP将显示完成添加/删除硬件向导,单击完成即可完成安装过程
安装完毕后将在设备管理器中出现一个其他设备(其他设备是问号,不表示设备有问题,只是表示系统不知道ac6611板卡是何种类型设备)
驱动安装后,ac6611.sys,ac6611.dll文件就自动被复制到系统中去了,可以
进行其他测试、开发工作了。
若无法正常安装,请换一台机器再尝试安装过程,若安装成功,说明安装不成功的机器系统有问题,考虑重装系统,在进行安装
AC6611驱动。
2.3接线
3.方案设计
3.1加热器的过程特性
指被控过程输入量发生变化时,过程输出量的变化规律。
加热器的过程特性是带滞后的一阶对象。
也就是它不能发生突变,温度不能在很短的时间升高达到一个比较大的值,只能通过PID的运算后慢慢的升至设定温度。
同时也不能达到瞬间降温的效果,加热器内没有安装专门的散热装置,只有通过自然冷却达到设定的温度值(这个值一般不能低于室内温度),这个过程比较缓慢,等待的时间会比较长。
在实验中就得注意,设定的温度最好从小到大以此进行设定,这样方
便操作也节约了时间。
3.2加热器温度控制系统的实现方案
硬件连接好后通过静态测试软件测试硬件与电脑能正常通信后,通过可视化程序软件对系统的设计。
利用AC6611板卡采集数据,通过总线送入PC,将设定值和采样值进行比较,经过程序设定的算法后输出一个偏差,得出控制量通过AC6611板卡送达加热器,如果偏差大,温度加热器将对装置的温度进行加热达到设定的温度值,如果偏差为0,说明设定的温度比采样温度低,加热器不会加热,而通过自然冷却的方式使加热器降温从而达到设定的温度值。
我们这组是采
用带死区的PID控制算法的方式来达到控制温度的目的的。
3.3AC6611和加热器接线图的设计
实验室用的加热器是通过温度传感器,转换成了标准的工业标准(4m/—
20mA。
参照AC6611板卡手册。
最大输入耐压电压:
<+12V/—5.5V;
瞬时输入耐压:
-25V-+30V,DB25孔式输入连接器;
输入:
双极性
输入范围:
错误!
未找到引用源。
5V,单极性
输入幅度:
5伏、10伏。
为此我们选择0—10V为益。
所以AC6611和加热器接线图要满足要求,可以做一个I/V变换在变送器的输出端串一个500欧的电阻,板卡采集的范围就在2—10V,这样在程序中做一个转换就能实现温度0度一100度的显示。
0.5k
3.4控制程序的方案设计和模块的划分
控制程序可以分为A/D、PID、D/A、以及人机交互部分。
四大部分A/D进行数据采集
A/D转换是将采集到的温度转换为电压信号,再将电压的模拟信号,转换成计算机可识别的数字信号,进行运算处理。
PID算法是通过温度的设定值和反馈值,计算其偏差,用PID对其进行开
度Un的控制。
其原理如图所示:
弋
*开始
采样输入SP
输出PV7
计算偏差En=SP-PV
D/A转换是将PID运算得出的数字信号,经过转换成电压信号输出,控制温度的加热。
人机交互是将A/D转换、D/A转换、PID控制实时曲线在计算机CB6软件的环境下,可以人为的修改和观察到各种参数和温度、实时曲线的变化。
4.数据采集及输出程序设计
4.1AC6611数据采集程序与温度换算程序
度换算程序的设计要考虑到我们采集的数据是2—10V,而实际的温度则是0—100度,要使设定值表示温度,必须做一个转换算法:
PV=100*(ADC-819.0)/(4095-819);//PV:
实际温度输入值
2V代表数字量819,10V代表数字量4095.
4.2控制量与D/A代码换算及输出程序
void__fastcallTForm1:
:
Timer1Timer(TObject*Sender)
{
unsignedlongADC;unsignedlongDA;
AC6611_AD(hDevice,5,&ADC);
PV=100*(ADC-819.0)/(4095-819);
if(PV<0)
{PV=0;};
En=SP-PV;
DeltaUn=q0*En+q1*En1+q2*En2;Un=Un1+DeltaUn;
if(Un>100.0)Un=100.0;if(Un<0)Un=0;
Un1=Un;
En2=En1;
En1=En;
DA=(unsignedshortint)(Un*2048.0/100.0);AC6611_DA(hDevice,DA);
5.控制算法的程序设计
5.1显示曲线的程序设计
for(inti=0;i<599;i++)
{
pvtrend[i]=pvtrend[i+1];pvtrend[599]=300*PV/(HS-LS);
sptrend[i]=sptrend[i+1];sptrend[599]=300*SP/(HS-LS);
mvtrend[i]=mvtrend[i+1];mvtrend[599]=300*Un/100.0;
}
Image2->Picture->LoadFromFile("123456.bmp");Image2->Canvas->Pen->Color=clGray;
Image2->Canvas->Pen->Width=1;Image2->Canvas->MoveTo(0,60);
Image2->Canvas->LineTo(1000,60);Image2->Canvas->MoveTo(0,120);
Image2->Canvas->LineTo(1000,120);
Image2->Canvas->MoveTo(0,180);
Image2->Canvas->LineTo(1000,180);
Image2->Canvas->MoveTo(0,240);
Image2->Canvas->LineTo(1000,240);
Image2->Canvas->MoveTo(100,0);
Image2->Canvas->LineTo(100,400);
Image2->Canvas->MoveTo(200,0);
Image2->Canvas->LineTo(200,400);
Image2->Canvas->MoveTo(300,0);
Image2->Canvas->LineTo(300,400);
Image2->Canvas->MoveTo(400,0);
Image2->Canvas->LineTo(400,400);
Image2->Canvas->MoveTo(500,0);
Image2->Canvas->LineTo(500,400);
Image1->Picture->LoadFromFile("bangtu.bmp");
Image1->Canvas->Pen->Color=clRed;
Image1->Canvas->Pen->Width=5;
Image1->Canvas->MoveTo(35,294);
Image1->Canvas->LineTo(35,294-SP*288/(HS-LS));
Image1->Canvas->Pen->Color=clBlue;
Image1->Canvas->MoveTo(55,294);
Image1->Canvas->LineTo(55,294-PV*288/(HS-LS));
Image1->Canvas->Pen->Color=clGreen;
Image1->Canvas->MoveTo(70,294);
Image1->Canvas->LineTo(70,294-Un*288/100.0);
//绘制趋势曲线
Image2->Canvas->Pen->Color=clRed;
Image2->Canvas->MoveTo(0,300);
for(inti=0;i<600;i++)Image2->Canvas->LineTo(i,300-sptrend[i]);
Image2->Canvas->Pen->Color=clBlue;Image2->Canvas->MoveTo(0,300);
for(inti=0;i<600;i++)
Image2->Canvas->LineTo(i,300-pvtrend[i]);
Image2->Canvas->Pen->Color=clGreen;Image2->Canvas->MoveTo(0,300);
for(inti=0;i<600;i++)
Image2->Canvas->LineTo(i,300-mvtrend[i]);
Edit13->Text=FloatToStrF(Un,5,4,4);Edit12->Text=FloatToStrF(PV,5,4,4);
5.2死区PID算法程序设计if(abs(En)>PID_DB){
DeltaUn=q0*En+q1*En1+q2*En2;Un=Un1+DeltaUn;
if(Un>100.0)Un=100.0;if(Un<0)Un=0;
Un1=Un;
En2=En1;
En1=En;}else{
Un=Un1;
}
5.3不完全微分PID算法程序设计
PV=100*(ADC-819.0)/(4095-819);
if(PWO){PV=0;};En=SP-PV;
DeltaUn=c1*DeltaUn1+c2*En+c3*En1+c4*En2;
AC6611DA(hDevice,DA);八t、'八、
u(k1)
(1)u(k)
c仁Tf/TS+Tf;
c2=-(100.0/P)*TS/(TS+Tf)*(1+TS/l+D/TS);
c3=(100.0/P)*TS/(TS+Tf)*(1+2*D/Tf);
c4=(100.0/P)*D/(TS+Tf);
5.3PID基本算法
Kle(k)KDe(k)2e(k1)e(k2)
q°e(k)q〔e(k1)q2e(k2)
DeltaUn=q0*En+q1*En1+q2*En2;
Un=Un1+DeltaUn;
if(Un>100.0)Un=100.0;
if(Un<0)Un=0;
Un1=Un;
En2=En1;
En1=En;
q0=(100.0/P)*(1+TS/I+D/TS);q1=-(100.0/P)*(1+2*D/TS);
q2=(100.0/P)*D/TS;
6.控制程序的调试
6.1主要调试的内容首先是要对测试通道数据的采集以及输出控制是否成功,如若没有成功,观察接线的通道和程序所写的通道是否对应。
如若成功则观察实时曲线和棒图是否能反映出当前的控制效果,观察给定一个设定值(SP是否在测量值(PV没有达到设定值时控制器Un能否给出反映。
如果有反映,观察控制效果有没有到达理想效果,如超调量太大,静差太大,或者是反映不够灵敏。
这时要对PID参数进行整定,整定过后对普通PID进行改进,可以使用带死区的PID控制或者是使用不完全微分进行控制,看效果是否能达到更好。
6.2通道的调试通道数据的采集以及输出控制的调试,在程序中加入代码:
hDLL=LoadLibrary("ac6611.dll");
if(hDLL!
=NULL)Label30->Caption="AC6611.dllloadok!
";hDevice=AC6611_CreateDevice(0,&ErrorOf6611);//创建驱动,选择第0块卡
if(hDevice!
=-1)
{Label31->Caption="AC6611CardIsExist!
";}
Else
{Label31->Caption="AC6611CardIsnotExist!
";}便可以检测通道是否和计算机成功连接。
6.3调试步骤
(1)对测试通道数据的采集以及输出控制,观察接线的通道和程序所写的
通道是否对应
(2)观察实时曲线和棒图是否能反映出当前的控制效果,观察给定一个设定值(SP是否在测量值(PV没有达到设定值时控制器Un能否给出反映。
(3)观察控制效果有没有到达理想效果,如超调量太大,静差太大,或者是反映不够灵敏。
这时要对PID参数进行整定,整定过后对普通PID进行改进,可以使用带死区的PID控制或者是使用不完全微分进行控制。
7.PID参数的整定
7.1PID各个参数的影响
(1)比例调节的特点:
1、调节作用快,系统一出现偏差,调节器立即将偏差放大100/Kp倍输出;2、系统中还存在着余差。
K越大,过渡过程越平稳,但余差越大;K减小,余差将减小,但是不能完全消除余差,只能起到粗调的作用,但是K过小,过渡过程易振荡,K太小时,就可能出现发散振荡,系统将失去平衡。
(2)积分调节的特点:
积分调节作用的输出变化与输入偏差的积分成正比,积分的作用是能消除余差,不过同事也降低了系统的稳定性,Ti由大变小时,积分作用由弱到强,消除余差的能力由弱到强,只有消除偏差后,积分作用的输出才停止变化。
(3)微分调节的特点:
微分调节的输出是与被调量的变化率成正比,在引
入微分作用后能全面提高控制质量,但是微分作用太强,会引起控制阀时而全开时而全关,这样的滞后现象就会很严重,系统的偏差会很大。
因此不能把TD取
的太大,当TD由小到大变化时,微分作用由弱到强,对容量滞后有明显的作用,但是对纯滞后没有效果。
7.2整定结果与分析带死区的PID整定结果如图
(1)不完全微分PID整定结果如图
(2)普通PID整定结果如果(3)
图
(1)
分析:
在计算机控制系统中,某些系统为了避免控制动作过于频繁,以消除由于
频繁动作所引起的震荡,有时采用所谓带有死区的pid控制系统。
当abs
(En)>PID_DB时,进行动作,否则不动作。
但是PID_DB不能太小,使得调节过于频繁,达不到稳定被调节对象的目的;也不太太大,否则系统将产生很大的滞后。
因此,在取PID_DB等于2,1,0.7,0.5这些值后,发现0.5的效果最后。
如图一所示系统超调不大,静差的精度也在0.8°C以内。
图
(2)
分析:
标准的PIID控制算式,对具有高频扰动的生产过程,微分作用响应过于灵敏,容易一起控制过程震荡,降低调节品质。
为了克服这一缺点,同时又要使微分作用有效,可以在PID控制输出串联一阶惯性环节,这就组成了不完全微分PID控制。
从图中看出不完全微分PID控制算式的输出在较长时间内仍有微分作用,可以获得较好的控制效果。
并且超调量不大,静差精度也在1C以内。
图(3)
分析:
标准PID算式,在没有整定好P、I、D参数之前,控制效果是不好的,通过对PID参数的整定后,再对其改进,改进效果才是最好的。
因此,经过整定,P=20,l=0.5,D=10.
8.技术小结
在本次的计算机控制系统综合实训中,内容是关于死区PID温度控制系统的设计。
刚开始,我遇到的难题就是关于CB的编程和运用,但是经过老师的讲解
和对程序的分析后,并且懂得将以前计算机控制技术课平时的4次实验的程序拿来借鉴,我大概掌握了CB—些简单组件的运用和编程。
对于PID控制,经过一学期的课程学习,我们知道PID控制是控制中应用最为广泛的一种控制规律。
实际运行的经验和理论的分析都表明,这种控制规律对
许多工业过程进行控制时,都能得到满意的效果。
因此,不管控制对象是什么,只要我们知道偏差就能通过PID运算输出对控制器进行作用。
在本次实训中我更加深刻的体会到了平时上课所学到的知识点。
在做出了简单的PID控制了以后,我们又对PID控制进行一些改进,例如,使用积分分离的PID控制、带死区的PID控制、不完全微分的PID控制。
这些控制效果都在PID控制的效果上,又有了许多让人满意的效果。
在硬件软件结合方面,巩固了我对CB的运用,进一步地了解了CB程序设计,对PID控制有了更深入的了解和认识,了解了AC6611的功能,板卡AC6611和温度加热器的连接方法,他们的接法一定要正确,不然显示的曲线就不符合要求。
对外部硬件(板卡)与PC的底层硬件连接,windows操作系统对这两部分的硬件通过硬件商提供的硬件驱动和动态链接库实现数据交换,实际是windows与板
卡的寄存器实现数据交换。
最后通过这两周的实习,增加了我的实践能力,我深刻的感受到了PID控制运用的优点。
为以后出去从事这方面的工作打下了坚实的基础,十分感谢学院安排这样的实习,感谢汪德彪老师、刘显荣老师、胡文金老师、汤毅老师、张元涛老师的细心指导,让我们在短短的两周掌握了丰富的PID控制技术。
参考文献:
(1)
于海生
.计算机控制技术.北京.
机械工业出版社,
2007.
(2)
陆卫忠
.C++Builder程序设计教程
.2版.北京.
科学出版社,2009
(3)
何钦铭
.C语言程序设计.北京高等教育出版社.2008.
附录:
控制程序清单
//
#include
#pragmahdrstop
#include"unit1.h"
//#pragmapackage(smart_init)
#pragmaresource"*.dfm"
floatSP=0.0,PV=0.0;
intpvtrend[600];
intsptrend[600];
intmvtrend[600];
intt1;
floatHS=100.0,LS=0.0,HL=75.0,LL=25.0,DH=2;
floatPID_DB=1,P=30,I=2,D=5,KD=5,B=3;
floatUn=0.0,DeltaUn=0.0,Un1=0.0,En=0.0,En1=0.0,En2=0.0;
floatq0,q1,q2,c1,c2,c3;
floatTS=1.0;
TForm1*Form1;
//
__fastcallTForm1:
:
TForm1(TComponent*Owner):
TForm(Owner)
{
}
//void__fastcallTForm1:
:
FormCreate(TObject*Sender)
{
q0=(100.0/P)*(1+TS/I+D/TS);q1=-(100.0/P)*(1+2*D/TS);
q2=(100.0/P)*D/TS;c1=(100.0/P)*(1+D/TS);
c2=-(100.0/P)*(1+2*D/TS);c3=(100.0/P)*D/TS;
//
hDLL=LoadLibrary("ac6611.dll");if(hDLL!
=NULL)Label30->Caption
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 PID 回路 温度 控制系统 报告