exponenta event banner

operspec

Технические характеристики рабочих точек

Описание

пример

opspec = operspec(mdl) возвращает объект спецификации операционной точки по умолчанию для модели Simulink ®mdl. Использовать opspec для установившейся обрезки рабочей точки с использованием findop.

пример

opspec = operspec(mdl,dim) возвращает массив объектов спецификации операционной точки по умолчанию с заданными размерами, dim.

Примеры

свернуть все

Откройте модель Simulink.

sys = 'watertank';
open_system(sys)

Создайте для модели объект спецификации рабочей точки по умолчанию.

opspec = operspec(sys)
 Operating point specification for the Model watertank.
 (Time-Varying Components Evaluated at time t=0)

States: 
----------
(1.) watertank/PID Controller/Integrator/Continuous/Integrator
	 spec:  dx = 0,  initial guess: 0
(2.) watertank/Water-Tank System/H
	 spec:  dx = 0,  initial guess: 1

Inputs: None 
----------

Outputs: None 
----------


opspec содержит спецификации для двух состояний в модели. Поскольку в модели отсутствуют входные или выходные данные корневого уровня, opspec не содержит входных или выходных спецификаций. Для добавления выходных спецификаций используйте addoutputspec.

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

  • Находиться в устойчивом состоянии.

  • Иметь нижнюю границу 0.

  • Иметь начальное значение 2 для обрезки.

opspec.States(1).SteadyState = 1;
opspec.States(1).x = 2;
opspec.States(1).Min = 0;

Можно создавать новые operspec переменные тремя способами:

  • Использование operspec команда

  • Использование назначения с равными значениями (=) оператор

  • Использование copy команда

Использование = оператор приводит к связанным переменным, которые указывают на одни и те же базовые данные. Использование copy команда приводит к независимому operspec объект. В этом примере создайте operspec объекты в обоих направлениях и проверьте их поведение.

mdl = 'watertank';
open_system(mdl);
opspec1 = operspec(mdl)
 Operating point specification for the Model watertank.
 (Time-Varying Components Evaluated at time t=0)

States: 
----------
(1.) watertank/PID Controller/Integrator/Continuous/Integrator
	 spec:  dx = 0,  initial guess: 0
(2.) watertank/Water-Tank System/H
	 spec:  dx = 0,  initial guess: 1

Inputs: None 
----------

Outputs: None 
----------

Создание нового объекта спецификации операционной точки с помощью назначения = оператор.

opspec2 = opspec1;

opspec2 является operspec объект, указывающий на те же базовые данные, что и opspec1. Из-за этой связи невозможно независимо изменить свойства двух operspec объекты. Чтобы увидеть это, измените свойство opspec2. Например, измените начальное значение для первого состояния с 0 на 2. Изменение отображается в States раздел дисплея.

opspec2.States(1).x = 2
 Operating point specification for the Model watertank.
 (Time-Varying Components Evaluated at time t=0)

States: 
----------
(1.) watertank/PID Controller/Integrator/Continuous/Integrator
	 spec:  dx = 0,  initial guess: 2
(2.) watertank/Water-Tank System/H
	 spec:  dx = 0,  initial guess: 1

Inputs: None 
----------

Outputs: None 
----------

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

opspec1
 Operating point specification for the Model watertank.
 (Time-Varying Components Evaluated at time t=0)

States: 
----------
(1.) watertank/PID Controller/Integrator/Continuous/Integrator
	 spec:  dx = 0,  initial guess: 2
(2.) watertank/Water-Tank System/H
	 spec:  dx = 0,  initial guess: 1

Inputs: None 
----------

Outputs: None 
----------

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

opspec3 = copy(opspec1);

Теперь при изменении свойства opspec3, opspec1 не меняется. Например, измените начальное значение для первого состояния с 2 на 4.

opspec3.States(1).x = 4
 Operating point specification for the Model watertank.
 (Time-Varying Components Evaluated at time t=0)

States: 
----------
(1.) watertank/PID Controller/Integrator/Continuous/Integrator
	 spec:  dx = 0,  initial guess: 4
(2.) watertank/Water-Tank System/H
	 spec:  dx = 0,  initial guess: 1

Inputs: None 
----------

Outputs: None 
----------

В opspec1соответствующее значение остается равным 2.

opspec1.States(1).x
ans = 2

Такое поведение копирования происходит из-за operspec является объектом-дескриптором. Дополнительные сведения об объектах-дескрипторах см. в разделе Поведение объектов-дескрипторов.

