精品文档---下载后可任意编辑《智能控制》课后仿真报告院(系):电气与控制工程学院专业班级: 自动化 1301 班 姓名: 杨 光 辉 学号:13060501 15 题目 2-3: 求二阶传递函数的阶跃相应取采样时间为 1ms 进行离散化。参照专家控制仿真程序,设计专家 PID 控制器,并进行 MATLAB 仿真。专家 PID 控制 MATLAB 仿真程序清单:%Exoert PID Controllerclear all;%清理数据库中所有数据close all;%关闭所有界面图形ts=0.001;%对象采样时间,1mssys=tf(133,[1,25,0]);%受控对象的传递函数dsys=c2d(sys,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 循环开始,k 从 1 变化到 500,每步的增量为 1time(k)=k*ts;0.5]sr(k)=1.0;%TracingStepSignal 系统输入信号u(k)=kp*x(1)+kd*x(2)+ki*x(3);%PIDControllerPID 控制器%Expertcontrolrule%Rule1:Unclosedcontrolrule 规则 1:开环控制if%if 循环开始,产生式规则,if...then...;误差的绝对值大于u(k)=0.45;%控制器输出量等于elseifu(k)=0.40;elseifu(k)=0.12;elseifu(k)=0.10;end%if 循环结束%Rule2 规则 2if x(1)*x(2)>0|(x(2)==0)%if 循环开始,假如误差增大或不变if%内嵌 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(2)*x2_1>0)|(x(1)==0)%if 循环开始,假如误差减小或消除u(k)=u(k);%控制器输出量不变end%if 循环结束%Rule4 规则 4if x(1)*x(2)<0&x(2)*x2_1<0%if 循环开始,假如误差处于极值状态if%内嵌 if 循环开始,假如误差绝对值大于u(k)=u_1+2*kp*error_1;%控制器输出量施加较强控制else%否则u(k)=u_1+0.6*kp*error_1;%控制器输出量施加一般控制end%内嵌 if 循环结束end%if 循环结束%Rule5:IntegrationseparationPIcontrol 规则 5;运用 PI 控制来消除误...