我正在尝试学习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) - 不仅如此,所有其他组件行为现在也只是零不断 - (body_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;
我尝试了很多方法只是为了简单地计算速度(你会从评论的行中看到)所以我可以绘制检查正确的行为,但无济于事。我使用算法或方程方法 - 我用不同的方法实现了一些不同的(但也是不正确的行为)。
任何提示?我必须在这里遗漏一些基本的东西,似乎帧组件本身并不带有速度向量,所以我必须要计算它?
答案 0 :(得分:2)
最简单的方法是使用MSL中的Modelica.Mechanics.MultiBody.Sensors.AbsoluteVelocity
块并将其连接到MB帧,然后在等式中使用输出连接器的变量。