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

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

Это содержимое характерно для программного обеспечения 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, содержащую приводы движения, вы должны

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

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

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

Режим 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 диалогового окна Среды Машины.

    Эта опция вставляет ограничительную подсистему и сопоставленный вывод в верхнем уровне модели. Обрезка вставляет ограничение вывод, чтобы сделать ограничения доступными для команды 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.

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

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