Применение движений и сил

Предупреждение

Это содержимое характерно для программного обеспечения Simscape™ Multibody™ First Generation. Функции первого поколения намечают, чтобы быть удержанными от использования и нужно избежать.

О приводах

Библиотека Simscape Multibody Actuators & Sensors обеспечивает набор блоков Привода, которые позволяют вам прикладывать зависящие от времени силы и движения к телам, соединениям и драйверам. Можно также варьироваться масса тела и тензор инерции.

Внимание

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

Можно использовать блоки Привода, чтобы выполнить следующие задачи:

  • Прикладывайте изменяющуюся во времени силу или крутящий момент к телу или соединению.

  • Задайте положение, скорость и ускорение соединения или драйвера как функция времени.

  • Задайте исходное положение и скорость объединенного примитива.

  • Задайте массу и/или тензор инерции тела как функция времени.

В общем случае приводы могут применить любую комбинацию сил и движений к машине при условии, что

  • Приложенные силы и движения сопоставимы друг с другом и с геометрией машины, ограничениями и ограничениями блока.

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

  • Возможно найти уникальное решение для движения каждой приводимой в движение степени свободы (DoF).

Стабилизация числовых производных в сигналах приведения в действие

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

Simulink обеспечивает блок Derivative для числового дифференцирования сигнала. Однако выход этого блока иногда не устойчив или достаточно точен в физических целях моделирования. Рекомендуемые альтернативы блоку Derivative включают следующее.

Интеграция Сигналов Производной высшего порядка.  Запустите путем определения самого высокого производного сигнала (такого как ускорение), затем интегрируйте этот сигнал получить более низкие производные сигналы (такие как скорость) использование блока Integrator.

Преобразование Сигналов с Передаточными функциями.  Чтобы дифференцировать сигнал, используйте блок передаточной функции (Transfer Fcn). Этот блок на самом деле выполняет свертку Преобразования Лапласа, чтобы сглаживать выход, который не является точно производной.

Можно устранить этот недостаток путем фильтрации исходного f сигнала, затем определения точных производных dF/dt, и т.д., отфильтрованного F сигнала путем добавления высших порядков в числитель передаточной функции. Порядок знаменателя должен быть равным или больше, чем количество выходных сигналов. Используйте отфильтрованный F сигнала (вместо f), а также отфильтрованные производные.

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

Примеры числовых производных сигналов привода

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

Метод передаточной функции проиллюстрирован mech_stewart_control модель. Для примера метода производного интегрирования смотрите mech_body_driver модель.

Приведение в действие тела

Можно использовать Body Actuator, чтобы прикладывать силы и/или крутящие моменты, но не движения, к телам. (Можно применить движения к телу косвенно, с помощью Объединенных Приводов. Смотрите Применение Движений к Телам.)

Привести в движение тело,

  1. Если уже нет неиспользованного порта коннектора, доступного для Привода, создайте порт Body CS на Теле для Привода. Смотрите ссылку блока Body, если необходимо учиться как.

  2. Перетащите блок Body Actuator из библиотеки Sensors & Actuators в вашу модель и соедините ее выходной порт с портом Body CS на Теле.

  3. Откройте диалоговое окно Привода.

  4. Примите решение прикладывать силу или крутящий момент к телу:

    • Установите флажок Applied force, если вы хотите прикладывать силу к телу и выбрать модули силы из смежного списка.

    • Установите флажок Applied torque, если вы хотите применить крутящий момент к телу и выбрать модули крутящего момента из смежного списка.

  5. Выберите систему координат, используемую, чтобы задать прикладной крутящий момент из списка With respect to CS.

    Список позволяет вам выбирать World CS или Body CS порта, к которому вы присоединили Привод.

  6. Создайте векторные сигналы, которые задают значение прикладного крутящего момента и силы на каждом временном шаге.

    Можно использовать любой исходный блок Simulink (например, блок Input port или блок Sine Wave) или комбинация блоков Simulink, чтобы создать сигнал Привода Тела. Можно также использовать выход блока Sensor, соединенного с Телом, как введено на Привод, таким образом, создавая обратную связь. Такие циклы полезны для моделирования пружин и демпферов (см. Подтверждающие Механические Модели).

  7. Соедините силу и/или закрутите сигнал к входному порту Привода.

    Если вы прикладываете и силу и крутящий момент к телу, соединяете силу и закручиваете сигналы к входным параметрам 2D входного блока Mux. Затем соедините выход блока Mux к входу Привода.

