过程控制系统实验报告_第1页
过程控制系统实验报告_第2页
过程控制系统实验报告_第3页
过程控制系统实验报告_第4页
过程控制系统实验报告_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、过程控制系统实验报告姓 名: 指导教师 :南京理工大学 2015 年 5月实验二 传感器、执行器实验一、实验目的了解传感器、执行器的工作原理,掌握它们在实际过程控制中的应用。 二、实验要求编程实现系统液位、温度、流量等模拟量的数据采集以及模拟量的输出。三、实验步骤1、液位传感器的测试 在水箱内按要求注入不同高度的纯净水,利用万用表和USB-4711A板卡的A/D口分别测出液位传感器的输出电压,并在计算机内将电压转换成对应的高度。将测量数据填入下表。 高度输出250 mm200 mm150 mm100 mm50 mm0mm万用表测量值(伏)5.534.914.303.683.07-2.4A/D

2、口测量值 (伏)5.564.924.323.713.09-2.4机内转换高度(mm)444.92393.36345.31296.48246.88192相对误差(%)77.97%96.68%130.21%196.48%393.76%/相对误差(%)(消除仪器误差)1.17%0.68%2.21%4.68%8.76%/因为我们使用的实验仪器测高计有明显的机械误差,通过实际0mm时测量高度为192mm,表测电压为-2.4V。所以实际相对误差应是消除高度计所造成的机械误差之后的值,一并在表中列出了。2、 温度传感器的测试用温度计测量出水温,同时利用万用表和USB-4711A板卡的A/D口测出温度传感器的

3、输出电压,并在计算机内将其转换成相应的温度。将测量数据填入下表。温度计(度)万用表测量值(伏)A/D口测量电压 (伏)机内转换温度(度)相对误差(%)/0.930.9619.19/3、 比例阀的控制通过USB-4711A板卡的D/A口输出控制电压,比较机内控制电压与实际输出电压,并将结果填入下表。控制量(伏)02.557.510测量值(伏)02.494.987.479.96相对误差(%)00.4%0.4%0.4%0.4%四、思考题1、用传感器测量过程变量的准确性如何?如果有误差,可以采取什么方法进行修正? 答:在测量过程变量时大量被测量是随时间变化的动态信号,传感器的输入与输出信号是一个时间函

4、数,随着输入信号变化,实际传感器输出与输入不具有相同时间函数,将会产生系统误差和随机误差。对于系统误差,可以采用差动法补偿来修正,随机误差可以采用统计学中的方法如算数平均或求标准偏差。 22 实验三 系统动态特性的测试一、实验目的学习单容对象动态特性的实验测定方法。 二、实验要求通过实验的方法建立液位对象的过程数学模型。 三、实验步骤利用液位对象的液位与输出流量的关系建立其模型计算机 测试系统结构如图3-1所示。 LT 进水FT 出水图3-1 利用液位输出流量关系建立模型的实验原理图 原理对于液位系统,根据动态物料平衡关系有 式 3-1 式中: 输入流量; 输出流量; 液位高度; A水箱截面积

5、; 、分别为偏离某一平衡状态、的增量。在静态时,当变化时,、也将发生变化,由流体力学可知,流体在紊流情况下,与流量之间为非线性关系,为简化起见,作线性化处理。近似认为与在工作点附近成正比,而与出水阀的阻力(称为液阻)成反比,即 或 式 3-2由式 3-1、式-2,消去中间变量,再求拉氏变换得:单容液位过程的传递函数为: 式 3-3 关闭出水阀,向水箱内注水至260mm左右,将出水阀旋开至适当位置(整个测量过程中保持出水阀开度不变),测量给定液位高度所对应的流量值,填入下表。根据式3-3求对象的数学模型。h (mm)120160200240(l/min)1.8801.9652.0392.1374

6、71541408473其中水箱的截面积。 四、思考题1、分析可能造成模型不准确的原因。答:被控对象有较大的时间常数,导致变化过程较慢; 单容水箱是一阶系统响应,被控变量的变化比较缓慢; 被控对象具有传输延迟; 被控对象不具有非线性,自平衡能力差。实验四 液位单回路控制系统的设计及参数整定一、实验目的掌握过程计算机控制系统的单回路控制方式。 二、实验要求设计单容水箱的液位单回路控制系统,实现液位的定值控制,并对系统进行参数整定。 三、实验内容1、按照图4-1,在组合式实验装置上通过选择管路,构造液位单回路控制系统。计算机MLI 进水 出水图 4-1 液位单回路控制系统原理图2、 画出液位单回路控

