genss

Обобщенная модель пространства состояний

Описание

Обобщенное пространство состояний (genss) модели являются моделями пространства состояний, которые включают настраиваемые параметры или компоненты. genss модели возникают, когда вы комбинируете числовые модели LTI с моделями, содержащими настраиваемые компоненты (системы управления). Для получения дополнительной информации о числовых моделях LTI и управляйте блоками системы управления, смотрите Модели с Настраиваемыми Коэффициентами.

Можно использовать обобщенные модели пространства состояний, чтобы представлять системы управления, имеющие смесь фиксированных и настраиваемых компонентов. Используйте обобщенные модели пространства состояний для задач системы управления, таких как исследования параметров и настройка параметров с помощью таких команд, как systune и looptune.

Конструкция

Чтобы создать a genss модель:

  • Использовать series, parallel, lft, или connect, или арифметические операторы +, -, *, /, \, и ^, для объединения числовых моделей LTI с блоками системы управления.

  • Использовать tf или ss с одним или несколькими входными параметрами, которые являются обобщенной матрицей (genmat) вместо числового массива

  • Преобразуйте любую числовую модель LTI, блок системы управления или slTuner (Simulink Control Design) интерфейс (требует Simulink® Управляйте Design™), например sysКому genss форма с использованием:

    gensys = genss(sys)

    Когда sys является slTuner интерфейс, gensys содержит все настраиваемые блоки и точки анализа, указанные в этом интерфейсе. Чтобы вычислить настраиваемую модель конкретной передаточной функции ввода-вывода, вызывайте getIOTransfer(gensys,in,out). Здесь, in и out являются интересующими точки анализа. (Использование getPoints(sys) получить полный список точек анализа.) Точно так же, чтобы вычислить настраиваемую модель конкретной передаточной функции без разомкнутого контура, используйте getLoopTransfer(gensys,loc). Здесь, loc - точка анализа, представляющая интерес.

Свойства

Blocks

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

Можно изменить некоторые атрибуты этих блоков системы управления с помощью записи через точку. Для примера, если обобщенная модель LTI или обобщенная матрица M содержит realp настраиваемый параметр a, можно изменить текущее значение a использование:

M.Blocks.a.Value = -1;

A,B,C,D

Зависимость матриц пространства состояний от настраиваемых и неопределенных параметров, сохраненная как обобщенная матрица (genmat), неопределенная матрица (umat), или двойной массив.

Эти свойства моделируют зависимость матриц пространства состояний от блоков статических систем управления, realp, ureal, ucomplex, или ucomplexm. Динамические блоки системы управления, такие как tunableGain или tunableSS установите их текущие значения, а внутренние задержки равны нулю.

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

Для получения примера смотрите Зависимость матриц пространства состояний от параметров.

E

Матрица E, сохраненная как двойная матрица, когда обобщенные уравнения в пространстве состояний неявны. Значение E = [] означает, что обобщенные уравнения в пространстве состояний явны. Для получения дополнительной информации о неявных моделях пространства состояний смотрите Модели пространства состояний.

StateName

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

  • Вектор символов - Для моделей первого порядка, например, 'velocity'.

  • Массив ячеек из символьных векторов - Для моделей с двумя или более состояниями, например {'position';'velocity'}.

  • '' - Для неназванных состояний.

Вы можете назначить имена состояний genss модель только, когда все ее блоки системы управления статичны. В противном случае задайте имена состояний для моделей компонента перед их соединением, чтобы создать genss модель. Когда вы делаете это, genss модель отслеживает присвоенные имена состояний. Для получения примера смотрите Отслеживать Имена состояний в Обобщенной Модели Пространства Состояний.

По умолчанию: '' для всех состояний

StateUnit

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

  • Вектор символов - Для моделей первого порядка, например, 'm/s'.

  • Массив ячеек из символьных векторов - Для моделей с двумя или более состояниями, например {'m';'m/s'}.

  • '' - Для неназванных состояний.

StateUnit помечает модули каждого состояния для удобства и не влияет на поведение системы.

