Engee documentation
Notebook

Numerical values of system characteristics in time domain

This example shows how to obtain numerical values of step response characteristics such as rise time, steady-state time, and overshoot using stepinfo. You can use similar methods with lsim to obtain system response characteristics for arbitrary input data or initial conditions.

Before you begin, connect the 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

The output is a structure containing the values of the step response characteristics. To access these values or to use them in other calculations, use a point record. For example, data.overshoot is the overshoot value.

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

To see how other characteristics are labelled in the structure StepInfo, run the following code box. It will bring up a brief help.

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)

Calculate the time required for the step characteristic H to settle within 0.5% of its final value.

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

By default, stepinfo defines the steady-state time as the time required for the output signal to settle within 2% of its final value. Specifying a more stringent "time tube" value of 0.005 will increase the value of settlingtime.

Conclusion

In this demo example, we have looked at a functional for analysing the numerical characteristics of system responses in the time domain.