II Всероссийская конференция пользователей MATLAB, 25-26 мая 2004 года >>
На первую страницу
Рубрика Matlab&Toolboxes
Российские MATLAB-разработки
Вход
Раздел "LMI Control Toolbox"

Е.И.Веремей, М.В.Коровкин. Пособие "LMI Control Toolbox".

2. Представление данных и основные операции

Наряду с базовыми типами данных, принятыми во всех пакетах прикладных программ системы Matlab, в пакете LMI-Tools используются специализированные представление входной и выходной информации для входящих в его состав инструментов. Как и в других пакетах, связанных с системами управления, в первую очередь, специальным способом объединяются данные, однозначно определяющие линейные стационарные динамические системы.

Особое значение имеет специальная форма задания неопределенностей, которые связаны с математическими моделями систем и играют центральную роль в функциональной ориентации пакета LMI-Tools.

В данной главе рассматриваются все специализированные способы представления данных, а так же те базовые операции над этими данными, которые определены в пакете.

2.1. Модели линейных стационарных систем и их представление в пакете

Базовыми математическими моделями линейных динамических систем с постоянными коэффициентами (LTI-систем), рассматриваемых в пакете, являются их уравнения в пространстве состояний вида

(2.1)

где - вектор состояния динамической системы, - вектор входного сигнала, - вектор выходного сигнала, матрица - невырождена.

Дискретными аналогами систем вида (2.1) являются математические модели вида

(2.2)

работа с которыми также осуществляется в пакете.

Специальный способ представления, принятый в пакете LMI-Tools, позволяет оперировать с моделями LTI-систем, как с единым целым, что характерно для структур или объектов в языках программирования высокого уровня. Однако авторы пакета, аналогично -Tools, сочли более удобным особый способ упаковки данных с использованием понятия системной матрицы.

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

Форма представления - единая системная матрица

аналогична используемой в пакете -Tools.

Формирование LTI-систем.

Для формирования системной матрицы используется функция ltisys:

>>A=[0 1;1 0];
>>B=[1;1];
>>C=eye(2);
>>D=zeros(2,1);
>>E=[2 1;0 1];
>>sys1=ltisys(A,B,C,D,E)
sys1 =

   0 + 1.0000i   1.0000 + 1.0000i   1.0000             2.0000          
   1.0000                  0                    1.0000                0          
   1.0000                  0                        0                      0          
   0                    1.0000                       0                     0          
   0                           0                        0                  -Inf   

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

Замечание: Если системная матрица сформирована для случая , то она полностью совместима по структуре с системными матрицами пакета -Tools, т.е. матрицы такого вида могут использоваться функциями обоих пакетов.

Для SISO-объектов (с одним входом и одним выходом) системная матрица может быть сформирована на основе передаточной функции объекта от входа к выходу:

>>p1=[1 2];
>>p2=[1 2 1];
>>sys2=ltisys('tf',p1,p2)
sys2 =

    -2    -1     1     2
     1     0     0     0
     1     2     0     0
     0     0     0  -Inf

Здесь p1 и p2 - векторы коэффициентов полиномов числителя и знаменателя .

Выделить матрицы линейной модели (2.1) из структуры системной матрицы можно при помощи функции ltiss:

>> [a,b,c,d,e]=ltiss(sys1)
a =
     0     1
     1     0

b =
     1
     1

c =
     1     0
     0     1

d =
     0
     0

e =
     2     1
     0     1

Для SISO объектов передаточную функцию можно восстановить при помощи функции ltitf:

>> [P1,P2]=ltitf(sys2)
P1 =
         0    1.0000    2.0000

P2 =
     1     2     1

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

>> subsys=ssub(sys1,1,1)

subsys =

0 + 1.0000i   1.0000 + 1.0000i   1.0000             2.0000          
   1.0000                  0             1.0000                  0          
   1.0000                  0                  0                  0          
        0                  0                  0               -Inf      

Свойства LTI-систем.

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

>> sinfo(sys1)
Descriptor system with 2 state(s), 1 input(s), and 2 output(s)

