Переключение между двумя фланцами

В настоящее время я работаю с многотельными механическими системами, использующими библиотеку MultiBody, включенную в стандартный дистрибутив Modelica.

Мне нужно реализовать переключатель между фланцами, чтобы выбрать положение или управление силой для данного соединения.

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 переменных.

Есть какой-либо способ сделать это?

2 ответа

Я не думаю, что инструмент Modelica разрешит эту операцию (даже если у вас сбалансированная модель), так как это может привести к системе с переменной структурой. Что-то, что Modelica не поддерживает в данный момент. Смотрите хорошее введение здесь: https://www.modelica.org/events/modelica2017/proceedings/html/submissions/ecp17132291_Stuber.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, Переключение между источниками может быть осуществлено путем переключения реальных сигналов вместо физических разъемов. Имейте в виду, что это может генерировать скачки позиций при непосредственном применении позиций.

Ссылка, которую вы разместили, относится к нефизическим разъемам, которые менее ограничены по сравнению с физическими разъемами. Поэтому сравнение двух решений должно быть сделано очень тщательно.

Переключение с положения в качестве входа на силу в качестве входа потребует перестройки системы уравнений при выполнении этого переключения. Это не будет возможно с нынешним поколением Modelica. Вам нужно будет найти решение, основанное на одном и том же входном сигнале для всего моделирования.

Достаточно ли будет инициализировать позицию таким образом, чтобы система запускала симуляцию в точке, в которую вы хотите переместить ее сначала (с использованием источника позиции)? То, что вы теряете, это движение системы к этой позиции.

Другие вопросы по тегам