Откройте модель Simulink.

sys = 'watertank';
open_system(sys)

Создайте массив объектов спецификации рабочих точек 2 на 3. Такие массивы позволяют выполнять пакетную обрезку модели в нескольких рабочих точках.

opspec = operspec(sys,[2,3]);

Каждый элемент opspec содержит объект спецификации рабочей точки по умолчанию для модели.

Измените объекты спецификации операционной точки с помощью точечного обозначения. Например, настройте второе состояние объекта спецификации в строке 1, столбец 3.

opspec(1,3).States(2).SteadyState = 1;
opspec(1,3).States(1).x = 2;

Можно также создать многомерные массивы объектов спецификации рабочих точек. Например, создайте массив 3 на 4 на 5.

opspec = operspec(sys,[3,4,5]);

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

свернуть все

Имя модели Simulink, указанное как символьный вектор или строка.

Размеры массива, указанные как одно из следующих:

  • Целое число - создание вектора столбца dim объекты спецификации рабочей точки.

  • Вектор строк целых чисел - создание массива объектов спецификации операционной точки с размерами, указанными в dim.

    Например, чтобы создать массив объектов спецификации операционной точки 4 на 5, используйте:

    opspec = operspec(mdl,[4,5]);

    Чтобы создать многомерный массив объектов спецификации операционной точки, укажите дополнительные размеры. Например, чтобы создать массив 2 на 3 на 4, используйте:

    opspec = operspec(mdl,[2,3,4]);

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

свернуть все

Спецификации операционных точек, возвращаемые как объект спецификации операционных точек или массив таких объектов.

Спецификации рабочих точек можно изменить с помощью точечных обозначений. Например, если opspec является одним объектом спецификации операционной точки, opspec.States(1).x получает доступ к значениям состояния первого состояния модели. Если opspec является массивом объектов спецификации opspec(2,3).Inputs(1).u доступ к входному уровню первого блока ввода для спецификации в строке 2, столбец 3.

Каждый объект спецификации имеет следующие свойства:

СобственностьОписание
ModelИмя модели Simulink, возвращаемое как символьный вектор.
States

Спецификации рабочих точек состояния, возвращаемые как вектор объектов спецификации состояния. Каждая запись в States представляет поддерживаемые состояния одного блока Simulink.

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

Примечание

Если блок имеет несколько именованных непрерывных состояний, States содержит одну структуру для каждого именованного состояния.

Каждый объект спецификации состояния имеет следующие поля:

ОбластьОписание
Nx только для чтения

Количество состояний в блоке

Block

Путь блока, возвращаемый как символьный вектор.

StateName

Название штата

x

Значения всех поддерживаемых состояний блоков, заданные как вектор длины Nx.

Если соответствующий флаг в Known поле States является 1, x содержит известные значения состояния. В противном случае x содержит начальные догадки для значений состояния.

Ts

(Только для состояний дискретного времени) Время выборки и смещение каждого поддерживаемого состояния блока, возвращаемое в виде вектора.

SampleType

Время состояния, возвращаемое как одно из следующих значений:

  • 'CSTATE' - Состояние непрерывного времени

  • 'DSTATE' - Дискретно-временное состояние

inReferencedModel

Флаг, указывающий, находится ли блок внутри ссылочной модели, возвращаемый как одно из следующих значений:

  • 1 - Блок находится внутри ссылочной модели.

  • 0 - Блок находится в файле текущей модели.

Known

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

  • 1 - Известное значение, фиксированное при поиске рабочей точки

  • 0 (по умолчанию) - неизвестное значение, найденное при оптимизации

Чтобы зафиксировать состояние во время поиска в рабочей точке, установите соответствующее Known флаг для 1и укажите значение для этого состояния с помощью x имущество States.

SteadyState

Флаги, указывающие, находятся ли выходные значения в установившемся состоянии во время обрезки, заданные как логический вектор длины Nx.

  • 1 (по умолчанию) - Состояние равновесия

  • 0 - Неравновесное состояние

Min

Минимальные границы значений состояния, заданные как вектор длины Nx. По умолчанию минимальная граница для каждого состояния равна -Inf.

Max

Максимальные границы значений состояния, заданные как вектор длины Nx. По умолчанию максимальная граница для каждого состояния равна Inf.

dxMin

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

dxMax

