Engee 文档
Notebook

包含的子系统的比较

在这个例子中,分析了两个相同子系统的变体,其中接收到的控制信号的设置存在差异。 在第一种情况下,信号启动模型,在第二种情况下重置其执行。

下图显示了模型本身。

image.png

接下来,我们将连接一个辅助函数来启动模型。

In [ ]:
function run_model( name_model)
    
    Path = (@__DIR__) * "/" * name_model * ".engee"
    
    if name_model in [m.name for m in engee.get_all_models()] # Проверка условия загрузки модели в ядро
        model = engee.open( name_model ) # Открыть модель
        model_output = engee.run( model, verbose=true ); # Запустить модель
    else
        model = engee.load( Path, force=true ) # Загрузить модель
        model_output = engee.run( model, verbose=true ); # Запустить модель
        engee.close( name_model, force=true ); # Закрыть модель
    end
    sleep(5)
    return model_output
end
Out[0]:
run_model (generic function with 1 method)

让我们启动模型。

In [ ]:
run_model("CompareEnabled") # Запуск модели.
Building...
Progress 100%
Out[0]:
Dict{String, DataFrames.DataFrame} with 3 entries:
  "state_and_output_held.Out1"  => 1001×2 DataFrame…
  "state_and_output_reset.Out1" => 1001×2 DataFrame…
  "Sine Wave.1"                 => 1001×2 DataFrame

让我们解压缩并显示从模型中记录的信号。

In [ ]:
held = simout["CompareEnabled/state_and_output_held.Out1"];
reset = simout["CompareEnabled/state_and_output_reset.Out1"];
Sine = simout["CompareEnabled/Sine Wave.1"];

held = collect(held);
reset = collect(reset);
Sine = collect(Sine);

plot(held.time, held.value)
plot!(reset.time, reset.value)
plot!(Sine.time, Sine.value)
Out[0]:

结论

从得到的曲线图中我们可以看到,复位系统在转换到控制信号的正区域的瞬间切换到积分器的初始状态,而系统在没有复位的情况下从积分器内部的

示例中使用的块