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

Линеаризация динамической системы

В этом демонстрационном примере мы идентифицируем LTI-систему (линейную и стационарную) по входам-выходам динамической модели. Это нам позволит линеаризовать выбранный отрезок модели, а затем работать с ним как с обычной линейной стационарной системой.

Описание модели

Объектом линеаризации для нас будет служить модель, состоящая из двух RC фильтров, через которые будут проходить прямоугольные импульсы с периодом 0.01 с.

image.png

Каждый фильтр состоит из резистора 10 Ом и конденсатора 1e-04 Ф. Входной сигнал u поступает из блока Pulse Generator, а выходной сигнал y является напряжением на последнем конденсаторе каскада, измеренным вольтметром Voltage Sensor.

In [ ]:
Pkg.add(["ControlSystemIdentification", "ControlSystems"])
In [ ]:
gr()
modelName = "rc_circuit"
if !(modelName in [m.name for m in engee.get_all_models()]) engee.load( "$(@__DIR__)/$(modelName).engee"); end;
data = engee.run( modelName )
Out[0]:
SimulationResult(
    "u" => WorkspaceArray("rc_circuit/u"),
    "y" => WorkspaceArray("rc_circuit/y")
)

Если мы построим графики переменных u и y, то сможем оценить, насколько цепочка фильтров видоизменяет входной сигнал. Именно это поведение мы попробуем приблизительно описать при помощи линейной модели.

In [ ]:
t,u,y = collect(data["u"]).time, collect(data["u"]).value, collect(data["y"]).value
plot( t, [u y], label=["u" "y"] )
Out[0]: