运算放大器上的微分环节
此示例将演示使用Engee脚本编辑器中模型的命令控制对差异化链接进行建模,以及从Simulink环境启动模型。
使用电气元件库组装运算放大器上的差分链路模型。 电气元件由电压源,电阻,电容以及理想的运算放大器表示。
差异化链路的模型(modelssc_differentiator_op_amp.工程师) :

使用软件控制实现模型启动:
In [ ]:
Pkg.add(["Statistics", "CSV"])
In [ ]:
using MATLAB
using CSV
using DataFrames
using Statistics
demoroot = @__DIR__
mat"start_simulink"
mat"p = $demoroot; addpath(p);"
mat"p = '/user/start/examples/helper_units'; addpath(p);"
加载模型:
In [ ]:
modelName = "ssc_differentiator_op_amp";
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]:
加载和可视化仿真过程中获得的数据。
从电压表获取电压数据:
In [ ]:
DiffOpAmp_t = results["V1"].time;
DiffOpAmp_d1 = results["V1"].value;
DiffOpAmp_d2 = results["V2"].value;
绘制描述电压变化的曲线图。
In [ ]:
p_adc_da_e = plot(DiffOpAmp_t ,DiffOpAmp_d1 , legend = false)
plot!(DiffOpAmp_t ,DiffOpAmp_d1 , legend = false)
plot!(title = "Результаты моделирования в Engee", ylabel = "Напряжение, В", xlabel="Время, c")
Out[0]:
同样的方案可以在SimScape中建模:
在Simulink中运行模型并将结果加载到变量中:
In [ ]:
mat"run_test_model('ssc_opamp_differentiator_demo');";
sl_diff_opamp_values = mat"SysOutput.Data";
sl_diff_opamp_times = mat"SysOutput.Time";
SimScape中模拟结果的输出:
In [ ]:
plot(sl_diff_opamp_times, sl_diff_opamp_values, legend = false)
plot!(title = "Результаты моделирования в Simulink", ylabel = "Напряжение", xlabel="Время, c")
Out[0]:
让我们应用差异化信号:
In [ ]:
plot(DiffOpAmp_t ,DiffOpAmp_d2, label = "Engee")
plot!(title = "Сравнение результатов моделирования")
plot!(sl_diff_opamp_times, sl_diff_opamp_values, label = "Simulink")
plot!(legend = :outertopright,ylabel = "Цифровой сигнал", xlabel="Время, c")
Out[0]:
结论:
在此示例中,使用Engee脚本编辑器中模型的命令控制以及从Simulink环境启动模型,演示了差异化链接的模型。 在这两种环境中运行仿真时,计算结果的差异很小。