Максимальные границы производных состояний, не находящихся в установившемся состоянии, указанные как вектор длины Nx. По умолчанию максимальная граница для каждой производной состояния равна Inf. При указании границы производной также необходимо задать SteadyState кому 0.

Description

Описание состояния блока, указанное как символьный вектор.

Inputs

Спецификации уровня ввода в рабочей точке, возвращаемые как вектор объектов спецификации ввода. Каждая запись в Inputs представляет входные уровни одного блока ввода корневого уровня в модели.

Каждый объект спецификации ввода имеет следующие поля:

ОбластьОписание
Block

Имя блока ввода

PortWidth

Количество сигналов блока ввода

PortDimensions

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

u

Входные уровни блока ввода в рабочей точке, возвращаемые в виде вектора длины PortWidth.

Если соответствующий флаг в Known поле Inputs является 1, u содержит известные входные значения. В противном случае u содержит начальные догадки для входных значений.

Known

Флаги, указывающие, известны ли входные уровни во время обрезки, заданные как логический вектор длины PortWidth.

  • 1 - Известный входной уровень, фиксированный при поиске рабочей точки

  • 0 (по умолчанию) - неизвестный уровень ввода, найденный при оптимизации

Чтобы зафиксировать входной уровень во время поиска в рабочей точке, установите соответствующий Known флаг для 1и укажите входное значение с помощью u имущество Inputs.

Min

Минимальные границы на входных уровнях, заданные как вектор длины PortWidth. По умолчанию минимальная граница для каждого входа равна -Inf.

Max

Максимальные границы на входных уровнях, заданные как вектор длины PortWidth. По умолчанию максимальная граница для каждого входа равна Inf.

Description

Входное описание блока ввода, указанное как символьный вектор.

Outputs

Спецификации уровня вывода в рабочей точке, возвращаемые как вектор объектов спецификации вывода. Каждая запись в Outputs представляет выходные уровни одного блока вывода корневого уровня модели или одного ограничения вывода обрезки в модели.

Дополнительные ограничения вывода обрезки можно задать с помощью addoutputspec.

Каждый объект спецификации вывода имеет следующие поля:

ОбластьОписание
Block

Имя блока исходящего порта

PortWidth

Количество выходных блочных сигналов

PortNumber

Номер этого исходящего порта в модели

y

Выходные уровни выходного блока в рабочей точке, заданные как вектор длины PortWidth.

Если соответствующий флаг в Known поле Outputs является 1, y содержит известные выходные значения. В противном случае y содержит начальные догадки для выходных значений.

Known

Флаги, указывающие, известны ли выходные уровни во время обрезки, заданные как логический вектор длины PortWidth.

  • 1 - Известный уровень вывода, фиксированный при поиске рабочей точки

  • 0 (по умолчанию) - неизвестный уровень вывода, найденный при оптимизации

Чтобы зафиксировать уровень вывода во время поиска в рабочей точке, установите соответствующий Known флаг для 1и укажите выходное значение с помощью y имущество Outputs.

Min

Минимальные границы на выходных уровнях, заданные как вектор длины PortWidth. По умолчанию минимальная граница для каждого выхода равна -Inf.

Max

Максимальное ограничение выходных уровней, заданных как вектор длины PortWidth. По умолчанию максимальная граница для каждого выхода равна Inf.

Description

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

Time

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

CustomObjFcn

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

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

CustomConstrFcn

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

Можно задать пользовательские ограничения равенства и неравенства как алгебраические комбинации состояний модели, входов и выходов. Дополнительные сведения см. в разделе Расчет операционных точек с использованием пользовательских ограничений и целевых функций.

CustomMappingFcn

Функция, отображающая состояния модели, входы и выходы на векторы, принятые CustomConstrFcn и CustomObjFcn, указанный в качестве дескриптора пользовательской функции или символьного вектора или строки, содержащей имя функции. Пользовательская функция должна находиться в пути MATLAB или в текущей рабочей папке.

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

Совет

  • Для отображения свойств объекта спецификации операционной точки используйте get.

  • Можно создавать новые operspec переменные 3 способами:

    • Создание нового объекта с помощью operspec команда.

    • Создайте новую переменную путем назначения с помощью оператора equals (=).

    • Копировать operspec с использованием copy команда.

    Используя operspec или copy создает новый независимый объект. При использовании присвоения существует связь между старой и новой переменной. Пример см. в разделе Копирование спецификации операционной точки.

См. также

| | |

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