Engee 文档
Notebook

创建连续系统模型

在本例中,让我们看看如何使用函数tf zpk ss 创建时间连续系统模型。


ControlSystems.jl 库允许您以三种不同的方式指定连续系统的线性模型:

  • 传递函数 (tf)
  • 设置极点和零点 (zpk)
  • 状态空间 (ss)
In [ ]:
Pkg.add(["ControlSystems"])
In [ ]:
#Подключение библиотеки для работы с САУ
using ControlSystems

传递函数

对于 SISO 系统,传递函数是多项式$A(s)$ 和$B(s)$ 的比值,它们是输出量和输入量的拉普拉斯图像。

$$ W(s)={\frac{A(s)}{B(s)}}={\frac{a_1s^n+a_2s^{n-1}+...+a_ns^{n+1}}{b_1s^m+b_2s^{m-1}+...+a_ms^{m+1}}} $$

在 Engee 中,多项式被定义为系数向量。例如,多项式:$s^2 + 2s + 10$的系数向量为:$[1, 2, 10]$ 。

我们可以得到如下形式的传递函数

In [ ]:
num = [1, 0]; #Задаем числитель
den = [1, 2, 10]; #Задаем знаменатель
W1 = tf(num, den)
Out[0]:
TransferFunction{Continuous, ControlSystemsBase.SisoRational{Int64}}
      s
-------------
s^2 + 2s + 10

Continuous-time transfer function model

作为另一种选择,我们可以转到拉普拉斯域,用变量 s 的多项式代替带系数的矢量。

In [ ]:
s = tf('s'); #Создаем переменную Лапласа
W2 = s/(s^2 + 2*s + 10)
Out[0]:
TransferFunction{Continuous, ControlSystemsBase.SisoRational{Int64}}
      s
-------------
s^2 + 2s + 10

Continuous-time transfer function model

设置极点和零点

zpk() 函数定义的模型描述看起来就像一个传递函数。 $$ H(s) = {k\frac{(s-z_1)...(s-z_n)}{(s-p_1)...(s-p_m)}} $$ 分子的根称为零点,分母的根称为极点。标量系数$k$ 就是增益。

要通过函数zpk() 指定模型,需要传递极点、零点和增益向量。

In [ ]:
z = [0]; # Нули
p = [2,1+1im,1-1im]; # Полюса
k = -2; # коэффициент усиления
H = zpk(z,p,k)
Out[0]:
TransferFunction{Continuous, ControlSystemsBase.SisoZpk{Int64, Complex{Int64}}}
            s
-2---------------------
  (s - 2)(s^2 - 2s + 2)

Continuous-time transfer function model

至于由传递函数定义的模型,您也可以转到拉普拉斯域,并传递带有变量 s 的多项式,而不是带有系数的矢量。

In [ ]:
s = zpk("s");
H = -2*s/(s - 2)/(s^2 - 2*s + 2)
Out[0]:
TransferFunction{Continuous, ControlSystemsBase.SisoZpk{Float64, ComplexF64}}
                                 1.0s
-2.0---------------------------------------------------------------
    (1.0s - 2.0)(1.0s^2 - 1.9999999999999996s + 1.9999999999999991)

Continuous-time transfer function model

状态空间模型

状态空间模型是以矩阵形式表示微分方程。一个物体的完整状态空间模型包含两个方程:

$$\frac{dx}{dt}=Ax(t)+Bu(t)$$ $$y(t) = Cx(t)+Du(t)$$

其中$x(t)$ - 系统状态向量;$u(t)$ - 输入向量(控制信号);$y(t)$ - 输出向量;$A,B,C,D$ - 矩阵。

为了在状态空间中指定模型,有一个函数ss() 。为此,应将所述矩阵设置为函数的输入。

In [ ]:
A = [0  1 ; -5  -2];
B = [0 ; 3];
C = [1  0];
D = 0;
H = ss(A,B,C,D)
Out[0]:
StateSpace{Continuous, Int64}
A = 
  0   1
 -5  -2
B = 
 0
 3
C = 
 1  0
D = 
 0

Continuous-time state-space model

通过对系统模型的描述,可以开始分析其行为。例如,绘制时间和频率特性图。分析 ACS 模型的函数可在 分析中找到。