Можно назначить модули состояния a genss модель только, когда все ее блоки системы управления статичны. В противном случае задайте модули состояния для моделей компонента перед их соединением, чтобы создать genss модель. Когда вы делаете это, genss модель отслеживает назначенные модули измерения состояния. Для получения примера смотрите Отслеживать Имена состояний в Обобщенной Модели Пространства Состояний.

По умолчанию: '' для всех состояний

InternalDelay

Вектор, сохраняющий внутренние задержки.

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

Для моделей в непрерывном времени внутренние задержки выражаются в модуле времени, заданной TimeUnit свойство модели. Для моделей в дискретном времени внутренние задержки выражаются в виде целого числа, кратного шага расчета Ts. Для примера, InternalDelay = 3 означает задержку на три периода дискретизации.

Значения внутренних задержек можно изменить. Однако количество записей в sys.InternalDelay не может измениться, потому что это структурное свойство модели.

InputDelay

Входная задержка для каждого входного канала, заданная как скалярное значение или числовой вектор. Для систем непрерывного времени задайте задержки на входе в модуле времени, сохраненной в TimeUnit свойство. Для систем в дискретном времени задайте входные задержки в целочисленных множителях шага расчета Ts. Для примера, InputDelay = 3 означает задержку в три шагов расчета.

Для системы с Nu входы, задайте InputDelay в Nu-by-1 вектор. Каждый элемент этого вектора является числовым значением, которое представляет входу задержку для соответствующего канала входа.

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

По умолчанию: 0

OutputDelay

Выходные задержки. OutputDelay является числовым вектором, задающим временную задержку для каждого выходного канала. Для систем непрерывного времени задайте выходные задержки в модуле времени, сохраненной в TimeUnit свойство. Для систем в дискретном времени задайте выходные задержки в целочисленных множителях шага расчета Ts. Для примера, OutputDelay = 3 означает задержку на три периода дискретизации.

Для системы с Ny выходы, set OutputDelay в Ny-by-1 вектора, где каждая запись является числовым значением, представляющим выходу задержку для соответствующего канала выхода. Можно также задать OutputDelay к скалярному значению, чтобы применить ту же задержку ко всем каналам.

По умолчанию 0 для всех выходных каналов

Ts

Шаг расчета. Для моделей в непрерывном времени, Ts = 0. Для моделей в дискретном времени, Ts - положительная скалярная величина, представляющая период дискретизации. Это значение выражается в модуле, заданной как TimeUnit свойство модели. Чтобы обозначить модель в дискретном времени с неопределенным шагом расчета, установите Ts = -1.

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

По умолчанию: 0 (непрерывное время)

TimeUnit

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

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

Изменение этого свойства не влияет на другие свойства и, следовательно, изменяет общее поведение системы. Использовать chgTimeUnit для преобразования между модулями времени без изменения поведения системы.

По умолчанию: 'seconds'

InputName

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

  • Вектор символов - Для моделей с одним входом, например, 'controls'.

  • Массив ячеек из символьных векторов - Для мультивходов.

Кроме того, используйте автоматическое расширение вектора, чтобы назначить входные имена для мультивходов. Для примера, если sys является моделью с двумя входами, введите:

sys.InputName = 'controls';

Имена входа автоматически расширяются на {'controls(1)';'controls(2)'}.

Можно использовать сокращённое обозначение u для ссылки на InputName свойство. Для примера, sys.u эквивалентно sys.InputName.

Входные имена каналов имеют несколько применений, включая:

  • Идентификация каналов на отображении модели и графиках

  • Извлечение подсистем систем MIMO

  • Определение точек соединения при соединении моделей

По умолчанию: '' для всех входных каналов

InputUnit

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

  • Вектор символов - Для моделей с одним входом, например, 'seconds'.

  • Массив ячеек из символьных векторов - Для мультивходов.

Использование InputUnit отслеживать модули входных сигналов. InputUnit не влияет на поведение системы.

По умолчанию: '' для всех входных каналов

InputGroup

