我是靠谱客的博主 饱满柚子,这篇文章主要介绍Day15--Simulink自定义功能模块,现在分享给大家,希望可以做个参考。

该系列博客主要讲述Matlab软件在自动控制方面的应用,如无自动控制理论基础,请先学习自动控制系列博文,该系列博客不再详细讲解自动控制理论知识。
自动控制理论基础相关链接:https://blog.csdn.net/qq_39032096/category_10287468.html?spm=1001.2014.3001.5482
博客参考书籍:《MATLAB/Simulink与控制系统仿真》。



3.系统模型转换及连接和线性化

3.1 系统模型转换及连接
3.1.1 模型转换
  • 线性时不变系统的模型包括:传递函数 ( T r a n s f e r   F u n c t i o n ) ({rm Transfer Function}) (Transfer Function)模型、零极点增益 ( Z P K ) ({rm ZPK}) (ZPK)模型、状态空间 ( S t a t e   S p a c e ) ({rm State Space}) (State Space)模型;

  • 不同模型的转换关系:

    1

  • 模型转换函数:

    函数名功能描述函数名功能描述
    s s 2 t f {rm ss2tf} ss2tf 状态空间模型转换为传递函数模型 状态空间模型转换为传递函数模型 状态空间模型转换为传递函数模型 t f 2 s s {rm tf2ss} tf2ss 传递函数模型转换为状态空间模型 传递函数模型转换为状态空间模型 传递函数模型转换为状态空间模型
    s s 2 z p {rm ss2zp} ss2zp 状态空间模型转换为零极点模型 状态空间模型转换为零极点模型 状态空间模型转换为零极点模型 z p 2 s s {rm zp2ss} zp2ss 零极点模型转换为状态空间模型 零极点模型转换为状态空间模型 零极点模型转换为状态空间模型
    t f 2 z p {rm tf2zp} tf2zp 传递函数模型转换为零极点模型 传递函数模型转换为零极点模型 传递函数模型转换为零极点模型 z p 2 t f {rm zp2tf} zp2tf 零极点模型转换为传递函数模型 零极点模型转换为传递函数模型 零极点模型转换为传递函数模型
3.1.2 模型转换实例

实验要求:已知系统的零极点模型为: G ( s ) = 6 ( s + 2 ) ( s + 1 ) ( s + 3 ) ( s + 5 ) G(s)=displaystylefrac{6(s+2)}{(s+1)(s+3)(s+5)} G(s)=(s+1)(s+3)(s+5)6(s+2),求系统对应的传递函数模型和状态空间模型。

解:

% 实例Chapter4.3 3.1.2
clc;clear;

% 系统的零点向量、极点向量和增益
z=[-2];p=[-1,-3,-5];k=6;

% 将零极点模型转换为传递函数模型
[num,den]=zp2tf(z,p,k);

% 将零极点模型转换为状态空间模型
[A,B,C,D]=zp2ss(z,p,k);

% 建立零极点模型
g_zpk=zpk(z,p,k);

% 建立传递函数模型
g_tf=tf(num,den);

% 建立状态空间模型
g_ss=ss(A,B,C,D);

% 显示不同模型
g_zpk,g_tf,g_ss
% 显示结果
% 零极点模型
g_zpk = 
       6 (s+2)
  -----------------
  (s+1) (s+3) (s+5) 
Continuous-time zero/pole/gain model.

% 传递函数模型
g_tf =
         6 s + 12
  -----------------------
  s^3 + 9 s^2 + 23 s + 15 
Continuous-time transfer function.

% 状态空间模型
g_ss = 
  A = 
           x1      x2      x3
   x1      -1       0       0
   x2       1      -8  -3.873
   x3       0   3.873       0
 
  B = 
       u1
   x1   1
   x2   1
   x3   0
 
  C = 
          x1     x2     x3
   y1      0      0  1.549
 
  D = 
       u1
   y1   0 
