Инициализируйте переменные для системы Массового Демпфера Spring

В этом примере показано, как можно использовать инициализацию основной переменной, и как она влияет на результаты симуляции простой механической системы.

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

Создайте и настроенный модель

  1. Создайте простую систему массового пружинного демпфера. Используйте Mass, Translational Spring, Translational Damper, Mechanical Translational Reference, Ideal Translational Motion Sensor, PS-Simulink Converter, Solver Configuration и блоки Scope, и соедините их как показано на следующем рисунке.

  2. В диалоговом окне блока Translational Damper, установленном параметр Damping coefficient на 10 N/(m/s). Используйте значения параметров по умолчанию для всех других блоков.

  3. Подготовьте модель к симуляции. В окне модели откройте вкладку Modeling и нажмите Model Settings. Диалоговое окно Configuration Parameters открывается, показывая панель Solver. Установите Solver на ode23t (mod.stiff/Trapezoidal) и Max step size к 0.2. Также настройте Simulation time, чтобы быть между 0 и 2 секундами установкой Stop time к 2.0.

  4. Задайте начальную деформацию пружины. Дважды кликните блок Translational Spring. В диалоговом окне блока кликните по вкладке Variables, и затем установите флажок рядом с переменной Deformation. Измените его Priority в High. Измените Beginning Value в 0.1. Оставьте без изменений Unit как m.

  5. Отрегулируйте исходное положение датчика, чтобы компенсировать пружинную деформацию. Дважды кликните блок Ideal Translational Motion Sensor и установите его значение параметров Initial position на 0.1 m также. Таким образом, когда вы симулируете модель, массовые колебания сосредотачивают приблизительно 0.

  6. Симулируйте модель.

  7. Откройте Переменное Средство просмотра. В окне модели, на вкладке Debug, нажимают Simscape> Variable Viewer.

    Переменная Translational Spring x, в нижнем ряду, имеет высокий приоритет и целевое значение 0,1 м. Это - переменная Deformation, которую вы только что настроили в диалоговом окне блока. Его фактические начинают матчи значения его целевое значение, и поэтому его отображения столбца Status зеленый круг.

    Другая высокоприоритетная переменная в этой модели является положением, x, блока Ideal Translational Motion Sensor, который установлен в файле компонента, потому что это необходимо для правильной работы датчика. Его фактическое значение запуска также совпадает с его целевым значением, и его столбец Status также отображает зеленый круг.

    Остальной части переменных в модели не задали приоритет инициализации, поэтому их столбец Status также отображает зеленые круги. Полное состояние в нижней части окна Variable Viewer отображает зеленый круг также и говорит, что всем переменным целям удовлетворяют.

Измените цели инициализации

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

  1. Задайте начальную скорость массы. Дважды кликните блок Mass, перейдите к вкладке Variables, установите флажок рядом с переменной Velocity, измените ее Priority в High, и введите начинающееся значение 10. Сохраните модуль m/s.

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

  2. Обновите Переменное Средство просмотра путем нажатия.

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

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

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

Имейте дело со сверхспецификацией

Когда вы задаете дополнительные переменные цели, иногда возможно чрезмерно определить ограничения.

  1. Дважды кликните блок Translational Damper, перейдите к вкладке Variables, установите флажок рядом с переменной Force, измените ее Priority в High, и введите начинающееся значение 200. Сохраните модуль N.

  2. Обновите переменное средство просмотра.

    Полное состояние в нижней части окна Variable Viewer теперь отображает красный квадрат и говорит, что решатель не может удовлетворить всем высокоприоритетным переменным целям. Существуют красные квадраты в столбце Status для двух высокоприоритетных переменных с целями, которым не удовлетворяют, а также для их родительских блоков.

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

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

  3. Дважды кликните блок Translational Damper снова, перейдите к вкладке Variables и измените приоритет переменной Force к Low.

  4. Обновите переменное средство просмотра.

    Полное состояние в нижней части окна Variable Viewer теперь отображает желтый треугольник и говорит, что всем высокоприоритетным целям удовлетворяют, но некоторым низкоприоритетным целям не удовлетворяют. В столбце состояния существует теперь два желтых треугольника: один для низкоприоритетной переменной f силы и один для ее родительского блока, Translational Damper.

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

  5. Другой способ иметь дело со сверхспецификацией состоит в том, чтобы сохранить высокий приоритет на демпфере, обеспечивают и ослабляют приоритет на массовой начальной скорости. Дважды кликните блок Translational Damper снова, перейдите к вкладке Variables и возвратите приоритет переменной Force к High. Затем дважды кликните блок Mass, перейдите к вкладке Variables и измените приоритет переменной Velocity к Low.

  6. Обновите переменное средство просмотра.

    Снова, состояние Variable Viewer говорит, что всем высокоприоритетным целям удовлетворили и что некоторым низкоприоритетным целям не удовлетворяют. Однако, потому что вы изменили переменные приоритеты, решатель теперь пытался удовлетворить начальной силе на демпфере, а не массовой скорости, и решение отличается в этом случае, как результаты симуляции.

Похожие темы