实验一利用MATLAB分析系统状态空间模型一、实验设备计算机,MATLAB软件。二、实验目的1、熟悉MATLAB编程环境和基本语法,了解控制系统工具箱的常用函数;2、通过编程、上机调试,掌握系统状态空间表达式与传递函数相互转换方法。三、实验原理说明1、打开Matlab,选择“File\New\Script”可建立M文件;选择“File\New\Model”可建立模型文件。在命令行窗口可以直接输入命令,也可以观看运算结果,它是直接反映运算信息的重要窗口。2、设系统的模型如式(1.1)示。pmnRyRuRxDCxyBuAxx(1.1)其中A为n×n维系数矩阵、B为n×m维输入矩阵C为p×n维输出矩阵,D为传递阵,一般情况下为0,只有n和m维数相同时,D=1。系统的传递函数阵和状态空间表达式之间的关系如式(1.2)示。1()()()()numsGsCsIABDdens(1.2)式(1.2)中,)(snum表示传递函数阵的分子阵,其维数是p×m;)(sden表示传递函数阵的按s降幂排列的分母。四、实验内容与步骤1、采用MATLAB编程,求系统的传递函数阵或状态空间表达式。2、在MATLAB下调试程序,并检查是否运行正确。3、例1:已知SISO系统的传递函数为43235)(232sssssSG(1)将其输入到MATLAB工作空间并转换为零极点增益模型;(2)获得系统的状态空间模型。(3)程序:clearcloseallclcnum=[0153];den=[1234];[z,p,k]=tf2zp(num,den)[A,B,C,D]=tf2ss(num,den)运行结果:z=-4.3028-0.6972p=-1.6506+0.0000i-0.1747+1.5469i-0.1747-1.5469ik=1A=-2-3-4100010B=100C=153D=04、例2:已知SISO系统的状态空间表达式为,631234100010321321uxxxxxx321001xxxy(1)将其输入到MATLAB工作空间;(2)求系统的传递函数。(3)程序:clearcloseallclcA=[010;001;-4-3-2];B=[1;3;-6];C=[100];D=0;[num,den]=ss2tf(A,B,C,D,1)%或[num,den]=ss2tf(A,B,C,D)%状态空间表达式转换成传递函数的格式为[num,den]=ss2tf(a,b,c,d,u)%对多输入系统,必须具体化u,即指定第n个输入;单输入系统可忽略u(4)运行结果:num=01.00005.00003.0000den=1.00002.00003.00004.00005、给定系统的开环传递函数为)15.0)(11.0()12.0(10)(sssssG用MATLAB编程求得单位负反馈系统的状态空间方程。(提示:函数[numc,denc]=cloop(num,den,sign)做单位负反馈,先求单位负反馈系统的传递函数,再求系统的状态空间方程)(1)实验程序为:clearcloseallclcnum=[2,10];%系统描述den=[0.05,0.6,1,0];[numc,denc]=cloop(num,den,-1);%作系统的单位负反馈printsys(numc,denc);[a,b,c,d]=tf2ss(numc,denc)%单位负反馈系统的状态空间方程(2)运行结果为:num/den=2s+10-----------------------------0.05s^3+0.6s^2+3s+10a=-12.0000-60.0000-200.00001.00000001.00000b=100c=040200d=0五、思考题例1中得到的状态空间模型和例2的状态空间表达式不一致,是运行结果出错了吗?请说明原因。实验二利用MATLAB求解系统的状态方程一、实验设备计算机,MATLAB软件。二、实验目的1、通过编程、上机调试,掌握求解系统状态方程的方法,学会绘制状态响应曲线;2、掌握利用MATLAB导出连续状态空间模型的离散化模型的方法。三、实验原理说明1、线性定常连续系统的状态方程求解如果线性定常连续系统的状态空间表达式为BuAxxDuCxy且初始状态为)0(x,那么状态方程解的拉氏变换式为)()()0()()(11sBuAsIxAsIsx其解为ttAAtdBuexetx0)()()0()(其中零输入响应为)0(xeAt或)0(}){(11xAsIL零状态响应为dBuettA)(0)(或)}(){(11sBuAsIL系统的输出响应为)()}()()0()({111tDusBuAsICxAsICL2、MATLAB提供的函数step()、lsim()和initial()可以求得系统响应的数值解。(1)Matlab中,时间区间变量(数组)t有三种格式:t=Tintial:dt:Tfinal表示仿真时间段为[Tintial,Tfinal],仿真时间步长为dtt=Tintial:Tfinal表示仿真时间段为[Tintial,Tfinal],仿真时间步长dt缺省为1t=Tfinal表示仿真时间段为[0,Tfinal],系统自动选择仿真时间步长dt若时间数组缺省(没有指定),表示系统自动选择仿真时间区间[0,Tfinal]和仿真时间步长dt。(2)阶跃响应函数step(),可用于计算在单位阶跃输入和零初始状态(条件)下传递函数模型的输出响应,或状态空间模型的状态和输出响应,其主要调用格式为step(sys,t)[y,t]=step(sys,t)[y,t,x]=step(sys,t)其中,对第1、2种调用格式,sys为传递函数模型变量或状态空间模型变量;对第3种方式,sys为状态空间模型变量。t为指定仿真计算状态响应的时间数组,可以缺省。(3)初始状态响应函数initial(),主要是计算状态空间模型(A,B,C,D)的初始状态响应,其主要调用格式为initial(sys,x0,t)[y,t,x]=initial(sys,x0,t)其中sys为输入的状态空间模型;x0为给定的初始状态;t为指定仿真计算状态响应的时间区间变量(数组)。第1种调用格式的输出格式为输出响应曲线图,第2种调用格式的输出为数组形式的输出变量响应值y,仿真时间坐标数组t,状态变量响应值x。(4)任意输入的系统响应函数lsim(),用于计算在给定的输入信号序列(输入信号函数的采样值)下传递函数模型的输出响应,或状态空间模型的状态和输出响应,其主要调用格式为lsim(sys,u,t,x0)[y,t,x]=lsim(sys,u,t,x0)其中,sys为传递函数模型变量或状态空间模型变量;t为时间坐标数组;u是输入信号u(t)对应于时间坐标数组t的各时刻输入信号采样值组成的数组,是求解系统响应必须给定的。(5)信号生成函数gensig(),gensig()的调用格式为[u,t]=gensig(type,tau)[u,t]=gensig(type,tau,Tf,Ts)其中,type为选择信号类型的符号串变量;tau为以秒为单位的信号周期;Tf和Ts分别为产生信号的时间长度和信号的采样周期。gensig函数可以产生的信号类型type为正弦信号sin、方波信号square、周期脉冲信号pulse。所有信号的幅值为1。(6)在MATLAB中,连续系统和离散系统的状态空间模型都用MATLAB提供的函数ss()建立。函数ss()不仅能用于建立系统的状态空间模型,也能用于将系统的传递函数模型和零极点增益模型转换为状态空间模型。该函数的调用格式如下:),,,(DCBAssG返回连续系统的状态空间模型G。),,,,(TsDCBAssG返回离散系统的状态空间模型G。Ts为采样周期,当Ts=1或者Ts=[]时,系统的采样周期未定义。)(GssGss可将任意的LTI模型G转换为状态空间模型Gss。(7)连续系统经采样而离散化的函数c2d(),该函数的功能为将连续系统的传递函数模型或者状态空间模型变换为离散系统的传递函数模型或者状态空间模型,主要调用格式为:sysd=c2d(sys,Ts)sysd=c2d(sys,Ts,method)其中,Ts为采样周期;method为离散化方法选择变量,可以为‘zoh’,‘foh’,‘tustin’,‘matched’等,分别对应于基于0阶和1阶保持器的离散化法、双线性法和零极点匹配法。‘zoh’表示精确离散法,采样系统的输入信号采样后将通过0阶保持器。四、实验内容与步骤1、已知系统为uxx103210xy11初始状态为11)0(x,试求系统在初始状态作用下的状态响应和输出响应,并绘制状态响应曲线和输出响应曲线。(1)程序A=[01;-2-3];B=[0;1];C=[11];D=0;sys=ss(A,B,C,D);t=0:0.5:10;x0=[1;-1];[yo,t,xo]=initial(sys,x0,t);plot(t,xo,'*',t,yo,'-')(2)运行结果:2、在Matlab中计算如下系统在[0,10s]内,周期T=3s的单位方波输入下的状态响应和输出响应,绘制输入信号、状态响应和输出响应曲线。uxx103210,xy11初始状态210x(1)思路:获得系统状态空间模型;生成输入方波信号;产生系统的状态响应和输出响应。(2)程序:clearcloseallclcA=[01;-2-3];B=[0;1];C=[11];D=[];x0=[1;2];sys=ss(A,B,C,D);[u,t]=gensig('square',3,10,0.1)[y,t,x]=lsim(sys,u,t,x0);plot(t,u,’red’,t,x,’green’,t,y,’blue’)实验三小车倒立摆控制系统仿真实验一、实验设备计算机、Mtalab软件二、实验目的1、进一步熟悉Matlab使用环境,初步掌握Matlab仿真工具;2、学会建立和分析系统状态空间模型,实现对小车倒立摆伺服系统的仿真控制。三、实验原理说明1、车载单倒立摆系统原理图如图1所示。长度为l,质量为m的单倒立摆,用铰链安装在质量为M的小车上,小车受执行电机控制,在水平方向施加控制力u,相对参考系产生位移x。为简化问题并保留车载倒立摆实质不变,忽略摆杆质量、执行电机惯性以及摆轴、轮轴、轮与接触面直接的摩擦及风力。若不给小车施加控制力,倒立摆会向左或向右倾倒,是一个不稳定系统。对系统控制的目的是:当倒立摆出现摆角θ后能通过小车的水平运动使倒立摆保持在垂直位置。2、实验要求:建立系统数学模型和状态空间模型,实现对系统的仿真控制,使以小车位置x作为输出的闭环系统具有极点:5,5,5,31j四、实验内容与步骤1、依据牛顿第二定律,建立倒立摆的运动方程并将其线性化。在u的作用下,小车及倒立摆均产生加速运动,在水平直线运动方向的惯性力与U平衡,于是有ulxdtdmdtxdM)sin(2222即umlmlxmMsincos)(2(1)绕摆轴旋转运动的惯性力矩应与重力矩平衡,因而有sincos)sin(dtdm22mglllx即sincossincoscosx22gll(2)对式(1)和式(2)进行线性化处理。由于控制的目的是保持倒立摆直立,在施加合适的控制力u的条件下,假定,均接近于0是合理的此时1cos,sin,且2项可忽略,于是有umlxmM)((3)gl