概述
该系列博客主要讲述Matlab软件在自动控制方面的应用,如无自动控制理论基础,请先学习自动控制系列博文,该系列博客不再详细讲解自动控制理论知识。
自动控制理论基础相关链接:https://blog.csdn.net/qq_39032096/category_10287468.html?spm=1001.2014.3001.5482
博客参考书籍:《MATLAB/Simulink与控制系统仿真》。
2.MATLAB/SIMULINK在模型中的应用
2.1 多项式处理相关函数
-
多项式乘法函数 c o n v ( ) {rm conv()} conv()。
# conv()调用格式 C=conv(A,B) # 参数说明: A、B:分别表示一个多项式系数,按降幂排列; C:A和B多项式的乘积多项式;
-
多项式求根函数 r o o t s ( ) {rm roots()} roots()。
# roots()调用格式 r=roots(p) # 参数说明: p:多项式; r:所求的根;
-
由根创建多项式函数 p o l y ( ) {rm poly()} poly()。
# poly()调用格式 p=poly(r) # 参数说明: r:特征根; p:特征多项式系数矢量;
-
求多项式在给定点的值函数 p o l y v a l ( ) {rm polyval()} polyval()。
# polyval()调用格式 v=polyval(p,a) # 参数说明: p:已知多项式; a:给定点a; v:其变量取a时的值;
2.2 建立传递函数相关的函数
假设系统是单输入单输出
(
S
I
S
O
)
({rm SISO})
(SISO)系统,其输入、输出分别用
u
(
t
)
、
y
(
t
)
u(t)、y(t)
u(t)、y(t)表示,可得线性系统的传递函数模型为:
G
(
s
)
=
Y
(
s
)
U
(
s
)
=
b
m
s
m
+
b
m
−
1
s
m
−
1
+
⋯
+
b
1
s
+
b
0
s
n
+
a
n
−
1
s
n
−
1
+
⋯
+
a
1
s
+
a
0
G(s)=frac{Y(s)}{U(s)}=frac{b_ms^m+b_{m-1}s^{m-1}+cdots+b_1s+b_0}{s^n+a_{n-1}s^{n-1}+cdots+a_1s+a_0}
G(s)=U(s)Y(s)=sn+an−1sn−1+⋯+a1s+a0bmsm+bm−1sm−1+⋯+b1s+b0
若分子
n
u
m
{rm num}
num、分母
d
e
n
{rm den}
den多项式的系数向量分别为:
n
u
m
=
[
b
m
,
b
m
−
1
,
⋯
,
b
1
,
b
0
]
,
d
e
n
=
[
1
,
a
n
−
1
,
⋯
,
a
1
,
a
0
]
{rm num}=[b_m,b_{m-1},cdots,b_1,b_0],{rm den}=[1,a_{n-1},cdots,a_1,a_0]
num=[bm,bm−1,⋯,b1,b0],den=[1,an−1,⋯,a1,a0]
-
建立传递函数模型的函数 t f ( ) {rm tf()} tf()。
# 常用的调用格式: sys=tf(num,den) sys=tf(num,den,'InputDelay',tao) # 参数说明: num:分子多项式系数行向量; den:分母多项式系数行向量; sys:建立的传递函数; 'InputDelay':时间延迟; tao:系统延迟时间的数值;
注:带时间延迟的系统传递函数表达式: G d ( s ) = G ( s ) e − τ s G_d(s)=G(s){rm e}^{-tau{s}} Gd(s)=G(s)e−τs;
-
提取模型中分子分母多项式系数的函数 t f d a t a ( ) {rm tfdata()} tfdata()。
# 调用格式: [num,den]=tfdata(sys,'v') # 参数说明: num:返回的分子多项式系数向量; den:返回的分母多项式系数向量; 'v':关键词,功能是返回列向量形式的分子分母多项式系数;
2.3 建立零极点形式的数学模型相关函数
假设系统的单输入单输出系统,其零极点模型表示为:
G
(
s
)
=
K
(
s
−
z
1
)
(
s
−
z
2
)
⋯
(
s
−
z
m
)
(
s
−
p
1
)
(
s
−
p
2
)
⋯
(
s
−
p
n
)
G(s)=Kfrac{(s-z_1)(s-z_2)cdots(s-z_m)}{(s-p_1)(s-p_2)cdots(s-p_n)}
G(s)=K(s−p1)(s−p2)⋯(s−pn)(s−z1)(s−z2)⋯(s−zm)
z
i
(
i
=
1
,
2
,
⋯
,
m
)
z_i(i=1,2,cdots,m)
zi(i=1,2,⋯,m)为系统的零点,
p
j
(
j
=
1
,
2
,
⋯
,
n
)
p_j(j=1,2,cdots,n)
pj(j=1,2,⋯,n)为系统的极点,
K
K
K为系统的增益;
-
建立零极点形式数学模型的函数 z p k ( ) {rm zpk()} zpk()。
# 调用格式: sys=zpk([z],[p],[k]) sys=zpk(z,p,k,'InputDelay',tao) # 参数说明: [z]:系统零点向量; [p]:系统极点向量; [k]:系统增益向量; 'InputDelay':时间延迟; tao:系统延迟时间的数值;
-
提取模型中零极点和增益向量的函数 z p k d a t a ( ) {rm zpkdata()} zpkdata()。
# 调用格式: [z,p,k]=zpkdata(sys,'v') # 参数说明: sys:系统模型; 'v':功能是返回列向量形式的零极点和增益向量;
-
传递函数模型部分分式展开的函数 r e s i d u e ( ) {rm residue()} residue()。
# 调用格式: [r,p,k]=residue(b,a) # 参数说明: b:按s降幂排列的多项式系数; a:按s降幂排列的多项式系数; 注:部分分式展开后,余数返回向量r,极点返回列向量p,常数项返回k;
2.4 建立状态空间模型相关的函数
-
建立状态空间模型的函数 s s ( ) {rm ss()} ss()。
# 调用格式: sys=ss(A,B,C,D) # 参数说明: (A,B,C,D):系统状态空间的矩阵表示; sys:建立的状态空间模型;
-
提取模型中状态空间矩阵的函数 s s d a t a ( ) {rm ssdata()} ssdata()。
# 调用格式: [A,B,C,D]=ssdata(sys) # 参数说明: sys:建立的状态空间模型; [A,B,C,D]:系统状态空间矩阵;
2.5 SIMULINK中控制系统模型表示
连续模块 ( C o n t i n u o u s ) ({rm Continuous}) (Continuous)的名称及功能:
模块名 模块名 模块名 | 功能 功能 功能 |
---|---|
D e r i v a t i v e {rm Derivative} Derivative | 输入信号微分 输入信号微分 输入信号微分 |
I n t e g r a t o r {rm Integrator} Integrator | 输入信号积分 输入信号积分 输入信号积分 |
S t a t e − S p a c e {rm State-Space} State−Space | 状态空间系统模型 状态空间系统模型 状态空间系统模型 |
T r a n s f e r F c n {rm Transfer Fcn} Transfer Fcn | 传递函数模型 传递函数模型 传递函数模型 |
T r a n s p o r t D e l a y {rm Transport Delay} Transport Delay | 固定时间传输延迟 固定时间传输延迟 固定时间传输延迟 |
V a r i a b l e T r a n s p o r t D e l a y {rm Variable Transport Delay} Variable Transport Delay | 可变时间传输延迟 可变时间传输延迟 可变时间传输延迟 |
Z e r o − P o l e {rm Zero-Pole} Zero−Pole | 零极点模型 零极点模型 零极点模型 |
2.6 SIMULINK中模型与状态空间模型的转化
2.7 实战部分
2.7.1 实例1
实验要求:求传递函数 G ( s ) = ( s + 1 ) ( s 2 + 2 s + 6 ) 2 s 2 ( s + 3 ) ( s 3 + 2 s 2 + 3 s + 4 ) G(s)=displaystylefrac{(s+1)(s^2+2s+6)^2}{s^2(s+3)(s^3+2s^2+3s+4)} G(s)=s2(s+3)(s3+2s2+3s+4)(s+1)(s2+2s+6)2的分子分母多项式,并求传递函数的特征根。
解:
% 实例Chapter4.2 2.7.1
num=conv([1,1],conv([1,2,6],[1,2,6])); % num:分子多项式;
den=conv([1,0,0],conv([1,3],[1,2,3,4])); % den:分母多项式;
r=roots(den); % r:函数特征根;
% 终端显示num,den,r
num,den,r
% 显示结果
num =
1 5 20 40 60 36
den =
1 5 9 13 12 0 0
r =
0.0000 + 0.0000i
0.0000 + 0.0000i
-3.0000 + 0.0000i
-1.6506 + 0.0000i
-0.1747 + 1.5469i
-0.1747 - 1.5469i
- 分子多项式为: s 5 + 5 s 4 + 20 s 3 + 40 s 2 + 60 s + 36 s^5+5s^4+20s^3+40s^2+60s+36 s5+5s4+20s3+40s2+60s+36;
- 分母多项式为: s 6 + 5 s 5 + 9 s 4 + 13 s 3 + 12 s 2 s^6+5s^5+9s^4+13s^3+12s^2 s6+5s5+9s4+13s3+12s2;
- 特征根为: λ 1 = λ 2 = 0 , λ 3 = − 3 , λ 4 = − 1.6506 , λ 5 = λ 6 = − 0.1747 ± j 1.5469 lambda_1=lambda_2=0,lambda_3=-3,lambda_4=-1.6506,lambda_5=lambda_6=-0.1747±{rm j}1.5469 λ1=λ2=0,λ3=−3,λ4=−1.6506,λ5=λ6=−0.1747±j1.5469;
2.7.2 实例2
实验要求:已知系统的微分方程描述为: y ( 3 ) + 11 y ( 2 ) + 11 y ( 1 ) + 10 y = u ( 2 ) + 4 u ( 1 ) + 8 u y^{(3)}+11y^{(2)}+11y^{(1)}+10y=u^{(2)}+4u^{(1)}+8u y(3)+11y(2)+11y(1)+10y=u(2)+4u(1)+8u,使用 M A T L A B {rm MATLAB} MATLAB建立模型。
解:
% 实例Chapter4.2 2.7.2
% 分子、分母多项式系数行向量
num=[1,4,8];
den=[1,11,11,10];
% 建立模型
G=tf(num,den)
% 结果显示
G =
s^2 + 4 s + 8
------------------------
s^3 + 11 s^2 + 11 s + 10
Continuous-time transfer function.
- 系统传递函数为: G ( s ) = s 2 + 4 s + 8 s 3 + 11 s 2 + 11 s + 10 G(s)=displaystylefrac{s^2+4s+8}{s^3+11s^2+11s+10} G(s)=s3+11s2+11s+10s2+4s+8;
2.7.3 实例3
实验要求:已知某系统的传递函数为: G ( s ) = s 2 + 4 s + 8 s 3 + 11 s 2 + 11 s + 10 G(s)=displaystylefrac{s^2+4s+8}{s^3+11s^2+11s+10} G(s)=s3+11s2+11s+10s2+4s+8,求该传递函数分子分母多项式,零极点。
解:
% 实例Chapter4.2 2.7.3
clc;
clear;
% 传递函数分子、分母多项式系数行向量
num=[1,4,8];
den=[1,11,11,10];
% 建立传递函数模型
G=tf(num,den);
% 求解传递函数的分子和分母多项式
[tt,ff]=tfdata(G,'v');
% 求解传递函数的零极点和增益
[z,p,k]=tf2zp(num,den);
% 显示分子分母多项式和零极点
tt,ff,z,p,k
% 结果显示:
% 分子多项式
tt =
0 1 4 8
% 分母多项式
ff =
1 11 11 10
% 系统零点
z =
-2.0000 + 2.0000i
-2.0000 - 2.0000i
% 系统极点
p =
-10.0000 + 0.0000i
-0.5000 + 0.8660i
-0.5000 - 0.8660i
% 系统增益
k =
1
2.7.4 实例4
实验要求:已知系统的传递函数: G ( s ) = 2 s 3 + 9 s + 1 s 3 + s 2 + 4 s + 4 G(s)=displaystylefrac{2s^3+9s+1}{s^3+s^2+4s+4} G(s)=s3+s2+4s+42s3+9s+1,求传递函数的部分分式表示形式。
解:
% 实例Chapter4.2 2.7.4
clc;clear;
% 传递函数分子、分母多项式系数行向量
num=[2,0,9,1];
den=[1,1,4,4];
% 求解系统部分分式表示
[r,p,k]=residue(num,den)
% 结果显示:
r =
-0.0000 - 0.2500i
-0.0000 + 0.2500i
-2.0000 + 0.0000i
p =
0.0000 + 2.0000i
0.0000 - 2.0000i
-1.0000 + 0.0000i
k =
2
- 系统部分分式表示为: G ( s ) = 2 + − 0.25 i s − 2 i + 0.25 i s + 2 i + − 2 s + 1 G(s)=2+displaystylefrac{-0.25{rm i}}{s-2{rm i}}+displaystylefrac{0.25{rm i}}{s+2{rm i}}+displaystylefrac{-2}{s+1} G(s)=2+s−2i−0.25i+s+2i0.25i+s+1−2;
2.7.5 实例5
实验要求:已知两输入两输出系统状态方程和输出方程如下:
x
˙
=
[
1
6
9
10
3
12
6
8
4
7
9
11
5
12
13
14
]
x
+
[
4
6
2
4
2
2
1
0
]
u
,
y
=
[
0
0
2
1
8
0
2
2
]
x
dot{x}=begin{bmatrix} 1 & 6 & 9 & 10\ 3 & 12 & 6 & 8\ 4 & 7 & 9 & 11\ 5 & 12 & 13 & 14 end{bmatrix}x+begin{bmatrix} 4 & 6\ 2 & 4\ 2 & 2\ 1 & 0 end{bmatrix}u,y=begin{bmatrix} 0 & 0 & 2 & 1\ 8 & 0 & 2 & 2 end{bmatrix}x
x˙=
1345612712969131081114
x+
42216420
u,y=[08002212]x
求状态空间模型。
解:
% 实例Chapter4.2 2.7.4
clc;clear;
% 系统系数矩阵
A=[1 6 9 10;3 12 6 8;4 7 9 11;5 12 13 14];
B=[4 6;2 4;2 2;1 0];
C=[0 0 2 1;8 0 2 2];
D=zeros(2,2);
% 系统状态空间模型
G=ss(A,B,C,D)
% 结果显示:
A =
x1 x2 x3 x4
x1 1 6 9 10
x2 3 12 6 8
x3 4 7 9 11
x4 5 12 13 14
B =
u1 u2
x1 4 6
x2 2 4
x3 2 2
x4 1 0
C =
x1 x2 x3 x4
y1 0 0 2 1
y2 8 0 2 2
D =
u1 u2
y1 0 0
y2 0 0
Continuous-time state-space model.
最后
以上就是甜美大象为你收集整理的Day14--Simulink实例的全部内容,希望文章能够帮你解决Day14--Simulink实例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复