Switch between two flanges

拥有回忆 提交于 2019-12-24 08:56:07

问题


I am currently working with multibody mechanical systems using the MultiBody library included in the standard Modelica distribution.

I need to implement a switch between flanges, in order to select position or force control for a given joint.

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;

But this approach does not work, the system is not balanced: 10 equations and 12 variables.

Is there any way to do this?


回答1:


I don't think a Modelica tool will allow this operation (even if you have a balanced model), as it would potentially result in a variable structure system. Which is something Modelica does not support at the moment. See a nice introduction here: https://www.modelica.org/events/modelica2017/proceedings/html/submissions/ecp17132291_Stuber.pdf

Without fully knowing the application you could try two approaches:

  • Use a model that emulates a rotational clutch, like the Modelica.Mechanics.Translational.Components.Brake with an activated parameter useSupport. This way you can generate a "controllable mechanical connection" for connecting either of the flanges to the support connector. If I read your code correctly you should connect flange_a_2 to the support and the flange_a_exit to either flange_a or flange_b. When activating the brake via the RealInput there will be a mechanical connection.

  • The second thing you can try is to measure either position or force (which of both you want to apply by a sensor Modelica.Mechanics.Translational.Sensors.PositionSensor and then apply it using the respective source, which in this case would be Modelica.Mechanics.Translational.Sources.Position. Switching between the sources could then be done by switching the Real signals instead of the physical connectors. Mind that is could generate jumps in positions when applying positions directly.




回答2:


The link you posted is related to non-phyiscal connectors, which are less restrictive compared to the physical connectors. So comparing the two solutions should be done very carefully.

Switching from position as an input to force as an input would require the system of equations to be rebuilt when executing this switch. This will not be possible with current generation Modelica. You will need to find a solution that is based on the same input for the whole simulation.

Would it be enough to initialize position in a way that the system starts the simulation in the point where you want to move it to first (using the Position Source)? What you loose is the movement of the system to this position.



来源:https://stackoverflow.com/questions/46340160/switch-between-two-flanges

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!