Обрезка механических моделей

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

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

Об обрезке в программном обеспечении Simscape Multibody

Обрезка, которую механическая система отсылает к открытию решений для входных параметров, выходных параметров, состояний и производных состояния удовлетворяющие условия, которые вы задаете заранее. Например, можно искать установившиеся решения, где некоторые или все производные состояний системы - нуль. Использовать Simulink® trim команда в системе, представленной моделью Simscape Multibody, необходимо выбрать режим Simscape Multibody Trimming (см. Выбор Analysis Mode). Необходимо также задать условия, которым должно удовлетворить решение. Примеры после затем показывают вам, как обрезать механические модели.

Консультируйтесь с документацией Simulink для больше на обрезке моделей (Simulink). Можно также ввести help trim в командной строке MATLAB®.

Ограничения на обрезку механических моделей

Необходимо избегать использования определенного Simscape Multibody или функций Simulink при обрезке модели.

  • Должен быть собран обрезанный механизм Simscape Multibody. Не используйте демонтированные соединения при обрезке.

    Для получения дополнительной информации смотрите Моделирование Демонтированные Соединения.

  • Вы не можете использовать Блоки драйверов при обрезке модели.

  • Блоки Joint Initial Condition Actuator в обрезанной модели Simscape Multibody проигнорированы.

  • Не включайте события или разрывы движения в вашей обрезанной модели. В частности, не используйте Simscape Multibody блоки Joint Stiction Actuator. Обрезка механических моделей с прилипанием вызывает ошибку.

Обрезка в присутствии приведения в действие движения

Если вы хотите обрезать модель Simscape Multibody, содержащую приводы движения, вы должны

  1. Заставьте части скорости и положения/угла приведения в действие движения сигнализировать о зависимом только на ускоряющем сигнале

  2. Сделайте скорость и положение/угол сопоставимыми с ускоряющей частью при помощи блоков Integrator. Сигнал приведения в действие движения является вектором с компонентами, упорядоченными как положение/угол, скорость и ускорение, соответственно.

    Этот метод рекомендуется в Стабилизации Числовых Производных в Сигналах Приведения в действие. Это требуется здесь.

Режим Simscape Multibody Trimming использует только ускорение в качестве независимого входа приведения в действие движения, потому что это эквивалентно силе или крутящему моменту. Как следствие только ускоряющий сигнал может использоваться в качестве независимого входа приведения в действие движения.

Подобное ограничение содержит для линеаризации модели; смотрите Линеаризацию в присутствии Приведения в действие Движения.

Приведение в действие движения как вход модели для обрезки

Приведение в действие движения как Косвенный Вход.  Можно поместить входной порт модели в другую часть модели, затем питать тот вход как ускорение в привод движения с линией Сигнала Simulink. Необходимо все еще вывести сигналы приведения в действие движения скорости и положения/угла таким же образом: путем интеграции любого сигнала вы используете в ускорении однажды и дважды, соответственно.

Неограниченная обрезка пружинного двойного маятника

Рассмотрите следующий пружинный двойной маятник.

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

Высказывание начального предположения равновесия

Найти точку равновесия для пружинного двойного маятника,

  1. Создайте модель Simscape Multibody системы. Эта схема показывает пример такой модели, mech_dpend_trim.

    • Эта модель использует блоки Тела, чтобы смоделировать плечи и предплечья маятника и блока (J1) Revolute Joint, чтобы смоделировать связь между маятником и землей.

    • Модель использует блок Subsystem (J2), чтобы смоделировать пружинное шарнирное соединение между руками. Эта подсистема использует цикл отрицательной обратной связи, чтобы смоделировать объединенный предмет к ослабленной крутильной пружине путем умножения углового смещения и скорости соединения, соответственно, к константам демпфера и пружине. Цикл суммирует получившиеся крутящие моменты и подает их назад в соединение с блоком Joint Actuator.

    Результат состоит в том, что соединение испытывает крутящий момент, выступающий против его движения и пропорциональный его угловому смещению и скорости. Вы могли также смоделировать эту ослабленную крутильную пружину с Joint Spring & Damper block.

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

  2. Запустите модель в режиме Forward Dynamics, чтобы оценить исходное предположение для нетривиальной точки равновесия маятника.

    Симуляция показывает, что пружина прекращает разворачиваться приблизительно после 9 секунд; то есть, это достигает установившейся точки. В этой точке углы верхних и более низких соединений являются приблизительно-18 и-51 градусом, соответственно, и скорости являются нулем. trim команда может найти значения этих состояний точно.

Анализ и инициализация вектора состояния