Пример привода тела: чистое кинетическое трение

mech_ballistic_kin_fric обеспечивает пример того, как реализовать чистое кинетическое трение. Этот тип трения является непрерывной силой, которая зависит от движения тела относительно носителя (такого как воздух), а также на физических характеристиках тела. Кинетическое трение, в отличие от “прилипания”, включает не “липкий” или блокирующий из движения, и трение не прерывисто. В то время как вы могли использовать Объединенный Привод Прилипания, это не необходимо. Эта модель применяет воздушное трение, или перетащите к снаряду с Приводом Тела.

Откройте подсистему Аэродинамического сопротивления. Если вы дважды кликаете блок, диалоговое окно маски открывает выяснение коэффициента сопротивления Cd. Если вы щелкаете правой кнопкой по блоку и выбираете Look under mask, сама подсистема появляется:

Подсистема Аэродинамического сопротивления вычисляет воздушное трение согласно стандартной воздушной модели трения. (См. документацию Aerospace Blockset для получения дополнительной информации.) Перетаскивание всегда выступает против движения снаряда и пропорционально продукту воздушной плотности, площади поперечного сечения снаряда и квадрата ее скорости.

Запустите модель с коэффициентом сопротивления по умолчанию (нуль). Окно XY Graph открывается, чтобы построить параболический путь снаряда. Теперь откройте диалоговое окно Аэродинамического сопротивления снова и эксперимент с различным CD коэффициентов сопротивления. Запустите с маленьких значений, таких как CD = 0.05. Для твердой сферы CD равняется двум. Эффект перетаскивания поразителен в этом случае.

Применение движений к телам

Блок Body Actuator не может привести в движение Тело с сигналами движения. Но можно создать такие приводы движения тела с комбинацией других блоков. Смотрите Объединенный Пример Привода: Драйвер Тела.

Варьируясь масса и инерция тела Tensor

Блок Variable Mass & Inertia Actuator дает вам способ варьироваться масса тела и/или тензор инерции как внешние функции времени. Вы задаете эти функции с входящими Сигналами Simulink.

Внимание

Блок Variable Mass & Inertia Actuator не прикладывает сил тяги или крутящих моментов к Телу, так приводимому в движение. Массовая потеря или усиление в конкретном направлении приводят к силам тяги и крутящим моментам на теле. Необходимо применить эти силы/крутящие моменты к Телу отдельно с блоками Привода Тела.

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

Блок Variable Mass & Inertia Actuator изменяет массовую и вращательную инерцию приводимого в движение Тела путем присоединения невидимого тела к приводимому в движение телу в конкретной системе координат (CS) Тела. Это невидимое тело имеет массу и тензор инерции, которые варьируются вовремя, как задано внешним Сигналом Simulink Привода. Симуляция обрабатывает приводимое в движение тело и невидимое тело как одно составное тело. Составное тело имеет новую массу, новый центр тяжести (CG) и новый тензор инерции, составленный от его двух составляющих тел.

Можно добавить несколько блоков Variable Mass & Inertia Actuator в одно Тело. В этом случае симуляция обрабатывает приводимое в движение тело и все присоединенные невидимые тела как одно составное тело. Масса этого составного тела, CG и тензор инерции составлены от его составляющих тел.

Присоединение переменных тел массы и инерции к видимому телу

