ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:237.30KB ,
资源ID:6806276      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6806276.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机控制系统实习报告1.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机控制系统实习报告1.docx

1、计算机控制系统实习报告11 实习内容及要求1.1 实习内容通过温度的设定值和反馈值,计算其偏差,并使用基本PID、或不完全微分PID或微分先行PID或死区PID或积分分离PID或积分限幅PID控制算法输出控制信号,整定PID参数,使被控的温度达到设定值。具体实训内容包括AC6611过程卡的接线和测试、数据采集程序设计、PID算法程序设计、控制输出程序设计、人机界面程序设计、PID参数整定、实训报告。1.2 实习要求完成一个基本PID或不完全微分PID或微分先行PID或死区PID或积分分离PID或积分限幅PID单回路温度控制系统的设计和调试过程。通过实训,让学生了解计算机控制系统的基本组成,提出

2、计算机控制系统的设计思路,初步学会计算机控制系统软硬件设计及调试的方法,具备技术实现能力;基本上能够处理实践过程中出现的问题并提出解决办法,进一步提高学生的计算机应用水平。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内置采样保持器。

3、工作方式:软件查询。16路单端输入,输入阻抗:1M最大输入耐压电压: +12V / 5.5V,瞬时输入耐压:-25V - +30V连接器:DB25孔式输入连接器。A/D最大通过率: 70KHZ,输入通道建立时间 2.5V,低电压 0.5V,最大输出电流 :8mA输入电流:0.1mA 输入高电压门限:2V, 低电压: 0.8V。输入耐压:高电平最大耐压:8伏,低电平:-0.4伏。连接器:40脚扁平电缆插座。(4)其它符合PCI V2.1标准,供电:+5伏、+12伏、-12伏。AC6611占用64个I/O选通空间(自动分配)。工作温度:0-70,尺寸:12(W) X 9(H) (厘米) 2.2 应

4、用方法及步骤1.以Windows 2000平台下安装AC6611驱动程序为例:关闭计算机的电源;将ac6611板卡插入PCI槽中;打开计算机电源,启动Windows 2000;Windows 2000将会显示找到新硬件,可按找到新硬件向导进行下一步;选择搜索适用与我的设备的驱动程序(推荐),下一步;选择驱动所在目录,进行安装(ac6611driver);按找到新硬件向导的提示进行下一步;Windows 2000将显示完成添加/删除硬件向导,单击完成即可完成安装过程;安装完毕后将在设备管理器中出现一个其他设备(其他设备是问号,不表示设备有问题,只是表示系统不知道ac6611板卡是何种类型设备)2

5、.以Windows XP平台下安装AC6611驱动程序为例:关闭计算机的电源;将ac6611板卡插入PCI槽中;打开计算机电源,启动Windows XP,Windows XP将会显示找到新硬件;在“找到新硬件向导”对话窗中选择“从列表或指定位置安装”,下一步;选择驱动所在目录,进行安装(ac6611driver);按找到新硬件向导的提示进行下一步;Windows XP将显示完成添加/删除硬件向导,单击完成即可完成安装过程安装完毕后将在设备管理器中出现一个其他设备(其他设备是问号,不表示设备有问题,只是表示系统不知道ac6611板卡是何种类型设备)驱动安装后,ac6611.sys, ac6611

6、.dll文件就自动被复制到系统中去了,可以进行其他测试、开发工作了。若无法正常安装,请换一台机器再尝试安装过程,若安装成功,说明安装不成功的机器系统有问题,考虑重装系统,在进行安装AC6611驱动。 注意:一般情况下,实验室已经安装好AC6611的驱动程序,只是在驱动程序出现问题或在没有驱动程序的机器上使用AC6611时才需要重新安装驱动程序。3 方案设计3.1 加热器的过程特性指被控过程输入量发生变化时,过程输出量的变化规律。加热器的过程特性是带滞后的一阶对象。也就是它不能发生突变,温度不能在很短的时间升高达到一个比较大的值,只能通过PID的运算后慢慢的升至设定温度。同时也不能达到瞬间降温的

