我目前正在使用标准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个变量。
有没有办法做到这一点?
答案 0 :(得分:1)
我不认为Modelica工具将允许此操作(即使您有一个平衡模型),因为它可能会导致可变结构系统。这是Modelica目前不支持的内容。在这里看到一个很好的介绍:https://www.modelica.org/events/modelica2017/proceedings/html/submissions/ecp17132291_Stuber.pdf
如果不完全了解应用程序,您可以尝试两种方法:
使用模拟旋转离合器的模型,例如带有激活参数Modelica.Mechanics.Translational.Components.Brake
的{{1}}。通过这种方式,您可以生成可控制的机械连接"用于将任一法兰连接到useSupport
连接器。如果我正确阅读了您的代码,您应该将support
连接到支持,将flange_a_2
连接到flange_a_exit
或flange_a
。通过flange_b
激活制动器时,将有机械连接。
你可以尝试的第二件事是测量位置或力(你想要由传感器RealInput
应用哪一个,然后使用相应的源应用它,在这种情况下将是Modelica.Mechanics.Translational.Sensors.PositionSensor
。然后可以通过切换Real信号而不是物理连接器来完成信号源之间的切换。当直接应用位置时,可以产生跳跃位置。
答案 1 :(得分:1)
您发布的链接与非物理连接器相关,与物理连接器相比限制性较小。因此,应该非常仔细地比较这两种解决方案。
从作为输入的位置切换到作为输入的力将需要在执行此切换时重建方程组。对于当前的Modelica,这是不可能的。您需要找到一个基于整个模拟的相同输入的解决方案。
以系统启动模拟的方式初始化位置是否足以将其移动到第一位(使用位置源)?你放松的是系统移动到这个位置。