Варьироваться масса и/или тензор инерции Тела с этим Приводом:

  1. От библиотеки Sensors & Actuators перетащите блок Variable Mass & Inertia Actuator в свою модель.

  2. Присоедините порт коннектора Привода к CS Тела на Теле, где вы хотите, чтобы невидимая переменная масса была. Если подходящий порт Body CS не существует на Теле, открывает свое диалоговое окно и создает то.

  3. Создайте внешний Сигнал Simulink, чтобы смоделировать изменяющуюся во времени массу и/или тензор инерции для этого невидимого тела. Соедините его с блоком Variable Mass & Inertia Actuator входной порт Simulink.

    Этот Сигнал Simulink может иметь один, девять, или десять компонентов, в зависимости от того, варьируетесь ли вы масса только, тензор инерции только или оба.

Пример: простая ракета

Следующая модель симулирует простую ракету. Это обрабатывает ракету как массу точки перемещение вверх (+y направление) с выхлопом, указывающим вниз (-y направление). Ракета теряет массу на постоянном уровне.

Блок Rocket является массой точки. Блок Thrust Velocity представляет нисходящий выхлоп и, умноженный на массовую потерю, представленную блоком Fuel Loss, приводит в движение корпус Ракеты с силой тяги, указывающей вверх. Блок Thrust (привод тела) прикладывает эту силу в CS органа местного самоуправления, который, для ракеты точки, идентичен CS CG Ракеты.

Та же массовая потеря от блока Fuel Loss, который производит силу тяги также, должна варьироваться масса ракеты непосредственно. Блок Variable Mass Actuator выполняет это путем питания того же массового сигнала потерь блок Rocket.

Приведение в действие соединения

Вы индивидуально приводите в движение каждый из призматических и вращательные примитивы собранного соединения с Joint Actuator. Можно применяться

  • Силы или поступательные движения (но не оба) к призматическим примитивам

  • Крутящие моменты или вращательные движения (но не оба) к вращательным примитивам

Внимание

Вы не можете привести в движение сферический или сварить примитивы, демонтированные соединения или невесомые коннекторы.

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

Исключение: можно применить Объединенный Начальный Привод Условия и обеспечить или закрутить приведение в действие (включая прилипание) к тому же примитиву. Вы не можете применить Объединенный Начальный Привод Условия и приведение в действие движения к тому же примитиву. Смотрите Исходные положения Определения и Скорости.

Приведение в действие объединенного примитива

Совет

Если у вас есть несколько сил/крутящих моментов или движений, вы хотите обратиться к объединенному примитиву, суммировать их значения как Сигналы Simulink сначала, затем применить конечный результат как вход на Объединенный Привод.

Привести в движение призматическое или шарнирное соединение, примитивное из собранного соединения:

  1. Создайте порт Actuator на Блоке соединений для примитива (см. Порты Привода и Датчика Создания на Соединении).

  2. Перетащите Объединенный Привод или Объединенный Привод Прилипания из библиотеки Sensors & Actuators в вашу модель и соедините ее выходной порт с портом Actuator на Соединении.

    Остающиеся шаги в этой процедуре применяются к созданию стандартного Объединенного Привода. Для получения информации о создании привода прилипания, который применяет классическое трение Coulombic к призматическому или шарнирному соединению, смотрите страницу с описанием блока Joint Stiction Actuator.

  3. Откройте диалоговое окно Объединенного Привода.

  4. Выберите примитив, который вы хотите привести в движение из списка Connected to primitive на диалоговом окне.

  5. Выберите тип приведения в действие, которое вы хотите применить из выпадающего меню Actuate with, любого Generalized Forces или Motion.

  6. Если вы приводите в движение призматический примитив:

    • Если вы выбрали Generalized Forces как тип приведения в действие, выберите модули силы из списка Applied force units.

    • Если вы выбрали Motion как тип приведения в действие, выберите модули для каждого движения, которое будет приводиться в движение (положение, скорость, ускорение).

  7. Если вы приводите в движение вращательный примитив:

    • Если вы выбрали Generalized Forces как тип приведения в действие, выберите модули крутящего момента из списка Applied torque units.

    • Если вы выбрали Motion как тип приведения в действие, выберите модули для каждого движения, которое будет приводиться в движение (угол, скорость вращения, угловое ускорение).

  8. Нажмите OK, чтобы применить ваш выбор и отклонить диалоговое окно.

    Каждый объединенный примитив, который вы показываете жестом - приводит в движение, потерян как истинная степень свободы в вашей машине. Это вызвано тем, что степень свободы больше не может свободно отвечать на внешне приложенные силы или крутящие моменты. Смотрите Степени свободы Модели подсчета.

  9. Создайте сигнал, который задает приложенную силу, крутящий момент или движения на каждом временном шаге.

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

    Сила или сигнал крутящего момента должны быть скалярным сигналом. Сигнал движения должен быть 1D сигналом массивов включение трех компонентов: положение, скорость и ускорение. Направленность соединения определяет ответ последователя к знаку сигнала привода (см. Объединенную Направленность).

  10. Соедините сигнал Привода с портом Actuator на Соединении.

