第四讲 Matlab/Simulink入门——连续系统仿真实例

第四讲 Matlab/Simulink入门——连续系统仿真实例

  • 1、连续系统基本概念
    • 1.1 连续系统
    • 1.2 线性连续系统
    • 1.3 Laplace变换
  • 2、蹦极模型(例1)仿真
    • 2.1 蹦极模型
    • 2.2 建模
    • 2.3 模型参数设置
    • 2.4 系统仿真
  • 3、比例微分控制器(例2)仿真
    • 3.1 比例微分控制器模型
    • 3.2 建模
    • 3.3 模型仿真

1、连续系统基本概念

1.1 连续系统

  连续系统: 是指系统输出时间上连续变化,而不是仅在离散时刻采样取值。对于满足以下条件的系统,我们称之为连续系统:
  (1)系统输出连续变化,变化的时间间隔为无穷小量。
  (2)存在系统输入或输出的微分项。
  (3) 系统具有连续状态。
  设连续系统的输入变化量为 u ( t ) u(t) u(t),其中 t t t为连续取值的时间变量,系统的输出为 y ( t ) y(t) y(t),连续系统的一般数学描述为:
y ( t ) = f ( u ( t ) , t ) y(t)=f(u(t),t) y(t)=f(u(t),t)
  微分方程形式为:
∂ x ∂ t = f ( x ( t ) , u ( t ) , t ) \frac{\partial x}{\partial t}=f(x(t),u(t),t) tx=f(x(t),u(t),t)
y ( t ) = g ( x ( t ) , u ( t ) , t ) y(t)=g(x(t),u(t),t) y(t)=g(x(t),u(t),t)

1.2 线性连续系统

   线性连续系统: 对满足以下两个条件的连续系统,我们称为线性连续系统。
  (1)、齐次性: 对于连续系统 y ( t ) = T { u ( t ) } , t = 0 , 1 , 2... y(t)=T\lbrace u(t) \rbrace, t=0,1,2... y(t)=T{u(t)},t=0,1,2...,如果对任意的输入 u ( t ) u(t) u(t)与给定的常数 α \alpha α,下面的式子总成立:
T { α u ( t ) } = α T { u ( t ) } T\lbrace \alpha u(t) \rbrace = \alpha T\lbrace u(t) \rbrace T{αu(t)}=αT{u(t)}
则称系统满足齐次性。
  (2)、叠加性: 对于系统对于输出 u 1 ( t ) u_1(t) u1(t) u 2 ( t ) u_2(t) u2(t),输出分别为 y 1 ( t ) y_1(t) y1(t) y 2 ( t ) y_2(t) y2(t),总有下面的式子成立:
T { u 1 ( t ) + u 2 ( t ) } = T { u 1 ( t ) } + T { u 2 ( t ) } T\lbrace u_1(t)+u_2(t) \rbrace = T\lbrace u_1(t) \rbrace + T\lbrace u_2(t) \rbrace T{u1(t)+u2(t)}=T{u1(t)}+T{u2(t)}
则称系统满足叠加性。

1.3 Laplace变换

   L a p l a c e 变 换 Laplace变换 Laplace 对于连续信号 u ( t ) u(t) u(t),其 L a p l a c e Laplace Laplace变换定义为 U ( s ) = ∫ − ∞ ∞ u ( t ) e − s t d t U(s)=\displaystyle \int ^\infty_{-\infty} u(t)e^{-st} {\rm d}t U(s)=u(t)estdt。一般而言,系统的输入时间 t ≥ 0 t \geq 0 t0,这时 U ( s ) = ∫ 0 ∞ u ( t ) e − s t d t U(s)=\displaystyle \int ^\infty_0 u(t)e^{-st} {\rm d}t U(s)=0u(t)estdt。一般简记为 U ( s ) = L ( u ( t ) ) U(s)=L(u(t)) U(s)=L(u(t))
   L a p l a c e 变 换 Laplace变换 Laplace具有如下两个重要性质:
  (1)、线性关系: L a p l a c e Laplace Laplace变换同时满足齐次性和叠加性,即:
