积分分离PID温度控制系统Word文件下载.docx
- 文档编号:19298230
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:18
- 大小:87.63KB
积分分离PID温度控制系统Word文件下载.docx
《积分分离PID温度控制系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《积分分离PID温度控制系统Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。
6控制程序的调试…………………………………………………………………12
6.1主要调试内容………………………………………………………………13
6.2调试方法……………………………………………………………………13
7PID参数的整定………………………………………………………………157.1整定方法……………………………………………………………………15
7.2整定结果及分析……………………………………………………………16
8技术小结…………………………………………………………………………16
参考文献…………………………………………………………………………17
附录:
控制程序清单……………………………………………………………18
1实习内容及要求
1.1实习内容
通过温度的设定值和反馈值,计算其偏差,并使用基本PID、或不完全微分PID或微分先行PID或死区PID或积分分离PID或积分限幅PID控制算法输出控制信号,整定PID参数,使被控的温度达到设定值。
具体实训内容包括AC6611过程卡的接线和测试、数据采集程序设计、PID算法程序设计、控制输出程序设计、人机界面程序设计、PID参数整定、实训报告。
1.2实习要求
完成一个基本PID或不完全微分PID或微分先行PID或死区PID或积分分离PID或积分限幅PID单回路温度控制系统的设计和调试过程。
2AC6611多功能过程通道卡
2.1功能特点及技术指标
AC6611是一款廉价通用A/D、D/A板,AD工作在查询方式,采用PCI总线支持即插即用、无需地址跳线。
AC6611具有16路单端模拟输入、32路开关量(16路输入及16路输出)、一路12位D/A。
AC6611采用大规模可编程门阵列设计。
A/D转换指标:
120KHZ12位A/DADS7816;
保持器:
A/D芯片内置采样保持器;
工作方式:
软件查询;
通道数:
16路单端输入;
输入阻抗:
1MΩ,
最大输入耐压电压:
<
+12V/-5.5V;
瞬时输入耐压-25V-+30V;
双极性输入范围:
5V;
单极性输入幅度:
5伏、10伏;
连接器:
DB25(孔式)。
D/A转换指标:
5
路分辨率:
12位
精度:
0.2%
最大输出电流:
5毫安。
输出零点误差:
±
10mV。
输出范围:
10伏、±
10伏,使用跳线器进行选择。
输出建立时间小于:
50微秒;
DB25(孔)。
开关量输入输出指标:
输入通道数:
16路(2个8位);
输出通道数:
电平:
TTL电平(兼容3伏逻辑);
40脚扁平电缆插座;
开关量输出复位后输出:
低电平“0”。
输出高电压>
2.5V,低电压<
0.5V;
最大输出电流:
8mA;
输入电流:
0.1mA;
输入高电压门限:
>
2V,低电压:
0.8V。
输入耐压:
高电平:
8V,低电平:
-0.4V。
2.2应用方法及步骤
以Windows2000/XP的安装为例:
1.关闭计算机的电源;
2.将AC6611板卡插入PCI槽中;
3.打开计算机电源,启动Windows2000/XP;
4.Windows2000/XP将会显示找到新硬件,可按找到新硬件向导进行下一步;
5.选择搜索适用与我的设备的驱动程序(推荐),下一步;
6.选择驱动所在目录,进行安装(\ac6611\driver\);
7.按找到新硬件向导的提示进行下一步;
8.Windows2000/Xp将显示完成添加/删除硬件向导,单击完成即可完成安装过程。
3方案设计
3.1加热器的过程特性
指被控过程输入量发生变化时,过程输出量的变化规律。
加热器的过程特性是带滞后的一介对象。
也就是它不能发生突变,温度不能再很短的时间升高一个比较大的值,也不能达到瞬间降温。
3.2加热器温度控制系统的实现方案
硬件连接好并测试硬件与电脑能正常的通信后,通过可视化程序设计。
利用AC6611板卡采集数据,通过总线送入PC,经过程序算法,得出控制量通过AC6611板卡送达加热器,从而达到控制的目的。
我们这组是采用积分分离的方式来控制温度。
3.3AC6611和加热器接线图的设计
实验室用的加热器是通过温度传感器,转换成了标准的工业标准(4MA—20MA)。
参照AC6611板卡手册。
最大输入耐压电压:
瞬时输入耐压:
-25V-+30V,DB25孔式输入连接器;
输入:
双极性
输入范围:
5V,单极性
输入幅度:
5伏、10伏。
为此我们选择0—10V为益。
所以AC6611和加热器接线图要满足要求,可以做一个I/V变换在变送器的输出端串一个500欧的电阻,板卡采集的范围就在2—10V,这样在程序中做一个转换就能实现温度0度—100度的显示。
3.4控制程序的方案设计和模块的划分
控制程序可以分为A/D、PID、D/A、以及人机交互部分。
四大部分A/D进行数据采集
基本PID算法得出控制量,D/A输出加热器能接受的控制信号。
人机交互则是可以设置一个合理的温度,人能直接看到控制的结果。
4数据采集及输出程序设计
4.1AC6611数据采集程序与温度换算程序
温度换算程序的设计要考虑到我们采集的数据是2—10V,而实际的温度则是0—100度,如果要达到可视化的目的,必须做一个转换算法:
PV=10*atod(/4095.0;
//atod(采集的数据)
PV=(PV-2)*100/8;
//PV(实际值)
4.2控制量与D/A代码换算及输出程序
控制量与D/A转换代码如下:
void__fastcallTForm1:
:
Timer1Timer(TObject*Sender)
{
unsignedlongatod,dtoa;
AC6611_AD(hDevice,5,&
atod);
inti=0;
if(fabs(SP-PV)<
k)
ks=1;
if(fabs(SP-PV)>
=k)
ks=0;
PV=10*atod/4095.0;
PV=(PV-2)*100/8;
E=R-PV;
DU=q0*E+ks*q1*E1+q2*E2;
U=U1+DU;
if(U<
=0)U=0;
if(U>
=100)U=100;
E2=E1;
E1=E;
U1=U;
·
}
5控制算法的程序设计
5.1显示曲线的程序设计
//绘制趋势曲线
Image2->
Picture->
LoadFromFile("
bangtu.bmp"
);
Image2->
Canvas->
Pen->
Color=clRed;
Width=5;
MoveTo(35,294);
LineTo(35,294-SP*288/(HS-LS));
Color=clBlue;
MoveTo(55,294);
LineTo(55,294-PV*288/(HS-LS));
Color=clGreen;
MoveTo(70,294);
LineTo(70,294-Un*288/100.0);
Edit4->
Text=SP;
Edit5->
Text=PV;
Edit6->
Text=Un;
Image3->
LineTo(35,294-P*288/1000.0);
LineTo(55,294-I*288/1000.0);
LineTo(70,294-D*288/1000.0);
for(i=0;
i<
479;
i++)
trend1[i]=trend1[i+1];
trend2[i]=trend2[i+1];
trend3[i]=trend3[i+1];
trend1[479]=(int)(adcf*300/100.0);
trend2[479]=(int)(SP*300/10.0);
trend3[479]=(int)(Un*300/100.0);
/*
Image1->
qushi.bmp"
Color=clRed;
Width=1;
MoveTo(0,300);
for(inti=0;
480;
LineTo(i,300-trend[i]);
*/
Canvas->
Width=1;
i++)Image1->
LineTo(i,300-trend1[i]);
Color=clRed;
LineTo(i,300-trend2[i]);
LineTo(i,300-trend3[i]);
5.2积分分离PID算法程序设计
inti=0;
AC6611_AD(hDevice,5,&
adc);
adc=(adc-819)*10.0/8.0;
floatadcf=(adc*100.0/4095);
if(adcf>
100.0)adcf=100.0;
if(adcf<
=0)adcf=0.0;
Edit2->
Text=FloatToStr(adcf);
PV=adc*(HS-LS)/4095.0;
if(PV>
100.0)PV=10.0;
if(PV<
=0)PV=0.0;
En=SP-PV;
DeltaUn=q0*En+ks*q1*En1+q2*En2;
Un=Un1+DeltaUn;
if(Un>
100.0)Un=100.0;
if(Un<
=0)Un=0.0;
Un1=Un;
En2=En1;
En1=En;
dac=(unsignedshortint)(Un*4095.0/100.0);
AC6611_DA(hDevice,dac);
5.3PID基本算法
基本PID把连续的温度数据离散化,并用来得出控制量。
6控制程序的调试
6.1主要调试的内容
(1)通道数据的采集以及输出控制,
(2)曲线的显示走向和棒图
(3)人机交互数据输入输出部分
6.2调试方法
通道数据的采集以及输出控制的调试,在程序中加入代码:
hDLL=LoadLibrary("
ac6611.dll"
if(hDLL!
=NULL)Label30->
Caption="
AC6611.dllloadok!
"
;
hDevice=AC6611_CreateDevice(0,&
ErrorOf6611);
//创建驱动,选择第0块卡
if(hDevice!
=-1){Label31->
AC6611CardIsExist!
}
else{Label31->
AC6611CardIsnotExist!
便可以检测通道是否和计算机成功连接。
曲线的显示走向和棒图显示,由于在寝室里没有办卡,所以有的现象就不能很好的体现出来。
曲线和棒图的实现只要理解原理后,可以实现自己想法,最主要的就是自己的算法,输入算法后,观察是否是自己要的结果,如果不是再修正算法。
人机交互要求一目了然,简单明了没有计算机内的哪些复杂的数据,同时认为的设置也要简单易懂。
这些要求的实现就靠数据转换的算法了,我们调试的方法就直接观察,看是否符合客观实际。
7PID参数的整定
7.1PID各个参数的影响
(1)比例调节的特点:
1、调节作用快,系统一出现偏差,调节器立即将偏差放大K倍输出;
2、系统存在余差。
K越小,过渡过程越平稳,但余差越大;
K增大,余差将减小,但是不能完全消除余差,只能起到粗调作用,但是K过大,过渡过程易振荡,K太大时,就可能出现发散振荡。
(2)积分调节的特点:
积分调节作用的输出变化与输入偏差的积分成正比,积分作用能消除余差,但降低了系统的稳定性,T1由大变小时,积分作用由弱到强,消除余差的能力由弱到强,只有消除偏差,输出才停止变化。
(3)微分调节的特点:
微分调节的输出是与被调量的变化率成正比,在引入微分作用后能全面提高控制质量,但是微分作用太强,会引起控制阀时而全开时而全关,因此不能把T2取的太大,当T2由小到大变化时,微分作用由弱到强,对容量滞后有明显的作用,但是对纯滞后没有效果。
7.2整定结果与分析
通过自己的慢慢的尝试,根据显示曲线的情况和各个参数对曲线的影响,改变各个参数的值来观察曲线的走势。
观察系统响应效果,可以通过查看控制回路细目画面中的实时趋势曲线,衰减曲线最好是4:
1,即前一个峰值与后一个峰值的比值为4:
1。
根据整定的方法得出一组比较的数据,PID中:
P=20;
I=5;
D=0.5。
8技术小结
在调试的过程中我们遇到了很多问题,第一个就对程序考虑不周到,不能再界面上改变pid的参数,后来添加了几个控件,编写了一小段程序解决了这个问题。
第二个运行程序发现pv现实始终都是一个不变值,经过对程序的仔细推导发现是算法的逻辑出现了错误,修改后一切变得正常了,第三个就是硬件的接线,没有正确的连接导线导致棒图和曲线显示图都不能正常运行,后经过老师的讲解解决了这个问题,第四个,对pid各个参数的理解不够,导致在调节显示曲线时没有目标的随机改变参数来观察曲线,这样大大地增加了我们的工作量。
在整个的调试过程中还遇到了其他一些小的问题,可能是粗心的缘故。
最后都修改正确了并且成功地运行了程序。
最后通过这两周的实习,让我巩固了cb的运用,进一步地了解了cb程序设计,对PID有了更好地了解,了解AC6611的功能,板卡AC6611和温度加热器的连接方法,两个的解法一定要正确,不然显示的曲线就不符合要求。
对积分分离算法有了更充分的了解,外部硬件(板卡)与PC的底层硬件连接,windows操作系统对这两部分的硬件通过硬件商提供的硬件驱动和动态链接库实现数据交换,实际是windows与板卡的寄存器实现数据交换,同时增加了我的实践能力,在我们即将毕业的前夕,多参加一些这样的实践对我们以后的工作有很多的帮助,十分感谢学院安排这样的实习,我相信只要认真做了实习的同学在他们工作时,他们一定十分的感谢学院很老师们这2周的教导。
参考文献:
(1)陆卫忠.C++Builder程序设计教程.2版.北京.科学出版社,2009.
(2)于海生.计算机控制技术.北京.机械工业出版社,2007.
(3)(荷)AndrewS.Tanenbaum.现代操作系统.北京:
机械工业出版社,2009
(4)何钦铭.C语言程序设计.北京高等教育出版社.2008.
控制程序清单
//---------------------------------------------------------------------------
#include<
vcl.h>
#include"
math.h"
#pragmahdrstop
dddd.h"
#pragmapackage(smart_init)
#pragmaresource"
*.dfm"
TForm1*Form1;
inttrend1[480],trend2[480],trend3[480];
intk=00;
floatSP=2.5,PV=0.0;
intpvtrend[480];
intsptrend[480];
intmvtrend[480];
intt1;
floatHS=10.0,LS=0.0,HL=7.5,LL=2.5,DH=0.2;
floatPID_DB=2,P=20,I=10,D=5;
floatUn=0.0,DeltaUn=0.0,Un1=0.0,En=0.0,En1=0.0,En2=0.0;
floatq0,q1,q2;
floatTS=1.0;
__fastcallTForm1:
TForm1(TComponent*Owner)
:
TForm(Owner)
{
FormCreate(TObject*Sender)
hDLL=LoadLibrary("
=NULL)Label1->
(FARPROC&
)AC6611_CreateDevice=GetProcAddress(hDLL,"
AC6611_CreateDevice"
//创建驱动句柄
)AC6611_CloseDevice=GetProcAddress(hDLL,"
AC6611_CloseDevice"
//关闭驱动句柄
)AC6611_DI=GetProcAddress(hDLL,"
AC6611_DI"
//数字量输入,port=0-1两个通道,8位数据由DiData返回
)AC6611_DO=GetProcAddress(hDLL,"
AC6611_DO"
//数字量输出,port=0-1两个通道,8位数据由DoData输出
)AC6611_DiBit=GetProcAddress(hDLL,"
AC6611_DiBit"
//数字量输入,port=0-1两个通道,指定位输入
)AC6611_DoBit=GetProcAddress(hDLL,"
AC6611_DoBit"
//数字量输出,port=0-1两个通道,指定位输出
)AC6611_DA=GetProcAddress(hDLL,"
AC6611_DA"
//DA输出,0-4095
)AC6611_VoltageToD
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 积分 分离 PID 温度 控制系统