AnyMath 文档
Notebook

验证晶闸管导通时的动态行为

在本示例中,我们将验证导通晶闸管的动态行为是否符合其模块设置中指定的参数:

In [ ]:
T_on = 2.0;           # mks
Rate_dvdt = 150.0;  # V/mks

测试 1. 导通延迟验证

Thyristor_Dynamic_Behavior_On_1.engee 模型中,向晶闸管的栅极施加一个脉冲以触发晶闸管导通。在此测试中,我们将测定晶闸管的导通时间。

栅极从关断状态转换为导通状态所需的时间(Gate-controlled turn-on time)在“晶闸管”(Thyristor)模块的参数中设定为 2 微秒。

image.png
启动模型
In [ ]:
engee.addpath(@__DIR__)
if "Thyristor_Dynamic_Behavior_On_1" in [m.name for m in engee.get_all_models()]
    m = engee.open( "Thyristor_Dynamic_Behavior_On_1" ) # 加载模型
else
    m = engee.load( "Thyristor_Dynamic_Behavior_On_1.engee" )
end
results_1 = engee.run(m, verbose=true)
Building...
Progress 0%
Progress 5%
Progress 10%
Progress 15%
Progress 20%
Progress 25%
Progress 30%
Progress 35%
Progress 40%
Progress 45%
Progress 50%
Progress 55%
Progress 60%
Progress 65%
Progress 70%
Progress 75%
Progress 80%
Progress 85%
Progress 90%
Progress 95%
Progress 100%
Progress 100%
Out[0]:
SimulationResult(
    run_id => 17,
    "v_GT_1" => WorkspaceArray{Float64}("Thyristor_Dynamic_Behavior_On_1/v_GT_1")
,
    "v_AK_1" => WorkspaceArray{Float64}("Thyristor_Dynamic_Behavior_On_1/v_AK_1")
,
    "i_GT_1" => WorkspaceArray{Float64}("Thyristor_Dynamic_Behavior_On_1/i_GT_1")
,
    "i_load_1" => WorkspaceArray{Float64}("Thyristor_Dynamic_Behavior_On_1/i_load_1")

)
获取参数
In [ ]:
t_1 = results_1["i_GT_1"].time;
i_GT_1 = results_1["i_GT_1"].value; 
i_load_1 = results_1["i_load_1"].value;
绘制曲线图
In [ ]:
using Plots
plotlyjs();
In [ ]:
plot(layout=@layout([a; b;]), legend=:outerbottomright)
plot!(t_1, i_GT_1, subplot=1, ylabel="电流,A", w = 2, linecolor =:blue, label="栅极电流")
plot!(t_1, i_load_1, subplot=2, xlabel="时间,c", ylabel="电流,A", w = 2, linecolor =:green, label="负载电流")
Out[0]:

从曲线图可以看出,负载电流比栅极电流脉冲滞后约1.3微秒。 确切的时间取决于供电电压和负载电阻,但在模块初始化时未考虑这些参数的影响。

测试 2. 验证 dV/dt 触发

模型 Thyristor_Dynamic_Behavior_On_2.engee 展示了 dv/dt 触发现象——即由于正向电压变化过快而导致的晶闸管自发导通。该电压会在栅极-阳极电路中产生电容电流。如果该电流足够大,即使没有施加控制信号,它也会使晶闸管导通。

关断状态下电压的最大允许上升速率值在“晶闸管”模块的参数中指定(Critical rate of rise of off-state voltage, dV/dt)。 晶闸管模块利用该参数计算栅极-阳极结电容的近似值,以确保在指定的电压上升速率下晶闸管能够导通。 由于在估算电容值时采用了近似方法,因此在本例中,只要电压变化率超过 95 V/μs,晶闸管仍会导通。

在此测试中,我们将施加直流电压 ,该电压以150 V/μs的速率从零急剧上升至400 V。

image.png
运行模型
In [ ]:
if "Thyristor_Dynamic_Behavior_On_2" in [m.name for m in engee.get_all_models()]
    m = engee.open( "Thyristor_Dynamic_Behavior_On_2" ) # 加载模型
else
    m = engee.load( "Thyristor_Dynamic_Behavior_On_2.engee" )
end
results_2 = engee.run(m, verbose=true)
Building...
Progress 0%
Progress 5%
Progress 11%
Progress 16%
Progress 21%
Progress 26%
Progress 31%
Progress 36%
Progress 41%
Progress 46%
Progress 51%
Progress 56%
Progress 61%
Progress 66%
Progress 71%
Progress 76%
Progress 81%
Progress 86%
Progress 92%
Progress 97%
Progress 100%
Progress 100%
Out[0]:
SimulationResult(
    run_id => 18,
    "v_AK_2" => WorkspaceArray{Float64}("Thyristor_Dynamic_Behavior_On_2/v_AK_2")
,
    "v_s_2" => WorkspaceArray{Float64}("Thyristor_Dynamic_Behavior_On_2/v_s_2")
,
    "i_load_2" => WorkspaceArray{Float64}("Thyristor_Dynamic_Behavior_On_2/i_load_2")

)
获取参数
In [ ]:
t_2 = results_2["v_s_2"].time;   
v_s_2 = results_2["v_s_2"].value;   
v_AK_2 = results_2["v_AK_2"].value;
i_load_2 = results_2["i_load_2"].value;
绘制曲线图
In [ ]:
plot(layout=@layout([a; b; c]), legend=:outertopright)
plot!(t_2, v_s_2, subplot=1, ylabel="电压,V", w = 2, linecolor =:blue, label="电源电压")
plot!(t_2, v_AK_2, subplot=2, ylabel="电压,V", w = 2, linecolor =:green, label="晶闸管上的正向电压")
plot!(t_2, i_load_2, subplot=3, xlabel="时间,c", ylabel="电流,A", w = 2, linecolor =:red, label="负载电流")
Out[0]:

从曲线图可以看出,当正向电压以150 V/μs的速率变化时,晶闸管导通。

结论

通过进行两项测试,我们研究了晶闸管的动态行为。在第一项测试中,晶闸管通过向栅极施加控制电流而导通;而在第二项测试中,展示了基于 dv/dt 的触发。