Объединенный пример привода: драйвер тела

mech_body_driver модель иллюстрирует использование Объединенных Приводов, чтобы создать пользовательский драйвер.

Подсистема Драйвера Тела принимает сигнал с 18 компонентами, который питает координаты, скорости и ускорения для всех шести относительных чисел степеней свободы между Телом и Body1. Подсистема использует блок Bushing, который содержит три поступательных и три вращательных примитива, чтобы представлять относительное число степеней свободы:

Можно изменить драйвер тела, чтобы двигать только одним из тел, таким образом, создав привод движения. Чтобы переместить Body1 относительно Мира, например, удаляют Тело блоков и Сварку и соединяют Драйвер Тела подсистемы непосредственно, чтобы Основываться.

Объединенный пример привода прилипания: смешанное статическое и кинетическое трение

Совет

Необходимо использовать блок Joint Stiction Actuator, только если вам нужно статический (блокировка) трение, которое удаляет одну или несколько степеней свободы из вашей машины.

Можно смоделировать чистое кинетическое трение (затухание) с другими блоками Привода и Датчика. Смотрите Приведение в действие Тела и Добавление Внутренних Сил.

mech_dpen_sticky модель иллюстрирует управляемый двойной маятник с “липким” трением или прилипанием, к которому применяются оба шарнирных соединения с блоком Joint Stiction Actuator.

Откройте размаскированный Joint1 или блоки Model Прилипания Joint2 (отмеченный желтым), чтобы просмотреть подсистемы:

Каждая подсистема Прилипания содержит блок Joint Stiction Actuator (отмеченный оранжевым), который требует статических и кинетических коэффициентов трения через их аналогичные блоки. Для любого вращательного, порог скорости вращения, заданный через диалоговое окно блока, определяет, блокирует ли соединение. После того, как заблокированный, соединение не может переместиться, пока комбинация сил не достигает порога, заданного Forward Stiction Limit или Reverse Stiction Limit.

Запустите модель с различными кинетическими и статическими коэффициентами трения и различными скоростными порогами. Просмотрите результаты в блоках Scope и через окно визуализации. Можно найти больше деталей о том, как прилипание Simscape Multibody работает путем консультации со страницей с описанием блока Joint Stiction Actuator.

Приведение в действие драйвера

Приведение в действие Драйвера с Driver Actuator позволяет вам задавать временную зависимость rheonomic ограничения, примененного Драйвером.

Привести в движение Драйвер:

  1. Создайте дополнительный порт коннектора на Драйвере для Привода.

    Создайте дополнительный порт таким же образом, вы создаете дополнительный порт Sensor/Actuator на Соединении (см. Порты Привода и Датчика Создания на Соединении).

  2. Перетащите экземпляр Привода Драйвера из библиотеки Sensors & Actuators в вашу модель.

  3. Соедините выходной порт Привода с портом Actuator на Драйвере.

  4. Создайте сигнал, который задает временную зависимость ограничения Драйвера.

  5. Соедините сигнал приведения в действие с входным портом Привода Драйвера.

Определение исходных положений и скоростей