U { α u 1 ( t ) + β u 2 ( t ) } = α U { u 1 ( t ) } + β U { u 2 ( t ) } U\lbrace \alpha u_1(t)+\beta u_2(t) \rbrace = \alpha U\lbrace u_1(t) \rbrace + \beta U\lbrace u_2(t) \rbrace U{αu1(t)+βu2(t)}=αU{u1(t)}+βU{u2(t)}
  (2)、设连续信号 u ( t ) u(t) u(t) L a p l a c e Laplace Laplace变换为 U ( s ) U(s) U(s),则 ∂ u ∂ t \displaystyle \frac{\partial u}{\partial t} tu L a p l a c e Laplace Laplace变换为 s U ( t ) sU(t) sU(t)
  线性连续系统的另一个模型为状态空间模型:
{ ∂ u ∂ t = A x ( t ) + B u ( t ) y ( t ) = C x ( t ) + D u ( t ) \begin{cases} \displaystyle \frac {\partial u} {\partial t} = Ax(t)+Bu(t)\\ y(t)=Cx(t)+Du(t)\\ \end{cases} tu=Ax(t)+Bu(t)y(t)=Cx(t)+Du(t)

2、蹦极模型(例1)仿真

2.1 蹦极模型

 【例1】蹦极跳是一种挑战身体极限的运动,蹦极者系着一根弹力绳从高处的桥梁(或山崖等)向下跳。在下落的过程中,蹦极者几乎处于失重状态。按照牛顿运动定律,自由下落的物体的位置由下面的式子确定:
m ∂ 2 x ∂ t 2 = m g − a 1 ∂ x ∂ t − a 2 ∣ ∂ x ∂ t ∣ ∂ x ∂ t m \frac{\partial^2x}{\partial t^2} = mg-a_1 \frac{\partial x}{\partial t}-a_2 \left| \frac{\partial x}{\partial t} \right|\frac{\partial x}{\partial t} mt22x=mga1txa2txtx
  其中m为物体质量,g为重力加速度,x为物体的位置, a 1 a_1 a1 a 2 a_2 a2表示空气阻力的系数。
  现选择蹦极者起跳位置为起点(即x=0处),低于起点位置为正,高于起点为负。如果物体系在一个弹性系数为 k k k的弹力绳索上,绳索的原始长度为 x 0 x_0 x0,则其对下落物体位置的作用力为:
b ( x ) = { − k ( x − x 0 ) , x > x 0 0 , x ≤ x 0 b(x)=\begin{cases} -k(x-x_0), x>x_0 \\ 0 , x \leq x_0 \\ \end{cases} b(x)={k(xx0),x>x00,xx0
  设蹦极者起跳位置距离地面 80 m 80m 80m,绳索原始长度 x 0 = 30 m x0=30m x0=30m,蹦极者起始速度为 0,即。其余参数分别为 k = 18.45 , a 1 = 1.3 , a 2 = 1.1 , m = 70 k g , = 9.8 m / s 2 k=18.45, a_1=1.3, a_2=1.1, m=70 kg ,=9.8 m/s^2 k=18.45,a1=1.3,a2=1.1,m=70kg,=9.8m/s2。试建立蹦极跳系统的Simulink仿真模型,并对系统进行仿真,分析此蹦极跳系统是否安全。

2.2 建模

第四讲 Matlab/Simulink入门——连续系统仿真实例_第1张图片

  建立蹦极跳系统的Simulink仿真模型。根据系统的数学描述选择合适的Simulink系统模块,建立此蹦极跳系统的Simulink模型,如上图所示。
  Constant模块:用于表示蹦极者重力 m g mg mg
  Constant1模块:用于表示绳索原始长度 x 0 x_0 x0
  Constant2模块:用于表示当 x ≤ x 0 x ≤ x_0 xx0时函数 b ( x ) b(x) b(x)的取值,即 0 0 0
  Constant3模块:用于表示蹦极者起始位置相对地面的距离。
  Gain模块:用于表示弹性系数的负数,即 − k -k k
  Gain1模块:用于表示参数 a 1 a_1 a1
  Gain2模块:用于表示参数 a 2 a_2 a2
  Gain3模块:用于表示蹦极者质量的倒数,即 1 m \frac{1}{m} m1
  Abs 模块:来自Math Operations子库,用于对信号取绝对值。
  Integrator模块和Integrator1模块:来自Continuous子库,用于对信号进行积分。Integrator模块的输入信号为,输出为;Integrator1模块的输入信号为,输出为 x x x
  Switch 模块:来自Signal Routing 子库,用于构建分段函数 b ( x ) b(x) b(x)

2.3 模型参数设置

第四讲 Matlab/Simulink入门——连续系统仿真实例_第2张图片

  mg模块:常值设为70*9.8。
  0模块:常值设为0。
  x0模块:常值设为30。
  distance模块:常值设为80。
  -k模块:增益设为-18.45。
  a1模块:增益设为1.3。
  a2模块:增益设为1.1。
  1/m模块:增益设为1/70。
  Switch模块:Threshold设为默认值,判断准则设为u2>Threshold,如图4-19所示。
  Integrator模块和Integrator1模块:由于设初始位置和初始速度均为0,故这两个模块的初始值设为默认值(零)即可。

2.4 系统仿真

  仿真时间设置为50s,然后运行,结果如图所示。

第四讲 Matlab/Simulink入门——连续系统仿真实例_第3张图片

  从图中可以看到,蹦极者相对地面的距离存在小于零的情况,也就是说此蹦极跳系统对于70kg的蹦极者来说不安全的,蹦极者会触碰到地面。

3、比例微分控制器(例2)仿真

3.1 比例微分控制器模型

 【例2】比例微分控制器系统,其数学描述为:
u ( t ) = K p e ( t ) + K d ∂ e ∂ t u(t)=K_p e(t) + K_d \frac{\partial e}{\partial t} u(t)=Kpe(t)+Kdte
  现有一个执行机构,其传递函数为:
1 ( s − 1.1 ) ( s + 1.1 ) \frac{1}{(s-1.1)(s+1.1)} (s1.1)(s+1.1)1
  显然,它是发散的,不稳定的,其开环阶跃响应曲线如图所示。

第四讲 Matlab/Simulink入门——连续系统仿真实例_第4张图片

3.2 建模

第四讲 Matlab/Simulink入门——连续系统仿真实例_第5张图片

  Derivative模块:来自Continuous子库,微分器,其输入为 e ( t ) e(t) e(t),输出为。
  Gain模块:控制器比例项系数,即 K p = 15 K_p=15 Kp=15
  Gain1模块:控制器微分项系数,即 K d = 2 K_d=2 Kd=2
  Zero-Pole 模块:设置Zeros 零点为[],Poles 极点为[1.1 -1.1],Gain 增益为1,其余默认,如图所示。

第四讲 Matlab/Simulink入门——连续系统仿真实例_第6张图片

3.3 模型仿真

  仿真时间设置为20s。
  最大仿真步长设置为0.01。
  绝对误差设置为1e-6。

第四讲 Matlab/Simulink入门——连续系统仿真实例_第7张图片

  仿真结果如图所示,在阶跃信号的作用下,系统不断地对位置误差进行控制修正,最终系统达到了稳定状态,可以通过调整 K p K_p Kp K d K_d Kd以获得更好的性能。

你可能感兴趣的:(Simulink仿真实例)