Совокупность полюсов LTI-системы доступна по вызову функции spol:

>> spol(sys1)
ans =

    0.5000
   -1.0000

Для построения временных и частотных характеристик системы предназначена функция splot.

В качестве второго аргумента при ее вызове выступает строка, содержащая сокращенный тип характеристики:

  • 'bo' - диаграмма Боде (АФЧХ LTI-системы);

  • 'sv' - частотная характеристика максимального сингулярного числа;

  • 'ny' - диаграмма (годограф) Найквиста (только для SISO моделей);

  • 'li' - линейно-логарифмическая диаграмма Найквиста (только для SISO моделей);

  • 'ni' - диаграмма Блэка/Николса (только для SISO модели);

  • 'st' - реакция на единичное ступенчатое возмущение;

  • 'im' - импульсная переходная характеристика;

  • 'sq' - реакция на повторяющиеся прямоугольные импульсы фиксированной частоты;

  • 'si' - реакция на гармонические колебания фиксированной частоты.

    Необязательный третий аргумент позволяет указать диапазон изменения частот для частотных характеристик и периодичность входных сигналов для вариантов 'sq' и 'si'.

    >> splot(sys1,'st')

    Для дискретных систем построение графиков осуществляется только при указании периода дискретизации T:

    >> splot(sys,T,'st');

    2.2 Линейные системы с неопределенностями

    Бесспорным является тот факт, что в большинстве случаев простейшая линейная модель вида (2.1) или (2.2) не может исчерпывающе охарактеризовать поведение объекта управления. Данная модель дает лишь приближенное представление о свойствах объекта и по своей сути не может отражать влияние различных дополнительных факторов, сопровождающих его реальное функционирование.

    В качестве указанных дополнительных факторов в рассматриваемом пакете выступают различные неопределенности математических моделей LTI-систем. В настоящее время принято разделять неопределенности на два большие класса: структурированные (параметрические) и неструктурированные (не моделируемая динамика).

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

  • задание возможного множества вариаций системной матрицы линейной модели:

  • формирование дробно-линейной модели с вынесением неопределенности в обратную связь.

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

    Возможное множество вариаций системной матрицы в пакете трактуется как выпуклый многогранник с заданными вершинами:

    ,

    где - изменяющаяся во времени системная матрица, - вершины многогранника. Данная модель неопределенности, которую в дальнейшем будем называть политопной моделью, задается с помощью функции psys:

    >>S0=ltisys([1 1;0 1],[1; 2],eye(2));
    >>S1=ltisys([1 0;1 0],[1;1],eye(2),zeros(2,1));
    >>S2=ltisys([0 1;1 0],[0;1],eye(2),zeros(2,1));
    >>polysys1=psys([S0 S1 S2])
    polysys1 =
    
      Columns 1 through 8 
    
      -Inf     0     1     1     1     2     0     1
         1     0     0     1     2     0     0     1
         3     0     1     0     0     0     0     1
         2     0     0     1     0     0     0     0
         1     0     0     0     0  -Inf     0     0
         2     0     0     0     0     0     0     0
        10     0     0     0     0     0     0     0
    
      Columns 9 through 16 
    
         0     1     2     0     0     1     0     2
         0     1     0     0     1     0     1     0
         0     0     0     0     1     0     0     0
         1     0     0     0     0     1     0     0
         0     0  -Inf     0     0     0     0  -Inf
         0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0
    

    Можно предложить и другое представление допустимого множества с помощью его параметризации аффинным отображением некоторого множества параметров во множество системных матриц:

    .

    Здесь - системная матрица, зависящая от вектора параметров , - "базисные" системные матрицы, - допустимое множество вариаций вектора параметров. Подобную модель объекта с неопределенностями будем называть аффинной моделью.

    Для задания допустимого множества изменения параметров в пакете LMI Control используется функция pvec в двух вариантах. Первый из них позволяет задать в качестве этого множества k-мерный параллелепипед, а также указать пределы допустимого изменения производных от компонент вектора параметров:

    >>prange=[1 2;-10 20]; % пределы изменения компонент вектора параметров
    >>dprange=[-0.01 0.01;0 0]; % пределы изменения производных компонент вектора параметров
    >>p1=pvec('box',prange,dprange)
    p1 =
    
        1.0000    1.0000    2.0000   -0.0100    0.0100
        2.0000  -10.0000   20.0000         0         0
    

    Второй вариант предполагает задание вершин выпуклого множества :

    >>pvertex1=[-3; 4];
    >>pvertex2=[1; 2];
    >>pvertex3=[-0.5; -1];
    >>p2=pvec('pol',[ pvertex1, pvertex2, pvertex3])
    
    p2 =
    
        2.0000   -3.0000    1.0000   -0.5000
        2.0000    4.0000    2.0000   -1.0000
    

    Для формирования аффинной модели объекта используется следующий синтаксис вызова функции psys:

    >>BS0=ltisys([1 1;0 1],[1; 2],eye(2));
    >>BS1=ltisys([1 0;1 0],[1;1],eye(2),zeros(2,1),0);
    >>BS2=ltisys([0 1;1 0],[0;1],eye(2),zeros(2,1),0);
    >>affsys1=psys(p1, [BS0 BS1 BS2])
    
    affsys1 =
    
      Columns 1 through 3 
    
         -Inf                  0             1.0000          
       2.0000                  0                  0          
       3.0000                  0             1.0000          
       2.0000                  0                  0          
       1.0000                  0                  0          
       2.0000                  0                  0          
      10.0000                  0                  0          
    
      Columns 4 through 6 
    
       1.0000             1.0000             2.0000          
       1.0000             2.0000                  0          
            0                  0                  0          
       1.0000                  0                  0          
            0                  0               -Inf          
            0                  0                  0          
            0                  0                  0          
    
      Columns 7 through 9 
    
            0             1.0000 - 1.0000i        0          
            0             1.0000                  0 - 1.0000i
            0             1.0000                  0          
            0                  0             1.0000          
            0                  0                  0          
            0                  0                  0          
            0                  0                  0          
    
      Columns 10 through 12 
    
       1.0000             2.0000                  0          
       1.0000                  0                  0          
            0                  0                  0          
            0                  0                  0          
            0               -Inf                  0          
            0                  0                  0          
            0                  0                  0          
    
      Columns 13 through 15 
    
            0 - 1.0000i   1.0000                  0          
       1.0000                  0 - 1.0000i   1.0000          
       1.0000                  0                  0          
            0             1.0000                  0          
            0                  0                  0          
            0                  0                  0          
            0                  0                  0          
    
      Columns 16 through 18 
    
       2.0000             1.0000             1.0000          
            0             2.0000           -10.0000          
            0                  0                  0          
            0                  0                  0          
         -Inf                  0                  0          
            0                  0                  0          
            0                  0                  0          
    
      Columns 19 through 21 
    
       2.0000            -0.0100             0.0100          
      20.0000                  0                  0          
            0                  0                  0          
            0                  0                  0          
            0                  0                  0          
            0                  0                  0          
            0                  0                  0           
    

    Функция aff2pol используется для преобразования аффинной модели в политопную:

    >> polysys2=aff2pol(affsys1)
    
    polysys2 =
    
      Columns 1 through 5 
    
          -Inf         0    2.0000   -9.0000    2.0000
        1.0000         0   -9.0000    1.0000   -7.0000
        4.0000         0   -8.0000         0         0
        2.0000         0         0   -8.0000         0
        1.0000         0         0         0         0
        2.0000         0         0         0         0
       10.0000         0         0         0         0
    
      Columns 6 through 10 
    
        2.0000         0    3.0000   -9.0000    3.0000
             0         0   -8.0000    1.0000   -6.0000
             0         0   -7.0000         0         0
             0         0         0   -7.0000         0
          -Inf         0         0         0         0
             0         0         0         0         0
             0         0         0         0         0
    
      Columns 11 through 15 
    
        2.0000         0    2.0000   21.0000    2.0000
             0         0   21.0000    1.0000   23.0000
             0         0   22.0000         0         0
             0         0         0   22.0000         0
          -Inf         0         0         0         0
             0         0         0         0         0
             0         0         0         0         0
    
      Columns 16 through 20 
    
        2.0000         0    3.0000   21.0000    3.0000
             0         0   22.0000    1.0000   24.0000
             0         0   23.0000         0         0
             0         0         0   23.0000         0
          -Inf         0         0         0         0
             0         0         0         0         0
             0         0         0         0         0
    
      Columns 21 through 25 
    
        2.0000    1.0000    1.0000    2.0000   -0.0100
             0    2.0000  -10.0000   20.0000         0
             0         0         0         0         0
             0         0         0         0         0
          -Inf         0         0         0         0
             0         0         0         0         0
             0         0         0         0         0
    
      Column 26 
    
        0.0100
             0
             0
             0
             0
             0
             0
    

    Информацию о системе с неопределенностями можно получить с помощью функции psinfo:

    >> psinfo(polysys2)
    Polytopic model with 3 vertex systems 
        Each system has 2 state(s), 1 input(s), and 2 output(s)
    

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

    Рис.2.1.

    В составе схемы блок - это базовая линейная система с полностью известными компонентами, вектор включает в себя все внешние факторы, воздействующие на объект (возмущения, шумы, задающие сигналы, управления и т.д.), вектор - выходы объекта. Блок отражает наличие неопределенностей в задании модели объекта. Структурно данный блок состоит из отдельных блоков : . При этом каждый из них соответствует одному из возможных источников неопределенности. Предполагается, что каждый блок является некоторой динамической системой, которая может быть охарактеризована тем или иным набором данных: стационарная / нестационарная, одномерная / многомерная, вещественная / комплексная и т.д. Кроме того, относительно данной системы должны быть известны количественные параметры- ограничения, описывающие систему. Блоки неопределенности вводятся с помощью функции ubloсk данного пакета, первый аргумент которой определяет размерность блока. С помощью второго аргумента устанавливаются количественные характеристики неопределенности. В пакете LMI реализованы два возможных варианта их задания. Это могут быть ограничения по норме: равномерное ограничение (при этом второй аргумент функции ublock - скалярная величина ), либо ограничение с распределением по частотам. Последнее задается только для линейных блоков с помощью SISO системы с передаточной функцией : - для одномерных блоков ,
    , где максимальное сингулярное число, - для многомерных блоков (в данном случае второй аргумент функции ublock - системная матрица, соответствующая передаточной функции ). Также могут быть заданы секторные ограничения, используемые в тех случаях, когда входы и выходы блока удовлетворяют следующему соотношению: ,
    (в данном случае второй аргумент функции ublock - вектор ).

    Третий (необязательный) аргумент функции ublock определяет качественные параметры неопределенности блока. Выделяются три категории параметров, для каждой из которых доступны несколько вариантов выбора:

    1. Тип

    a.  'lti' - линейный стационарный (значение по умолчанию);

    b.  'ltv' - линейный нестационарный;

    c.  'nl' - произвольный нелинейный;

    d.  'nlm' - нелинейный без запаздывания;

    2. Структура

    a.  'f' - полный блок (значение по умолчанию);

    b.  's' - скалярный блок вида ;

    3. Значения

    a.  'c' - блок с комплексными элементами (значение по умолчанию);

    b.  'r' - блок с вещественными элементами.

     

    При использовании функции ublock её третий аргумент (строку) можно компоновать из опций, относящихся к различным разделам, например 'nlmsr' - нелинейный без запаздывания блок вещественных скаляров.

    Объединение отдельных блоков неопределенности выполняется функцией udiag:

    >>delta1=ublock([3 1],0.1);
    >>delta2=ublock(2,2,'s');
    >>delta3=ublock([1 2],100,'nl')
    delta3 =
    
         1
         2
         0
         1
         0
         0
         1
         1
       100
    >>delta=udiag(delta1,delta2,delta3)
    delta =
    
        3.0000    2.0000    1.0000
        1.0000    2.0000    2.0000
        1.0000    1.0000         0
             0         0    1.0000
        1.0000    1.0000         0
             0    1.0000         0
        1.0000    1.0000    1.0000
        1.0000    1.0000    1.0000
        0.1000        2.0000  100.0000
    

    С помощью функции uinfo можно получить информацию о блоке неопределенности:

    >> uinfo(delta)
    
     block   dims   type   real/cplx   full/scal      bounds    
                                                                
       1      3x1    LTI       c           f         norm <= 0.1
       2      2x2    LTI       c           s         norm <= 2  
       3      1x2     NL       r           f         norm <= 100
    

    Для преобразования аффинной системы, множество изменения параметров которой является параллелепипедом, к виду дробно-линейной системы используется функция aff2lft:

    >> [NS,delta1]=aff2lft(affsys1)
    
    NS =
    
      Columns 1 through 5 
    
        2.5000    6.0000   -0.9604         0   -0.2123
        6.5000    1.0000   -0.9604         0   -0.2123
       -1.1519   -0.0000    0.0000         0    0.0000
             0    1.0000         0         0         0
        0.5008    0.0000   -0.0000         0   -0.0000
        1.0820         0         0         0         0
             0   -1.1892         0         0         0
       -0.4133         0         0         0         0
        7.5000         0   -0.5393         0    0.7563
             0    7.5000         0    1.0000         0
             0         0         0         0         0
    
      Columns 6 through 10 
    
             0   -0.8409         0    2.5000    2.0000
        1.0820         0    0.4133    8.5000         0
             0    0.0000         0   -0.8994         0
             0         0         0         0         0
             0   -0.0000         0   -0.6414         0
             0         0         0    0.6687         0
             0         0         0         0         0
             0         0         0    0.6687         0
        0.6687         0   -0.6687         0         0
             0   -0.8409         0         0         0
             0         0         0         0      -Inf
    
    
    delta1 =
    
        3.0000    3.0000
        3.0000    3.0000
        1.0000    1.0000
        1.0000         0
             0         0
        1.0000    1.0000
        1.0000    1.0000
        1.0000    1.0000
        0.5000   15.0000
    

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

    2.3. Операции над системами

    Как и в большинстве пакетов расширения MATLAB, предназначенных для работы с LTI объектами, в LMI Control toolbox существуют средства, позволяющие объединять объекты для получения более сложных систем. Они включают в себя следующие функции:

    sadd(S1, S2) - моделирует параллельное соединение двух систем, представленных системными матрицами S1 и S2

    smult(S1, S2) - моделирует последовательное соединение

    sdiag(S1, S2) - формирует объединенную систему с передаточной функцией

    .

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

    Более сложные варианты соединения систем поддерживаются следующими функциями:

    sloop(S1,S2,sgn) - замыкание системы S1 отрицательной (по умолчанию, либо положительной, что контролируется третьим аргументом) обратной связью через систему S2

    slft(S1,S2,wdim,zdim) - более сложный вариант замыкания систем, с получением системы, входом которой является , а выходом :

    Параметры wdim и zdim определяют размерность векторов z и w соответственно. По умолчанию применяется следующее правило:

    если число входов/выходов системы S1 больше числа входов/выходов S2, то zdim равно числу входов S2, а wdim равно числу выходов S2;

    если число входов/выходов системы S2 больше числа входов/выходов S1, то zdim равно числу выходов S1, а wdim равно числу входов S1.


О получении локальных копий сайтов
  Всероссийская научная конференция "Проектирование научных и инженерных приложений в среде MATLAB" (май 2002 г.)
На первую страницу \ Сотрудничество \ MathWorks \ SoftLine \ Exponenta.ru \ Exponenta Pro   
E-mail:    
  Информация на сайте была обновлена 11.05.2004 Copyright 2001-2004 SoftLine Co 
Наши баннеры