带直流电机的驱动器的操作模型
在本文中,我们将考虑一个基于直流电机的驱动模型。 该示例的一个特殊特征是使用物理建模的基本块和块。
模型组成
模型 ee_dc_motor_ctl 它由多个子系统组成。
*速度控制子系统控制器使用基本块制作。 这使得控制算法的设置变得容易。;
*控制对象为直流电机直流电机。 它以"电"库的物理建模块的形式呈现;
驱动程序子系统用于设置发动机转速。;
*要确定电机轴的速度,需要一个传感器,该传感器在传感器*子系统中实现。
速度控制器的子系统
控制器子系统实现了带有低通滤波器的PI控制器。 稳压电路如下所示。
控制器的工作原理简单。 控制器的输入接收期望的速度值和电机轴的当前旋转速度的值。 但是,电机是通过电压控制的,因此应该转换所有速度。 在图中,这被实现为乘以因子0.00125。 在下一步中,在Add块中计算未对准。 之后,生成一个调整后的值,该值将应用于驱动器输入。 由于驱动器被实现为物理块,电压源受控电压源被用于产生输出电压。
发动机驱动子系统
驱动子系统是物理块形式的驱动电路的模型。 受控PWM电压单元根据其ref+和ref-端口的电压生成PWM信号。 H桥块是一个H桥电路,可以反转施加电压的极性。
在驱动器的输出处产生的电压转到电机的输入。 有关块参数的更多信息,请参阅[DC Motor](https://engee.com/helpcenter/stable/electrical-brushed-motors/dc-motor.html)。
传感器子系统
传感器子系统包含基本单元和理想旋转运动传感器物理单元。 这个单位允许您确定引擎轴速度。
读取速度后,有必要将其值转换为伏特,以便在控制器单元中进一步调节。
获取系统数据
让我们运行模型,看看控制器如何在这个模型中满足设定的速度。
# Подключение вспомогательной функции запуска модели.
function run_model( name_model, path_to_folder )
Path = path_to_folder * "/" * name_model * ".engee"
if name_model in [m.name for m in engee.get_all_models()] # Проверка условия загрузки модели в ядро
model = engee.open( name_model ) # Открыть модель
model_output = engee.run( model, verbose=true ); # Запустить модель
else
model = engee.load( Path, force=true ) # Загрузить модель
model_output = engee.run( model, verbose=true ); # Запустить модель
engee.close( name_model, force=true ); # Закрыть модель
end
return model_output
end
run_model("ee_dc_motor_ctl",@__DIR__) # Запуск модели.
# Считывание из simout залогированных сигналов
Wref = simout["ee_dc_motor_ctl/Wref"];
Wref = collect(Wref);
SensedRPM = simout["ee_dc_motor_ctl/Sensor/SensedRPM"];
SensedRPM = collect(SensedRPM);
让我们绘制给定的速度和从传感器获得的速度。
using Plots
plot(Wref.time, Wref.value, label = "Wref")
plot!(SensedRPM.time, SensedRPM.value, label = "SensedRPM")
结论
根据图表可以得出结论,电机轴的转速在3秒内达到了设定的转速。 通过更改PI控制器的组件,可以减少实现所需结果的时间。