7、效果,加热器内没有安装专门的散热装置,只有通过自然冷却达到设定的温度值(这个值一般不能低于室内温度),这个过程比较缓慢,等待的时间会比较长。在实验中就得注意,设定的温度最好从小到大以此进行设定,这样方便操作也节约了时间。3.2 加热器温度控制系统的实现方案 硬件连接好后通过静态测试软件测试硬件与电脑能正常通信后,通过可视化程序软件对系统的设计。利用AC6611板卡采集数据,通过总线送入PC,将设定值和采样值进行比较,经过程序设定的算法后输出一个偏差,得出控制量通过AC6611板卡送达加热器,如果偏差大,温度加热器将对装置的温度进行加热达到设定的温度值,如果偏差为0,说明设定的温度比采样温度低,

8、加热器不会加热,而通过自然冷却的方式使加热器降温从而达到设定的温度值。我们这组是采用带死区的PID控制算法的方式来达到控制温度的目的的。3.3 AC6611和加热器接线图的设计 实验室用的加热器是通过温度传感器,转换成了标准的工业标准(4mA20mA)。参照AC6611板卡手册。最大输入耐压电压:PID_DB 图2 死区PID控制算法流程图 4 数据采集及输出程序设计4.1 AC6611数据采集程序与温度换算程序温度换算程序的设计要考虑到我们采集的数据是210V,而实际的温度则是0100度,如果要达到可视化的目的,必须做一个转换算法: adv=adc*10.0/4095.0; /标度变换成温度

9、,420mA对应0100度,adv输出为210VPV=(adv-2)*100/(10-2);/PV 的实际输出值4.2 控制量与D/A代码换算及输出程序控制量与D/A转换代码如下:void _fastcall TForm1:Timer1Timer(TObject *Sender) unsigned long adc;unsigned long da;AC6611_AD(hDevice,4,&adc);En=SP-PV;if(fabs(En)PID_DB) /PID死区判定DeltaUn=q0*En+q1*En1+q2*En2; /u(k)=q0*e(k)+q1*e(k-1)+q2*e(k-2)

