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 的值。

结论

在本演示示例中,我们介绍了一种用于分析时域系统响应数值特征的功能。