数字PID的计算机仿真(共26页).docx
精选优质文档-倾情为你奉上数字PID的计算机仿真课程名称: 计算机控制技术 学 院:电子信息与电气工程学部专 业: 自动化 班 级: 1102 学 号: 学生姓名: 一. 数字PID的计算机仿真一、 目的加深理解PID调节器的特性及参数设定。二、 算法u(k)=q0*e(k)+q1*e(k-1)+q2*e(k-2)u(k)=u(k-1)+u(k)初始条件:u(k-1)=u(k-2)=0, e(k-1)=e(k-2)=0, y(k-1)=y(k-2)=0,R(k)为单位阶跃,且控制系统的结构图为:PIDG(z)R(k)e(k)u(k)y(k)-三个被控对象:二阶振荡环节其中:=-1.5,=0.7,=1.0,=0.5,T=2s具有非最小相位特性的过程 其中:=-1.68364,=0.70469,=-0.07289,=0.09394,T=1s具有低通特性和纯滞后的过程其中:d=4,=-2.48824,=2.05387,=-0.56203,=0,=0.00462,=0.00169,=-0.00273,T=1s三、仿真要求:1、 采用matlab计算40步以上的y(k) u(k),并画图显示。2、 对三个对象,在T=1或2时,整定出最佳的PID参数。3、 整定法,凑试法。(程序中要有上升时间,超调量和收敛时间的计算)在此,我们选取T=2S,约定超调量poss<5%, 上升时间tr<25, 调整时间 ts<40。不符合条件的PID参数均舍弃。四、被控对象的PID参数整定过程:(1) 二阶振荡环节a)、实验程序Kp=?;Ti=?;Td=?;T=2;q0=Kp*1+T/Ti+Td/T;q1=-Kp*1+2*Td/T;q2=Td*Kp/T;b1=1;b2=0.5;a1=-1.5;a2=0.7;e=zeros(1,60);u=zeros(1,60);y=zeros(1,60);du=zeros(1,60);for k=3:1:60 e(1,k)=1-y(1,k-1); du(1,k)=q0*e(1,k)+q1*e(1,k-1)+q2*e(1,k-2); u(1,k)=u(1,k-1)+du(1,k); y(1,k)=-a1*y(1,k-1)-a2*y(1,k-2)+b1*u(1,k-1)+b2*u(1,k-2);end %迭代步骤 t=1:60; subplot(2,1,1) plot(t,y) xlabel('t'); ylabel('y'); title('y(k)图形'); subplot(2,1,2) plot(t,u) xlabel('t'); ylabel('u'); title('u(k)图形'); yp,tp=max(y);num=length(t);yss=y(num) ;poss=100*(yp-yss)/yss %计算超调量 for i=length(t):-1:1 if (y(i)>1.02*yss) ts=t(i); break elseif (y(i)<0.98*yss) ts=t(i); break else ts=0; endendts %显示调整时间 for i=1:length(t) if(y(i)<0.9*yss) tr1=t(i); elseif(y(i)=yp) break endend for i=1:length(t) if(y(i)<0.1*yss) tr2=t(i); elseif(y(i)=yp) break endend tr=tr1-tr2 wucha=1-y(60)b)、参数选择Kp=0.03,Ti=3.55,Td=0.1c)、仿真图像d)、40步仿真数据u(k)0 0 0.1900 0.0800 0.0689 0.0635 0.0743 0.0898 0.1049 0.11630.1230 0.1259 0.1266 0.1264 0.1265 0.1273 0.1287 0.1303 0.1317 0.13280.1334 0.1336 0.1335 0.1333 0.1332 0.1331 0.1331 0.1332 0.1333 0.1333 0.1334 0.1334 0.1334 0.1334 0.1333 0.1333 0.1333 0.1333 0.1333 0.1333 0.1333 0.1333 0.1333 0.1333 0.1333 0.1333 0.1333 0.1333 0.1333 0.1333Y(k) 0 0 0 0.1900 0.4600 0.6659 0.7748 0.8021 0.7878 0.77000.7723 0.8006 0.8478 0.9008 0.9474 0.9803 0.9978 1.0028 1.0003 0.9954 0.9915 0.9903 0.9917 0.9946 0.9978 1.0003 1.0016 1.0019 1.0014 1.00060.9999 0.9995 0.9994 0.9995 0.9998 1.0000 1.0002 1.0002 1.0002 1.0001 1.0000 1.0000 0.9999 0.9999 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000Poss=0.2801ts=15tr=10 wucha =-1.3850e-006(2) :二阶振荡环节a)、实验程序Kp=?;Ti=?;Td=?;T=1;q0=Kp*1+T/Ti+Td/T;q1=-Kp*1+2*Td/T;q2=Td*Kp/T;b1=-0.07289;b2=0.09394;a1=-1.68364;a2=0.70469;e=zeros(1,60);u=zeros(1,60);y=zeros(1,60);du=zeros(1,60);for k=3:1:60 e(1,k)=1-y(1,k-1); du(1,k)=q0*e(1,k)+q1*e(1,k-1)+q2*e(1,k-2); u(1,k)=u(1,k-1)+du(1,k); y(1,k)=-a1*y(1,k-1)-a2*y(1,k-2)+b1*u(1,k-1)+b2*u(1,k-2);end %迭代步骤 t=1:60; subplot(2,1,1) plot(t,y) xlabel('t'); ylabel('y'); title('y(k)图形'); subplot(2,1,2) plot(t,u) xlabel('t'); ylabel('u'); title('u(k)图形'); yp,tp=max(y);num=length(t);yss=y(num) ;poss=100*(yp-yss)/yss %计算超调量for i=length(t):-1:1 if (y(i)>1.02*yss) ts=t(i); break elseif (y(i)<0.98*yss) ts=t(i); break else ts=0; endendts %显示调整时间 for i=1:length(t) if(y(i)<0.9*yss) tr1=t(i); elseif(y(i)=yp) break endend for i=1:length(t) if(y(i)<0.1*yss) tr2=t(i); elseif(y(i)=yp) break endend tr=tr1-tr2 %显示上升时间,是从10%到90%axes(handles.axes2) ; plot(t,y); xlabel('t');ylabel('y');grid axes(handles.axes4) ; plot(t,u); xlabel('t');ylabel('u');grid;b)、参数选择Kp=0.67,Ti=11.5,Td=0.95c)、仿真图像d)、40步仿真数据u(k)0 0 1.3648 0.7865 0.9805 0.9774 1.0343 1.0646 1.0934 1.11371.1286 1.1383 1.1437 1.1454 1.1442 1.1406 1.1351 1.1282 1.1202 1.1115 1.1024 1.0930 1.0837 1.0746 1.0658 1.0574 1.0494 1.0420 1.0352 1.0290 1.0233 1.0183 1.0138 1.0098 1.0064 1.0034 1.0009 0.9988 0.9971 0.99570.9947 0.9939 0.9933 0.9929 0.9927 0.9927 0.9927 0.9929 0.9931 0.9934Y(k)0 0 0 -0.0995 -0.0966 -0.0901 -0.0628 -0.0258 0.0204 0.0728 0.1298 0.1895 0.2507 0.3121 0.3727 0.4318 0.4887 0.5429 0.5941 0.6420 0.6864 0.7274 0.7648 0.7988 0.8294 0.8567 0.8810 0.9024 0.9212 0.93740.9513 0.9632 0.9732 0.9816 0.9884 0.9939 0.9983 1.0016 1.0042 1.0059 1.0071 1.0078 1.0080 1.0079 1.0076 1.0071 1.0064 1.0056 1.0048 1.0040Poss=1.0387 ts=33 tr=17(3) 具有低通特性和纯滞后的过程a)、实验程序Kp=?;Ti=?;Td=?;T=1;q0=Kp*1+T/Ti+Td/T;q1=-Kp*1+2*Td/T;q2=Td*Kp/T;a1=-2.48824;a2=2.05387;a3=-0.56203;b1=0.00462;b2=0.00169;b3=-0.00273;e=zeros(1,60);u=zeros(1,60);y=zeros(1,60);du=zeros(1,60);for k=8:1:60 e(1,k)=1-y(1,k-1); du(1,k)=q0*e(1,k)+q1*e(1,k-1)+q2*e(1,k-2); u(1,k)=u(1,k-1)+du(1,k);y(1,k)=-a1*y(1,k-1)-a2*y(1,k-2)-a3*y(1,k-3)+b1*u(1,k-5)+b2*u(1,k-6)+b3*u(k-7);end %数字PID增量型控制算法迭代步骤 t=1:60; subplot(2,1,1) plot(t,y) xlabel('t'); ylabel('y'); title('y(k)图形'); %显示输出曲线 subplot(2,1,2) plot(t,u) xlabel('t'); ylabel('u'); title('u(k)图形'); %显示控制量曲线 yp,tp=max(y);num=length(t);yss=y(num) ; %稳态值poss=100*(yp-yss)/yss %计算超调量 for i=length(t):-1:1 if (y(i)>1.02*yss) ts=t(i); break elseif (y(i)<0.98*yss) ts=t(i); break else ts=0; endendts %显示调整时间 for i=1:length(t) if(y(i)<0.9*yss) tr1=t(i); elseif(y(i)=yp) break endend for i=1:length(t) if(y(i)<0.1*yss) tr2=t(i); elseif(y(i)=yp) break endend tr=tr1-tr2b)、参数选择Kp=0.62,Ti=15,Td=1.1c)、仿真图像d)、40步仿真数据u(k)0 0 0 0 0 0 0 1.3433 0.7027 0.74400.7853 0.8267 0.8680 0.9010 0.9265 0.9510 0.9723 0.9907 1.0064 1.01951.0302 1.0389 1.0456 1.0506 1.0541 1.0563 1.0572 1.0572 1.0562 1.05461.0523 1.0495 1.0464 1.0429 1.0393 1.0355 1.0316 1.0277 1.0239 1.02021.0165 1.0131 1.0098 1.0067 1.0038 1.0011 0.9986 0.9964 0.9944 0.9927y(k)0 0 0 0 0 0 0 0 0 00 0 0.0062 0.0210 0.0404 0.0638 0.0908 0.1209 0.1534 0.18800.2241 0.2613 0.2992 0.3374 0.3756 0.4134 0.4508 0.4873 0.5229 0.55730.5905 0.6222 0.6526 0.6814 0.7087 0.7343 0.7584 0.7809 0.8019 0.82130.8393 0.8558 0.8709 0.8847 0.8973 0.9086 0.9189 0.9280 0.9362 0.9435Poss=0 ts=52 tr=26五、实验体会: 通过此次数字PID的仿真实验,首先掌握了PID控制规律及控制器的实现,同时对MATLAB的运用也更加熟练。此次实验最大的收获就是通过自编写程序来实验PID的控制算法。而不仅仅局限于用Simulink模块实现PID算法。通过程序的编写,使得对PID的调节作用有了更深入的了解,尤其是对三个参数的改变对控制系统的影响有了更深刻的理解。而在整定参数的过程中,学会了整定法,凑试法的方法,而非理论计算,使得更加贴近于工程。温度智能控制器课程名称: 计算机控制技术 学 院:电子信息与电气工程学部专 业: 自动化 班 级: 1102 学 号: 一.设计说明书1.技术参数与指标:检测元件:热电偶(K 、E、 S、 R、 N等),测量精度0.2级热电阻:Pt100:-200800、Cu50:-40140;控制对象:窑炉、锅炉等;控温手段:控制能源(煤、煤气、重油、过热蒸汽等)的流量(通过阀门)来控制炉内的温度;也可以通过电加热来控制温度,具体方法为,通过脉宽调制来调节电功率控制继电器的输出方式,或者是通过调节控制角来调节电压控制420mA方式;显示部分:实测温度值PV;设定温度值SV;OUT100%;电源指示灯;通讯指示灯;故障指示灯;报警指示灯(包括上限、下限);操作部分:键盘按键;通讯:RS-485 Mod BUS协议;电源:220V交流;控制方式:PID饱和不完全积分法。2.实现的功能:本设计主要是测量系统的温度,并对其进行控制,在要求的温度范围内,保证了准确度。可以根据不同的温度范围和精度要求选择不同的检测元件,可以使测温范围更加广。将温度控制器通过RS-485 Mod BUS协议与计算机连接,对温度进行集中分析和控制。在操作部分,通过按键设定上下限,确定了温度的范围。同时,利用数码管同时现实设定值和实测值,正常工作时,电源指示灯和通讯指示灯亮,。当出现故障时,故障部分指示灯亮。当温度超过上下限时,报警指示灯亮,并且蜂鸣器响。实现智能化。3.简单的操作使用说明:l 根据不同的测温范围和精度要求选择不同的检测元件;l 根据选定的检测原件设定温度值以及上下限:选择相应的工作方式,按SET键进入模式选择,按移位键选择合适的模式,并在该模式下通过上下键设定设定温度值和上下限,最后按回车使其进入正常工作状态;l 在无故障过程中计算机分析当前温度并进行合理的控制,并输出设定值和实测值。二.系统设计温度控制是工业生产中经常遇到的过程控制,在很多工艺生产中,温度控制效果直接影响到产品的质量,因而设计一种比较理想的温度控制系统是非常有价值的。日常生活中,温度值也是一个重要的参考量。此外,对温度信息的采集,检测,控制,步进保证产品质量,还节约能源,安全生产方面有积极作用。1.系统总体设计:硬件系统以单片机为检测控制系统中心,温度控制采用改进的PID数字控制算法,显示采用4位LED实时显示。系统的结构框图如下:温度采集和控制对象 420mA电流输出通道51单片机A/D转换器温度测量通道 显示模块按键输入微处理器监控电路温度控制输出通道 报警电路2.控制方法描述:不完全微分数字PID:若输入为单位阶跃:即,若此时:,则下一个周期:-+PID 得到差分方程: 3.硬件模块设计:3.1热电阻测温电路系统电路图中共有4路热电偶、1路热电阻,可循环接收5路的温度信号(通过P20P24引出的5根地址线完成选择),并将电信号转换为对应代表的温度值(运用分段线性化方法),最后5组温度的均值(或根据实际情况加权平均)即为现场的实际温度。实际过程如下:首先,热电阻的电路如下:其中比较器输出为2、3引脚的电压差,再经运放放大后送入选择开关(热电偶电压信号经仪用放大电路接至选择开关),由于热电阻等器件的温度-阻值存在非线性,在将单片机接收的电信号转换为对应的热电偶的阻值后,再将阻值对应成相应温度时,要运用分段线性化的方法,即将温度-阻值的非线性曲线划分为若干段,每一段内近似成线性关系,将实际的阻值对应找到其所在的段,则根据段内的线性关系,可得出阻值对应的温度。3.2温度测量通道1路热电阻、4路热电偶和多路选择开关CD4052、CD4051的组合,可实现5路温度测量的随意切换(;由热电偶、热电阻产生的电压信号经仪用放大电路放大、线性光耦隔离后,送入模数转换器ICL7135;ICL7135与单片机的连接采用了不常用的串行接收方式,而ICL7135的串行接法是通过计脉冲数的方法来获得测量转换结果的。由其时序分析可知,在ICL7135工作过程中的去积相,其脉冲数与转换结果具有一一对应关系。通过单片机的定时器T0来计脉冲器。由于,定时器T0所用的CLK频率是系统晶振频率的1/12。因此可利用单片机的ALE信号作为ICL7135的脉冲(CLK)输入。至此,便可找到定时器所使用的频率与单片机系统晶振频率的关系,以及ICL7135所需的频率输入与单片机系统晶振频率的关系。为了使定时器T0的计数脉冲的ICL7135工作所需的脉冲同步,可以将ICL7135的BUSY信号接至P3.2(INT0)引脚上,并且将定时器T0的选通控制信号GATE倍1。此时定时器T0是否工作将受BUSY信号的控制。当ICL7135开始工作时,也就是ICL7135的BUSY信号跳高时,定时器T0才开始工作,且定时器T0的TH0、TL0所记录的数据与ICL7135的测试脉冲存在一定的比例关系。要得到测量脉冲的个数,只需将定时器所记录的脉冲个数除以2即可。而要得到A/D转换结果所对应的脉冲数则应用测量脉冲的个数减去10001。在温度测量通道,模拟信号与A/D转换器之间加入了线性光耦,起到隔离作用,线性光耦隔离部分如下:同样,在多路开关的选通线与地址线之间也加入了普通光耦,确保测量电路与单片机之间良好的电气隔离,电路如下: 3.3 4到20mA电流输出模块由P0口输出,经DAC0832转换成模拟电压输出,通过线性光耦隔离,进行V/I变换,转换成标准的420mA电流输出;模块的电路图如下:其中V/I变换部分的电路如下:通过设置Rc阻值及调整滑动变阻器阻值,可使输出电流为420mA,输出电流的表达式为:I=(Vin+Vrf)/Rc在420mA标准电流输出通道,D/A转换器与后续电路之间也加入了线性光耦,确保两边的电气隔离,其隔离部分的电路图与温度曾两通道的线性光耦隔离完全相同,不再重复。3.4 温度控制输出通道 将输出的pwm脉冲经光耦隔离,三极管的驱动放大后,控制继电器的开、关,进而控制功能电路的开、关。3.5 显示模块3.6 按键输入模块本系统的四个按键,通过光耦隔离,经过74LS244三态缓冲器,连至单片机的PI0P13口;按键与单片机输入缓冲器间加入普通光耦进行电气隔离,电路图如上面的按键接收模块的电路图;为了去除按键抖动,在硬件上,按键后面加入了RC滤波电路,减少抖动的影响,如下图:在软件中,当判断按键按下后调用延时程序(几十毫秒),然后再判断开关的状态是否还是按下,是则代表确实开关被按下,否则不做相应的响应。3.7 报警模块控制输出与报警输出中都加入普通光耦进行隔离,继电器两端并入二极管,防止开关过程中反向电流的损害,如下:3.8 通讯模块 RS232通讯电路4、软件功能分析软件主要功能:数据采集,数字滤波,标度变换,PID控制,显示,报警,通讯。1) 数据采集按顺序采集4个点的温度信号,共采集多次并存储起来,采样周期T=1s。2) 数字滤波将每个信号的测量值排序,去掉一个最大值和一个最小值,剩余求平均值即为该信号的测量结果,即采用中位值滤波法与平均值滤波法相结合来实现数字滤波3) 标度变换测温回路和控温回路,都是用420mA 信号进行控制。将测量允许的上限和下限进行分段线性化,上限温度时对应电压输出转化为20mA 电流输出,下限温度对应电压输出转化为4mA电流输出。标度变换的公式为:Y=Ymin + (Ymax-Ymin)(D-Dmin)/(Dmax-Dmin)4) PID控制采用增量型PID控制算式:u(k)=q0*e(k)+q1*e(k-1)+q2*e(k-2)u(k)=u(k-1)+u(k)采样周期为1S5) 显示LCD 显示实测值PV、设定值SV、状态值out。当所测值在程序设定的上限和下限之间,状态值显示正常6) 报警当所测值超出量程或程序出错,状态值显示异常,并报警出错。7) 通讯通过中断的方式,对设定温度值SV进行加减的操作,从而改变给定温度。三、总体电路设计1硬件电路设计ADC0809脱离测温电路多路选择开关电路LCD显示脱离测温电路单片机脱离测温电路键盘脱离测温电路电源模块变压器触发电路控制输出电路DAC0832电源模块变压器触发电路控制输出电路DAC08322软件分析A.主流程BA/D采样流程过程入口置采样值缓冲区首地址通道号和计数初值送通道号,启动AD读状态STS转换结束?读结果,存入缓冲区修改通道号、计数器、采样缓冲区指针通道循环结束返回C数据处理流程包括数字滤波,工程量转换,方程线性化,查表法等。其中,数字滤波、工程量转换上面已经提到。方程线性化是将连续信号转换成离散信号,对信号进行定周期采样,采样需满足香农定理,再进行量化,最后用采样保持器保持,常采用零阶保持器,因为当采样周期足够小时,零阶保持器可以达到预期的效果,而且方便计算机计算。一阶或高阶保持器计算机的运算量会增大很多。查表法,在单片机中预存分度表,可以根据实测值直接读出所测温度。DPID算法流程本系统的温度调控采用PID控制,整个控制过程各部分细节的总框图如下:按键设定的温度值PID转换成对应的pwm电信号执行器(控制输出通道)现场温度温度测量通道分段线性化、校准后-软件部分的主体结构: 引入PID控制,以设定的预期温度值作为给定输入,测得的实际现场温度作为测量输入,调整出适宜的PID参数,则系统的输出即现场实际温度会自动跟随设定温度。将输入温度与反馈温度的温度误差信号,经PID后的信号,按照不同大小,使单片机产生不同占空比的矩形波,送入温度控制通道,当矩形波为高电平时,继电器闭合,加热电路工作;矩形波低电平时,继电器断开,加热电路不工作,则不同占空比的矩形波控制了加热电炉的加热功率,进而控制维持不同的温度。四 实验总结通过此次计算机控制技术的课程设计,对计算机控制系统的基本概念基本组成以及信号流程有了更深入的了解。同时对通道接口技术中的数字量输入/输出通道,模拟量输入/输出通道有了更深入的探究。通过这些学习,对计算机控制系统的硬件模块更加熟练。而软件模块方面,通过对数字PID 的调节算法,用程序的方法实现了计算机控制系统的各种功能。 u 专心-专注-专业