Входные группы каналов. The InputGroup свойство позволяет вам назначить входные каналы систем MIMO в группы и ссылаться на каждую группу по имени. Задайте входные группы как структуру. В этой структуре имена полей являются именами групп, а значения полей - входными каналами, принадлежащими каждой группе. Для примера:

sys.InputGroup.controls = [1 2];
sys.InputGroup.noise = [3 5];

создает входные группы с именем controls и noise которые включают входные каналы 1, 2 и 3, 5, соответственно. Затем можно извлечь подсистему из controls входы для всех выходов с помощью:

sys(:,'controls')

По умолчанию: Struct без полей

OutputName

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

  • Вектор символов - Для моделей с одним выходом. Для примера, 'measurements'.

  • Массив ячеек из символьных векторов - Для мультивыход моделей.

Кроме того, используйте автоматическое расширение вектора, чтобы назначить имена выходов для мультивыходов. Для примера, если sys является двухвыпускной моделью, введите:

sys.OutputName = 'measurements';

Выходы данных автоматически расширяются на {'measurements(1)';'measurements(2)'}.

Можно использовать сокращённое обозначение y для ссылки на OutputName свойство. Для примера, sys.y эквивалентно sys.OutputName.

Имена выходных каналов имеют несколько применений, включая:

  • Идентификация каналов на отображении модели и графиках

  • Извлечение подсистем систем MIMO

  • Определение точек соединения при соединении моделей

По умолчанию: '' для всех выходных каналов

OutputUnit

Выход модулей канала, заданный как один из следующих:

  • Вектор символов - Для моделей с одним выходом. Для примера, 'seconds'.

  • Массив ячеек из символьных векторов - Для мультивыход моделей.

Использование OutputUnit отслеживать выход модулей сигнала. OutputUnit не влияет на поведение системы.

По умолчанию: '' для всех выходных каналов

OutputGroup

Выходы каналов. The OutputGroup свойство позволяет вам назначить выходные каналы систем MIMO в группы и ссылаться на каждую группу по имени. Задайте выходные группы как структуру. В этой структуре имена полей являются именами групп, а значения полей - выходными каналами, принадлежащими каждой группе. Для примера:

sys.OutputGroup.temperature = [1];
sys.InputGroup.measurement = [3 5];

создает выходные группы с именем temperature и measurement которые включают выходные каналы 1, и 3, 5, соответственно. Затем можно извлечь подсистему из всех входов в measurement выходы с использованием:

sys('measurement',:)

По умолчанию: Struct без полей

Name

Имя системы, заданное как вектор символов. Для примера, 'system_1'.

По умолчанию: ''

Notes

Любой текст, который вы хотите связать с системой, сохраненный как строка или массив ячеек из векторов символов. Свойство сохраняет любой тип данных, которые вы предоставляете. Для образца, если sys1 и sys2 являются динамические системы моделями, можно задать их Notes свойства следующим образом:

sys1.Notes = "sys1 has a string.";
sys2.Notes = 'sys2 has a character vector.';
sys1.Notes
sys2.Notes
ans = 

    "sys1 has a string."


ans =

    'sys2 has a character vector.'

По умолчанию: [0×1 string]

UserData

Любой тип данных, которые вы хотите связать с системой, заданный как любой MATLAB® тип данных.

По умолчанию: []

SamplingGrid

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

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

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

Например, предположим, что вы создадите массив линейных моделей 11 на 1, sysarr, путем создания моментальных снимков линейной изменяющейся во времени системы в определенные моменты времени t = 0:10. Следующий код хранит временные выборки с помощью линейных моделей.

 sysarr.SamplingGrid = struct('time',0:10)

Точно так же предположим, что вы создадите массив моделей 6 на 9, M, путем независимой выборки двух переменных, zeta и w. Следующий код присоединяет (zeta,w) значения в M.

[zeta,w] = ndgrid(<6 values of zeta>,<9 values of w>)
M.SamplingGrid = struct('zeta',zeta,'w',w)

