Engee 文档
Notebook

时域中几种模型的响应

此示例演示如何使用以下方法比较同一图形上多个模型的逐步反应 step. 这个例子比较了一个不受控制的对象与一个闭环和两个不同的PI调节器的逐步反应。 您可以使用类似的方法与其他反应命令,如 impulselsim 得到几个模型的反应图。

在此示例中,获取要比较其时间特征的两个模型,并将它们的图形绘制在一起。 例如,可以比较三阶体系G和封闭体系G与调节剂C1的反应。

In [ ]:
Pkg.add(["ControlSystems"])
In [ ]:
import Pkg; 
Pkg.add("ControlSystems")
   Resolving package versions...
  No Changes to `~/.project/Project.toml`
  No Changes to `~/.project/Manifest.toml`
In [ ]:
using ControlSystems
In [ ]:
G = zpk([], [-5, -5, -10], 100)
Out[0]:
TransferFunction{Continuous, ControlSystemsBase.SisoZpk{Int64, Int64}}
             1
100----------------------
   (s + 5)(s + 5)(s + 10)

Continuous-time transfer function model
In [ ]:
C1 = pid(0, 4.4; form=:parallel)
Out[0]:
TransferFunction{Continuous, ControlSystemsBase.SisoRational{Float64}}
4.4
----
1.0s

Continuous-time transfer function model
In [ ]:
CL1 = feedback(G*C1)
Out[0]:
TransferFunction{Continuous, ControlSystemsBase.SisoZpk{Float64, ComplexF64}}
                                                                  1.0
440.00000000000006----------------------------------------------------------------------------------------------------
                  (1.0s^2 + 18.182441807113936s + 86.88838599897278)(1.0s^2 + 1.8175581928860574s + 5.063967927833328)

Continuous-time transfer function model

功能 step 接受系统的描述作为输入,并在输出处生成类型的对象。 ControlSystemsBase.SimResult. 如果将此对象传递给函数 plot,然后构建过渡过程的时间表。

In [ ]:
step(CL1)
Out[0]:
ControlSystemsBase.SimResult{Matrix{Float64}, StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, Matrix{Float64}, Matrix{Float64}, StateSpace{Continuous, Float64}}([0.0 1.1101474535917157e-7 … 0.9999999999999879 0.9999999999999879], 0.0:0.0089:55.9988, [0.0 6.459039729988163e-8 … 0.5818181818181747 0.5818181818181747; 0.0 1.4386184767184292e-5 … 5.620737843258297e-15 5.620604012052631e-15; 0.0 0.000597208113779645 … -1.6263032587282567e-18 -2.0599841277224584e-18; 0.0 0.016278755147748875 … -6.938893903907228e-18 -6.938893903907228e-18], [1.0 1.0 … 1.0 1.0], StateSpace{Continuous, Float64}
A = 
  0.0                  2.0                   0.0                  0.0
  0.0                  0.0                   8.0                  0.0
  0.0                  0.0                   0.0                  8.0
 -3.4375000000000044  -3.9062500000000004  -15.625000000000002  -19.999999999999993
B = 
 0.0
 0.0
 0.0
 2.0
C = 
 1.7187500000000002  0.0  0.0  0.0
D = 
 0.0

Continuous-time state-space model)
In [ ]:
plot([step(G), step(CL1)], label=["G" "CL1"])
xlims!(0,7)
hline!([1], linecolor=:black, style=:dash, label=:false)
Out[0]:

如果发送多个函数对象 step作为输入参数 plot,如果未指定绘图的时间范围,则一个图形显示指定模型的响应, step 尝试选择说明模型动态的时间范围。

将对反馈模型步骤的反应与另一个控制器的反应进行比较。 为每个反应指定图形的颜色和样式。

In [ ]:
C2 = pid(2.9, 7.1; form=:parallel)
CL2 = feedback(G * C2)

plot(step(G,7), label="G", color=:blue)
plot!(step(CL1,7), label="CL1", color=:green)
plot!(step(CL2,7), label="CL2", color=:red)

hline!([0.4, 1], linestyle=:dash, color=:black, label=:false)
Out[0]:

您可以通过更改参数为每个过渡过程设置自己的颜色和图形样式。 linestylecolor.