现代控制理论实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
现代控制理论实验
院系:计算机与电子信息学院
班级:电气09-1
:
学号:
指导老师:禹柳飞
实验一线性控制系统状态空间法分析
第一部分线性控制系统状态空间模型的建立及转换
一、实验目的
1 掌握线性控制系统状态空间模型的建立方法。
2 掌握MATLAB中的各种模型转换函数。
二、实验项目
1 已知系统的传递函数求取其状态空间模型。
2 MATLAB中各种模型转换函数的应用。
3 连续时间系统的离散化。
三、实验设备与仪器
1、计算机
2、MATLAB软件
四、实验原理及容
(一)系统数学模型的建立
1、传递函数模型—tf
功能:生成传递函数,或者将零极点模型或状态空间模型转换成传递函数模型。
格式:G=tf(num,den)
其中,(num,den)分别为系统的分子和分母多项式系数向量。返回的变量G为传递函数对象。
【例】:已知
G(S)=
用MATLAB语句将上述传递函数表示出来。
编程如下:num=[2 9];den=[1 2 4 6];
Sys=tf(num,den)
MATLAB中运行结果如下图所示:
2、状态方程模型—ss
功能:生成状态方程,或者将零极点模型或传递函数模型转换成状态方程模型。
格式:G=ss(A,B,C,D)
其中,A,B,C,D分别为状态方程的系统矩阵、输入矩阵、输出矩阵和前馈矩阵。【例】:已知系统状态空间模型为
编程如下:>>A=[0 1;-1 -2];
>>B=[0;1];
>>C=[1,3]; D=1];
>>G=ss(A,B ,C ,D)
运行结果如下图:
3、零极点模型—zpk
功能:生成零极点模型,或将状态方程模型或传递函数模型转换成零极点模型。
格式:G=zpk(z, p, K)
其中,z,p,K分别表示系统的零点、极点和增益。
【例】:G(s)=6(s+3)/(s+1)(s+2)(s+5)使用MATLAB语句将上述零极点增益模型表示出来。
编程如下:z=[-3];p=[-1,-2,-5];
k=[6];
G=zpk(z,p,k)
(二)连续时间系统离散化
函数名称:c2d
格式:G=c2d(G1,Ts),其中Ts 为采样周期。 功能:连续时间系统离散化。
要求:先进行理论求解,再与仿真结果相比较。 【例】试写出连续时间系统
u x x ⎥⎦
⎤⎢⎣⎡+⎥⎦⎤⎢⎣⎡-=102010 采样周期为T 的离散化状态方程。 1、理论求解 解:先求At e
1
1
1
1
201])[()(----⎥
⎦
⎤
⎢⎣⎡+-=-==s s L A sI L e
t At
φ ⎥⎥
⎦
⎤
⎢
⎢⎣⎡
-=⎥⎥⎥⎥⎦
⎤
⎢⎢⎢⎢⎣
⎡++=---t t e e s s s s L 2210)1(2
11
210)2(11
T
t t T T G ===)()()(φφ⎥⎥
⎦
⎤⎢⎢⎣⎡
-=--T
T e e 220)1(2
11
τττφττd e e Bd T H T
T ⎥⎦⎤⎢⎣⎡⎥⎥⎦
⎤⎢⎢⎣⎡-==⎰
⎰--100)1(211)()(0
220
ττ
τd e e T
⎰⎥⎥⎦⎤⎢⎢⎣⎡-=--022)1(21 0214121
22T e e ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-+=--τ
ττ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-+-=--T T e
e T 222
121414121 所以:
)()()()()1(k u T H k x T G k x +=+
)(2121414121)()(0)1(211)1()1(22212221k u e e T k x k x e e k x k x T T T T
⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-+-+⎥⎦⎤⎢⎣⎡⎥⎥⎦
⎤⎢⎢⎣⎡-=⎥⎦⎤⎢⎣⎡++---- 2、MATLAB 仿真程序及运行结果(自己编写程序并调试运行)
T=0.1S 时
T=1S 时
T=0.5s 时
3、分析:随着周期T的变化,其系统的解G也不同,但只是第二列的元素值随着周期T的变化而变化,第一列的元素值不发生变化。
(三)状态空间表达式的线性变换
函数名称:ss2ss
功能:完成状态空间表达式的线性变换。
格式:G=ss2ss(G1,inv(P)) 其中inv(p)为变换阵p的逆阵。
例:
>> a=[0 1 0;0 0 1;2 3 0];
>> b=[0;0;1];
>> c=[1 0 0];
>> p=[1 ;0 1;-1 1 2;1 -2 4];
>> G1=ss(a,b,c,0);
>> G=ss2ss(G1,inv(p))
五、思考题
1 MATLAB中的函数其实都是一些子程序,那么其ss2tf()函数是如何编写的?答:ss2tf将状态空间形式转换为传递函数的形式,它的格式应为
[num,den]=ss2tf(A,B,C,D,iu)其中iu用于指定变换所使用的输入量,num和den 为传递函数的分子、分母系数。A=[ ]; B=[ ]; C=[ ]; D=[ ];
Sys=ss(A,B,C,D);G=tf(Sys)
2 在MATLAB中对连续系统进行离散化有何现实意义?
答:用数字计算机求解连续系统方程或对连续的被控对象进行计算机控制时,由于数字计算机运算和处理均用数字量,这样就必须将连续系统方程离散化。在MATLAB中对连续系统进行离散化,能够使得计算机能求解连续系统方程或对连续的被控对象进行控制。