您现在的位置:首页 > 计算机软件及应用 >

6 MATLABSIMULINK系统建模设计与仿真基础_图文


6.2 SIMULINK仿真基础
如果控制系统的结构很复杂,在通常情况下是很 难将模型输入到计算机中的。
1990年MathWorks软件公司提供了新的控制系统模型图形 输入与仿真工具,并定义为SIMULAB,该工具很快在控制界得 到了广泛的使用。1992年开始正式改名为SIMULINK,这一名字 的含义是相当直观的。因为它较明显地表明此软件的两个显著 的功能:SIMU(仿真)与LINK(连结),即可以利用鼠标在模 型窗口上“画”出所需的控制系统模型,然后利用SIMULINK提 供的功能来对系统进行仿真或线性化分析。

这种做法的一个优点是,可以使得一个很复杂系 统的输入变得相当容易且直观。

进入MATLAB环境之后,键入simulink命令或用鼠 标点击simulink的图标就可以打开相应的系统模型库。 这一模型库包括:Commonly used blocks、Continuous、 Discontinuities、Discrete等16个子模块。 若想建立一个控制系统的结构框图,则应该选择 File/New菜单项,这样就会自动打开一个空白的模型编 辑窗口,允许用户输入自己的模型框图。打开输入源模 块库的图标,将出现各种子模块库,比如包括:阶跃函 数、正弦函数、白噪声函数、时钟、常数、MATLAB空 间变量、信号发生器等,可以利用鼠标点中的方式来选 择所需的子模块,并将它拖动到所打开的模型窗口上。

[例6.1] (1)试用Simulink建立一个如下图所示的典型PID 控制系统模型。
r ( t ) + K i K ? ? K s p d s
3 2 y ( t ) s ? 7 s ? 24 s ? 24 4 3 2 s ? 10 s ? 35 s ? 50 s ? 24

图6.1 典型PID控制系统方框图 假设输入信号r(t)选为单位阶跃信号,输出端接示波器。 所连接成的SIMULINK模块框图如图6.2所示。在 Simulink环境中选择PID参数如下:Kd ? 0.01 , Ki ? 4 , Kp ? 2 。

2 Gain Add

4 Step Subtract Gain1

1 s Integrator Add1

s3 +7s2 +24s+24 s4 +10s3+35s2+50s+24 Scope Transfer Fcn1

0.01 Gain2

du/dt Derivative

图6.2 典型PID控制系统的Simulink实现

单位阶跃响应如图6.3所示。

图6.3 PID控制作用下闭环系统的阶跃响应

[例6.1] (2)试用Simulink建立一个如下图所示的非线性 控制系统模型。
0.3

-

3s ? 4 7s

-

0.5

5s ? 1 s ( s 2 ? 2 s ? 1)
1 s ? 0 .6

搭建的Simulink模型如下

0.6

在模块中选择参数0.5

[例6.1] (3)试用Simulink建立一个如下图所示的非 线性控制系统模型。

?x1 ? x1 cos x2 ? x2 sin x1 ? 2 x ? x ? x ? 2 1 2u ?y ? x 1 ?
搭建的Simulink模型如下

[例6.1] (4)试用Simulink建立一个如下图所示的线 性时滞控制系统模型,并考察其单位阶跃响应。