Когда вы отображаете Mкаждая запись в массиве включает соответствующие zeta и w значения.

M
M(:,:,1,1) [zeta=0.3, w=5] =
 
        25
  --------------
  s^2 + 3 s + 25
 

M(:,:,2,1) [zeta=0.35, w=5] =
 
         25
  ----------------
  s^2 + 3.5 s + 25
 
...

Для массивов моделей, сгенерированных линеаризацией модели Simulink при нескольких значениях параметров или рабочих точках, программное обеспечение заполняет SamplingGrid автоматически со значениями переменных, соответствующими каждой записи в массиве. Для примера команды Simulink Control Design linearize (Simulink Control Design) и slLinearizer (Simulink Control Design) заполните SamplingGrid таким образом.

По умолчанию: []

Примеры

свернуть все

В этом примере вы создадите lowpass с одним настраиваемым параметром a:

F=as+a

Поскольку числитель и коэффициенты знаменателя tunableTF блок является независимым, вы не можете использовать tunableTF для представления F. Вместо этого создайте F использование настраиваемого объекта реального параметра realp.

Создайте действительный настраиваемый параметр с начальным значением 10.

a = realp('a',10)
a = 
       Name: 'a'
      Value: 10
    Minimum: -Inf
    Maximum: Inf
       Free: 1

Real scalar parameter.

Использование tf чтобы создать настраиваемый lowpass F.

numerator = a;
denominator = [1,a];
F = tf(numerator,denominator)
F =

  Generalized continuous-time state-space model with 1 outputs, 1 inputs, 1 states, and the following blocks:
    a: Scalar parameter, 2 occurrences.

Type "ss(F)" to see the current value, "get(F)" to see all properties, and "F.Blocks" to interact with the blocks.

F является genss объект, который имеет настраиваемый параметр a в своей Blocks свойство. Можно подключить F с другими настраиваемыми или числовыми моделями, чтобы создать более сложные системные модели управления. Для получения примера смотрите Систему управления с настраиваемыми Компонентами.

В этом примере показано, как создать пространство состояний genss модель, имеющая как фиксированные, так и настраиваемые параметры.

A=[1a+b0ab],B=[-3.01.5],C=[0.30],D=0,

где a и b - настраиваемые параметры, начальные значения которых -1 и 3, соответственно.

Создайте настраиваемые параметры, используя realp.

a = realp('a',-1);
b = realp('b',3);

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

A = [1 a+b;0 a*b];

A - обобщенная матрица, Blocks свойство содержит a и b. Начальное значение A является [1 2;0 -3], от начальных значений a и b.

Создайте матрицы пространства состояний с фиксированным значением.

B = [-3.0;1.5];
C = [0.3 0];
D = 0;

Использовать ss для создания модели пространства состояний.

sys = ss(A,B,C,D)
sys =

  Generalized continuous-time state-space model with 1 outputs, 1 inputs, 2 states, and the following blocks:
    a: Scalar parameter, 2 occurrences.
    b: Scalar parameter, 2 occurrences.

Type "ss(sys)" to see the current value, "get(sys)" to see all properties, and "sys.Blocks" to interact with the blocks.

sys является обобщенной моделью LTI (genss) с настраиваемыми параметрами a и b.

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

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

Предположим, что реакция на объект G(s)=1/(s+1)2, и что модель динамики датчика является S(s)=5/(s+4). Контроллер C является настраиваемым ПИД-регулятором и префильтром F=a/(s+a) - lowpass с одним настраиваемым параметром, а.

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

G = zpk([],[-1,-1],1);
S = tf(5,[1 4]);

Чтобы смоделировать настраиваемые компоненты, используйте Система Управления Blocks. Создайте настраиваемое представление контроллера C.

C = tunablePID('C','PID');

C является tunablePID объект, который является блоком Система Управления с предопределенной пропорционально-интегрально-производной (PID) структурой.

Создайте модель фильтра F=a/(s+a) с одним настраиваемым параметром.

a = realp('a',10); 
F = tf(a,[1 a]);