10、Un=Un1+DeltaUn; /u(k)=u(k-1)+u(k)if( Un100.0) Un=100.0;if(Un0) Un=0;Un1=Un;En2=En1;En1=En;ElseUn=Un1;da=(unsigned short int)(Un*4095.0/100.0);AC6611_DA(hDevice,da);5 控制算法的程序设计5.1 显示曲线的程序设计 for (int i=0;iPicture-LoadFromFile(qushi.bmp);Image1-Canvas-Pen-Width=2;if(CheckBox1-Checked=true) Image1-Canva

11、s-Pen-Color=clRed; Image1-Canvas-MoveTo(0,300); for(int i=0;iCanvas-LineTo(i,300-tr1i);if(CheckBox2-Checked=true) Image1-Canvas-Pen-Color=clBlue; Image1-Canvas-MoveTo(0,300); for(int i=0;iCanvas-LineTo(i,300-tr2i);if(CheckBox3-Checked=true)Image1-Canvas-Pen-Width=1; Image1-Canvas-Pen-Color=clGreen;

12、Image1-Canvas-MoveTo(0,300); for(int i=0;iCanvas-LineTo(i,300-tr3i);/绘制棒图 Image2-Picture-LoadFromFile(bangtu.bmp);Image2-Canvas-Pen-Width=5if(CheckBox1-Checked=true) Image2-Canvas-Pen-Color=clRed; Image2-Canvas-MoveTo(30,300); Image2-Canvas-LineTo(30,300-SP*30/(HS-LS);if(CheckBox2-Checked=true) Imag

13、e2-Canvas-Pen-Color=clBlue; Image2-Canvas-MoveTo(45,300); Image2-Canvas-LineTo(45,300-PV*30/(HS-LS);if(CheckBox3-Checked=true) Image2-Canvas-Pen-Color=clGreen; Image2-Canvas-MoveTo(65,300); Image2-Canvas-LineTo(65,300-Un*300/100.0);/Edit3-Text=FloatToStrF(SP,2,3,4);Edit4-Text=FloatToStrF(PV,2,3,4);E

14、dit5-Text=FloatToStrF(Un,2,3,4);5.2 死区PID算法程序设计En=SP-PV;if(fabs(En)PID_DB) /PID死区判定DeltaUn=q0*En+q1*En1+q2*En2; /u(k)=q0*e(k)+q1*e(k-1)+q2*e(k-2)Un=Un1+DeltaUn; /u(k)=u(k-1)+u(k)if( Un100.0) Un=100.0;if(UnCaption = AC6611.dll load ok!;hDevice=AC6611_CreateDevice(0, &ErrorOf6611); /创建驱动,选择第0块卡if(hDev

15、ice != -1) Label31-Caption = AC6611 Card Is Exist!; Else Label31-Caption = AC6611 Card Is not Exist!; 便可以检测通道是否和计算机成功连接。人机交互数据输入输出部分人机交互要求一目了然,简单明了没有计算机内的那些复杂的数据,同时人为的设置也要简单易懂。这些要求的实现就靠数据转换的算法了,我们调试的方法就直接观察,看是否符合客观实际。7 PID参数的整定7.1 PID各个参数的影响(1)比例调节的特点:1、调节作用快,系统一出现偏差,调节器立即将偏差放大100/Kp倍输出; 2、系统中还存在着余差

16、。 K越大,过渡过程越平稳,但余差越大;K减小,余差将减小,但是不能完全消除余差,只能起到粗调的作用,但是K过小,过渡过程易振荡,K太小时,就可能出现发散振荡,系统将失去平衡。(2)积分调节的特点:积分调节作用的输出变化与输入偏差的积分成正比,积分的作用是能消除余差,不过同事也降低了系统的稳定性,Ti由大变小时,积分作用由弱到强,消除余差的能力由弱到强,只有消除偏差后,积分作用的输出才停止变化。(3)微分调节的特点:微分调节的输出是与被调量的变化率成正比,在引入微分作用后能全面提高控制质量,但是微分作用太强,会引起控制阀时而全开时而全关,这样的滞后现象就会很严重,系统的偏差会很大。因此不能把T

17、D取的太大,当TD由小到大变化时,微分作用由弱到强,对容量滞后有明显的作用,但是对纯滞后没有效果。7.2 整定结果与分析 通过自己的慢慢的尝试,根据显示曲线的情况和各个参数对曲线的影响,改变各个参数的值来观察曲线的走势。观察系统响应效果,可以通过查看控制回路细目画面中的实时趋势曲线和根据整定的方法得出一组比较合适的PID数据:KP=20;Ti=2;TD=0.1。8 技术小结在本次的计算机控制系统综合实训中,我做的课题是关于死区PID温度控制系统的设计。刚开始,我遇到的难题就是关于CB的编程和运用,尽管在大三的时候上过CB的课程,但是现在我已经不能熟练地运用它了,所以就再次的去复习了以前所学的知

18、识。关于PID控制,我们也有这样的课程,经过一段时间的巩固和思考。对本次的课程设计有了比较清晰的思路和想法。经过老师耐心对本次课程设计任务和要求的讲解之后,我们就各自开始进行程序设计,通过对CB和计算机控制技术的复习,我很快完成了界面设计和基本的程序编写。后来在编写控制算法的程序时由于没有弄清楚控制对象与被控对象的关系,在调试的过程中,控制量和被控量不能有机的衔接起来,输入量和输出量没有直接的联系。经过仔细对算法的思考和同学们的帮助后,发现这是我在编写代码的时候弄错了对象。经过修改以后,能基本达到目的。然后是在运行的过程中,不论怎么改变SP的值,PV的采样值一直保持在一个稳定值不变,并且PV的

19、值明显高于室内温度,达到了56度左右。我仔细检查了好几遍都没有找到原因,也不知道该怎样做下去了。后来我在看变量初始值的时候发现,我错将PV的变量错误指到了一个常数。还有PID各个参数的理解不够,导致在调节显示曲线时没有目标的随机改变参数来观察曲线,这样大大地增加了我们的工作量。在整个的调试过程中还遇到了其他一些小的问题,可能是粗心的缘故。最后都通过老师或同学的帮助修改正确了并且达到了本次实训的目的。最后通过这两周的实习,让我巩固了CB的运用,进一步地了解了CB程序设计,对PID控制有了更深入的了解和认识,了解了AC6611的功能,板卡AC6611和温度加热器的连接方法,他们的接法一定要正确,不

20、然显示的曲线就不符合要求。对死区PID控制系统的算法有了更充分的了解,外部硬件(板卡)与PC的底层硬件连接,windows操作系统对这两部分的硬件通过硬件商提供的硬件驱动和动态链接库实现数据交换,实际是windows与板卡的寄存器实现数据交换,同时增加了我的实践能力,为以后出去从事这方面的工作打下了坚实的基础,十分感谢学院安排这样的实习,感谢刘显荣老师、胡文金老师的细心指导,也感谢我的同学为我提供的帮助。参考文献:(1) 于海生 .计算机控制技术 . 北京 . 机械工业出版社,2007.(2) 陆卫忠 . C+Builder程序设计教程.2版 . 北京 . 科学出版社,2009.(3) 何钦铭

21、 . C语言程序设计 . 北京高等教育出版社 . 2008.控制程序清单/-#include #include #pragma hdrstop#include EX1.h/-#pragma package(smart_init)#pragma resource *.dfmfloat SP=25,PV=0,MV;int tr1480,tr2480,tr3480;float HS=10.0,LS=0.0,HL=9.0,LL=1.5,DH=0.2;float PID_DB=1,Kp=20,TI=2,TD=0.1,KD=5;float Un=0.0,DeltaUn=0.0,Un1=0.0,En=0.0

22、,En1=0.0,En2=0.0;float q0,q1,q2;float TS=0.1;TForm1 *Form1;/-_fastcall TForm1:TForm1(TComponent* Owner) : TForm(Owner)/-void _fastcall TForm1:FormCreate(TObject *Sender) q0=(100.0/Kp)*(1+TS/TI+TD/TS); q1=-(100.0/Kp)*(1+2*TD/TS); q2=(100.0/Kp)*TD/TS;/- hDLL=LoadLibrary(ac6611.dll); if(hDLL!=NULL)Labe

23、l1-Caption = AC6611.dll load ok!; (FARPROC&)AC6611_CreateDevice=GetProcAddress(hDLL,AC6611_CreateDevice); /创建驱动句柄 (FARPROC&)AC6611_CloseDevice=GetProcAddress(hDLL,AC6611_CloseDevice); /关闭驱动句柄 (FARPROC&)AC6611_DI=GetProcAddress(hDLL,AC6611_DI); /数字量输入,port=0-1两个通道,8位数据由DiData返回 (FARPROC&)AC6611_DO=Ge

24、tProcAddress(hDLL,AC6611_DO); /数字量输出,port=0-1两个通道,8位数据由DoData输出 (FARPROC &)AC6611_DiBit=GetProcAddress(hDLL,AC6611_DiBit); /数字量输入,port=0-1两个通道,指定位输入 (FARPROC&)AC6611_DoBit=GetProcAddress(hDLL,AC6611_DoBit); /数字量输出,port=0-1两个通道,指定位输出 (FARPROC&)AC6611_DA=GetProcAddress(hDLL,AC6611_DA); /DA输出,0-4095 (F

25、ARPROC&)AC6611_VoltageToDA=GetProcAddress(hDLL,AC6611_VoltageToDA); (FARPROC&)AC6611_AD=GetProcAddress(hDLL,AC6611_AD); /通用AD采样 (FARPROC&)AC6611_AD_CHN=GetProcAddress(hDLL,AC6611_AD_CHN); /设置AD通道0-15 (FARPROC&)AC6611_ADS=GetProcAddress(hDLL,AC6611_ADS); /直接AD采样,为单通道AD采样设计 (FARPROC&)AC6611_ADToVoltage=GetProcAddress(hDLL,AC6611_ADToVoltage); hDe

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1