x t) ?? 4 x t)?x t ?0 .4 ) ? 1( 1( 2( ? x t) ?x t)? 1 2 x t)?3 ut ( ?0 .2 ) ? 2( 1( 2( ?y t) ?x t) 1( ?(
搭建的Simulink模型如下:

时滞为0.4 在模块中设定

时滞为0.2 在模块中设定

现求其单位阶跃响应, 将其输入模块换成单位阶跃,
将其输出模块换成示波器。 这样Simulink模型变为下图所示。

运行该Simulink模型,结果如下图所示。

现在再来分析,如果该系统没有时滞,其单位 阶跃响应又是如何的?
此时,系统模型变为:

t) ??4x ?x 1( 1(t) ? x 2(t) ? t) ?12x2(t) ?3 u(t) ?x2(t) ? x 1( ?y(t) ? x (t) 1 ?
搭建的Simulink模型如下

没有时滞情况下的模型

运行该Simulink模型,结果如下图所示。

[例6.1] (4)试用Simulink建立一个如下图所示的线 性时变系统模型。

x ( t)?? 4 x ( t)?x t) ? 1 1 2( ? x t)?5 x ( t)? ( 6 s int)x t)? 3 ut () ? 2( 1 2( ?yt ( t) 1 ? ( )?x
搭建的Simulink模型如下:

自定义M函数文件s_t.m 表示阶跃信号y=s_t(t) 自定义M函数文件f_t.m 表示正弦函数y=f_t(t)

在工作空间产生时 间信号序列[k,t]

自定义M函数文件s_t.m,表示阶跃信号y=s_t(t)

function u=s_t(t) % step input if t<=0 u=0; else u=1; end

自定义M函数文件f_t.m,表示正弦函数y=f_t(t) function y=f_t(t) y=sin(t); 在MATLAB的工作空间中产生时间信号序列[k,t] >> clear >> t=0:0.01:5; >> k=1:1:length(t); >>

格式见下一页

运行Simulink模型,结果如下

小范围局部放大,结果如下

利用SIMULINK进行数字仿真
在前一节中其实已经初步介绍了数字仿真的过程。 为了更详细地说明怎样利用Simulink进行数字仿真,在 此举第二个例子来说明。 [例6.2] 利用Simulink工具画出下列系统在闭环状态反馈 ?x1 (0) ? ?3 ? ? x x ? 8 9? 0 ? ? ? 1? ? 1? ? ?? ? ? ? u ? ? , ? ? ?7 ? ? ? ? ? ? x2 (0)? ?? 5? ? ? x 5 x 1 ? ? 2? ? ? 2? ? ?
?x1 ? u ? ??1 ? 2?? ? ?x2 ?

情况下的的状态响应轨线。

所连接成的SIMULINK模块框图如图6.4所示。

7 Gain3 -1 1 s Integrator
x1

Scope

-8 Gain

Gain4 x1 To Workspace

u

x2 1 s Integrator1 -5 Gain1 To Workspace1

x2

-2 Gain5

9 Gain2

Scope1

图6.4 状态反馈闭环系统的Simulink实现

仿真结果如下:

图6.5 闭环系统的状态响应

[例6.3]利用Simulink工具画出下列系统在闭环状态反 馈情况下的输出响应轨线。

? x1 ? e x1 x 2 ? x1u ? ? 1 2 ? x 2 ? x1 x 2 ? x 2 ? 2
u? e
x1 x 2

? x1 ( 0 ) ? ? 3 ? ? x2 (0 ) ? 5
y?x x 1 ?3
2 2

? 4 x1 x1

所连接成的SIMULINK模块框图如图6.6所示。

u Divide 4 Gain Product1

1 s

x1

e Product

u

Integrator

Math Function

Subtract

Scope1 1 s
x2

Integrator1

Product2 Subtract1

y Scope

0.5 Scope2 Gain1

-3 Product3 Gain2

仿真结果如下:

状态变量

x1

状态变量 2

x

输出变量

y

输出变量

y

图6.7 非线性系统的状态响应

[例6.4]利用Simulink工具画出下面方块图所示系统的 输出响应轨线。
其中输入信号取为:

r ( t ) ? 3 s i n ( 2 . 50 t ? . 5 6 )
2

r

+

-

s?2

+

+ -

1 0 s (s? 1 )

y

0 .5 s

所连接成的SIMULINK模块框图如图6.9所示。
2 Gain3 du/dt Sine Wave Subtract1 Derivative Subtract 10 s2 +s Transfer Fcn Scope

2 Gain du/dt Derivative1 0.5 Gain1

1 Gain2

图6.9 控制系统的Simulink实现

仿真结果如下:

图6.10 控制系统的输出响应

[例6.5] 利用Simulink工具画出下面带有饱和非线性特 性的系统的输出响应轨线。

其中输入信号取为如图6.12所示的三角脉冲信号, 饱和特性具体参数如图6.13所示。
1 0 s(s? 1 )(s? 1 0 )

r

-

-

y

0 .6 s

图6.11带有饱和非线性的控制系统方块图

6

5

4

/ r

V
3 2 1 0 0 1 2 3 4 5 6

t / s

图6.12 三角脉冲输入信号

20

10

y

0

-1 0

-2 0

-1 0

-8

-6

-4

-2

0

2

4

6

8

10

x

图6.13 饱和非线性特性

图6.12所示的输入信号在Simulink中可以很方便地 通过运用Signal Builder模块来实现,所连接成的 SIMULINK模块框图如图6.14所示。Signal Builder具有 点编辑功能,在增加点数时,只要左手按住Shift键, 右手左键双击想要增加点的位置即可。另外,每一个 点的精确位置可以通过设定坐标来实现。

Signal 1

5 Signal Builder Subtract1 Gain1 Saturation Subtract

10 s3 +11s2+10s Scope Transfer Fcn du/dt Derivative

0.6 Gain 1 Gain2

图6.14 控制系统的Simulink实现

图6.14中饱和特性模块前面的增益5表示饱和特性的 线性部分的斜率。在Simulink中,饱和特性模块只能设 置纵坐标的上、下限幅,而不能设置代表转折点的横坐 标值,所以只能在该模块前增加定常增益来表示其斜率, 这样在仿真时等于确定了转折点的横坐标。

仿真结果如下:

图6.15 控制系统的输出响应

[例6.6] 给出非线性系统的框图如下

非线性环节

u (t)

-

对象模型G(s)

y (t)

其中,非线性环节为饱和非线性环节, h

?1

y h 0
-h

x

理想饱和非线性环节

线性部分的传递函数为

5 s? 0 . 9 6 s ? 9 . 6 G () s? 2 2 ss (? 1 )( s? 0 . 3 8 4 s ? 2 . 5 6 )
2

系统的输入信号为

ut ()? 5 s i n 3 t
请画出系统的输出响应曲线。

[例6.7] 给出非线性系统的框图如下

非线性环节

u (t)

-

对象模型G(s)

y (t)

其中,非线性环节为理想继电器环节, h

?1

y h

0
-h

x

h ?1

线性部分的传递函数为

(s ? 2)(s ? 1) G(s) ? 2 2 s(s ? 3) (s? 7s ? 8)
系统的输入信号符合下表所示的规律:
t u 0.00 0.22 0.00 3.04 0.40 0.61 0.75 1.05 1.2 1.5 1.86 2.00 6.76 8.53 7.32 7.31 7.23 6.88 6.76 6.99

请用simulink工具画出系统的输出响应曲线。

首先产生输入信号序列,为此编制文件如下:
t0= [0.00, 0.22, 0.40, 0.61, 0.75, 1.05, 1.2, 1.5, 1.86, 2.00]; u0=[0.00, 3.04, 6.76, 8.53, 7.32, 7.31, 7.23, 6.88, 6.76, 6.99]; t=0:0.01:2; u=interp1(t0,u0,t); t=t’; u=u’;

在MATLAB的工作空间中运行该文件,就可得出输入 信号序列[t, u]。

[例6.8] 给定直流电机控制系统框图如下:

r (t)

-

K

-

10 1 ? 0 .1 s

1 0 .1 s 2

y (t)

0 .1 s

给定输入信号

8

6

r

4

2

0 0 2 4 6 8 10 12 14 16

t/s

通过simulink仿真分析不同 K 值对系统性能的影响。

K=0.3时的输出响应

K=0.5时的输出响应

K=0.8时的输出响应

K=0.2时的输出响应

现在用lsim( )函数来进行时域仿真。 编制文件如下: K=0.3; % 可以调整的参数 G1=tf(10,[0.1,1]); G2=tf(1,[0.1,0,0]); syms s; % s表示符号 h1=tf('s'); H=tf(0.1*h1); G=feedback(G1*G2,H,-1); G_cl=feedback(K*G,1,-1); t0=[0, 2, 4, 6, 8, 8.01, 12, 12.01, 14]; r0=[0, 4, 4, 0, 0, 8, 8, 0, 0]; t=0:0.01:14; r=interp1(t0,r0,t); lsim(G_cl,r,t);

程序运行结果

K=0.2时的结果:

K=0.5时的结果:

K=0.8时的结果:



热文推荐
友情链接: 工作计划 总结汇报 团党工作范文 工作范文 表格模版 生活休闲