mech_stateVectorMgr

Создайте менеджера по вектору состояния машины объект

Синтаксис

MachineState = mech_stateVectorMgr('pathname')
MachineState = mech_stateVectorMgr('handle')
MachineState = mech_stateVectorMgr(gcb)
MachineState = mech_stateVectorMgr(gcbh)

Описание

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

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

MachineState = mech_stateVectorMgr('pathname') возвращает структуру данных класса MECH.StateVectorMgr, начинающего с пути любого блока Simscape Multibody в машине, состояние которой вы хотите.

MachineState = mech_stateVectorMgr('handle') возвращает структуру данных класса MECH.StateVectorMgr, указатель любого блока Simscape Multibody в машине, состояние которой вы хотите.

MachineState = mech_stateVectorMgr(gcb) возвращает структуру данных класса MECH.StateVectorMgr, начиная с косвенного вызова пути блока выбранного блока Simscape Multibody в вашей машине.

MachineState = mech_stateVectorMgr(gcbh) возвращает структуру данных класса MECH.StateVectorMgr, начиная с косвенного вызова указателя блока выбранного блока Simscape Multibody в вашей машине.

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

Входные параметры

mech_stateVectorMgr принимает вход того.

pathname

Имя полного пути блока Simscape Multibody или указатель или косвенный вызов пути или указателя.

  • Задайте имя полного пути начиная с имени модели и продолжающийся через любую иерархию подсистемы: pathname = modelname/subsystem1/etc.../blockname.

    Можно получить путь или указатель любого блока путем выбора того блока в окне и ввода gcb или gcbh в командной строке.

  • Объедините предыдущие шаги в один с косвенным путем или обработайте вызов. Выберите блок Simscape Multibody в окне модели и введите функцию, передающую gcb или gcbh как вход.

Выходные аргументы

Вывод mech_stateVectorMgr является объектом класса MECH.StateVectorMgr, сопоставленного с конкретной машиной.

Возвращенный объект имеет четыре свойства, зафиксированные структурой машины и именованием.

MachineState.MachineName

Строка, задающая путь к корневому блоку Ground: 'modelname/subsystem1/etc.../rootgroundblock'.

MachineState.X

1 N действительным массивом со значением [ 0 0 ... 0 ]. Длина вектора указывает на количество компонентов состояния.

Можно изменить значения компонентов этого массива, но эти значения не распространяют к модели.

MachineState.BlockStates

Массив менеджеров по состоянию блока N, содержа Объединенные Ограничительные состояния примитивной и Точечной кривой. Эти менеджеры являются структурами, расположенными в массиве классом: MECH.RPJointStateMgr, MECH.SJointStateMgr и MECH.PointCurveStateMgr.

Компоненты каждого менеджера содержат:

  • Объединенный блок и призматические, закрученные назад, и сферические примитивные имена

  • Значения положения и скорости и модули

  • Флаг FixedAtT_0, указывающий, приводится ли примитив в действие с начальными условиями

MachineState.StateNames

Массив ячеек строк N, содержа имена объединенных примитивов и Ограничений Точечной кривой. Строки этой структуры сгруппированы и упорядочены таким же образом, который менеджеры по состоянию блока BlockStates.

Запрос механического вектора состояния

Ввод функции mech_stateVectorMgr или запрос целого объекта возвращают сводные данные объекта свойством. Если вы создаете менеджера по вектору состояния объект, можно запросить эти свойства индивидуально путем ввода полного имени свойства:

MachineState.MachineName
MachineState.X

Менеджер по вектору состояния объект является одиночным элементом. Если вы создаете объект в A, то переприсвоение B = A заставляет A и B указать друг другу, весьма зависимым копиям. Изменение B автоматически изменяет A и наоборот.

Изменение значений механических состояний

Эта структура данных не содержит значения реального положения. Можно впоследствии присвоить значения состояниям в этом объекте, но эти значения не распространяют к модели. Это требует изменения механической детали вектора состояния Simulink® модели. Консультируйтесь с mech_get_states, mech_runtime_states, mech_set_states и mech_transfer_states об изменении механических значений вектора состояния модели.

Примеры

Механический вектор состояния с одним примитивом

Откройте модель mech_spen в качестве примера, выберите блок Simscape Multibody и войдите:

machinestate = mech_stateVectorMgr(gcb)

в командной строке. Функция возвращается

machinestate =
    MECH.StateVectorMgr
    MachineName: 'mech_spen/Ground'
              X: [0 0]
    BlockStates: [1x1 MECH.RPJointStateMgr]
     StateNames: {2x1 cell}

