直流电机驱动器的运行模式
在本资料中,我们将讨论一个基于直流电机的驱动装置模型。本示例的特殊之处在于使用了基本模块和物理建模模块。
型号构成
ee_dc_motor_ctl
模型由多个子系统组成。
** 控制器 ** 速度控制子系统采用基本模块设计。这样可以方便地设置控制算法;
- 控制对象是直流电机 直流电机。控制对象是直流电机 ** 直流电机**,以电气库物理建模模块的形式表示;
- 驱动**子系统用于设置电机速度;
- 要确定电机轴的转速,需要一个传感器,该传感器在传感器子系统中实现。
速度控制器子系统
控制器**子系统实现了一个带有低通滤波器的 PI 控制器。控制器原理图如下。

控制器的工作原理很简单。控制器输入所需的速度值和当前的电机轴速。然而,电机是通过电压控制的,因此必须对所有速度进行转换。在示意图中,这可以通过乘以 0.00125 的系数来实现。下一步,在 Add 块中计算不匹配值。然后,形成修正值,并将其输入驱动器输入端。由于驱动器是以物理块的形式实现的,因此可控电压源用于产生输出电压。
电机驱动器子系统
驱动器子系统以物理块的形式提供驱动器电路模型。受控 PWM 电压块根据其 ref+ 和 ref- 端口的电压生成 PWM 信号。H 桥**块是一个 H 桥电路,可反转外加电压的极性。

驱动器输出端产生的电压通向电机输入端。有关设备参数的更多详情,请参阅 DC Motor
。
传感器子系统
传感器子系统包含基本模块和物理模块理想旋转运动传感器**。通过该模块可以检测电机轴的转速。

读取速度后,必须将其值转换为伏特,以便在控制器块中进一步控制。
获取系统数据
让我们运行模型,看看控制器在该模型中的给定速度下是如何工作的。
In [ ]:
# Подключение вспомогательной функции запуска модели.
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
Out[0]:
In [ ]:
run_model("ee_dc_motor_ctl",@__DIR__) # Запуск модели.
Out[0]:
In [ ]:
# Считывание из simout залогированных сигналов
Wref = simout["ee_dc_motor_ctl/Wref"];
Wref = collect(Wref);
SensedRPM = simout["ee_dc_motor_ctl/Sensor/SensedRPM"];
SensedRPM = collect(SensedRPM);
绘制设定速度和从传感器接收到的速度。
In [ ]:
using Plots
plot(Wref.time, Wref.value, label = "Wref")
plot!(SensedRPM.time, SensedRPM.value, label = "SensedRPM")
Out[0]:
结论
从图中可以得出结论,电机轴转速在 3 秒内达到了预期速度。通过改变 PI 控制器的元件,可以缩短达到预期结果的时间。