Continuous-time state-space model.
  • 系统传递函数模型为: G ( s ) = 6 s + 12 s 3 + 9 s 2 + 23 s + 15 G(s)=displaystylefrac{6s+12}{s^3+9s^2+23s+15} G(s)=s3+9s2+23s+156s+12

  • 系统状态空间模型为:
    { x ˙ = [ − 1 0 0 1 − 8 − 3.873 0 3.873 0 ] x + [ 1 1 0 ] u y = [ 0 0 1.549 ] x begin{cases} &dot{x}=begin{bmatrix} -1 & 0 & 0\ 1 & -8 & -3.873\ 0 & 3.873 & 0 end{bmatrix}x+begin{bmatrix} 1\1\0 end{bmatrix}u\\ &y=begin{bmatrix} 0 & 0 & 1.549 end{bmatrix}x end{cases} x˙= 110083.87303.8730 x+ 110 uy=[001.549]x

3.1.3 模型连接
  1. 串联连接

    • 单输入单输出 ( S I S O ) ({rm SISO}) (SISO)系统 G 1 ( s ) G_1(s) G1(s) G 2 ( s ) G_2(s) G2(s)串联连接结构图:

      2

    • 串联连接合成的系统传递函数为: G ( s ) = G 1 ( s ) ⋅ G 2 ( s ) G(s)=G_1(s)·G_2(s) G(s)=G1(s)G2(s)

    • 推广:若 n n n个环节串联,则合成的传递函数为: G ( s ) = G 1 ( s ) ⋅ G 2 ( s ) ⋅ ⋯ ⋅ G n ( s ) G(s)=G_1(s)·G_2(s)·cdots·G_n(s) G(s)=G1(s)G2(s)Gn(s)

    • M A T L A B {rm MATLAB} MATLAB的串联函数 s e r i e s {rm series} series

      # 语法格式:
      [num,den]=series(num1,den1,num2,den2)
      
      # 参数说明:
      num:串联后系统的分子多项式;
      den:串联后系统的分母多项式;
      num1、num2:串联的分子多项式;
      den1、den2:串联的分母多项式;
      
  2. 并联连接

    • 单输入单输出 ( S I S O ) ({rm SISO}) (SISO)系统 G 1 ( s ) G_1(s) G1(s) G 2 ( s ) G_2(s) G2(s)并联连接结构图:

      3

    • 并联连接合成的系统传递函数为: G ( s ) = G 1 ( s ) + G 2 ( s ) G(s)=G_1(s)+G_2(s) G(s)=G1(s)+G2(s)

    • 推广:若 n n n个环节串联,则合成的传递函数为: G ( s ) = G 1 ( s ) + G 2 ( s ) + ⋯ + G n ( s ) G(s)=G_1(s)+G_2(s)+cdots+G_n(s) G(s)=G1(s)+G2(s)++Gn(s)

    • M A T L A B {rm MATLAB} MATLAB的并联函数 p a r a l l e l {rm parallel} parallel

      # 语法格式:
      [num,den]=parallel(num1,den1,num2,den2)
      
      # 参数说明:
      num:并联后系统的分子多项式;
      den:并联后系统的分母多项式;
      num1、num2:并联的分子多项式;
      den1、den2:并联的分母多项式;
      
  3. 反馈连接

    • 反馈系统结构图:

      4

    • 当系统正反馈连接时,合成的系统传递函数为: G H ( s ) = G ( s ) H ( s ) 1 − G ( s ) H ( s ) GH(s)=displaystylefrac{G(s)H(s)}{1-G(s)H(s)} GH(s)=1G(s)H(s)G(s)H(s)

    • 当系统负反馈连接时,合成的系统传递函数为: G H ( s ) = G ( s ) H ( s ) 1 + G ( s ) H ( s ) GH(s)=displaystylefrac{G(s)H(s)}{1+G(s)H(s)} GH(s)=1+G(s)H(s)G(s)H(s)

    • M A T L A B {rm MATLAB} MATLAB的反馈函数 f e e d b a c k {rm feedback} feedback

      # 语法格式:
      [num,den]=feedback(num1,den1,num2,den2,sign)
      
      # 参数说明:
      num:反馈连接后系统的分子多项式;
      den:反馈连接后系统的分母多项式;
      num1:G(s)的分子多项式;
      den1:G(s)的分母多项式;
      num2:H(s)的分子多项式;
      den2:H(s)的分母多项式;
      sign:反馈的符号,默认为负值,即sign=-1;
      
  4. 单位反馈(闭环连接)

    • 单位反馈系统结构图:

      5

    • M A T L A B {rm MATLAB} MATLAB的单位反馈函数 c l o o p {rm cloop} cloop

      # 语法格式:
      [numc,denc]=cloop(num,den,sign)
      
      # 参数说明:
      numc:单位反馈连接后系统的分子多项式;
      denc:单位反馈连接后系统的分母多项式;
      num:G(s)的分子多项式;
      den:G(s)的分母多项式;
      sign:反馈的符号,默认为负值,即sign=-1;
      sign=1,采用正反馈;sign=-1,采用负反馈;
      
3.1.4 模型串并连连接实例

实验要求:已知两系统的传递函数: G 1 ( s ) = 6 ( s + 2 ) ( s + 1 ) ( s + 3 ) ( s + 5 ) 、 G 1 ( s ) = ( s + 2.5 ) ( s + 1 ) ( s + 4 ) G_1(s)=displaystylefrac{6(s+2)}{(s+1)(s+3)(s+5)}、G_1(s)=displaystylefrac{(s+2.5)}{(s+1)(s+4)} G1(s)=(s+1)(s+3)(s+5)6(s+2)G1(s)=(s+1)(s+4)(s+2.5),求系统串联、并联的传递函数。

解:

% 实例Chapter4.3 3.1.4
clc;clear;

% 建立两系统的分子分母行向量
% 系统1
num1=6*[1,2];den1=conv([1,1],conv([1,3],[1,5]));

% 系统2
num2=[1,2.5];den2=conv([1,1],[1,4]);

% 系统串联连接
[nums,dens]=series(num1,den1,num2,den2);

% 系统并联连接
[nump,denp]=parallel(num1,den1,num2,den2);

% 建立串联和并联后模型
s_tf=tf(nums,dens);
p_tf=tf(nump,denp);

% 显示串联后和并联后模型
s_tf,p_tf
% 结果显示:
% 串联模型
s_tf = 
               6 s^2 + 27 s + 30
  --------------------------------------------
  s^5 + 14 s^4 + 72 s^3 + 166 s^2 + 167 s + 60
 
Continuous-time transfer function.

% 并联模型
p_tf = 
   s^4 + 17.5 s^3 + 87.5 s^2 + 156.5 s + 85.5
  --------------------------------------------
  s^5 + 14 s^4 + 72 s^3 + 166 s^2 + 167 s + 60
 
Continuous-time transfer function.
  • 串联后系统传递函数为: G ( s ) = 6 s 2 + 27 s + 30 s 5 + 14 s 4 + 72 s 3 + 166 s 2 + 167 s + 60 G(s)=displaystylefrac{6s^2+27s+30}{s^5+14s^4+72s^3+166s^2+167s+60} G(s)=s5+14s4+72s3+166s2+167s+606s2+27s+30
  • 并联后系统传递函数为: G ( s ) = s 4 + 17.5 s 3 + 87.5 s 2 + 156.5 s + 85.5 s 5 + 14 s 4 + 72 s 3 + 166 s 2 + 167 s + 60 G(s)=displaystylefrac{s^4+17.5s^3+87.5s^2+156.5s+85.5}{s^5+14s^4+72s^3+166s^2+167s+60} G(s)=s5+14s4+72s3+166s2+167s+60s4+17.5s3+87.5s2+156.5s+85.5
3.1.5 模型反馈连接实例

实验要求:已知系统的前向传递函数为: G ( s ) = s − 1 s 2 − 5 s − 2 G(s)=displaystylefrac{s-1}{s^2-5s-2} G(s)=s25s2s1,分别求解反馈传递函数为: H ( s ) = 1 、 H(s)=1、 H(s)=1 H ( s ) = s + 1 s 2 + 3 s + 2 H(s)=displaystylefrac{s+1}{s^2+3s+2} H(s)=s2+3s+2s+1时闭环连接传递函数(单位反馈)和负反馈传递函数。

解:

% 实例Chapter4.3 3.1.5
clc;clear;

% 前向传递函数分子分母多项式系数向量
num=[1,-1];den=[1,-5,-2];

% 反馈传递函数的分子分母多项式系数向量
numh=[1,1];denh=[1,3,2];

% 闭环连接(单位反馈)
[numc,denc]=cloop(num,den);

% 反馈连接
[numf,denf]=feedback(num,den,numh,denh);

% 闭环传递函数和反馈连接传递函数
c_tf=tf(numc,denc);
f_tf=tf(numf,denf);

% 显示模型
c_tf,f_tf

% 结果显示:
% 闭环连接(单位反馈)模型
c_tf = 
      s - 1
  -------------
  s^2 - 4 s - 3 
Continuous-time transfer function.

% 反馈连接模型
f_tf = 
        s^3 + 2 s^2 - s - 2
  -------------------------------
  s^4 - 2 s^3 - 14 s^2 - 16 s - 5 
Continuous-time transfer function.

  • 闭环连接(单位反馈)模型: G ( s ) = s − 1 s 2 − 4 s − 3 G(s)=displaystylefrac{s-1}{s^2-4s-3} G(s)=s24s3s1
  • 反馈连接模型: G ( s ) = s 3 + 2 s 2 − s − 2 s 4 − 2 s 3 − 14 s 2 − 16 s − 5 G(s)=displaystylefrac{s^3+2s^2-s-2}{s^4-2s^3-14s^2-16s-5} G(s)=s42s314s216s5s3+2s2s2
3.2 非线性数学模型的线性化
3.2.1 一个自变量的线性化过程
  • 控制工程中,如果系统的运行是围绕平衡点进行的,且系统中的信号是围绕平衡点变化的小信号,则可以用线性系统去近似非线性系统;这种线性系统在有限的工作范围内等效于原来的非线性系统;

  • 线性化过程用数学方法描述:将一个非线性函数 y = f ( x ) y=f(x) y=f(x),在其工作点 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)处展开成泰勒级数,忽略二次以上的高阶项,可得其线性化方程,以此代替原来的非线性函数;

  • 因为忽略了泰勒级数展开中的高阶项,因此,这些被忽略的项必须很小,即变量只能对工作状态有微小的偏离;

  • 对于具有一个自变量的非线性函数,设输入量为 x ( t ) x(t) x(t),输出量为 y ( t ) y(t) y(t),系统正常工作点为 y 0 = f ( x 0 ) y_0=f(x_0) y0=f(x0),在 y 0 = f ( x 0 ) y_0=f(x_0) y0=f(x0)附近展开成泰勒级数为:
    y = f ( x 0 ) + ( d f ( x ) d x ) x = x 0 ( x − x 0 ) + 1 2 ! ( d 2 f ( x ) d x 2 ) x = x 0 ( x − x 0 ) 2 + ⋯ y=f(x_0)+left(displaystylefrac{{rm d}f(x)}{{rm d}x}right)_{x=x_0}(x-x_0)+frac{1}{2!}left(displaystylefrac{{rm d}^2f(x)}{{rm d}x^2}right)_{x=x_0}(x-x_0)^2+cdots y=f(x0)+(dxdf(x))x=x0(xx0)+2!1(dx2d2f(x))x=x0(xx0)2+
    如果变量的变化 x − x 0 x-x_0 xx0很小,则可以忽略二次以上的项,可线性化为:
    y = f ( x 0 ) + ( d f ( x ) d x ) x = x 0 ( x − x 0 ) ⇒ y = y 0 + K ( x − x 0 ) y=f(x_0)+left(displaystylefrac{{rm d}f(x)}{{rm d}x}right)_{x=x_0}(x-x_0)Rightarrow{y}=y_0+K(x-x_0) y=f(x0)+(dxdf(x))x=x0(xx0)y=y0+K(xx0)
    其中: y 0 = f ( x 0 ) , K = ( d f ( x ) d x ) x = x 0 y_0=f(x_0),K=left(displaystylefrac{{rm d}f(x)}{{rm d}x}right)_{x=x_0} y0=f(x0)K=(dxdf(x))x=x0

