先进控制实验报告.doc

上传人:jian****018 文档编号:7897077 上传时间:2020-03-25 格式:DOC 页数:14 大小:148.14KB
返回 下载 相关 举报
先进控制实验报告.doc_第1页
第1页 / 共14页
先进控制实验报告.doc_第2页
第2页 / 共14页
先进控制实验报告.doc_第3页
第3页 / 共14页
点击查看更多>>
资源描述
先进控制实验报告班级:自121 姓名:张伟琦 学号:120941项目预习操作报告总评得分实验一、Matlab M文件基本编程与常规PID实验(一)实验目的:1、掌握Matlab M文件基本编程方法以及基本函数的使用。2、掌握利用Matlab M文件建立常规系统的线性建模。3、掌握利用Matlab M文件编写PID控制程序。4、针对以上编写的PID程序进行PID参数的调整,理解PID三个参数对系统性能的影响。(二)实验内容:1、线性系统建模实验。2、增量式PID的编程实验。(三)实验程序:clear all;close all;ts=0.001;%采样时间sys=tf(5.235e005,1,87.35,1.047e004,0);%定义 括号里有几个数就有几阶连续系统dsys=c2d(sys,ts,z);%连续到离散num,den=tfdata(dsys,v);%分子 分母取值 把上边系数 存DATA里 Kp=0.45;Ki=0.00001;Kd=0.001; U_1=0;U_2=0;U_3=0; Y_1=0;Y_2=0;Y_3=0; e_1=0;e_2=0; A=Kp+Ki+Kd; B=-Kp-2*Kd; C=Kd;for k=1:1:1500 %k=1 以1为增量增到1500 rin(k)=1;%信号 time(k)=k*ts; yout(k)=-den(2)*Y_1-den(3)*Y_2-den(4)*Y_3+num(2)*U_1+num(3)*U_2+num(4)*U_3; error(k)=rin(k)-yout(k); u(k)=A*error(k)+B*e_1+C*e_2; u(k)=U_1+u(k); U_3=U_2;U_2=U_1;U_1=u(k); Y_3=Y_2;Y_2=Y_1;Y_1=yout(k); e_2=e_1;e_1=error(k); endfigure(1);%画图 开图框plot(time,rin,b,time,yout,r);%是颜色time是变量 横坐标 time 和rin长度要一样xlabel(time(s),ylabel(rin,yout);(四)实验结果:(5) 实验总结: 经过这次实验,我不但复习了Matlab的基础知识并且学会了通过编写M文件来实现常规及增量式PID控制器的设计,针对不同的控制对象选择设定不同的控制参数,来完成控制目标,使得控制系统达到理想的超调,稳态误差等。同时经过老师的讲解,我不仅复习了PID控制三个参数的意义还了解了增量式PID的原理与建模与推导过程,并通过Matlab实现了此类PID控制,绘制了增量式PID的阶跃响应曲线,得知了此类PID的优缺点。与书本上的知识相对应使得我对PID控制的认知更加深刻。实验二、模糊控制实验(一)实验目的:1、掌握模糊控制基本原理并编程实现。2、理解模糊PID控制基本原理并编程实现。(二)实验内容:1、模糊控制编程实验。2、模糊PID控制编程实验。(三)实验程序:clear all;clear all;a=newfis(fuzz_ljk);f1=1.0;a=addvar(a,input,e,-3*f1,3*f1);a=addmf(a,input,1,NB,zmf,-3*f1,-1*f1);a=addmf(a,input,1,NM,trimf,-3*f1,-2*f1,0);a=addmf(a,input,1,NS,trimf,-3*f1,-1*f1,1*f1);a=addmf(a,input,1,Z,trimf,-2*f1,0,2*f1);a=addmf(a,input,1,PS,trimf,-1*f1,1*f1,3*f1);a=addmf(a,input,1,PM,trimf,0,2*f1,3*f1);a=addmf(a,input,1,PB,smf,1*f1,3*f1);f2=1.0;a=addvar(a,input,ec,-3*f2,3*f2);a=addmf(a,input,2,NB,zmf,-3*f2,-1*f2);a=addmf(a,input,2,NM,trimf,-3*f2,-2*f2,0);a=addmf(a,input,2,NS,trimf,-3*f2,-1*f2,1*f2);a=addmf(a,input,2,Z,trimf,-2*f2,0,2*f2);a=addmf(a,input,2,PS,trimf,-1*f2,1*f2,3*f2);a=addmf(a,input,2,PM,trimf,0,2*f2,3*f2);a=addmf(a,input,2,PB,smf,1*f2,3*f2);f3=0.1;a=addvar(a,output,kp,-3*f1,3*f1);a=addmf(a,output,1,NB,zmf,-3*f1,-1*f1);a=addmf(a,output,1,NM,trimf,-3*f1,-2*f1,0);a=addmf(a,output,1,NS,trimf,-3*f1,-1*f1,1*f1);a=addmf(a,output,1,Z,trimf,-2*f1,0,2*f1);a=addmf(a,output,1,PS,trimf,-1*f1,1*f1,3*f1);a=addmf(a,output,1,PM,trimf,0,2*f1,3*f1);a=addmf(a,output,1,PB,smf,1*f1,3*f1);f4=0.02a=addvar(a,output,ki,-3*f2,3*f2);a=addmf(a,output,2,NB,zmf,-3*f2,-1*f2);a=addmf(a,output,2,NM,trimf,-3*f2,-2*f2,0);a=addmf(a,output,2,NS,trimf,-3*f2,-1*f2,1*f2);a=addmf(a,output,2,Z,trimf,-2*f2,0,2*f2);a=addmf(a,output,2,PS,trimf,-1*f2,1*f2,3*f2);a=addmf(a,output,2,PM,trimf,0,2*f2,3*f2);a=addmf(a,output,2,PB,smf,1*f2,3*f2);f5=1a=addvar(a,output,kd,-3*f2,3*f2);a=addmf(a,output,3,NB,zmf,-3*f2,-1*f2);a=addmf(a,output,3,NM,trimf,-3*f2,-2*f2,0);a=addmf(a,output,3,NS,trimf,-3*f2,-1*f2,1*f2);a=addmf(a,output,3,Z,trimf,-2*f2,0,2*f2);a=addmf(a,output,3,PS,trimf,-1*f2,1*f2,3*f2);a=addmf(a,output,3,PM,trimf,0,2*f2,3*f2);a=addmf(a,output,3,PB,smf,1*f2,3*f2);rulelist=1 1 7 1 5 1 1; 1 2 7 1 3 1 1; 1 3 6 2 1 1 1; 1 4 6 2 1 1 1; 1 5 5 3 1 1 1; 1 6 4 4 2 1 1; 1 7 4 4 5 1 1; 2 1 7 1 5 1 1; 2 2 7 1 3 1 1; 2 3 6 2 1 1 1; 2 4 5 3 2 1 1; 2 5 5 3 2 1 1; 2 6 4 4 3 1 1; 2 7 3 4 4 1 1; 3 1 6 1 4 1 1; 3 2 6 2 3 1 1; 3 3 6 3 2 1 1; 3 4 5 3 2 1 1; 3 5 4 4 3 1 1; 3 6 3 5 3 1 1; 3 7 3 5 4 1 1; 4 1 6 2 4 1 1; 4 2 6 2 3 1 1; 4 3 5 3 3 1 1; 4 4 4 4 3 1 1; 4 5 3 5 3 1 1; 4 6 2 6 3 1 1; 4 7 2 6 4 1 1; 5 1 5 2 4 1 1; 5 2 5 3 4 1 1; 5 3 4 4 4 1 1; 5 4 3 5 4 1 1; 5 5 3 5 4 1 1; 5 6 2 6 4 1 1; 5 7 2 7 4 1 1; 6 1 5 4 7 1 1; 6 2 4 4 5 1 1; 6 3 3 5 5 1 1; 6 4 2 5 5 1 1; 6 5 2 6 5 1 1; 6 6 2 7 5 1 1; 6 7 1 7 7 1 1; 7 1 4 4 7 1 1; 7 2 4 4 6 1 1; 7 3 2 5 6 1 1; 7 4 2 6 6 1 1; 7 5 2 6 5 1 1; 7 6 1 7 5 1 1; 7 7 1 7 7 1 1; a=addrule(a,rulelist); a1=setfis(a,DefuzzMethod,centroid); ts=0.001;%采样时间sys=tf(5.235e005,1,87.35,1.047e004,0);%定义 括号里有几个数就有几阶连续系统dsys=c2d(sys,ts,z);%连续到离散num,den=tfdata(dsys,v);%分子 分母取值 把上边系数 存DATA里 Kp=0.50;Ki=0.001;Kd=0.0001; U_1=0; U_2=0;U_3=0; Y_1=0;Y_2=0;Y_3=0; e_1=0;e_2=0; ec_1=0; pid=0,0,0;kp0=0.3;ki0=0.06;kd0=3; A=Kp+Ki+Kd; B=-Kp-2*Kd; C=Kd;for k=1:1:2000 %k=1 以1为增量增到1500 pid=evalfis(e_1 ec_1,a); kp=kp0+pid(1); ki=ki0+pid(2); kd=kd0+pid(3); rin(k)=1*sign(sin(1*2*pi*k*ts); time(k)=k*ts; yout(k)=-den(2)*Y_1-den(3)*Y_2-den(4)*Y_3+num(2)*U_1+num(3)*U_2+num(4)*U_3; error(k)=rin(k)-yout(k); u(k)=A*error(k)+B*e_1+C*e_2; u(k)=U_1+u(k); U_3=U_2;U_2=U_1;U_1=u(k); Y_3=Y_2;Y_2=Y_1;Y_1=yout(k); e_2=e_1;e_1=error(k); ec_1=error(k)-e_1;Endfigure(1);%画图 开图框plot(time,rin,b,time,yout,r);%time是变量 横坐标 time 和rin长度要一样xlabel(time(s),ylabel(rin,yout); (四)实验结果:5) 实验总结: 通过该实验的练习让我对模糊控制有了深入的了解,知道了模糊控制的基本思想和原理,熟悉了各种模糊控制系统工具箱函数的用法,加深了对模糊控制的理解和编程方法,对各种隶属度函数有了进一步的理解,对模糊控制的应用也有了更加直观的理解,也熟悉了matlab软件的功能实验三、BP神经网络控制实验(一)实验目的:1、掌握BP神经网络基本原理。2、掌握基于BP神经网络的PID控制算法原理并编程实现。(二)实验内容:1、BP神经网络分类编程实验。2、基于BP神经网络的PID控制算法编程实验。(三)实验程序:clear all;close all;clc;xite=0.25;alfa=0.05;S=1;IN=4;H=5;Out=3;if S=1 wi=-0.6394 -0.2696 -0.3756 -0.7023; -0.8603 -0.2013 -0.5024 -0.2594; -1.0749 0.5543 -1.6820 -0.5437; -0.3625 -0.0724 -0.6463 -0.2859; 0.1425 0.0279 -0.5406 -0.7660; wi_1=wi;wi_2=wi;wi_3=wi; wo=0.7576 0.2616 0.5820 -0.1416 -0.1325; -0.1146 0.2949 0.8352 0.2205 0.4508; 0.7201 0.4566 0.7672 0.4962 0.3632; wo_1=wo;wo_2=wo;wo_3=wo;endif S=2 wi=-0.2846 0.2193 -0.5097 -1.0668; -0.7484 -0.1210 -0.4708 0.0988; -0.7176 0.8297 -1.6000 0.2049; -0.0858 0.1925 -0.6346 0.0347; 0.4358 0.2369 -0.4564 -0.1324; wi_1=wi;wi_2=wi;wi_3=wi; wo=1.0438 0.5478 0.8682 0.1446 0.1537; 0.1716 0.5811 1.1214 0.5067 0.7370; 1.0063 0.7428 1.0534 0.7824 0.6494; wo_1=wo;wo_2=wo;wo_3=wo;endx=0,0,0;u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;y_1=0;y_2=0;y_3=0;Oh=zeros(H,1);error_2=0;error_1=0;ts=0.001;for k=1:1:1000 time(k)=k*ts;if S=1 rin(k)=1.0;elseif S=2; rin(k)=sin(1*2*pi*k*ts);enda(k)=1.2*(1-0.8*(exp(-0.1*k)3;yout(k)=a(k)*y_1/(1+y_12)+u_1;error(k)=rin(k)-yout(k);xi=rin(k),yout(k),error(k),1;x(1)=error(k)-error_1;x(2)=error(k);x(3)=error(k)-2*error_1+error_2;epid=x(1);x(2);x(3);I=xi*wi;for i=1:5 oh(i)=(exp(I(i)-exp(-I(i)/(exp(I(i)+exp(-I(i);end %oh隐层输出KI=wo*oh; %KI输出层的输入for i=1:3 K(i)=exp(KI(i)/(exp(KI(i)+exp(-KI(i);endkp(k)=K(1);ki(k)=K(2);kd(k)=K(3);Kpid=kp(k),ki(k),kd(k);du(k)=Kpid*epid;u(k)=u_1+du(k);if u(k)=10 u(k)=10;endif u(k)=-10 u(k)=-10;endfor i=1:3 d_f(i)=2/(exp(KI(i)+exp(-KI(i)2);enddelta3=error(k)*d_f;d_wo=-delta3*oh;wo_1=wo;wo=wo_1+d_wo;for i=1:1:H dO(i)=4/(exp(I(i)+exp(-I(i)2;end segma=delta3*wo;for i=1:1:H delta2(i)=dO(i)*segma(i);endd_wi=xite*delta2*xi;wi=wi_1+d_wi+alfa*(wi_1-wi_2);u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);y_2=y_1;y_1=yout(k);wo_3=wo_2;wo_2=wo_1;wo_1=wo;wi_3=wi_2;wi_2=wi_1;wi_1=wi;error_2=error_1;error_1=error(k);endfigure(1);plot(time,rin,r,time,yout,b);xlabel(time(s);ylabel(rin,yout);figure(2);plot(time,error,r);xlabel(time(s);ylabel(error);figure(3);plot(time,u,r);xlabel(time(s);ylabel(u);figure(4);subplot(311)plot(time,kp,r);xlabel(time(s);ylabel(kp);subplot(312)plot(time,ki,g);xlabel(time(s);ylabel(ki);subplot(313)plot(time,kd,b);xlabel(time(s);ylabel(kd);(4) 实验结果:(五)实验总结:通过编程实现使用BP网络对函数进行逼近,对BP网络的信号和误差传递的原理以及隐层、输出层权值调整的规则有了充分的理解和认识。BP网络是一个强大的工具,它是应用最为广泛的网络。用于文字识别、模式分类、文字到声音的转换、图像压缩、决策支持等。但是,通过实验看出,它还是存在一定的不足。由于本实验中采用的学习率是固定不变的,从而使得在函数逼近的时候在有些地方出现了偏离,如果能自适应的调整学习率,使网络在学习初期具有较大的学习率,以快速逼近函数,当已经逼近理想输出时再使用较小的学习率,来更加精准的去逼近函数,这样会得到更好的逼近效果和更小的错误率。另外,BP网络还具有收敛速度慢、容易陷入局部极小值的问题。这些问题通过对标准BP算法的改进能得到一定程度的解决。
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!