Engee 文档
Notebook

ACS 频率特性调查

在本例中,让我们考虑 Engee 环境研究 ACS 频率特性的功能。

结构转换

无人机系统的模型是一个结构图,其中包括典型的动态链接块。通过对这些链接的传递函数进行运算,就能找到自动控制系统的传递函数。

当串联连接时,链节的传递函数等于其传递函数的乘积:

$$ W(p)=\prod_{i=1}^n W_i(p) $$

一组并联链路的传递函数等于其传递函数之和:

$$ W(p)=\sum_{i=1}^n W_i(p) $$

如果传递函数为$W_1(p)$ 的链路被一个反馈所覆盖,其中有一个链路$W_{ос}(p)$ ,则闭环$W(p)$ 的传递函数由公式确定:

$$ W(p)=\frac{W_1(p)}{1 \pm W_1(p)W_{oc}(p)} $$ 分母中的正负号分别对应负反馈和正反馈。

让我们考虑一下ControlSystems.jl 库的功能,通过这些功能可以对电路进行结构转换。

In [ ]:
Pkg.add(["ControlSystems"])
In [ ]:
#Подключим библиотеку для работы с САУ
using ControlSystems

#Зададим передаточные функции
W1 = tf([1],[0.5, 1]);
W2 = tf([1],[1, 1]);

有一个函数 ControlSystemsBase.series 用于传递函数的连续相乘。

In [ ]:
#Последовательное перемножение систем
series(W1,W2)
Out[0]:
TransferFunction{Continuous, ControlSystemsBase.SisoRational{Float64}}
        1.0
-------------------
0.5s^2 + 1.5s + 1.0

Continuous-time transfer function model

使用函数 ControlSystemsBase.parallel 可以确定一组并联链路的传递函数。

In [ ]:
#Параллельное соединение звеньев
parallel(W1,W2)
Out[0]:
TransferFunction{Continuous, ControlSystemsBase.SisoRational{Float64}}
    1.5s + 2.0
-------------------
0.5s^2 + 1.5s + 1.0

Continuous-time transfer function model

要确定由一个反馈链路组成的环路的传递函数,可使用函数 ControlSystemsBase.feedback

In [ ]:
#Если звено охвачено единичной обратной связью, вторым аргументом указывается 1
W3 = feedback(W1,1)

#Если обратная связь проходит через звено W2
W4 = feedback(W1,W2)

display([W3,W4])
2-element Vector{TransferFunction{Continuous, ControlSystemsBase.SisoRational{Float64}}}:
 TransferFunction{Continuous, ControlSystemsBase.SisoRational{Float64}}
   1.0
----------
0.5s + 2.0

Continuous-time transfer function model
 TransferFunction{Continuous, ControlSystemsBase.SisoRational{Float64}}
    1.0s + 1.0
-------------------
0.5s^2 + 1.5s + 2.0

Continuous-time transfer function model

使用ControlSystemsBase.feedback 函数时,默认情况下会形成负反馈连接。不过,也可以通过传递 -1 作为第二个参数来指定该连接应为正反馈。

In [ ]:
#Звено охвачено единичной положительной обратной связью
feedback(W1, -1)
Out[0]:
TransferFunction{Continuous, ControlSystemsBase.SisoRational{Float64}}
1.0
----
0.5s

Continuous-time transfer function model

获取并研究 ACS 的频率特性

让我们设置 ACS 的传递函数,如下图所示。

image.png

In [ ]:
#Зададим параметры САУ
Ku = 10;
Tu = 0.001;
Km = 3;
Tm = 0.1;
Te = 0.02;
Kp = 0.01;
In [ ]:
#Задаем передаточные функции звеньев САУ
W_1 = Ku*tf([1],[Tu, 1]);
W_2 = Km*tf([1],[Tm*Te, 1, 1]);
W_3 = Kp*tf([1],[1, 0]);

display([W_1, W_2, W_3])
3-element Vector{TransferFunction{Continuous, ControlSystemsBase.SisoRational{Float64}}}:
 TransferFunction{Continuous, ControlSystemsBase.SisoRational{Float64}}
    10.0
------------
0.001s + 1.0

Continuous-time transfer function model
 TransferFunction{Continuous, ControlSystemsBase.SisoRational{Float64}}
         3.0
---------------------
0.002s^2 + 1.0s + 1.0

Continuous-time transfer function model
 TransferFunction{Continuous, ControlSystemsBase.SisoRational{Float64}}
0.01
----
1.0s

Continuous-time transfer function model

这些链路是串联的,因此我们可以利用熟悉的 ControlSystemsBase.series,获得开环系统的整体传递函数。

In [ ]:
#Получаем передаточную функцию разомкнутой системы
W = series(W_1, W_2)
W = series(W, W_3)
Out[0]:
TransferFunction{Continuous, ControlSystemsBase.SisoRational{Float64}}
                 0.3
--------------------------------------
2.0e-6s^4 + 0.003s^3 + 1.001s^2 + 1.0s

Continuous-time transfer function model

让我们绘制 AFCC 和 LAFCC 图。

In [ ]:
#Получение АФЧХ
w = -100:0.1:100
nyquistplot(W,w,title="АФЧХ",label="W")
Out[0]:

同时绘制开环系统的 LFCC,并显示稳定储备的振幅和相位。为此,我们使用函数 ControlSystemsBase.marginplot

In [ ]:
#Определим запасы устойчивости по амплитуде и по фазе
marginplot(W,label="W")
Out[0]:

稳定裕量显示在图表标题中。振幅裕度为 1111.76 dB,相位裕度为 73.89 度。LFCC 在 18.26 弧度/秒时越过 180 度,截止频率为 0.29 弧度/秒。您还可以在图表上移动光标,查看任意选定点的振幅、相位和频率值。

结论

在本例中,我们学习了 Engee 用于研究无人机系统频率响应的功能。我们还学习了如何使用库函数ContolSystems.jl 转换结构图。要了解绘制频率响应图的更多信息,请参阅绘图函数