Engee 文档
Notebook

交流/直流转换器建模技术比较

模型描述

此示例演示如何使用AC/DC转换器的各种建模技术。 该模型包含三个转换器:

-具有完美开关的转换器-为实现高细节,该型号采用完美开关和保护二极管,采样周期为10微秒。

-具有平均开关的转换器-为了实现高细节,即使采样周期为50微秒,该模型也使用具有平均PWM信号的平均开关。

-具有平均开关和正弦波调制的转换器-为了最大化采样周期并作为理想的平均转换器工作,该模型使用平均开关和正弦波信号而不是PWM信号,采样周期为100微秒。

通过更改参数开关类型的值来调整细节级别。 使用更详细的模型可以提高结果的准确性,但也会减慢仿真速度。

模型

power_converter_fidelity--1760349158549.png

模拟结果

加载模型:

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

启动模型:

In [ ]:
results = engee.run(model_name);

为了导入仿真结果,预先启用了必要信号的记录,并设置了它们的名称。 从results变量转换仿真结果:

In [ ]:
# 仿真时间向量
sim_time = results["vabc1"].time;
# 记录信号的矢量
va1 = stack(results["vabc1"].value)'[:,1];
va2 = stack(results["vabc2"].value)'[:,1];
va3 = stack(results["vabc3"].value)'[:,1];
va_en = hcat(va1,va2,va3);
ia1 = stack(results["iabc1"].value)'[:,1];
ia2 = stack(results["iabc2"].value)'[:,1];
ia3 = stack(results["iabc3"].value)'[:,1];
ia_en = hcat(ia1,ia2,ia3);
iDC1 = results["iDC1"].value;
iDC2 = results["iDC2"].value;
iDC3 = results["iDC3"].value;
iDC_en = hcat(iDC1,iDC2,iDC3);
va1 = stack(results["vabc1"].value)'[:,1];
va2 = stack(results["vabc2"].value)'[:,1];
va3 = stack(results["vabc3"].value)'[:,1];
va_en = hcat(va1,va2,va3);

负载侧a相电流曲线图:

In [ ]:
using Plots;
gr();
plot(sim_time, ia1, label = "完美的开关", xlabel = "时间,从", left_margin=5Plots.mm)
plot!(sim_time, ia2, label = "平均开关", ylabel = "电流,A", bottom_margin=5Plots.mm)
plot!(sim_time, ia3, label = "正弦调制", title = "ia", size = (800,450))
Out[0]:
No description has been provided for this image

负载侧a相电压曲线图:

In [ ]:
plot(sim_time, va1, label = "完美的开关", xlabel = "时间,从", left_margin=10Plots.mm)
plot!(sim_time, va2, label = "平均开关", ylabel = "电压,V", bottom_margin=5Plots.mm)
plot!(sim_time, va3, label = "正弦调制", title = "va", size = (800,450))
Out[0]:
No description has been provided for this image

转换器从直流侧消耗的电流:

In [ ]:
gr()
plot(sim_time, iDC1, label = "完美的开关", xlabel = "时间,从", left_margin=5Plots.mm)
plot!(sim_time, iDC2, label = "平均开关", ylabel = "电流,A", bottom_margin=5Plots.mm)
plot!(sim_time, iDC3, label = "正弦调制", title = "iDC", size = (800,450))
Out[0]:
No description has been provided for this image

考虑的建模技术可以应用如下:

-详细模型-用于开发的最后阶段或用于[KPM节奏]上的实时模拟(https://engee.com/community/ru/catalogs/projects/kpm-ritm-bystryi-start )使用Fpga。
-平均PWM平均模型是精度和仿真速度之间的折衷。 它可以在设备和控制系统的开发阶段使用,也可以使用中央处理器在KPM节奏上进行实时模拟。
-平均正弦调制模型是最快的建模方法,但在瞬态方面也不太准确。 它可以在设备和控制系统的开发阶段使用,也可以使用中央处理器在KPM节奏上进行实时模拟。

模拟结果与Simulink中的类似模型的比较。

该模型与Simulink[电源转换器模型保真度比较]中的示例类比开发(https://www.mathworks.com/help/sps/ug/power-converter-model-fidelity-comparison.html )。 模型的外观:

изображение.png

来自Simulink模型的信号被预先记录并保存到mat文件中。 从mat文件下载数据:

In [ ]:
using MAT
data = matread("$(@__DIR__)/iDC.mat")
iDC = data["iDC"]';
data2 = matread("$(@__DIR__)/ia.mat")
ia = data2["ia"]';
data3 = matread("$(@__DIR__)/va.mat")
va = data3["va"]';

负载侧a相电流比较

In [ ]:
n = 1; # 转换器编号从上到下
p1 = plot(ia[:,1], ia[:,n+1], label = "Simulink", title = "ia")
plot!(p1, sim_time, ia_en[:,n], label = "Engee", left_margin=15Plots.mm)
p2 = plot(ia[:,1], ia_en[:,n] - ia[:,n+1], label = "错误", bottom_margin=5Plots.mm)
plot(p1, p2, layout=(2,1), size = (800,450), xlabel = "时间,从", ylabel = "电流,A")
Out[0]:
No description has been provided for this image

负载侧a相电压比较:

In [ ]:
n = 1; # 转换器编号从上到下
p1 = plot(va[:,1], va[:,n+1], label = "Simulink", title = "va")
plot!(p1, sim_time, va_en[:,n], label = "Engee", left_margin=15Plots.mm)
p2 = plot(va[:,1], va_en[:,n] - va[:,n+1], label = "错误", bottom_margin=5Plots.mm)
plot(p1, p2, layout=(2,1), size = (800,450), xlabel = "时间,从", ylabel = "电压,V")
Out[0]:
No description has been provided for this image

比较直流侧转换器消耗的电流:

In [ ]:
n = 1; # 转换器编号从上到下
p1 = plot(iDC[:,1], iDC[:,n+1], label = "Simulink", title = "iDC")
plot!(p1, sim_time, iDC_en[:,n], label = "Engee", left_margin=15Plots.mm)
p2 = plot(iDC[:,1], iDC_en[:,n] - iDC[:,n+1], label = "错误", bottom_margin=5Plots.mm)
plot(p1, p2, layout=(2,1), size = (800,450), xlabel = "时间,从", ylabel = "电流,A")
Out[0]:
No description has been provided for this image