Этот пример показывает, как можно использовать инициализацию основной переменной, и как это влияет на результаты симуляции простой механической системы.
Модель является классической добровольной системой массового пружинного демпфера с колебаниями массы, вызванной начальной деформацией пружины.
Создайте простую систему массового пружинного демпфера. Используйте Массу, Переводный Spring, Переводный Демпфер, Механическую Переводную Ссылку, Идеальный Переводный Датчик Движения, Конвертер Simulink PS, Настройку Решателя и блоки Осциллографа, и соедините их как показано на следующем рисунке.
Подготовьте модель к симуляции. На верхней панели меню окна модели выберите Simulation > Model Configuration Parameters. На панели Solver диалогового окна Configuration Parameters, набор Solver к ode23t (mod.stiff/Trapezoidal)
и Max step size к 0.2
. Также настройте Simulation time, чтобы быть между 0 и 2 секундами установкой Stop time к 2.0
.
Задайте начальную деформацию пружины. Дважды кликните блок Translational Spring. В диалоговом окне блока кликните по вкладке Variables, и затем установите флажок рядом с переменной Deformation. Измените его Priority на High
. Измените Beginning Value на 0.1
. Оставьте без изменений Unit как m
.
Отрегулируйте исходное положение датчика, чтобы компенсировать пружинную деформацию. Дважды кликните блок Ideal Translational Motion Sensor и установите его значение параметров Initial position на 0.1
m
также. Таким образом, когда вы моделируете модель, массовые колебания сосредотачивают приблизительно 0.
Моделируйте модель.
Откройте Переменное Средство просмотра. В верхней панели меню окна модели выберите Analysis> Simscape> Variable Viewer.
Переменная Translational Spring x, в нижнем ряду, имеет высокий приоритет и целевое значение 0,1 м. Это - переменная Deformation, которую вы только что настроили в диалоговом окне блока. Его фактические начинают матчи значения его целевое значение, и поэтому его отображения столбца Status зеленый круг.
Другая высокоприоритетная переменная в этой модели является положением, x, блока Ideal Translational Motion Sensor, который установлен в файле компонента, потому что это необходимо для правильной работы датчика. Его фактическое значение запуска также совпадает с его целевым значением, и его столбец Status также отображает зеленый круг.
Остальной части переменных в модели не задали приоритет инициализации, поэтому их столбец Status также отображает зеленые круги. Полное состояние в нижней части окна Variable Viewer отображает зеленый круг также и говорит, что все переменные цели удовлетворены.
Можно теперь видеть, как определение различных переменных целей влияет на системную инициализацию и результаты симуляции.
Задайте начальную скорость массы. Дважды кликните блок Mass, перейдите к вкладке Variables, установите флажок рядом с переменной Velocity, измените ее Priority на High
и введите начинающееся значение 10
. Сохраните модуль m/s
.
Когда вы изменяете переменные приоритеты и цели или настраиваете параметры блоков, результаты в Переменном Средстве просмотра не обновляются автоматически. Вместо этого кнопка Refresh отображает предупреждающий символ (желтый треугольник), и метка времени в нижней части окна средства просмотра покраснела, чтобы указать, что данные в средстве просмотра не отражают последние образцовые изменения.
Обновите Переменное Средство просмотра путем нажатия.
Вы видите, что решатель нашел различное начальное решение, которое удовлетворяет ваши переменные цели для пружинной деформации и массовой скорости. Отображения столбца Status зеленые круги и полное состояние в нижней части окна Variable Viewer также отображают зеленый круг и говорят, что все переменные цели удовлетворены.
Заметьте это, когда вы обновили Переменное Средство просмотра, осциллографы превращенный пробел. Это происходит, потому что решатель запускает симуляцию в течение 0 секунд, чтобы найти начальное решение и отобразить его в Переменном Средстве просмотра.
Повторно выполните симуляцию и исследуйте окна осциллографа Скорости и Положения, чтобы видеть эффект нового начального значения для массовой скорости на результатах симуляции.
Когда вы задаете дополнительные переменные цели, иногда возможно чрезмерно определить ограничения.
Дважды кликните Переводный Демпфер, перейдите к вкладке Variables, установите флажок рядом с переменной Force, измените ее Priority на High
и введите начинающееся значение 200
. Сохраните модуль N
.
Обновите переменное средство просмотра.
Полное состояние в нижней части окна Variable Viewer теперь отображает красный квадрат и говорит, что решатель не может удовлетворить все высокоприоритетные переменные цели. Существуют красные квадраты в столбце Status для двух высокоприоритетных переменных с целями, не удовлетворенными, а также для их родительских блоков.
Заметьте, что решатель смог найти решение для образцовой инициализации. Если вы повторно выполняете симуляцию, она запускается без ошибок, и вы видите новые результаты симуляции.
Однако Переменное Средство просмотра показывает, что образцовое решение для инициализации не удовлетворяет ваши целевые значения для основных переменных. Это происходит, потому что размещение высокоприоритетных ограничений на все три элемента системы массового пружинного демпфера приводит к конфликту. Можно решить вопрос сверхспецификации путем ослабления приоритета некоторых конфликтных переменных целей.
Дважды кликните Переводный Демпфер снова, перейдите к вкладке Variables и измените приоритет переменной Force к Low
.
Обновите переменное средство просмотра.
Полное состояние в нижней части окна Variable Viewer теперь отображает желтый треугольник и говорит, что все высокоприоритетные цели удовлетворены, но некоторые низкоприоритетные цели не удовлетворены. В столбце состояния существует теперь два желтых треугольника: один для низкоприоритетной переменной f силы и один для ее родительского блока, Переводного Демпфера.
По существу решение, найденное в этом случае, эквивалентно, когда вы ранее заданная высокоприоритетная цель для массовой скорости и результаты симуляции являетесь тем же самым.
Другой способ иметь дело со сверхспецификацией состоит в том, чтобы сохранить высокий приоритет на демпфере, обеспечивают и ослабляют приоритет на массовой начальной скорости. Дважды кликните Переводный Демпфер снова, перейдите к вкладке Variables и возвратите приоритет переменной Force к High
. Затем дважды кликните блок Mass, перейдите к вкладке Variables и измените приоритет переменной Velocity к Low
.
Обновите переменное средство просмотра.
Снова, состояние Variable Viewer говорит, что все высокоприоритетные цели были удовлетворены и что некоторые низкоприоритетные цели не удовлетворены. Однако, потому что вы изменили переменные приоритеты, решатель теперь пытался удовлетворить начальную силу на демпфере, а не массовой скорости, и решение отличается в этом случае, как результаты симуляции.