计算机仿真试验报告自动化1201**3120502007[实验目的](1).掌握采样控制系统数字仿真的特点。(2).了解数字控制器对系统动态性能的影响。(3).学会编制双重循环法的仿真程序。[实验内容]某单位反馈控制系统中,被控对象的传递函数为)1(10)(0sssG在单位速度信号输入ttr)(下,选择零阶保持器在1sT时设计的“最少拍”控制器为2121718.0282.010999.0471.0543.0)(zzzzzD(1).按实验目的、要求和已知条件,建立系统的Simulink模型,并且编制双重循环法的仿真程序。(2).分别运行双重循环法的仿真程序和Simulink模型,观察纪录系统动态性能的变化。(3).若数字控制器改为“无纹波”控制器2121593.0407.01825.0365.0383.0)(zzzzzD试对两种情况下的输出进行比较。[预习要求](1).复习采样控制系统的仿真原理及特点。(2).根据理论分析,初步估计系统在给定条件下可能出现的动态过程。(1).按实验目的、要求和已知条件,建立系统的Simulink模型,并且编制双重循环法的仿真程序。1)Simulink模型建立:根据题目给出的条件,数字控制系统的结构图如下图所示:其中的其中数字控制器为:1221220.5430.4710.09990.5430.4710.0999()10.2820.7180.2820.718zzzzDzzzzz(1)根据上面结构图,所建立Simulink模型如下图所示:2)编制双重循环法的仿真程序根据数字控制系统的结构图与条件(1)式,我们可以得到得到被控对象的状态空间模型:112212()()0010()()()110()()01()xtxtutxtxtxtytxt(2)按连续系统离散相似算法将(2)式离散化。为了保证精度,其离散化时的步长h(虚拟采样周期)应比数字控制器的实际采样周期T(=1s)小得多。为简化起见,取h=T/N=T/100=0.01T=0.01s。利用MATLAB控制系统工具箱提供的将连续系统转换成离散系统的函数c2d,把连续状态空间模型(2)变换为离散状态空间模型。离散程序如下(程序1):clear;h=0.01;A=[00;1-1];B=[10;0];[G,H]=c2d(A,B,h)运行后的结果为:即:10(())0.010.99TGΦ(3)0.1(())0.0005THΓ(4)故连续系统被控对象(2)的等价离散化状态方程为:112212(1)()100.1()(1)()0.010.990.0005()()01()xkxkukxkxkxkykxk(5)根据上述条件,采样控制系统数字控制器的差分方程为()0.282(1)0.718(2)0.543()0.471(1)0.0999(2)ukukukekekek(6)式中:()()()ekrkyk(7)根据例题3.2中仿真框图分别递推求解(5)式和(6)式的MATLAB仿真程序:程序2如下:clearG=[10;0.010.99];H=[0.1;0.0005];c=[01];%连续被控对象的离散化状态方程的系数阵h=0.01;T=1;%设定内循环步长h=0.01,而外循环则以采样周期T=0.1为步长N=round(T/h);%在一采样周期内连续被控对象的离散化状态方程递推N次(内循环)TF=15;%设定总仿真时间为15sM=round(TF/T);%数字控制器的差分方程递推M次(外循环)x=[0;0];u=zeros(1,M+2);e=zeros(1,M+2);u(1)=0;u(2)=0;t=0;xt=x;fori=1:M%外循环y=c*x;r(i)=i;e(i+2)=r(i)-y;u(i+2)=0.282*u(i+1)+0.718*u(i)+0.543*e(i+2)-0.471*e(i+1)+0.0999*e(i);%外循环中递推求数字控制器在实际采样时刻的输出(步长为T)forj=1:N%内循环x=G*x+h*u(i+2);%内循环中递推求受控对象状态响应(步长为h)xt=[xt,x];%yt为记载各步状态响应的矩阵t=[t,j*h+(i-1)*T];%t为记载各采样(kT)时刻的行向量(与yt对应)endendx2t=xt(2,:);plot(t,t,':k',t+T,x2t,'k');legend('r','y');grid;xlabel('time(s)');title('双重循环法仿真程序的运行结果');(2).分别运行双重循环法的仿真程序和Simulink模型,观察纪录系统动态性能的变化。1)运行双重循环法的仿真程序结果如下所示:2)运行Simulink模型结果如下图所示:进行对比发现,两种方法结果基本相同。双重循环法通用性较强,不仅可得到控制系统的输出值,还可得到被控对象内部状态变量的响应;也可用于被控对象中含有典型非线性环节的非线性系统的仿真。克服了差分方程递推求解法不能计算被控对象的内部状态变量的响应特性,对被控对象含有非线性环节的情况也不适用的局限性。(3).若数字控制器改为“无纹波”控制器2121593.0407.01825.0365.0383.0)(zzzzzD试对两种情况下的输出进行比较。1)更改只需改DiscreteTransferFcn参数即可,Simulink模型为:输出结果如下:2)双重循环法:改变数字控制器后,连续系统离散化模型是不变的,只需将控制系统差分方程改写即可:()0.407(1)0.593(2)0.383()0.365(1)0.825(2)ukukukekekek(7)重新编写双重循环仿真程序如下(程序3):clearG=[10;0.010.99];H=[0.1;0.0005];c=[01];%连续被控对象的离散化状态方程的系数阵h=0.01;T=1;%设定内循环步长h=0.01,而外循环则以采样周期T=0.1为步长N=round(T/h);%在一采样周期内连续被控对象的离散化状态方程递推N次(内循环)TF=15;%设定总仿真时间为15sM=round(TF/T);%数字控制器的差分方程递推M次(外循环)x=[0;0];u=zeros(1,M+2);e=zeros(1,M+2);u(1)=0;u(2)=0;t=0;xt=x;fori=1:M%外循环y=c*x;r(i)=i;e(i+2)=r(i)-y;u(i+2)=0.407*u(i+1)+0.593*u(i)+0.383*e(i+2)-0.365*e(i+1)+0.0825*e(i);%外循环中递推求数字控制器在实际采样时刻的输出(步长为T)forj=1:N%内循环x=G*x+h*u(i+2);%内循环中递推求受控对象状态响应(步长为h)xt=[xt,x];%yt为记载各步状态响应的矩阵t=[t,j*h+(i-1)*T];%t为记载各采样(kT)时刻的行向量(与yt对应)endendx2t=xt(2,:);plot(t,t,':k',t+T,x2t,'k');legend('r','y');grid;xlabel('time(s)');title('“无波纹”双重循环法仿真结果');程序运行结果输出如下所示: