Engee 文档
Notebook

永磁体与铁表面相互作用模型

本例演示了磁铁与铁板(如墙壁)之间作用力的建模方法。磁域和线性位移域之间的相互作用是通过块PermanentMagnetReluctanceForceActuator 来建模的。

模型描述

ReluctanceForceActuator 单元可以模拟永磁体和铁壁之间的过程,因为它的磁阻和产生的线性力取决于磁体两极和铁壁之间的间隙大小。

image.png

子系统Управление усилием 定义了使磁铁远离墙壁的外力轮廓。

运行模型和解释

让我们运行模型并研究观察到的现象。

In [ ]:
modelName = "permanent_magnet_on_wall";

model = modelName in [m.name for m in engee.get_all_models()] ? engee.open( modelName ) : engee.load( "$(@__DIR__)/$(modelName).engee");
data = engee.run( modelName, verbose=false )
Out[0]:
Dict{String, DataFrames.DataFrame} with 4 entries:
  "Управление усилием.F"    => 2001×2 DataFrame…
  "Измерение перемещения.V" => 2001×2 DataFrame…
  "Измерение перемещения.F" => 2001×2 DataFrame…
  "Измерение перемещения.P" => 2001×2 DataFrame

模型模拟开始时,磁铁与墙壁接触。然后,磁块Управление усилием 逐渐增加力值,目的是使磁块远离墙壁。当分离力超过临界值时,Управление усилием 块停止施力,使磁铁不会离墙太远,然后在t=1.1 ,力停止。这个力的变化曲线是根据经验得出的。

磁铁和铁板脱离的力停止后,磁铁重新附着在铁表面,并占据原来的位置。

In [ ]:
plot(
    plot( data["Управление усилием.F"].time, 1e3.*data["Управление усилием.F"].value,
            title="Внешняя сила\n", ylabel="Сила, мН",
            titlefont=font(10), guidefont=font(8) ),
    plot( data["Измерение перемещения.F"].time, 1e3.*data["Измерение перемещения.F"].value,
            title="Сумма сил\n", ylabel="Сила, мН",
            titlefont=font(10), guidefont=font(8), lc=2 ),
    plot( data["Измерение перемещения.V"].time, 1e3.*data["Измерение перемещения.V"].value,
            title="Скорость перемещения магнита\n", ylabel="Скорость<br>мм/с",
            titlefont=font(10), guidefont=font(8), lc=3 ),
    plot( data["Измерение перемещения.P"].time, 1e3.*data["Измерение перемещения.P"].value,
            title="Расстояние от стены\n", xlabel="Время, с", ylabel="Смещение<br>мм",
            titlefont=font(10), guidefont=font(8), lc=4 ),
    layout=(4,1), legend=:false, size=(400,500)
)
Out[0]:

通过PermanentMagnet 单元实现的永磁模型可以通过磁导率值(permeability)或矫顽力(coercivity)来设置特性。具体选择取决于制造商文档中指定的磁体参数。

使用其他参数运行

如果我们改变参数,就会看到模型的不同行为。

In [ ]:
engee.get_param( "permanent_magnet_on_wall/Управление усилием/Saturation" )
Out[0]:
BlockParameters(
  LowerLimit => 0,
  UpperLimit => 265e-3,
)

让我们增加将磁铁与墙壁分离的力的最大值。

In [ ]:
engee.set_param!( "permanent_magnet_on_wall/Управление усилием/Saturation",
    "UpperLimit"=>350e-3 )
In [ ]:
data = engee.run( modelName, verbose=false )
Out[0]:
Dict{String, DataFrames.DataFrame} with 4 entries:
  "Управление усилием.F"    => 2001×2 DataFrame…
  "Измерение перемещения.V" => 2001×2 DataFrame…
  "Измерение перемещения.F" => 2001×2 DataFrame…
  "Измерение перемещения.P" => 2001×2 DataFrame
In [ ]:
plot(
    plot( data["Управление усилием.F"].time, 1e3.*data["Управление усилием.F"].value,
            title="Внешняя сила\n", ylabel="Сила, мН",
            titlefont=font(10), guidefont=font(8) ),
    plot( data["Измерение перемещения.F"].time, 1e3.*data["Измерение перемещения.F"].value,
            title="Сумма сил\n", ylabel="Сила, мН",
            titlefont=font(10), guidefont=font(8), lc=2),
    plot( data["Измерение перемещения.V"].time, 1e3.*data["Измерение перемещения.V"].value,
            title="Скорость перемещения магнита\n", ylabel="Скорость<br>мм/с",
            titlefont=font(10), guidefont=font(8), lc=3 ),
    plot( data["Измерение перемещения.P"].time, 1e3.*data["Измерение перемещения.P"].value,
            title="Расстояние от стены\n", xlabel="Время, с", ylabel="Смещение<br>мм",
            titlefont=font(10), guidefont=font(8), lc=4 ),
    layout=(4,1), legend=:false, size=(400,500)
)
Out[0]:

在这些设置下,磁铁距离墙壁太远,磁场强度已不足以将其拉回来。

结论

我们已经建立了一个模型,通过它我们可以计算出从铁表面移除磁铁所需的力,以及动态观察永磁体对铁表面吸引力值的变化。