- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《智能控制》课后仿真报告院(系):电气与控制工程学院专业班级: 自动化1301班姓名: 杨 光 辉 学号:1306050115题目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.0010.5]sr(k)=1.0;%TracingStepSignal系统输入信号u(k)=kp*x(1)+kd*x(2)+ki*x(3);%PIDControllerPID控制器%Expertcontrolrule%Rule1:Unclosedcontrolrule规则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(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)0x(2)*x2_10)|(x(1)==0)%if循环开始,如果误差减小或消除u(k)=u(k);%控制器输出量不变end%if循环结束%Rule4规则4if 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:IntegrationseparationPIcontrol规则5;运用PI控制来消除误差if abs(x(1))=0.001 %if循环开始如果误差绝对值小于(很小)u(k)=0.5*x(1)+0.010*x(3);%控制器输出量用比例和积分输出end%if循环结束%Restrictingtheoutputofcontroller对控制输出设限if u(k)=10u(k)=10;%设控制器输出量上限值endif u(k)=-10u(k)=-10;%设控制器输出量下限值end%LinearmodelZ变化后系统的线性模型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的表达式,等于系统输入减去输出%--------Returnofparameters--------%每步计算时的参数更新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);%CalculatingP赋误差error值于x1x2_1=x(2);%赋值前步计算时的误差导数X2的值等于X2_1x(2)=(error(k)-error_1)/ts;%CalculatingD求误差导数x2,用于下一步的计算x(3)=x(3)+error(k)*ts
文档评论(0)