1、智能控制课后仿真报告院 (系): 电气与控制工程学院 专业班级: 自动化 1301 班 姓 名: 杨 光 辉 学 号: 1306050115 题目 2-3:求二阶传递函数的阶跃相应 取采样时间为SG2513p)(1ms 进行离散化。参照专家控制仿真程序,设计专家 PID 控制器,并进行 MATLAB 仿真。专家 PID 控制 MATLAB 仿真程序清单:%Exoert PID Controllerclear all;%清理数据库中所有数据close all;%关闭所有界面图形ts=0.001;%对象采样时间,1mssys=tf(133,1,25,0);%受控对象的传递函数dsys=c2d(sy
2、s,ts,z);%连续系统转化为离散系统num,den=tfdata(dsys,v);%离散化后参数,得 num 和 den 值u_1=0;u_2=0;%设定初值,u_1 是第(k-1) 步控制器输出量y_1=0;y_2=0;%设定初值,y_1 是第(k-1) 步系统对象输出量x=0,0,0;%设定误差 x1 误差导数 x2 误差积分 x3 变量初值x2_1=0;%设定误差导数 x2_1 的初值kp=0.6;%设定比例环节系数ki=0.03;%设定积分环节系数kd=0.01;%设定微分环节系数error_1=0;%设定误差 error_1 的初值for k=1:1:5000%for 循环开始,
3、k 从 1 变化到 500,每步的增量为 1time(k)=k*ts;%仿真时长0.001 0.5sr(k)=1.0;%Tracing Step Signal 系统输入信号u(k)=kp*x(1)+kd*x(2)+ki*x(3);%PID ControllerPID 控制器%Expert control rule%Rule1:Unclosed control rule 规则 1:开环控制if abs(x(1)0.8%if 循环开始,产生式规则,if.then.;误差的绝对值大于u(k)=0.45;%控制器输出量等于elseif abs(x(1)0.40u(k)=0.40;elseif abs(
4、x(1)0.20u(k)=0.12;elseif abs(x(1)0.01u(k)=0.10;end%if 循环结束%Rule2 规则 2if x(1)*x(2)0|(x(2)=0)%if 循环开始,如果误差增大或不变if abs(x(1)=0.05%内嵌 if 循环开始,如果误差绝对值大于u(k)=u_1+2*kp*x(1);%控制器输出量施加较强控制else%否则u(k)=u_1+0.4*kp*x(1);%控制器输出量施加一般控制end%内嵌 if 循环结束end%if 循环结束%Rule3 规则 3if (x(1)*x(2)0)|(x(1)=0)%if 循环开始,如果误差减小或消除u(k
5、)=u(k);%控制器输出量不变end%if 循环结束%Rule4 规则 4if x(1)*x(2)=0.05%内嵌 if 循环开始,如果误差绝对值大于u(k)=u_1+2*kp*error_1;%控制器输出量施加较强控制else%否则u(k)=u_1+0.6*kp*error_1;%控制器输出量施加一般控制end%内嵌 if 循环结束end%if 循环结束%Rule5:Integration separation PI control 规则 5;运用 PI 控制来消除误差if abs(x(1)=10u(k)=10;%设控制器输出量上限值endif u(k)=-10u(k)=-10;%设控制器
6、输出量下限值end%Linear model Z 变化后系统的线性模型y(k)=-den(2)*y_1-den(3)*y_2+num(1)*u(k)+num(2)*u_1+num(3)*u_2;error(k)=r(k)-y(k);%系统误差 error 的表达式,等于系统输入减去输出%-Return of parameters-%每步计算时的参数更新u_2=u_1;u_1=u(k);%u(k)代替 u_1y_2=y_1;y_1=y(k);%y(k)代替 y_1x(1)=error(k);%Calculating P 赋误差 error 值于 x1x2_1=x(2);%赋值前步计算时的误差导数
7、 X2 的值等于 X2_1x(2)=(error(k)-error_1)/ts;% Calculating D 求误差导数 x2,用于下一步的计算x(3)=x(3)+error(k)*ts;% Calculating I 求误差积分 x3error_1=error(k);%赋误差 error 值于 error_1end%for 循环结束,整个仿真时长计算全部结束figure(1);%图形 1plot(time,r,b,time,y,r);%画图,以时间为横坐标,分别画出系统输入、输出随时间的变化曲线xlabel(time(s);ylabel(r,y);%标注坐标figure(2);%图形 2p
8、lot(time,r-y,r);%画 r-y,即误差随时间的变化曲线xlabel(time(s);ylabel(error);%标注坐标专家 PID 控制 MATLAB 仿真程序过程及结果:1.在 MATLAB 编辑环境下编写专家 PID 控制仿真程序2.编译运行程序后Figure1:PID 控制阶跃响应曲线Figure2:误差响应随时间变化曲线题目 3-4:如果 且 ,则 。现已知21x5.0A321y5.0B21z.0C且 ,利用模糊推理公式(3.27)和21.x80321y.(3.28)求 ,并采用 MATLAB 进行仿真。C模糊推理 MATLAB 仿真程序清单:clear all;%清
9、理数据库中所有数据close all;%关闭所有界面图形?A=1;0.5;%输入各元素在 A 中的隶属度B=0.1,0.5,1;%输入各元素在 B 中的隶属度C=0.2,1;%输入各元素在 C 中的隶属度%Compound of A and B %合成 A 和 Bfor i=1:2%A 矩阵的行数取值 ifor j=1:3%B 矩阵的列数取值 j AB(i,j)=min(A(i),B(j);%实现 A,B 的“与”关系end end %Transfer to Column %转换列向量T1=;%定义转置矩阵 T1for i=1:2%AB 矩阵的行数取值 i T1=T1;AB(i,:);%转置
10、AB 矩阵end %Get fuzzy R %确立模糊关系矩阵 Rfor i=1:6%R 矩阵列数取值 i for j=1:2%R 矩阵行数取值 j R(i,j)=min(T1(i),C(j);%确定模糊关系矩阵 Rend end%A1=0.8,0.1;%输入各元素在 A1 中的隶属度 B1=0.5,0.2,0;%输入各元素在 B1 中的隶属度 for i=1:2%A1 矩阵的行数取值 i for j=1:3%B1 矩阵的行数取值 j AB1(i,j)=min(A1(i),B1(j);%实现 A1 和 B1 的“与”关系end end %Transfer to Row%转换行向量 T2=;%定义转置矩阵 T2for i=1:2%AB1 矩阵的行数取值 iT2=T2,AB1(i,:);%扩展 A1B1 矩阵end %Get output C1%确定输出for i=1:6%转置矩阵 T2 列数取值for j=1:2%模糊矩阵 R 行数取值 D(i,j)=min(T2(i),R(i,j); C1(j)=max(D(:,j);%输出 C1 矩阵 end end模糊推理 MATLAB 仿真程序过程及结果:1.在 MATLAB 编辑环境下编写模糊推理仿真程序2.编译运行程序后AB 与关系:转置矩阵 T1:模糊矩阵 R:A1B1 与关系:
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。