Исследуйте вектор состояния модели и подготовьте его к использованию в обрезке.

  1. Определите размещение вектора состояния модели, для того, чтобы сказать trim команда, где в пространстве состояний модели, чтобы запустить его поиск точки равновесия маятника (точка, где это прекращает разворачиваться). Используйте Simscape Multibody mech_stateVectorMgr команда, чтобы выполнить эту задачу. Обратитесь к блоку Ground, G.

    StateManager = mech_stateVectorMgr('mech_dpend_trim/G');
    StateManager.StateNames  
    
    ans =      
        'mech_dpend_trim/J2/RevoluteJoint:R1:Position'  
        'mech_dpend_trim/J1:R1:Position'
        'mech_dpend_trim/J2/RevoluteJoint:R1:Velocity'
        'mech_dpend_trim/J1:R1:Velocity'

    StateNames поле объекта вектора состояния возвращено mech_stateVectorMgr перечисляет имена состояний модели в порядке, в котором они появляются в векторе состояния модели. Таким образом поле показывает, что вектор состояния модели имеет следующую структуру:

    x(1) = position of lower joint (J2) 
    x(2) = position of upper joint (J1) 
    x(3) = velocity of lower joint (J2)
    x(4) = velocity of upper joint (J1)
  2. Определите вектор начального состояния.

    Вектор начального состояния задает точку в пространстве состояний системы где trim команда запускает свой поиск точки равновесия. trim команда ищет пространство состояний, исходящее от начальной точки, возвращая первую точку равновесия, с которой это сталкивается. Таким образом начальная точка не должна быть в или около ни одной из тривиальных точек равновесия системы. Для двойного маятника, точка [0; 0; 0; 0] (т.е. маятник, первоначально сложенный и стационарный), тривиальная точка равновесия и поэтому должна избежаться. Вектор начального состояния должен быть вектор-столбцом и должен задать угловые состояния в радианах.

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

    ix(1) = J2 (lower joint) angle = -35 degrees = -0.6109 radians 
    ix(2) = J1 (upper joint) angle = -10 degrees = -0.1745 radians 
    ix(3) = J2 angular velocity = 0 radians/second 
    ix(4) = J1 angular velocity = 0 radians/second

    дает к нетривиальной точке равновесия.

    Внимание

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

Обрезка системы к равновесию

  1. Сбросьте аналитический тип к Trimming на вкладке Parameters диалогового окна Machine Environment.

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

  2. Введите следующие команды, чтобы найти точку равновесия самой близкой к начальной точке.

    ix = [-35*pi/180; -10*pi/180; 0; 0];
    iu = [];
    [x,u,y,dx] = trim('mech_dpend_trim',ix,iu);

    Массив ix задает начальную точку, определенную в Анализе и Инициализации Вектора состояния. Массив iu задает начальные входные параметры системы. Его значение является пустым, потому что система не имеет никаких входных параметров. (Таким образом u и y выходные параметры являются пустыми.) В этой форме, trim команда находит систему установившейся (равновесие) точки, т.е. точки, где производные системы состояния являются нулем. Массив x содержит вектор состояния, соответствующий первой точке равновесия, расположенной trim:

    x =    
        -0.8882
        -0.3165
        -0.0000
         0.0000

    Получившиеся состояния являются угловыми положениями и скоростями, выраженными в радианах. На основе размещения вектора состояния модели (определенный ранее в Анализе и Используя Вектор состояния) маятник достигает равновесия, когда его верхнее соединение отклонило к углу-18.1341 градусов и его более низкого соединения к углу-50.8901 градусов. Системные производные состояния dx нуль, в допусках.

Ограниченная обрезка машины четырёхзвенника

Рассмотрите плоскую систему четырёхзвенника, состоящую из заводной рукоятки, разветвителя и рокера. Следующий рисунок показывает блок-схему системы четырёхзвенника. Моделью является mech_four_bar_trim.

Эта система ограничивается на основании того, чтобы быть замкнутым циклом. Не все степени свободы независимы. (На самом деле только один.) Предположим вы хотите найти крутящий момент требуемым повернуть заводную рукоятку при скорости вращения 1 радиана/секунда в области значений углов заводной рукоятки. Этот раздел обрисовывает в общих чертах процедуру с trim команда и режим Simscape Multibody Trimming, чтобы определить крутящий момент.

Подготовка четырёхзвенника для обрезки

Реконфигурируйте модель прежде, чем выполнить обрезку.

  1. Сократите замкнутый цикл, который представляет систему четырёхзвенника в соединении (Revolute1), соединяющий рокера, чтобы основываться (см. Территорию Моделирования и Тела).

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

    Для инструкций и дополнительной информации о сокращении соединений, смотрите Циклы Схемы Металлорежущего станка и Ограничения Поддержания.

  2. Выберите Signal Dimensions из меню Display> Signals & Ports.

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

  3. Установите аналитический режим на Trimming в блоке Machine Environment.

    Режим Trimming затем вставляет подсистему и выходной блок, который выводит сигнал, представляющий механические ограничения на систему четырёхзвенника. Эти ограничения являются результатом закрытия цикла.

    Ширина ограничительного сигнала (4) отражает то, что система четырёхзвенника ограничивается переместиться в плоскость и таким образом имеет только четыре ограничения: два ограничения положения и два скоростных ограничения.

