В этом примере показано, как можно использовать инициализацию основной переменной, и как она влияет на результаты симуляции простой механической системы.
Модель является классической добровольной системой массового пружинного демпфера с колебаниями массы, вызванной начальной деформацией пружины.
Создайте простую систему массового пружинного демпфера. Используйте Mass, Translational Spring, Translational Damper, Mechanical Translational Reference, Ideal Translational Motion Sensor, PS-Simulink Converter, Solver Configuration и блоки Scope, и соедините их как показано на следующем рисунке.
В диалоговом окне блока Translational Damper, установленном параметр Damping coefficient на 10
N/(m/s)
. Используйте значения параметров по умолчанию для всех других блоков.
Подготовьте модель к симуляции. В окне модели откройте вкладку Modeling и нажмите Model Settings. Диалоговое окно Configuration Parameters открывается, показывая панель Solver. Установите 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.
Симулируйте модель.
Откройте Переменное Средство просмотра. В окне модели, на вкладке Debug, нажимают 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 секунд, чтобы найти начальное решение и отобразить его в Переменном Средстве просмотра.
Повторно выполните симуляцию и исследуйте окна осциллографа Скорости и Положения, чтобы видеть эффект нового начального значения для массовой скорости на результатах симуляции.
Когда вы задаете дополнительные переменные цели, иногда возможно чрезмерно определить ограничения.
Дважды кликните блок Translational Damper, перейдите к вкладке Variables, установите флажок рядом с переменной Force, измените ее Priority в High
, и введите начинающееся значение 200
. Сохраните модуль N
.
Обновите переменное средство просмотра.
Полное состояние в нижней части окна Variable Viewer теперь отображает красный квадрат и говорит, что решатель не может удовлетворить всем высокоприоритетным переменным целям. Существуют красные квадраты в столбце Status для двух высокоприоритетных переменных с целями, которым не удовлетворяют, а также для их родительских блоков.
Заметьте, что решатель смог найти решение для инициализации модели. Если вы повторно выполняете симуляцию, она запускается без ошибок, и вы видите новые результаты симуляции.
Однако Переменное Средство просмотра показывает, что решение для инициализации модели не удовлетворяет вашим целевым значениям для переменных в блоках. Это происходит, потому что размещение высокоприоритетных ограничений на все три элемента системы массового пружинного демпфера приводит к конфликту. Можно решить вопрос сверхспецификации путем ослабления приоритета некоторых конфликтных переменных целей.
Дважды кликните блок Translational Damper снова, перейдите к вкладке Variables и измените приоритет переменной Force к Low
.
Обновите переменное средство просмотра.
Полное состояние в нижней части окна Variable Viewer теперь отображает желтый треугольник и говорит, что всем высокоприоритетным целям удовлетворяют, но некоторым низкоприоритетным целям не удовлетворяют. В столбце состояния существует теперь два желтых треугольника: один для низкоприоритетной переменной f силы и один для ее родительского блока, Translational Damper.
По существу решение, найденное в этом случае, эквивалентно, когда вы ранее заданная высокоприоритетная цель для массовой скорости и результаты симуляции являетесь тем же самым.
Другой способ иметь дело со сверхспецификацией состоит в том, чтобы сохранить высокий приоритет на демпфере, обеспечивают и ослабляют приоритет на массовой начальной скорости. Дважды кликните блок Translational Damper снова, перейдите к вкладке Variables и возвратите приоритет переменной Force к High
. Затем дважды кликните блок Mass, перейдите к вкладке Variables и измените приоритет переменной Velocity к Low
.
Обновите переменное средство просмотра.
Снова, состояние Variable Viewer говорит, что всем высокоприоритетным целям удовлетворили и что некоторым низкоприоритетным целям не удовлетворяют. Однако, потому что вы изменили переменные приоритеты, решатель теперь пытался удовлетворить начальной силе на демпфере, а не массовой скорости, и решение отличается в этом случае, как результаты симуляции.