genss

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

Описание

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

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

Конструкция

Создать модель genss:

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

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

  • Преобразуйте любую числовую модель LTI, блок системы управления или интерфейс slTuner (требует Simulink® Control 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'.

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

  • '' — Для состояний без имени.

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

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

StateUnit

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

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

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

  • '' — Для состояний без имени.

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

Можно присвоить модули состояния модели 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 выходные параметры, набор OutputDelay к Ny-by-1 вектор, где каждая запись является численным значением, представляющим выходную задержку соответствующего выходного канала. Можно также установить OutputDelay на скалярное значение применять ту же задержку со всеми каналами.

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

Ts

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

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

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

TimeUnit

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

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

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

Значение по умолчанию: 'seconds'

InputName

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

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

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

Также используйте автоматическое векторное расширение, чтобы присвоить входные имена для мультивходных моделей. Например, если sys является 2D входной моделью, введите:

sys.InputName = 'controls';

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

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

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

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

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

  • Определение точек контакта, когда взаимосвязанные модели

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

InputUnit

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

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

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

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

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

InputGroup

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

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

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

sys(:,'controls')

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

OutputName

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

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

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

Также используйте автоматическое векторное расширение, чтобы присвоить выходные имена для мультивыходных моделей. Например, если sys является 2D выходной моделью, введите:

sys.OutputName = 'measurements';

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

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

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

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

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

  • Определение точек контакта, когда взаимосвязанные модели

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

OutputUnit

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

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

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

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

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

OutputGroup

Выведите группы канала. Свойство 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 и slLinearizer заполняют SamplingGrid таким образом.

Значение по умолчанию: []

Примеры

свернуть все

В этом примере вы создадите фильтр нижних частот с одним настраиваемым параметром 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, чтобы создать настраиваемый фильтр нижних частот 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. Подтвердите, что свойство A sys хранится как обобщенная матрица.

sys.A
ans =

  Generalized matrix with 2 rows, 2 columns, and the following blocks:
    a: Scalar parameter, 2 occurrences.
    b: 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.

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

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

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

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

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

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

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: Parametric 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;

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

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

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

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

Lfixed = ss(L);
Lfixed.StateName
ans = 3x1 cell array
    {'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.

Свойство 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

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