Динамическое переключение соединения в Modellica.mechanics

Я попытался смоделировать «особый» маятник с помощью библиотеки Modelica. Маятник получил один виток на первом конце и второй виток на другом конце. В time < t первый маятник должен вращаться вокруг оси первого витка. На time > t маятник должен вращаться вокруг оси второго оборота.
У меня две проблемы:

  1. Я не могу смоделировать маятник с двумя оборотами, где одна рамка не используется.

  2. Я попытался изменить вращающийся виток с помощью предложения if, подобного этому:
    if time < 5 then connect(world.frame_b, revolute.frame_a); else connect(world.frame_b, revolute1.frame_b); end if;
    Запуская симуляцию, я получаю эту ошибку:
    Failed to expand block containing connect: if (time < 5) then connect(world.frame_b, revolute.frame_a); else connect(world.frame_b, revolute1.frame_b); end if;

Есть у кого-нибудь идея, как я могу решить эту проблему?

картинка модели


person A.Schneider    schedule 20.02.2017    source источник


Ответы (1)


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

Резюме: вы не можете переключать соединения во время моделирования, так как это потребует перестроения уравнений во время моделирования.

Что касается вашей проблемы: честно говоря, я не вижу надежного способа решить проблему в Modelica.

person Markus A.    schedule 10.10.2017