7、制系统方框图。3、 根据液位对象的数学模型,选择系统的采样周期 。 4、 运用经验法确定数字调节器的参数。根据经验公式,选择调节器参数、和值。观察不同参数情况下的控制效果,最终确定较为满意的调节器参数。实验次数调节器参数性能指标111/6.1%55221/6.3%54320.5/5.9%48410.5/5.3%52四、思考题1、在控制过程中遇到了哪些问题,你是如何解决的?为了提高控制效果,你在控制算法上还采取了哪些措施?答:实验中,开始程序一直记录数据有问题,后来和同学帮助下,原来是fprintf设定不对。最后的实验中,测流量总是开始就达到最大,然后慢慢向下降落,怎么也搞不懂,在老师的指点下终

8、于解决了问题,完成了实验。采用了多次实验取较好数据的方法,消除了偶然误差的影响。本来还采用了微分算法,用了之后才知道不好,又去掉了。实验五 流量单回路控制系统的设计及参数整定一、实验目的掌握过程计算机控制系统的一般设计方法。 二、实验要求根据流量对象的特点,设计流量定值控制系统,并对系统进行参数整定,使系统具有较好的动、静态性能指标和抗干扰能力。 三、实验步骤1、按照图5-1,在组合式实验装置上通过选择管路,构造流量单回路控制系统。计算机M FT 进水 出水图5-1 流量单回路控制系统原理图2、 画出流量单回路控制系统方框图。3、 根据流量对象的特点,选择系统的采样控制周期 。4、 选择调节器

9、参数,进行流量控制,记录控制结果,并就不同参数下的控制效果进行定性讨论控制器实验次数PID10.51/1.86%13.5211/4.3%4.530.50.5/3.08%3.5410.5/7.95%4.5四、思考题1、流量对象与液位对象有什么区别?流量控制系统的参数整定要注意哪些问题?答:(1)流量对象应用流量传感器,对于设定的流量值,系统会在达到 该流量时以大致稳定的流速往水箱注水;液位对象以设定的液位高度为基准,传感器一直对高度进行测量,达到设定高度后立即停止注水,并一直检测,当液面未达到设定值,再次注水以此反复。 (2)注意数学模型的正确建立,在建模过程中减少盲目性,但是该方法较为复杂,在

10、过程控制进行中直接进行工程正定,该方法简单,计算方便,但是参数不一定最佳,但实用;在此采用现场实验整定的方法,这种方法注意改变比例积分的参数,并有比较性地改变,有比较好得效果。附实验程序:实验二 传感器、执行器实验#include <stdio.h>#include <windows.h>#include <time.h>#include "driver.h" #include "conio.h" void main() PT_AIConfig ptAIConfig; PT_AIVoltageIn ptAIVoltag