Блок Joint Initial Condition Actuator (JICA) позволяет вам задавать исходные положения и скорости неприводимых в движение соединений и следовательно тел, присоединенных к ним. Можно использовать блоки JICA для

  • Задайте ненулевые начальные объединенные скорости

    Начальная скорость по умолчанию объединенного примитива является нулем. Необходимо использовать блок JICA, чтобы задать начальную скорость соединения, если начальная скорость не является нулем.

  • Замените настройки исходного положения пары тела

    Настройки источника CS CG в диалоговых окнах блоков Тела задают исходные положения тел. Используя блоки JICA, можно заменить эти начальные положения тела путем сброса их относительных положений в Соединениях, соединяющих их.

Ваша симуляция модели запускается с ваших машин сначала в их домашних настройках, заданных диалоговыми данными о Теле. Это затем преобразовывает ваши машины к их начальным настройкам путем применения данных JICA.

Внимание

Вы не можете одновременно привести в движение объединенный примитив с Объединенным Начальным Приводом Условия и приведением в действие движения от блока Joint Actuator.

Используя блоки JICA

Определение начальных условий на объединенном примитиве является специальным видом приведения в действие, то, которое происходит только однажды в начале моделирования. Именно поэтому блок JICA находится в библиотеке Sensors & Actuators.

Примечание

Блок JICA, в отличие от других Приводов, не имеет входного порта. Диалоговое окно JICA задает вход Actuator полностью.

С блоком JICA можно задать исходные положения и скорости любой комбинации призматических и вращательных примитивов в данном Соединении. (Вы не можете задать ICS для сферического и сварить примитивы.)

Задавать начальную скорость и/или положение объединенного примитива:

  1. Перетащите блок JICA из библиотеки Sensors & Actuators и бросьте ее в свое окно модели.

  2. Создайте дополнительный порт коннектора на Блоке соединений, содержащем примитив, начальное условие которого вы хотите задать.

  3. Соедините порт коннектора на блоке JICA к новому порту коннектора на Блоке соединений.

    Внимание

    Не соединяйтесь блок JICA к портам Joint отметил "B" или "F" (основа или последователь). Эти порты предназначаются для соединения с Телами.

  4. Откройте диалоговое окно блока JICA. Из примитивного списка для Соединения выберите примитивы, которые вы хотите привести в движение путем устанавливания их флажков.

  5. Войдите в исходные положения приводимых в движение примитивов, относительно CSS Тела, присоединенного к Соединению, в поле Position.

    Из выпадающего меню справа, выберите Units для исходных положений.

  6. Введите начальные скорости приводимых в движение примитивов, относительно CSS Тела, присоединенного к Соединению, в поле Velocity.

    Из выпадающего меню справа, выберите Units для начальных скоростей.

  7. Нажмите Apply или OK.

Пример JICA: математический маятник

Открытый mech_spen , затем откройте библиотеку Sensors & Actuators. Выполните шаги от предыдущего раздела, Используя Блоки JICA, чтобы соединить один блок Joint Initial Condition Actuator с блоком Revolute и сконфигурировать его. Это Соединение содержит только один примитивный, R1, который является примитивом, перечисленным в диалоговом окне JICA.

Установите начальные условия двумя способами и сравните получившиеся симуляции в осциллографе:

  1. Сначала установите начальный Position (угол) на 60 deg, который является 60o вниз от левой горизонтали (30o по часовой стрелке от вертикально вниз) и устанавливает начальный Velocity на 0 deg/s.

  2. Запустите симуляцию в течение одной секунды. Обратите внимание в осциллографе, что начальный угол (желтая кривая) перемещен вверх к 60o, в то время как начальная скорость (фиолетовая кривая) все еще запускается в нуле.

  3. Теперь сбросьте начальный Velocity к 30 deg/s, отъезд начального Position (угол) в 60 deg.

  4. Повторно выполните симуляцию в течение одной секунды. Обратите внимание в Осциллографе, что начальный угол все еще перемещен вверх к 60o, но начальная скорость также перемещена вверх к 30o/sec.

Объединенная направленность присвоена в mech_spen так, чтобы положительная ось вращения была осью +z-. Взгляд от переднего, положительного вращения качается вниз и право, против часовой стрелки.