3.2.2 多输入量函数的线性化过程
  • 两个输入变量的函数 y = f ( x 1 , x 2 ) y=f(x_1,x_2) y=f(x1,x2)在工作点 x 1 = x 10 , x 2 = x 20 x_1=x_{10},x_2=x_{20} x1=x10x2=x20处的线性化;

  • 方程 y = f ( x 1 , x 2 ) y=f(x_1,x_2) y=f(x1,x2)在工作点附近展开成泰勒级数,有:
    y = f ( x 10 , x 20 ) + [ ( ∂ f ∂ x 1 ) ( x 1 − x 10 ) + ( ∂ f ∂ x 2 ) ( x 2 − x 20 ) ] + 1 2 ! [ ( ∂ 2 f ∂ x 1 2 ) ( x 1 − x 10 ) 2 + 2 ( ∂ 2 f ∂ x 1 ∂ x 2 ) ( x 1 − x 10 ) ( x 2 − x 20 ) + ( ∂ 2 f ∂ x 2 2 ) ( x 2 − x 20 ) 2 ] + ⋯ begin{aligned} y&=f(x_{10},x_{20})+left[left(displaystylefrac{partial{f}}{partial{x_1}}right)(x_1-x_{10})+left(displaystylefrac{partial{f}}{partial{x_2}}right)(x_2-x_{20})right]\\ &+displaystylefrac{1}{2!}left[left(displaystylefrac{partial^2{f}}{partial{x^2_1}}right)(x_1-x_{10})^2+2left(displaystylefrac{partial^2f}{partial{x_1}partial{x_2}}right)(x_1-x_{10})(x_2-x_{20})+left(displaystylefrac{partial^2{f}}{partial{x^2_2}}right)(x_2-x_{20})^2right]+cdots end{aligned} y=f(x10,x20)+[(x1f)(x1x10)+(x2f)(x2x20)]+2!1[(x122f)(x1x10)2+2(x1x22f)(x1x10)(x2x20)+(x222f)(x2x20)2]+
    在工作点附近,高阶项忽略不计,可得:
    y = f ( x 10 , x 20 ) + ( ∂ f ∂ x 1 ) x = x 10 ( x 1 − x 10 ) + ( ∂ f ∂ x 2 ) x = x 20 ( x 2 − x 20 ) y=f(x_{10},x_{20})+left(displaystylefrac{partial{f}}{partial{x_1}}right)_{x=x_{10}}(x_1-x_{10})+left(displaystylefrac{partial{f}}{partial{x_2}}right)_{x=x_{20}}(x_2-x_{20}) y=f(x10,x20)+(x1f)x=x10(x1x10)+(x2f)x=x20(x2x20)
    简化可得:
    y = y 0 + K 1 ( x 1 − x 10 ) + K 2 ( x 2 − x 20 ) y=y_0+K_1(x_1-x_{10})+K_2(x_2-x_{20}) y=y0+K1(x1x10)+K2(x2x20)
    其中: K 1 = ( ∂ f ∂ x 1 ) x = x 10 , x 2 = x 20 , K 2 = ( ∂ f ∂ x 2 ) x = x 10 , x 2 = x 20 K_1=left(displaystylefrac{{partial{f}}}{partial{x_1}}right)_{x=x_{10},x_2=x_{20}},K_2=left(displaystylefrac{{partial{f}}}{partial{x_2}}right)_{x=x_{10},x_2=x_{20}} K1=(x1f)x=x10,x2=x20,K2=(x2f)x=x10,x2=x20

最后

以上就是饱满柚子最近收集整理的关于Day15--Simulink自定义功能模块的全部内容,更多相关Day15--Simulink自定义功能模块内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(152)

评论列表共有 0 条评论

立即
投稿
返回
顶部