exponenta event banner

Инициализация переменных для системы масса-пружина-демпфер

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

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

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

  1. Создайте простую систему масса-пружина-демпфер. Используйте блоки Масса (Mass), Поступательная пружина (Translational Spring), Поступательный демпфер (Translational Damper), Механическая поступательная ссылка (Mechanical Translational Reference), Идеальный датчик поступательного движения (Ideal Translational Motion Sensor), PS-Simulink Converter (ps), Конфигурация Solver и Scope (область) и SCocope (область) и подключите их, как показано на следующем рисунке.

  2. В диалоговом окне Блок поступательного демпфирования установите для параметра Коэффициент демпфирования значение 10 N/(m/s). Используйте значения параметров по умолчанию для всех остальных блоков.

  3. Подготовьте модель к моделированию. В окне модели откройте вкладку Моделирование (Modeling) и щелкните Настройки модели (Model Settings). Откроется диалоговое окно Параметры конфигурации (Configuration Parameters) с панелью Решатель (Solver). Задать для решателя значение ode23t (mod.stiff/Trapezoidal) и максимальный размер шага до 0.2. Также настройте время моделирования от 0 до 2 секунд, установив для параметра Время остановки значение 2.0.

  4. Укажите начальную деформацию пружины. Дважды щелкните на блоке «Поступательная пружина». В диалоговом окне блока перейдите на вкладку «Переменные» и установите флажок рядом с переменной «Деформация». Изменить его приоритет на High. Изменение начального значения на 0.1. Оставить единицу без изменений m.

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

  6. Моделирование модели.

  7. Откройте средство просмотра переменных. В окне модели на вкладке Отладка выберите Simscape > Variable Viewer.

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

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

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

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

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

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

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

  2. Обновите средство просмотра переменных, щелкнув значок.

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

  3. Обратите внимание, что при обновлении средства просмотра переменных области стали пустыми. Это происходит потому, что решатель запускает моделирование в течение 0 секунд, чтобы найти исходное решение и отобразить его в средстве просмотра переменных.

    Повторно запустите моделирование и изучите окна «Velocity» и «Position», чтобы увидеть влияние нового начального значения массовой скорости на результаты моделирования.

Решение проблемы избыточной спецификации

При задании дополнительных переменных целей иногда можно переопределить ограничения.

  1. Дважды щелкните блок «Поступательный демпфер», перейдите на вкладку «Переменные», установите флажок рядом с переменной «Сила», измените ее приоритет на Highи введите начальное значение, равное 200. Сохранить блок N.

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

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

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

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

  3. Дважды щелкните блок «Поступательный демпфер», перейдите на вкладку «Переменные» и измените приоритет переменной «Сила» на Low.

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

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

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

  5. Другим способом решения проблемы чрезмерной спецификации является сохранение высокого приоритета силы демпфера и ослабление приоритета начальной скорости массы. Дважды щелкните блок «Поступательный демпфер», перейдите на вкладку «Переменные» и измените приоритет переменной «Сила» на High. Затем дважды щелкните блок «Масса», перейдите на вкладку «Переменные» и измените приоритет переменной Velocity на Low.

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

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

Связанные темы