Анализируя и Используя вектор состояния

Исследуйте вектор состояния и подготовьте его к использованию в обрезке.

  1. Покажите размещение вектора состояния системы с mech_stateVectorMgr:

    Handle = get_param('mech_four_bar_trim/Revolute2','handle');
    StateManager = mech_stateVectorMgr(Handle); 
    StateManager.StateNames  
    
    ans =      
        'mech_four_bar_trim/Revolute2:R1:Position'
        'mech_four_bar_trim/Revolute3:R1:Position'
        'mech_four_bar_trim/Revolute4:R1:Position'
        'mech_four_bar_trim/Revolute2:R1:Velocity'
        'mech_four_bar_trim/Revolute3:R1:Velocity'
        'mech_four_bar_trim/Revolute4:R1:Velocity'
  2. Задайте вектор начального состояния x0 и массив индекса ix:

    x0  = [0;0;0;0;0;1];
    ix  = [3;6];

    Массив x0 указывает что trim команда должна запустить свой поиск решения с системы четырёхзвенника в ее исходном положении, и с заводной рукояткой, перемещающейся в скорость вращения (утвердите 6) 1 радиана/секунда. Массив ix указывает, что угловое положение (состояние 3) и скорость (утверждают 6) заводной рукоятки должно равняться их начальным значениям, 0 радианам и 1 радиану/секунда, соответственно, в точке равновесия. Не необходимо ограничить другие состояния, потому что система четырёхзвенника имеет только одну независимую степень свободы положения и только одну независимую скоростную степень свободы.

  3. Задайте нуль как первоначальную оценку для крутящего момента заводной рукоятки:

    u0  = 0; 
  4. Потребуйте, чтобы ограничение выходные параметры было 0:

    y0  = [0;0;0;0]; 
    iy  = [1;2;3;4];

    y0 массив задает начальные значения ограничения выходные параметры как нуль. iy массив указывает, что ограничение выходные параметры в точке решения должно равняться их начальным значениям (0). Это гарантирует, что решение удовлетворяет механическим ограничениям на систему.

  5. Задайте производные состояния, которые будут обрезаны:

    dx0 = [0;0;1;0;0;0];
    idx = [6];

    dx0 массив задает начальные производные состояний системы четырёхзвенника. В частности, это указывает, что начальная производная угла заводной рукоятки (т.е. угловая скорость заводной рукоятки) является 1 радианом/секунда, и все другие производные (т.е. скорости и ускорения) 0. idx массив указывает, что ускорение заводной рукоятки в точке решения должно быть 0; т.е. заводная рукоятка должна перемещаться в постоянную скорость. Не необходимо ограничить ускорения других состояний, потому что система имеет только одну скоростную степень свободы.

Примечание

Система четырёхзвенника имеет только ограничение выходные параметры. Если бы вы обрезали систему с неограничением выходные параметры, необходимо было бы включать неограничение выходные параметры в начальный выходной вектор.

Система четырёхзвенника также имеет только механические состояния. Если бы вы обрезали систему с немеханическими состояниями Simulink, необходимо было бы также включать те немеханические состояния в вектор начального состояния.

Обрезка четырёхзвенника

Выполните обрезку и изучите выход.

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

    [x,u,y,dx] = ...
       trim('mech_four_bar_trim',x0,u0,y0,ix,[],iy,dx0,idx);

    Обрежьте систему в области значений углов.

    Angle = []; 
    Input = []; 
    State = []; 
    dAngle = 2*pi/10; 
    Constraint = [];  
    
    for i=1:11;
        x0(3) = (i-1)*dAngle;
        x0(6) = 1;     
        [x,u,y,dx] = ...  
    trim('mech_four_bar_trim',x0,u0,y0,ix,[],iy,dx0,idx);
       disp(['Iteration: ', num2str(i), ' completed.']);
       Angle(i) = x0(3);
        Input(:,i) = u;
        State(:,i) = x;
        Constraint(:,i) = y;
         if (i>3),
             u0 = spline(Angle,Input,Angle(end) + dAngle);
             x0 = spline(Angle,State,Angle(end) + dAngle);
         else
             x0 = x;
             u0 = u;
          end; end;
  2. Постройте график результатов.

    figure(1);
    plot(Angle,Input);
    grid;
    xlabel('Angle (rad)');
    ylabel('Torque (N-m)');
    title('Input Torque Vs. Crank Angle');

    Следующая фигура отображает получившийся график.

    Примечание

    Можно использовать Property Editor, чтобы совершенствовать внешний вид графика. Чтобы открыть Property Editor, на панели инструментов фигуры выбирают View> Property Editor.

Для получения дополнительной информации об обрезке машин с обратной связью

Следующий раздел, Линеаризация Механических Моделей содержит пример, Линеаризацию С обратной связью: Машина Четырёхзвенника, обрезки системы по-другому, ища устойчивое естественное равновесие четырехзвенного механизма.