a является realp (реальный настраиваемый параметр) объект с начальным значением 10. Использование a как коэффициент в tf создает настраиваемую genss объект модели F.

Соедините модели, чтобы создать модель полной обратной связи от r до y.

T = feedback(G*C,S)*F
T =

  Generalized continuous-time state-space model with 1 outputs, 1 inputs, 5 states, and the following blocks:
    C: Tunable PID controller, 1 occurrences.
    a: Scalar parameter, 2 occurrences.

Type "ss(T)" to see the current value, "get(T)" to see all properties, and "T.Blocks" to interact with the blocks.

T является genss объект модели. В отличие от совокупной модели, образованной соединением только числовых моделей LTI, T отслеживает настраиваемые элементы системы управления. Настраиваемые элементы хранятся в Blocks свойство genss объект модели. Исследуйте настраиваемые элементы T.

T.Blocks
ans = struct with fields:
    C: [1x1 tunablePID]
    a: [1x1 realp]

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

Создайте genss модель с маркированными именами состояний. Для этого перед соединением пометьте состояния моделей LTI компонента. Для образца соедините модель объекта управления с двумя состояниями с фиксированным коэффициентом и настраиваемый контроллер с одним состоянием.

A = [-1 -1; 1 0];
B = [1; 0];
C = [0 1];
D = 0;
G = ss(A,B,C,D);
G.StateName = {'Pstate1','Pstate2'};

C = tunableSS('C',1,1,1);

L = G*C;

The genss модели L сохраняет имена состояний компонентов, создавших его. Поскольку вы не назначили имена состояний настраиваемому компоненту C, программное обеспечение автоматически делает это. Исследуйте имена состояний L подтвердить их.

L.StateName
ans = 3x1 cell
    {'Pstate1'}
    {'Pstate2'}
    {'C.x1'   }

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

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

Lfixed = ss(L);
Lfixed.StateName
ans = 3x1 cell
    {'Pstate1'}
    {'Pstate2'}
    {'C.x1'   }

Метки модулей состояния, хранящиеся в StateUnit свойство genss модель, ведите себя аналогично.

Создайте обобщенную модель с настраиваемым параметром и исследуйте зависимость A матрица на этом параметре. Для этого исследуйте A свойство обобщенной модели.

G = tf(1,[1 10]);
k = realp('k',1);
F = tf(k,[1 k]);
L1 = G*F;
L1.A
ans =

  Generalized matrix with 2 rows, 2 columns, and the following blocks:
    k: Scalar parameter, 2 occurrences.

Type "double(ans)" to see the current value, "get(ans)" to see all properties, and "ans.Blocks" to interact with the blocks.

The A свойство является обобщенной матрицей, которая сохраняет зависимость от реального настраиваемого параметра k. Матричные свойства пространства состояний A, B, C, и D сохранять зависимости только от статических параметров. Когда genss модель имеет динамические блоки системы управления, они устанавливаются в свое текущее значение для оценки свойств матрицы пространства состояний. Например, исследуйте A матричное свойство genss модель с настраиваемым блоком PI.

C = tunablePID('C','PI');
L2 = G*C;
L2.A
ans = 2×2

  -10.0000    0.0010
         0         0

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

L2cur = ss(L2);
L2cur.A
ans = 2×2

  -10.0000    0.0010
         0         0

Кроме того, извлечение матриц пространства состояний с помощью ssdata устанавливает все блоки системы управления в их текущие или номинальные значения, включая статические блоки. Таким образом, все следующие операции возвращают текущее значение A матрица L1.

[A,B,C,D] = ssdata(L1);
A
A = 2×2

   -10     1
     0    -1

double(L1.A)
ans = 2×2

   -10     1
     0    -1

L1cur = ss(L1);
L1cur.A
ans = 2×2

   -10     1
     0    -1

Совет

  • Вы можете манипулировать genss модели как обычные ss модели. Команды анализа, такие как bode и step оцените модель путем замены каждого настраиваемого параметра его текущим значением.

Введенный в R2011a