资源描述:
《MATLAB配置倒立摆系统极点》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.现代控制理论MATLAB计算学院:电气工程学院专业班级:电气工程及其自动化1403班学生姓名:王宁学号:140301308..摘要:讨论了采用MATLAB语言编程实现控制系统的空间状态方程模型建立,及离散化,判断能控性,能观性,阶跃响应,实现控制系统极点任意配置。并以倒立摆系统为实例计算。关键词:空间状态方程;控制系统;极点配置目录一.绪论3(1)MATLAB及其控制系统工具箱简介3(2)状态反馈极点配置3(3)能控性和能观性3(4)MATLAB编程3二.MATLAB计算5(1)状态空间方程5(2)求解离散化x(t)6(3)阶跃响应6(4)判断能控性能观性7(5)极点配置
2、7(6)结论9三.总结9..一.绪论(1)MATLAB及其控制系统工具箱简介MATLAB是一套高性能的数值计算和可视化软件,具有工程计算,算法研究,符号运算,建模和仿真,原形开发,数据分析及可视化,科学和工程绘图,应用程序设计等功能,MATLAB包含了涉及多种学科的众多工具。其中,控制系统工具箱主要处理以传递函数为主要特征的经典控制和以状态方程为特征的现代控制中的问题,为用户提供了用于处理和分析线性时不变(LTI)模型,它支持连续系统和离散系统,单输入单输出(SISO)系统和多输入多输出(MIMO)系统。利用该工具箱中的函数不但可以实现系统模型的建立,转换,分析和处理,还可
3、以进行控制系统的设计。(2)状态反馈极点配置状态空间中的极点配置设计方法是基本的设计方法之一。如果系统是完全状态可控的,那么,要求的Z平面上闭环极点可以选择,并且,以这些极点为闭环极点的系统可以设计。这种在Z平面设置期望的闭环极点的设计方法,称为极点配置设计法。在极点配置设计方法中,将反馈全部状态变量,使得全部闭环极点均设置在各期望的位置上。然而,实际的控制系统中,量测到全部[4] 状态变量是不可能的,不是全部状态变量都可以用于反馈。为了实现状态反馈,估计这些未知的状态变量是很必要的,这种估计可以用状态观测器进行。假设系统的全部状态变量都可以量测,并且都能用于反馈。如果系
4、统是完全状态可控的,那么,用状态反馈的方法,适当地选择状态反馈增益矩阵,可以将闭环系统的极点配置在Z平面的任何期望的位置。首先必须指出,状态空间中,任意极点配置的充分且必要的条件是,系统必须是完全状态可控的(3)能控性和能观性能控性和能观性是相对的概念。动态系统的能控性和能观性是揭示动态系统不变的本质特征的两个重要的基本结构特性。卡尔曼在60年代初首先提出状态能控性和能观性。其后的发展表明,这两个概念对回答被控系统能否进行控制与综合等基本性问题,对于控制和状态估计问题的研究,有着极其重要的意义。系统能控性指的是控制作用对被控系统的状态和输出进行控制的可能性。能观性反映由能直
5、接测量的输入输出的量测值来确定反映系统内部动态特性的状态的可能性。(4)MATLAB编程空间状态方程A=[0100;0000;0001;007.350];B=[0;1;0;0.75];C=[1000;0010];D=0;sys=ss(A,B,C,D)离散化T=1;sys_d=c2d(sys,T)..eAt=expm(A)能控能观测n=size(A,1);Qc=ctrb(A,B);ifrank(Qc)==rank([QcA^n])disp('Thesystemiscontrolled')elsedisp('Thesystemisnotcontrolled')endn=size
6、(A,1);Qo=obsv(A,C);ifrank(Qo)==n(1)disp('Thesystemisobservability')elsedisp('Thesystemisnotobservability')end约当J=Jordan(A)约当规范[P,J]=Jordan(A);sys_in=ss(A,B,C,D);sys_out=ss2ss(sys_IN,inv(P))标准型sys_ctr=ctr_canon(sys,'1st')sys_ctr=ctr_canon(sys,'2nd')sys_ctr=ctr_canon(sys,'Wonham')sys_ctr=ctr
7、_canon(sys,'Luenb')sys_obsv=obsv_canon(sys,'1st')sys_obsv=obsv_canon(sys,'2nd')阶跃响应step(sys,300);[y]=step(sys,300);极点P=[-5,-5,-1+sqrt(3)*i,-1-sqrt(3)*i]极点配置A=[0100;0000;0001;007.350];B=[0;1;0;0.75];C=[1000;0010];D=0;[E,F]=eig(A)ctrb(A,B)obsv(A,C)rc=rank(ctrb(A