simscape.op.create

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

Синтаксис

op = simscape.op.create(simlog,t)
op = simscape.op.create(block,simPhase)
op = simscape.op.create(block,simPhase, true)

Описание

пример

op = simscape.op.create(simlog,t) создает объект OperatingPoint op путем извлечения переменных целей от регистрируемых данных моделирования во время t. Если набор времен, зарегистрированных в журнале данных моделирования, simlog содержит точное совпадение в течение времени t, то функция извлекает эти переменные целевые значения в данные о рабочей точке. Если нет никакого точного совпадения, но t между минимальными и максимальными временами simlog, то функция использует линейную интерполяцию, чтобы определить целевые значения. Если t является меньше, чем минимальное время, то функция извлекает первое значение для каждой переменной в simlog. Точно так же, если t больше, чем максимальное время, то функция извлекает последнее значение в simlog.

Когда вы регистрируете данные моделирования в Инспекторе Данных моделирования, журнал симуляции не содержит частные данные о языке Simscape™. Поэтому, если вы извлекаете рабочую точку от данных, регистрируемых с помощью Инспектора Данных моделирования, частные данные не включены. Для всех других методов создания рабочей точки, включены ли из модели или от данных моделирования, регистрируемых к памяти или диску, частные данные по умолчанию.

пример

op = simscape.op.create(block,simPhase) создает объект OperatingPoint op путем извлечения переменных целей из целой модели, или от определенного блока или подсистемы, в заданной фазе симуляции модели.

пример

op = simscape.op.create(block,simPhase, true) создает объект OperatingPoint op путем извлечения кэшируемых значений переменных целей из модели, которая была ранее инициализирована или моделирована. Этот метод позволяет вам сэкономить время путем предотвращения повторенной инициализации модели, если данные, которые вы хотите извлечь, не изменились. Функция возвращает ошибку, если модель не была обновлена, инициализирована или моделирована ранее на сеансе.

Примеры

свернуть все

Откройте Моторную модель Постоянного электромагнита в качестве примера, которой уже включили регистрацию данных. Запустите симуляцию, чтобы создать логарифмическую переменную simlog_ssc_dcmotor симуляции (как задано параметром конфигурации модели Workspace variable name) в вашей текущей рабочей области:

ssc_dcmotor
sim('ssc_dcmotor');

Создайте объект OperatingPoint под названием op1 от регистрируемых данных моделирования в 0,1 секунды после запуска симуляции:

op1 = simscape.op.create(simlog_ssc_dcmotor, 0.1)
op1 = 

  OperatingPoint with children:
  -----------------------------
   DC Motor
   DC Voltage
   ERef
   Load Torque
   MRRef Motor
   MRRef Torque
   Sensing
  -----------------------------

Откройте Моторную модель Постоянного электромагнита в качестве примера и создайте объект OperatingPoint под названием op2 с помощью значений Start из модели:

ssc_dcmotor
op2 = simscape.op.create(gcs, 'Start')
op2 = 

  OperatingPoint with children:
  -----------------------------
   DC Motor
   DC Voltage
   ERef
   Load Torque
   MRRef Motor
   MRRef Torque
   Sensing
  -----------------------------

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

Откройте Моторную модель Постоянного электромагнита в качестве примера и моделируйте ее:

ssc_dcmotor
sim('ssc_dcmotor');

Создайте объект OperatingPoint под названием op3 с помощью значений Start для подсистемы двигателя постоянного тока, не повторно инициализируя модель:

op3 = simscape.op.create('ssc_dcmotor/DC Motor', 'Start', true)
op3 = 

  OperatingPoint with children:
  ----------------------------------------
   Friction
   Inertia
   Rotational Electromechanical Converter
   Rotor Inductance
   Rotor Resistance
  ----------------------------------------

Когда вы извлекаете данные о рабочей точке для блока или подсистемы в модели, вы не можете сразу использовать эту рабочую точку, чтобы инициализировать тот блок или подсистему из-за несоответствия в иерархии структуры данных. Используйте функцию relativePath, чтобы определить правильное местоположение, и затем добавить необходимые слои для вставки этих данных в рабочей точке для текущей модели.

Откройте Моторную модель Постоянного электромагнита в качестве примера.

ssc_dcmotor

Откройте подсистему двигателя постоянного тока, выберите блок Inductor и создайте объект OperatingPoint под названием opRI с помощью значений Start из модели:

opRI = simscape.op.create(gcb, 'Start')
opRI = 

  OperatingPoint with children:
  -----------------------------
   i    1.5000e-09|'A'  None
   i_L           0|'A'  High
   v        1.5000|'V'  None
  -----------------------------
   n
   p
  -----------------------------

Измените цель инициализации для Индуктора текущая переменная, i_L:

t = simscape.op.Target(1.5, 'A', 'High');
opRI = set(opRI, 'i_L', t)
opRI = 

  OperatingPoint with children:
  -----------------------------
   i    1.5000e-09|'A'  None
   i_L      1.5000|'A'  High
   v        1.5000|'V'  None
  -----------------------------
   n
   p
  -----------------------------

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

Создайте пустой объект OperatingPoint под названием opModel:

opModel = simscape.op.OperatingPoint
opModel = 

  OperatingPoint with no children.

Установите свойство Identifier объекта OperatingPoint совпадать с именем модели и найти относительный путь для блока Inductor:

opModel.Identifier = bdroot(gcb);
relPath = relativePath(opModel, gcb)
relPath =

    'DC Motor/Rotor Inductance'

Добавьте объект OperatingPoint opRI в объект OperatingPoint opModel:

opModel = set(opModel, relPath, opRI)
opModel = 

  OperatingPoint with children:
  -----------------------------
   DC Motor
  -----------------------------

Команда вставила данные в местоположении, заданном relPath, добавив узлы в дерево данных, по мере необходимости.

Можно теперь использовать рабочую точку opModel, чтобы инициализировать модель и применить новую цель к блоку Inductor.

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

свернуть все

Логарифмическая переменная рабочей области симуляции, которая содержит регистрируемые данные о симуляции модели или узел этой переменной, заданной как объект simscape.logging.Node. Вы указываете, что имя симуляции регистрирует переменную при помощи параметра Workspace variable name в панели Simscape диалогового окна Configuration Parameters.

Время симуляции для экстракции данных, заданной как вещественное число.

Типы данных: double

Блок, подсистема, или имя модели или идентификатор, заданный как указатель, имя модели, полный путь к блоку или подсистеме в модели, объекте Simulink.Block или допустимом идентификаторе Simulink (SID).

Типы данных: double | char | string

Фаза симуляции модели для экстракции данных, заданной как один из:

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

  • 'Prestart' — Функция обновляет корневую модель и извлекает целевые значения для целой модели, или для заданного блока или подсистемы, прежде, чем инициализировать модель. Эти цели соответствуют значениям Prestart в Переменном Средстве просмотра.

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

Типы данных: char

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

свернуть все

Рабочая точка в базовом рабочем пространстве, возвращенном как объект OperatingPoint, с переменными данными об инициализации, извлеченными из модели или от регистрируемых данных моделирования.

Введенный в R2017b