1控制系统CAD案例2【例1】已知单位反馈系统的被控对象的开环单位阶跃响应数据(存在随机扰动)在文件SourseData.mat中,tout是采样时间点,yout是对应于采样时间点处的单位阶跃响应数据。试设计串联补偿器,使得:①在单位斜坡信号ttr)(的作用下,系统的速度误差系数Kv≥30sec-1;②系统校正后的截止频率ωc≥2.3sec-1;③系统校正后的相位稳定裕度Pm≥40°。设计步骤:1根据原始数据得到被控对象的单位阶跃响应被控对象的开环单位阶跃响应数据在文件SourseData.mat中。在MATLAB指令窗中键入:loadSourseDataplot(tout,yout)xlabel('tout')ylabel('yout')title('原始响应曲线')2由所给数据可看出,仿真步长为0.05s,仿真时间为10s。以时间tout为横坐标,输出yout为纵坐标,得到单位阶跃响应随时间的变化曲线如图1所示。图1被控对象的单位阶跃响应2系统模型的辨识由于被控对象模型结构未知,题中仅给出了被控对象的单位阶跃响应。因此需要根据原始的数据分析得出原系统的基本结构。至于结构以及参数的最终确定,将使用MATLAB的系统辨识工具箱来实现。3(1)预处理由图1可以看出被控对象模型中含积分环节,因此,对响应输出求导后进行辨识,即去积分。再对辨识出的模型积分,即得被控对象模型。对给定输出进行求导处理:ttyttyty)()(dd在MATLAB指令窗中键入:dy=(yout(2:end,:)-yout(1:end-1,:))/0.05;%差分代替导数t=tout(1:end-1,:);plot(t,dy)xlabel('t')ylabel('dy/dt')title('原始响应的导数曲线')以时间t为横坐标,输出dy为纵坐标,得到单位阶跃响应的导数随时间的变化曲线如图2所示。4图2被控对象的单位阶跃响应的导数(2)系统模型结构的估计系统辨识工具箱提供的模型结构选择函数有struc、arxstruc和selstruc。函数struc生成arx结构参数,调用格式为:nn=struc(Na,Nb,Nk)其中,Na、Nb分别为arx模型多项式A(q)、B(q)的阶次范围;Nk为arx模型纯滞后的大小范围;nn为模型结构参数集构成的矩阵。5函数arxstruc用来计算arx模型结构的损失函数,即归一化的输出预测误差平方和,调用格式为:v=arxstruc(ze,zv,nn)其中,ze=[yu]为模型辨识的I/O数据向量或矩阵。zv=[yrur]为模型验证的I/O数据向量或矩阵。nn为多个模型结构参数构成的矩阵,nn的每行都具有格式:nn=[nanbnk]。v的第一行为各个模型结构损失函数值,后面的各行为模型结构参数。函数selstruc用来在损失函数的基础上进行模型结构选择,调用格式为:[nn,vmod]=selstruc(v,c)其中v由函数arxstruc获得的输出矩阵,为各个模型结构的损失函数。c为可选参数,用于指定模型结构选择的方式。根据图2所示曲线的形状初步估测被控对象的模型应该为二阶系统或者更高阶系统。并且可以看出,纯滞后为0,故Nk恒为零。在MATLAB指令窗中键入:u=ones(size(dy));Z=[dy,u];v2=arxstruc(Z,Z,struc(2,0:2,0));nn2=selstruc(v2,0);6v3=arxstruc(Z,Z,struc(3,0:3,0));nn3=selstruc(v3,0);v4=arxstruc(Z,Z,struc(4,0:4,0));nn4=selstruc(v4,0);得到如下结果:nn2=210nn3=320nn4=410于是,去除积分环节后的模型阶数为:二阶系统[210]、三阶模型[320]和四阶模型[410]。(3)系统模型结构的确定为了确定模型结构以及参数,使用MATLAB的系统辨识工具箱中已有的辨识函数arx()。辨识函数arx()的使用方法是:如果一直输入信号的列向量u,输出信号的列向量y,并选定了系统的分子多项式阶次m-1,分母多项式阶次n及系统的纯滞后d,则可以通过下面的指令辨识出系统的数学模型:T=arx([y,u],[n,m,d])该函数将直接显示辨识的结果,且所得的T为一个结构体,其中T.A和T.B分别表示辨识得到的分子和分母多项式。由给定的观测数据建立系统数学模型后,还需要进行检验,看模7型是否适用,如果不适用,则要修改模型结构,重新进行参数估计等。MATLAB的系统辨识工具箱中用于模型验证和仿真的函数主要有compare、resid、pe、predict和idsim。此次实验主要用的是函数compare对模型进行验证。函数compare可将模型的预测输出与对象实际输出进行比较。验证过程与结果如下所示。①对二阶系统的验证在MATLAB指令窗中键入:Z=iddata(dy,u,0.05);M=arx(Z,[2,2,0]);compare(M,Z)得到图3所示结果。8图3二阶模型的匹配结果②对三阶系统的验证在MATLAB指令窗中键入:Z=iddata(dy,u,0.05);M=arx(Z,[3,3,0]);compare(M,Z)得到图4所示结果。9图4三阶模型的匹配结果③对四阶系统的验证在MATLAB指令窗中键入:Z=iddata(dy,u,0.05);M=arx(Z,[4,2,0]);compare(M,Z)得到图5所示结果。10图5四阶模型的匹配结果④模型阶次的选取从图3~图5可以看出,三阶和四阶模型的拟合率已高达90%,并且相差不大。因此,为简便起见,本次试验选用三阶系统模型。在MATLAB指令窗中键入:M=oe(Z,[3,2,0]);H=tf(M)得到如下结果:11Transferfunctionfrominputu1tooutputy1:0.02835z^2+0.02835z+0.02835---------------------------------z^2-1.395z+0.4799Transferfunctionfrominputv@y1tooutputy1:0.009445Inputgroups:NameChannelsMeasured1Noise2Samplingtime:0.05上述模型为离散时间系统模型,为了得到连续时间系统模型,在MATLAB指令窗中键入:G=d2c(H(1))得到如下结果:Transferfunctionfrominputu1tooutputy1:0.02835s^2+1.037s+48.5----------------------------s^2+14.68s+48.51Inputgroups:NameChannels12Measured1(4)传递函数模型系数的修正得到模型的传递函数后,需要查看其开环单位阶跃响应,并与原始数据进行对比,看看是否吻合。为此,建立仿真模块analyse.mdl,如图6所示。图6辨识模型的Simulink模块并在MATLAB指令窗中键入:num=[0.02835,1.037,48.5];den=[1,14.68,48.51];sim('analyse',9.99)plot(t,dy,'r'),holdonplot(ymdl.time,ymdl.signals.values)legend('原始数据','辨识模型数据')得到图7所示结果。13图7原始数据与辨识模型数据的比较从图7可以看出,由oe模型得到的传递函数的阶跃响应曲线并不能与原始数据很好的拟合。故考虑在该传递函数的基础上,对其系数进行修改。①由于传递函数分子的高次项系数远小于其一次项系数,因此将其忽略。取分子为一次多项式,经验证对响应曲线影响并不大,但可以大大简化系统结构。在MATLAB指令窗中键入:num=[1.03748.5];den=[114.6848.51];14sim('analyse',9.99)plot(t,dy,'r'),holdonplot(ymdl.time,ymdl.signals.values)legend('原始数据','辨识模型数据')得到图8所示结果。图8原始数据与去除分子高次项的辨识模型数据的比较②调整系统的零点和极点。由于系统零点的作用为减小峰值时间,使系统响应速度加快,并且零点越接近虚轴,这种作用越显著。然而只对分子一次项的系数进行修改时,效果并不理想。因此,综合考虑,调节系统各个参数。经过多15次尝试,在MATLAB指令窗中键入:num=[1.150.55];den=[0.9815.0650.51];G=tf(num,den)sim('analyse',9.99)plot(t,dy,'r'),holdonplot(ymdl.time,ymdl.signals.values)legend('原始数据','辨识模型数据')得到如下结果和图9。Transferfunction:1.1s+50.55--------------------------0.98s^2+15.06s+50.5116图9原始数据与调整后的辨识模型数据的比较③计算匹配率根据公式:FIT=100(1-norm(Y-YHAT)/norm(Y-mean(Y)))(in%)在MATLAB指令窗中键入:yhat=ymdl.signals.values;ymean=zeros(size(dy));ymean(:)=mean(dy);fit=100*(1-norm(dy-yhat,2)/norm(dy-ymean,2))17得到如下结果:fit=92.8932可见,模型数据与原始数据的匹配率达92.8932%。(5)积分得出最终辨识模型考虑到原系统含有积分环节,对辨识出的模型进行积分。由给定原始数据看出,积分初值为0,从而得到最终辨识模型及其Simulink模块(图10,result.mdl):)51.5006.1598.0(55.501.1)(20sssssG图10最终辨识模型的Simulink模块比较辨识出的最终辨识模型的阶跃响应与原始数据的匹配率,在MATLAB指令窗中键入:num=[1.1,50.55];den=[0.98,15.06,50.51];sim('result',10)plot(tout,yout,'r'),holdonplot(ymdl.time,ymdl.signals.values)18legend('原始数据','辨识模型数据')yhat=ymdl.signals.values;ymean=zeros(size(yout));ymean(:)=mean(yout);fit=100*(1-norm(yout-yhat,2)/norm(yout-ymean,2))得到图11和如下结果:fit=99.0656图11最终辨识模型的阶跃响应与原始数据之比较可见,二者之间的匹配率高达99.0656%,满足要求。193根据最终辨识模型设计控制器法1(经典方法)(1)确定开环增益K0根据控制理论,给定被控对象为I型系统,单位斜坡响应的速度误差系数Kv=K=K0≥30sec-1,其中K0是系统的开环增益。取K0=30sec-1,则被控对象的传递函数为)51.5006.1598.0()55.501.1(30)(20sssssG在MATLAB指令窗中键入:clearnum=[30*1.1,30*50.55];den=[0.98,15.06,50.51,0];sys0=tf(num,den);figure(1);margin(sys0),gridfigure(2);step(feedback(sys0,1)),
本文标题:控制系统CAD案例
链接地址:https://www.777doc.com/doc-2378163 .html