Отклики нескольких моделей во временной области
В этом примере показано, как сравнить ступенчатую реакцию нескольких моделей на одном графике с помощью step
. В этом примере сравнивается ступенчатая реакция неконтролируемого объекта с замкнутым контуром и двумя разными ПИ-регуляторами. Вы можете использовать аналогичные методы с другими командами реакции, такими как impulse
или lsim
, чтобы получить графики реакции нескольких моделей.
В этом примере получите две модели, временные характеристики которых вы хотите сравнить, и постройте их графики вместе. Например, вы можете сравнить систему третьего порядка G и реакцию замкнутой системы G с регулятором C1.
Pkg.add(["ControlSystems"])
import Pkg;
Pkg.add("ControlSystems")
using ControlSystems
G = zpk([], [-5, -5, -10], 100)
C1 = pid(0, 4.4; form=:parallel)
CL1 = feedback(G*C1)
Функция step
принимает на вход описание системы, а на выходе формирует объект типа ControlSystemsBase.SimResult
. Если этот объект передать в функцию plot
, то построиться график переходного процесса.
step(CL1)
plot([step(G), step(CL1)], label=["G" "CL1"])
xlims!(0,7)
hline!([1], linecolor=:black, style=:dash, label=:false)
Если отправить несколько объектов функции step
в качестве входных аргументов plot
, на одном графике отобразяться отклики заданных моделей Если вы не указываете временной диапазон для построения графика, step
пытается выбрать временной диапазон, который иллюстрирует динамику модели.
Сравните реакцию на шаг модели с обратной связью с реакцией другого контроллера. Укажите цвета и стили графиков для каждой реакции.
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)
Вы можете задать собственный цвет и стиль графика для каждого переходного процесса, меняя параметры linestyle
и color
.