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

Моделирование диодного моста

В данном примере будет продемонстрировано решение классической задачи электротехники – преобразование переменного напряжения в постоянное. Данная задача решается при помощи выпрямителей. Одним из вариантов выпрямителя является мостовая схема:

rect_scheme.png

Рассмотрим соответствующую схему в Engee (модель ssc_bridge_rectifier.engee):

image.png

Выпрямитель здесь моделируется с использованием блоков библиотеки электрических компонентов.

using Plots
using MATLAB
using CSV
using DataFrames
using Statistics

plotlyjs();

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

Реализация запуска модели с помощью программного управления

Загрузка модели:

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

Запуск загруженной модели:

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

Загрузка и визуализация данных, полученных в ходе симуляции

Чтение csv-файлов с данными о изменении напряжения, с последующим преобразованием в матрицу.

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

Построим график выпрямленного напряжения:

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

interactive-scripts/images/physmod_demo_diode_bridge_rectifier/a42d22d839549acbd949623b94ed9dd3259f713f

Такая же схема может быть промоделирована в SimScape:

image.png

Запуск модели в Simulink и загрузка результатов в переменные:

mat"run_test_model('ssc_bridge_rectifier_demo');";
sl_rect_values = mat"SysOutput.Data";
sl_rect_times = mat"SysOutput.Time";

Посмотрим на результаты моделирования в SimScape:

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

interactive-scripts/images/physmod_demo_diode_bridge_rectifier/e491061ca91d6e5facd10b58ee0a0ac2f6a5de95

Сравним графики:

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")

interactive-scripts/images/physmod_demo_diode_bridge_rectifier/373153d79f7f57de93d36014569a60262bb3af07

Вывод

В данном примере было продемонстрировано моделирование диодного выпрямителя с помощью командного управления моделью в редакторе скрипта Engee, а также запуск модели из среды Simulink. Расчёты показали минимальную разницу в результатах при запуске симуляции в этих двух средах.

Блоки, использованные в примере