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

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

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

О приводах

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

Внимание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Привести в действие тело,

  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 (например, блок Входного порта или блок 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.

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

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

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

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

Внимание

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

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

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

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

Совет

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

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

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

  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 компонентами, который питает координаты, скорости и ускорения для всех шести относительных DoFs между Телом и Body1. Подсистема использует блок Bushing, который содержит три переводных и три вращательных примитива, чтобы представлять относительный DoFs:

Можно изменить драйвер тела, чтобы двигать только одним из тел, таким образом, создав привод движения. Чтобы переместить 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.

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

Приведение в действие Драйвера с Приводом Драйвера позволяет вам задавать временную зависимость 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. Создайте дополнительный порт коннектора на блоке Joint, содержащем примитив, начальное условие которого вы хотите задать.

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

    Внимание

    Не соединяйтесь блок 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-. Взгляд от переднего, положительного вращения качается вниз и право, против часовой стрелки.