Первая строка в объекте является классом, и последние четыре являются свойствами. Модель mech_spen содержит один блок Joint (Закрученное назад) с двумя состояниями (угол и угловая скорость).

Запросите отдельные свойства. Например, введите machinestate.machinename. Структура возвращается

mech_spen/Ground

обращение к одному блоку Ground в модели.

Введите machinestate.X. Структура возвращает двухкомпонентный вектор состояния (N = 2, положение и скорость):

0     0

Введите machinestate.blockstates. Структура возвращается

MECH.RPJointStateMgr
        BlockName: 'Revolute'
        Primitive: 'R1'
         Position: 0
    PositionUnits: 'rad'
         Velocity: 0
    VelocityUnits: 'rad/s'
       FixedAtT_0: 'off'

Существует одно Соединение (Закрученное назад) и никакие Ограничения Точечной кривой, таким образом, существует только один менеджер состояния класса MECH.RPJointStateMgr. Это свойство дает подробную Объединенную информацию: имя блока, примитивное имя, положение и скоростные значения и модули и отсутствие начальных приводов условия.

Введите machinestate.statenames. Структура возвращает имена блока Joint, объединенного примитива, и состояний:

'Revolute:R1:Position'
'Revolute:R1:Velocity'

Механический вектор состояния с несколькими примитивами

Создайте модель без имени с блоками Земли и Тела, соединенными Складывающимся Соединением. Затем выберите один из блоков и введите machinestate = mech_stateVectorMgr(gcb) в командной строке. Simulink возвращается

machinestate =
    MECH.StateVectorMgr
    MachineName: 'untitled/Ground'
              X: [0 0 0 0 0 0 0 0 0 0]
    BlockStates: [2x1 MECH.BlockStateMgr]
     StateNames: {10x1 cell}

Модель без имени сопоставлена с ее блоком Ground и имеет сферическое и призматический примитив, следовательно 10 компонентов в векторе состояния. Чтобы видеть те примитивные имена, введите machinestate.statenames, чтобы получить

'Telescoping:S:Quaternion:1'
'Telescoping:S:Quaternion:2'
'Telescoping:S:Quaternion:3'
'Telescoping:S:Quaternion:4'
'Telescoping:P1:Position'
'Telescoping:S:Quaternion_dot:1'
'Telescoping:S:Quaternion_dot:2'
'Telescoping:S:Quaternion_dot:3'
'Telescoping:S:Quaternion_dot:4'
'Telescoping:P1:Velocity'

Кватернион и призматическое положение делают первые пять компонентов, в то время как кватернион производная и призматическая скорость делает последние пять.

Больше о

свернуть все

Машины

Машина является связанным набором блоков Simscape Multibody.

Механический вектор состояния и вектор состояния Simulink

Структура данных, возвращенная mech_stateVectorMgr, включает только состояния машинного производства из блоков Simscape Multibody.

Simscape Multibody называет механические состояния в модели. Simulink распознает и использует эти имена состояния Simscape Multibody.

Алгоритмы

свернуть все

Подсчет компонентов вектора состояния машины

Исключая любые приводимые в действие движением объединенные примитивы общее количество механических компонентов состояния

N = 2* (# неразрезанного prismatics + # неразрезанного revolutes) + 8* (# неразрезанного sphericals)
       + (# ограничений точечной кривой)

Состояние машины состоит из переводных и угловых положений и скоростей этих степеней свободы (DoFs) в машине:

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

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

  • Объединенный примитив, приводимый в действие Объединенным начальным приводом условия (JICA), считается как другие объединенные примитивы. Поскольку JICA внешне задает исходное положение и скорость такого примитива, примитив имеет активный флаг FixedAtT_0.

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

Некоторые объединенные примитивы не значили механические состояния

  • Объединенные примитивы Соединения сокращения в замкнутом цикле не считаются в состоянии машины.

  • Если объединенный примитив является движением, приводимым в действие с блоком Joint Actuator, тот объединенный примитив не считается в состоянии машины.

  • Примитивная сварка не вносит компонентов состояния машины.

Различение независимых государств и степеней свободы

Не все состояния машины должны представлять независимый DoFs.

Замкнутые циклы и зависимые состояния

Количество независимого DoFs сокращено:

  • Ограничение и Блоки драйверов, которые должны произойти в замкнутых циклах

  • Дополнительные ограничения, являющиеся результатом сокращения, соединяются в замкнутых циклах

В таких случаях зависят некоторые состояния машины.

Открытая топология, машины без Ограничений

Если машина не содержит замкнутых циклов, и таким образом никаких сокращений, Ограничений, или Драйверы, состояния машины и независимый DoFs идентичны.

Представлено до R2006a