по использованию MassWithStopAndFriction и жестких остановок в OpenModelica - PullRequest
2 голосов
/ 03 февраля 2012

У меня есть вопрос о жестких остановках в Modelica.Mechanics.Translational.Components.MassWithStopAndFriction.Как я понимаю, масса не должна выходить за пределы интервала (smin, smax), но в моем примере это действительно так:

model ActuatorMechanics 
  Modelica.Mechanics.Translational.Sources.Force force; 
  Modelica.Mechanics.Translational.Components.MassWithStopAndFriction mass(m=1,F_prop=0,F_Coulomb=10, smax=0.1, smin=0, L=0.01); 
  Modelica.Mechanics.Translational.Components.Spring spring(c=1000); 
  Modelica.Mechanics.Translational.Components.Fixed fixed; 
  Modelica.Mechanics.Translational.Sensors.PositionSensor sens_pos; 
equation 
  connect(force.flange, mass.flange_a); 
  connect(mass.flange_b, spring.flange_a); 
  connect(spring.flange_b, fixed.flange); 
  connect(sens_pos.flange, mass.flange_a); 
  force.f = 100; 
end ActuatorMechanics; 

simulate(ActuatorMechanics)
plot(mass.flange_a.s)

Я что-то не так делаю?

Ответы [ 2 ]

3 голосов
/ 09 февраля 2012

Это ошибка в OpenModelica. Он работает с r11060 и был добавлен регрессионный тест.

2 голосов
/ 03 февраля 2012

Что ж, это действительно вопрос для разработчиков OpenModelica, так что, надеюсь, кто-нибудь из них придет сюда и ответит.

Просто, чтобы дать вам небольшую предысторию о том, что происходит в модели,когда масса достигает остановки, она переключается в другое состояние, где она ограничивает массу нулевым ускорением (не скоростью) и вычисляет силу реакции, необходимую для удержания этого ограничения.

Эта сложность обусловлена ​​главным образомТот факт, что OpenModelica (и большинство, если не все, другие инструменты Modelica) испытывают трудности при обработке DAE с переменным индексом.Хитрость заключается в том, чтобы обнаружить точку, в которой масса достигает своего механического предела, использовать reinit, чтобы установить скорость на ноль, а затем применить ограничение отсутствия ускорения, которое я упоминал выше.

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

Другая возможность может состоять в том, что масса начинает свое движение вне механических пределов, и каким-то образом переключение на альтернативные (ограниченные) уравнения не выполняется.*

Опять же, это действительно вопрос для разработчиков OpenModelica.Я просто пытаюсь дать некоторое представление о том, что может пойти не так с такой моделью.Хотя я признаю, что такие ответы не особенно полезны для ответа на ваш вопрос.

Я бы посоветовал вам также связаться с разработчиками OpenModelica (в дополнение к публикации здесь в StackOverflow), поскольку они могут не видеть этот вопрос.

Удачи.

...