1

我正在尝试学习 Modelica,并且使用多体库构建了一个非常简单的模型。该模型由一个世界对象和一个连接到梁的主体(质量)组成,然后连接到 2 个扩展的 PartialOneFrame_a 类(见下文),我对其进行了修改以在一个轴上创建一个恒定的力。本质上,这组物体所做的所有事情都是在重力作用下下落并旋转,这是由于两个力作用于与身体中心纵向偏移的位置,从而在 cg 周围产生了一对。

    model Constant_Force
      extends Modelica.Mechanics.MultiBody.Interfaces.PartialOneFrame_a;
      parameter Real force = 1.0;

    equation 
      frame_a.f = {0.0,0.0,force};
      frame_a.t = {0.0,0.0,0.0};
    end Constant_Force;

接下来我想看看我是否可以创建一个非常简单的空气动力分量,我将其连接到旋转“臂”的末端。我的想法是遵循上面的 Constant_force 模型示例,并在我的第一个简单切割中根据局部框架速度生成力。这就是我的问题出现的地方 - 我尝试使用 der(frame_a.r_0) 计算速度,然后我将使用 resolve2 函数将其转换为本地帧,但添加 der(...) 行导致模型无法正常工作 -它会“成功”模拟(使用 OpenModelica),但 v11b 向量(见下文)将全为零,出现用于绘图的 der(frame_a.r_0) 也是如此 - 不仅如此,所有其他组件行为现在也只是始终为零 - (身体的 frame_a.r_0、w_a 等)。

    model Aerosurf
      extends Modelica.Mechanics.MultiBody.Interfaces.PartialOneFrame_a;
      import Modelica.Mechanics.MultiBody.Frames;
      import Modelica.SIunits;
      //Real[3] v11b;
      SIunits.Velocity v11b[3];
    //initial equation
    //  v11b={0.0,0.0,0.0};
    algorithm
      //v11b:=der(frame_a.r_0);
    equation 
      v11b=der(frame_a.r_0);
      frame_a.f = {0.0,0.0,0.0};
      frame_a.t = {0.0,0.0,0.0};
    end Aerosurf;

我尝试了多种方法来简单地计算速度(您将从注释行中看到),因此我可以绘制检查正确的行为但无济于事。我使用了算法或方程方法——我确实用不同的方法实现了一些不同的(但也有不正确的行为)。

有小费吗?我必须在这里遗漏一些基本的东西,似乎框架组件本身并不携带速度矢量,所以我必须计算它?

4

1 回答 1

2

最简单的方法是使用Modelica.Mechanics.MultiBody.Sensors.AbsoluteVelocityMSL 中的模块并将其连接到您的 MB 框架,然后只需在方程式中使用输出连接器的变量。

于 2012-09-07T15:38:49.727 回答