Engee 文档
Notebook

二极管桥建模

本例将演示一个经典电气工程问题的解决方案--将交流电压转换为直流电压。这个问题借助整流器来解决。桥式电路是整流器的变体之一:

rect_scheme.png

考虑Engee中的相应电路(模型ssc_bridge_rectifier.engee):

image.png

这里的整流器使用电气元件库模块建模。

In [ ]:
Pkg.add(["Statistics", "CSV"])
In [ ]:
using Plots
using MATLAB
using CSV
using DataFrames
using Statistics

plotlyjs();

mat"start_simulink"
mat"p = genpath('/user/start/examples'); addpath(p);"

使用软件控制实现模型运行:

加载模型

In [ ]:
modelName = "ssc_bridge_rectifier";
model = modelName in [m.name for m in engee.get_all_models()] ? engee.open( modelName ) : engee.load( "$(@__DIR__)/$(modelName).engee");

运行已加载的模型

In [ ]:
results = engee.run( modelName )
Out[0]:
Dict{String, DataFrame} with 2 entries:
  "AC Voltage" => 501×2 DataFrame…
  "DC Voltage" => 501×2 DataFrame

加载并可视化模拟数据。

读取包含电压变化数据的 csv 文件,并将其转换为矩阵。

In [ ]:
Bridge_Engee_t = results["DC Voltage"].time;
Bridge_Engee_d = results["DC Voltage"].value;

让我们绘制一张整流电压图:

In [ ]:
p_adc_da_e = plot(Bridge_Engee_t ,Bridge_Engee_d , legend = false)
plot!(title = "Результаты моделирования в Engee", ylabel = "Напряжение, В", xlabel="Время, c")
Out[0]:

同样的电路也可以在 SimScape 中建模:

image.png

在 Simulink 中运行模型,并将结果加载到变量中:

In [ ]:
mat"run_test_model('ssc_bridge_rectifier_demo');";
sl_rect_values = mat"SysOutput.Data";
sl_rect_times = mat"SysOutput.Time";

让我们看看 SimScape 中的模拟结果:

In [ ]:
plot(sl_rect_times, sl_rect_values, legend = false) 
plot!(title = "Результаты моделирования в Simulink", ylabel = "Напряжение, В", xlabel="Время, c")
Out[0]:

让我们比较一下图表:

In [ ]:
plot(Bridge_Engee_t ,Bridge_Engee_d, label = "Engee")
plot!(title = "Сравнение результатов моделирования")
plot!(sl_rect_times, sl_rect_values, label = "Simulink")
plot!(legend = :outertopright,ylabel = "Цифровой сигнал", xlabel="Время, c")
Out[0]:

结论

本例演示了在 Engee 脚本编辑器中使用命令控制模型,以及在 Simulink 环境中运行模型,对二极管整流器进行建模。计算显示,在这两种环境中运行仿真时,结果差异极小。