11、eIn; float advalue; float h; float q=0; FILE *fp=fopen("test.txt","w"); long DriverHandle; ULONG num1=0,num2=0; int count; USHORT over=0; PT_CounterEventStart ptCounterEventStart; PT_CounterEventRead ptCounterEventRead; DRV_DeviceOpen(0,&DriverHandle); while(!kbhit() ptAIConf

12、ig.DasChan=0;/AI通道0ptAIConfig.DasGain=0;/Gain Code,+/-5VDRV_AIConfig(DriverHandle, (LPT_AIConfig)&ptAIConfig); /读取指定AI通道的电压值ptAIVoltageIn.chan = 0;/通道0 ptAIVoltageIn.gain = 0;/Gain Code,+/-5VptAIVoltageIn.TrigMode = 0; /内部触发ptAIVoltageIn.voltage = (FLOAT far *)&advalue;/返回电压值DRV_AIVoltageIn(

13、DriverHandle,(LPT_AIVoltageIn)&ptAIVoltageIn); printf("AD value=%f!n",advalue); ptCounterEventStart.counter=0; DRV_CounterEventStart(DriverHandle,&ptCounterEventStart); ptCounterEventRead.counter=0; ptCounterEventRead.overflow=&over; ptCounterEventRead.count=&num1;DRV_Count

14、erEventRead (DriverHandle, (LPT_CounterEventRead)&ptCounterEventRead); DRV_CounterEventRead (DriverHandle, &ptCounterEventRead); printf("%lun",num1); Sleep(1000); ptCounterEventRead.counter=0; ptCounterEventRead.overflow=&over; ptCounterEventRead.count=&num2;DRV_CounterEven

15、tRead (DriverHandle, (LPT_CounterEventRead)&ptCounterEventRead); DRV_CounterEventRead (DriverHandle, &ptCounterEventRead); printf("%lun",num2); count=num2-num1;q=0.0122*count+0.3412;h=advalue*80; printf("%dn",count);fprintf(fp,"q=%fn",q);fprintf(fp,"h=%fn&q

16、uot;,h); fclose(fp); DRV_CounterReset(DriverHandle,0); DRV_DeviceClose( &DriverHandle ); 实验三 系统动态特性的测试#include <stdio.h>#include <windows.h>#include <time.h>#include "driver.h" #include "conio.h" void main() long DriverHandle_v; PT_AIConfig ptAIConfig;PT_AIV

17、oltageIn ptAIVoltageIn;float advalue;DRV_DeviceOpen(0,&DriverHandle_v); /打开设备/AI配置ptAIConfig.DasChan=0;/AI通道0ptAIConfig.DasGain=0;/Gain Code,+/-5VDRV_AIConfig(DriverHandle_v, (LPT_AIConfig)&ptAIConfig); /读取指定AI通道的电压值ptAIVoltageIn.chan = 0;/通道0 ptAIVoltageIn.gain = 0;/Gain Code,+/-5VptAIVolta

18、geIn.TrigMode = 0; /内部触发ptAIVoltageIn.voltage = (FLOAT far *)&advalue;/返回电压值DRV_AIVoltageIn(DriverHandle_v,(LPT_AIVoltageIn)&ptAIVoltageIn);long DriverHandle; ULONG num1=0,num2=0;int count;USHORT over=0;PT_CounterEventStart ptCounterEventStart;PT_CounterEventRead ptCounterEventRead;DRV_Devic

19、eOpen(0,&DriverHandle); ptCounterEventStart.counter=0;DRV_CounterEventStart(DriverHandle,&ptCounterEventStart);ptCounterEventRead.counter=0;ptCounterEventRead.overflow=&over;ptCounterEventRead.count=&num1;DRV_CounterEventRead (DriverHandle, (LPT_CounterEventRead)&ptCounterEventRe

20、ad); DRV_CounterEventRead (DriverHandle, &ptCounterEventRead);printf("num1=%lun",num1);Sleep(1000);ptCounterEventRead.counter=0;ptCounterEventRead.overflow=&over;ptCounterEventRead.count=&num2;DRV_CounterEventRead (DriverHandle, (LPT_CounterEventRead)&ptCounterEventRead); D

21、RV_CounterEventRead (DriverHandle, &ptCounterEventRead);printf("num2=%lun",num2);count=num2-num1;printf("count=%dn",count);FILE *fp=fopen("me.txt","w");float fluid;while(!kbhit()DRV_AIVoltageIn(DriverHandle,(LPT_AIVoltageIn)&ptAIVoltageIn);ptCounterEve

22、ntStart.counter=0;DRV_CounterEventStart(DriverHandle,&ptCounterEventStart);ptCounterEventRead.count=&num1;DRV_CounterEventRead (DriverHandle, (LPT_CounterEventRead)&ptCounterEventRead);DRV_CounterEventRead (DriverHandle, &ptCounterEventRead);Sleep(1000);ptCounterEventRead.count=&

23、num2;DRV_CounterEventRead (DriverHandle, (LPT_CounterEventRead)&ptCounterEventRead); DRV_CounterEventRead (DriverHandle, &ptCounterEventRead);count=num2-num1;fluid = (14.5*(count-13)/(1200-13)+0.5);printf("Height=%ft",advalue*80);printf("num1=%lun",num1);printf("num2

24、=%lun",num2);printf("Count=%dn",count);printf("Fluid=%fnn",fluid);fprintf(fp,"Height=%ft",advalue*80);fprintf(fp,"Fluid=%fn",fluid);fclose(fp);DRV_CounterReset(DriverHandle,0); DRV_DeviceClose( &DriverHandle ); DRV_DeviceClose( &DriverHandle_v );

25、/关闭设备 实验四 液位单回路控制系统的设计及参数整定#include <stdio.h>#include <windows.h>#include "driver.h" #include <conio.h>#include "time.h" #include <math.h> void main() FILE *fp=fopen("test1.txt","w");long DriverHandle; PT_AIConfig ptAIConfig;PT_AIVoltag

26、eIn ptAIVoltageIn;float height_v_In;float m_h;float e1=0,e2=0,e3=0; /误差float seth=200;float setv=0;float k=1,ti=0.5,td=0;/PID系数int n=0;float time;long DriverHandle1; PT_AOConfig ptAOConfig;PT_AOVoltageOut ptAOVoltageOut; float height_v_Out=0;DRV_DeviceOpen(0,&DriverHandle); /打开设备DRV_DeviceOpen(0

27、,&DriverHandle1); /打开设备ptAIConfig.DasChan=0;/AI通道0ptAIConfig.DasGain=4;/Gain Code,+/-10VDRV_AIConfig(DriverHandle, (LPT_AIConfig)&ptAIConfig); ptAOConfig.chan=0;/AO通道0ptAOConfig.RefSrc=0;/内部参考源ptAOConfig.MaxValue=10;ptAOConfig.MinValue=0;DRV_AOConfig(DriverHandle1, (LPT_AOConfig)&ptAOCon

28、fig);setv=seth/80; while(!kbhit() Sleep(300);n+;time=n*0.3;/读取指定AI通道的电压值ptAIVoltageIn.chan = 0;/通道0 ptAIVoltageIn.gain = 4;/Gain Code,+/-10VptAIVoltageIn.TrigMode = 0; /内部触发ptAIVoltageIn.voltage = (FLOAT far *)&height_v_In;/返回电压值DRV_AIVoltageIn(DriverHandle,(LPT_AIVoltageIn)&ptAIVoltageIn);i

29、f(height_v_In < setv) e3=setv-height_v_In;height_v_Out += k*(e3-e2)+0.3/ti*e3+td/0.3*(e3-2*e2+e1);/增量式PID控制 e1=e2;/前两次值 e2=e3;/前一次值if(height_v_Out>10) height_v_Out=10;else if(height_v_Out<0)height_v_Out=0; else height_v_Out=0;printf("height_v_Out=%f!t",height_v_Out);printf("t

30、ime=%f!t",time);printf("hight=%f!nn",height_v_In/5*400); /电压输出ptAOVoltageOut.chan = 0;ptAOVoltageOut.OutputValue = height_v_Out;/所要设置的输出电压值,浮点型数据DRV_AOVoltageOut(DriverHandle1,(LPT_AOVoltageOut)&ptAOVoltageOut);fprintf(fp,"U=%f,h=%f,time=%fn",height_v_Out,height_v_In*80,

31、time); /AO配置ptAOConfig.chan=0;/AO通道0ptAOConfig.RefSrc=0;/内部参考源ptAOConfig.MaxValue=10;ptAOConfig.MinValue=0;DRV_AOConfig(DriverHandle1, (LPT_AOConfig)&ptAOConfig); ptAOVoltageOut.chan = 0;height_v_Out=0;ptAOVoltageOut.OutputValue = height_v_Out;/所要设置的输出电压值,浮点型数据DRV_DeviceClose( &DriverHandle

32、); /关闭设备DRV_DeviceClose( &DriverHandle1 ); /关闭设备 实验五 流量单回路控制系统的设计及参数整定#include<stdio.h>#include<windows.h>#include"driver.h" #include<time.h>#include <conio.h> PT_CounterEventStart ptCounterEventStart;PT_CounterEventRead ptCounterEventRead;long DriverHandle; PT_

33、AOConfig ptAOConfig;PT_AOVoltageOut ptAOVoltageOut; float davalue; float Q=0;float Qh=2;float t=0,U=0;float e1=0,e2=0,e3=0;float Kc=0.5,Ti=1,Ts=0.5; void main() ULONG num1=0,num2=0; int count; USHORT over=0; DRV_DeviceOpen(0,&DriverHandle); ptAOConfig.chan=0;/AO通道0ptAOConfig.RefSrc=0;/内部参考源ptAOConfig.MaxValue=10;ptAOConfig.MinValue=0;DRV_AOConfig(DriverHandle, (LPT_AOConfig)&ptAOConfig); /电压输出FILE *fp; fp=fopen("text1.txt",&qu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论