智能控制课后仿.docxVIP

  • 21
  • 0
  • 约5.91千字
  • 约 18页
  • 2018-12-12 发布于江苏
  • 举报
智能控制课后仿

《智能控制》 课后仿真报告 院 (系): 电气与控制工程学院 专业班级: 自动化1301班 姓 名: 杨 光 辉 学 号: 1306050115 题目2-3: 求二阶传递函数的阶跃相应取采样时间为1ms进行离散化。参照专家控制仿真程序,设计专家PID控制器,并进行MATLAB仿真。 专家PID 控制MATLAB仿真程序清单: %Exoert PID Controller clear all;%清理数据库中所有数据 close all;%关闭所有界面图形 ts=0.001;%对象采样时间,1ms sys=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,每步的增量为1 time(k)=k*ts;%仿真时长[0.001 0.5]s r(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.40 u(k)=0.40; elseif abs(x(1))0.20 u(k)=0.12; elseif abs(x(1))0.01 u(k)=0.10; end%if循环结束 %Rule2规则2 if 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规则3 if (x(1)*x(2)0x(2)*x2_10)|(x(1)==0)%if循环开始,如果误差减小或消除 u(k)=u(k);%控制器输出量不变 end%if循环结束 %Rule4规则4 if x(1)*x(2)0x(2)*x2_10%if循环开始,如果误差处于极值状态 if abs(x(1))=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))=0.001 %if循环开始如果误差绝对值小于(很小) u(k)=0.5*x(1)+0.010*x(3);%控制器输出量用比例和积分输出 end%if循环结束 %Restricting the output of controller对控制输出设限 if u(k)=10 u(k)=10;%设控制器输出量上限值 end if u(k)=-10 u(k)=-10;%设控制器输出量下限值 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(

文档评论(0)

1亿VIP精品文档

相关文档