Документация Engee
Notebook

Числовые значения характеристик системы во временной области

В этом примере показано, как получить числовые значения характеристик ступенчатого отклика, таких как время нарастания, время установившегося процесса и перерегулирование с помощью stepinfo. Вы можете использовать аналогичные методы с lsim для получения характеристик реакции системы на произвольные входные данные или начальные условия.

Перед началом работы подключите пакет ControlSystems.jl.

In [ ]:
import Pkg
Pkg.add("ControlSystems")
In [ ]:
using ControlSystems
s = tf('s');
In [ ]:
H = tf([8, 18, 32],[1, 6, 14, 24]);
data = stepinfo(step(H))
Out[0]:
StepInfo:
Initial value:     0.000
Final value:       1.333
Step size:         1.333
Peak:              1.687
Peak time:         0.609 s
Overshoot:         26.54 %
Undershoot:         0.00 %
Settling time:     3.507 s
Rise time:         0.210 s

На выходе получается структура, содержащая значения характеристик ступенчатого отклика. Чтобы получить доступ к этим значениям или использовать их в других вычислениях, используйте точечную запись. Например, data.overshoot — это значение перерегулирования.

In [ ]:
data.overshoot
Out[0]:
26.543295948871087

Чтобы посмотреть, как обзначены другие характеристики в структуре StepInfo, запустите следующую ячекйку с кодом. Она вызывает краткую справку.

In [ ]:
?stepinfo
search: stepinfo StepInfo CompositeException InvalidStateException

Out[0]:
stepinfo(res::SimResult; y0 = nothing, yf = nothing, settling_th = 0.02, risetime_th = (0.1, 0.9))

Вычисляет характеристики ступенчатого отклика для результата моделирования. В структуре StepInfo вычисляется и хранится следующая информация.

  • y0: начальное значение отклика.
  • yf: конечное значение отклика.
  • stepsize: размер шага.
  • peak: пиковое значение отклика.
  • peaktime: время возникновения пика.
  • overshoot: процентное превышение отклика.
  • undershoot: процентное недостижение отклика. Если ступенчатый отклик никогда не опускается ниже начального значения, недостижение равно нулю.
  • settlingtime: время, в которое отклик установился в пределах settling_th от конечного значения.
  • settlingtimeind: индекс, в котором отклик установился в пределах settling_th от конечного значения.
  • risetime: время, в которое отклик вырос с risetime_th[1] до risetime_th[2] от конечного значения.

Аргументы

  • res: результат моделирования с использованием step (или lsim).
  • y0: начальное значение. Если оно не указано, используется первое значение из отклика.
  • yf: конечное значение. Если оно не указано, используется первое значение из отклика. Чтобы автоматически вычисленное значение имело смысл, моделирование должно достичь установившегося состояния. В противном случае конечное значение можно указать вручную.
  • settling_th: пороговое значение для вычисления времени установления. Время установления — это время, в которое отклик установился в пределах settling_th от конечного значения.
  • risetime_th: нижний и верхний порог для вычисления времени нарастания. Время нарастания — это время, в которое отклик вырос с risetime_th[1] до risetime_th[2] от конечного значения.

Пример:

G = tf([1], [1, 1, 1])
res = step(G, 15)
si = stepinfo(res)
plot(si)

Рассчитайте время, необходимое для того, чтобы ступенчатая характеристика H установилась в пределах 0,5% от ее конечного значения.

In [ ]:
data = stepinfo(step(H), settling_th = 0.005)
t05 = data.settlingtime
Out[0]:
4.893

По умолчанию stepinfo определяет время установившегося процесса, как время необходимое для того, чтобы выходной сигнал установился в пределах 2% от своего конечного значения. Указание более строгого значения "временной трубки", равного 0.005, приводит к увеличению значения settlingtime.

Вывод

В данном демо-примере мы рассмотрели функционал для анализа числовых характеристик откликов системы во временной области.