1

我目前正在使用标准 Modelica 发行版中包含的 MultiBody 库来处理多体机械系统。

我需要在法兰之间实现切换,以便为给定的关节选择位置或力控制。

model FlangeSwitch "Switch between flanges"
  Modelica.Mechanics.Translational.Interfaces.Flange_a flange_a_1;
  Modelica.Mechanics.Translational.Interfaces.Flange_b flange_b_1;
  Modelica.Mechanics.Translational.Interfaces.Flange_a flange_a_2;
  Modelica.Mechanics.Translational.Interfaces.Flange_b flange_b_2;
  Modelica.Mechanics.Translational.Interfaces.Flange_a flange_a_exit;
  Modelica.Mechanics.Translational.Interfaces.Flange_b flange_b_exit;
  Modelica.Blocks.Interfaces.BooleanInput u;
equation
  if u then
    flange_a_exit = flange_a_2;
    flange_b_exit = flange_b_2;
  else
    flange_a_exit = flange_a_1;
    flange_b_exit = flange_b_1;
  end if;
end FlangeSwitch;

但这种方法不起作用,系统不平衡:10 个方程和 12 个变量。

有没有办法做到这一点?

4

2 回答 2

1

我认为 Modelica 工具不会允许此操作(即使您有一个平衡模型),因为它可能会导致可变结构系统。这是 Modelica 目前不支持的。在这里看到一个很好的介绍:https: //www.modelica.org/events/modelica2017/proceedings/html/submissions/ecp17132291_Suber.pdf

在不完全了解应用程序的情况下,您可以尝试两种方法:

  • 使用模拟旋转离合器的模型,例如Modelica.Mechanics.Translational.Components.Brake带有激活参数的useSupport。通过这种方式,您可以生成“可控机械连接”,用于将任一法兰连接到support连接器。如果我正确阅读了您的代码,您应该连接flange_a_2到支持和flange_a_exit要么flange_a要么flange_b。当通过 激活制动器时,RealInput将有一个机械连接。

  • 您可以尝试的第二件事是测量位置或力(您想通过传感器应用两者中的哪一个Modelica.Mechanics.Translational.Sensors.PositionSensor,然后使用相应的源应用它,在这种情况下是Modelica.Mechanics.Translational.Sources.Position。然后可以通过切换来完成源之间的切换实际信号而不是物理连接器。直接应用位置时可能会产生位置跳跃的思想。

于 2017-09-21T15:32:04.553 回答
1

您发布的链接与非物理连接器有关,与物理连接器相比,它们的限制较少。因此,应该非常仔细地比较这两种解决方案。

从作为输入的位置切换到作为输入的力将需要在执行此切换时重建方程组。这对于当前的 Modelica 来说是不可能的。您将需要找到一个基于整个模拟的相同输入的解决方案。

以系统在您想首先将其移动到的点开始模拟的方式初始化位置是否足够(使用位置源)?你松动的是系统移动到这个位置。

于 2017-09-25T07:18:54.227 回答