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]:

通过这些设置,磁体移动得离壁太远,场强不再足以将其带回。

结论

我们建立了一个模型,使我们能够计算从铁表面移除磁体所需的力,以及查看永磁体对铁表面的吸引力值的动态变化。