# bloc2ss

преобразование блок-схемы в пространство состояний

## Последовательность вызова

    [sl]=bloc2ss(blocd)

## Аргументы

blocd

  список

sl

  список

## Описание

Заданную линейную систему в виде блок-схемы `bloc2ss` преобразует в линейную систему пространство состояний. Первый элемент списка `blocd` должен быть строкой `'blocd'`. Остальные элементы этого списка должны сами по себе быть списками одного из следующего типа:

    list('transfer','name_of_linear_system')

    list('link','name_of_link',
                 [number_of_upstream_box,upstream_box_port],
                 [downstream_box_1,downstream_box_1_portnumber],
                 [downstream_box_2,downstream_box_2_portnumber],
                 ...)

Строки `'transfer'` и `'link'` являются ключевыми словами, которые указывают тип элемента в блок-схеме.

Случай 1: второй параметр списка является символьной строкой, которая может ссылаться (для возможного дальнейшего вычисления) на Scilab-имя линейной системы, заданной в виде пространства состояний (список `syslin`) или в передаточной форме (матрица или рациональные дроби).

Каждому передаточному блоку присваивается целое число. Каждому входу и выходу передаточного блока также присваивается свой номер, целое число (см. примеры).

Случай 2: второй вид элемента в представлении блок-схемы - это связь (link). Связь связывает один выход блока, представленного парой `[number_of_upstream_box,upstream_box_port]` (то есть `[номер_предшествующего_блока,порт_предшествующего_блока]`), с различными входами других блоков. Каждый такой вход предсталяется парой `[downstream_box_i,downstream_box_i_portnumber]` (то есть `[последующий_блок_i,номер_порта_последующего_блока_i]`).

Различные элементы блок-схемы могут определяться в произвольном порядке.

Например

[1] `S1*S2` с обратной связью блока.

Есть три передаточных звена `S1` (число `n_s1=2`) , `S2` (число `n_s2=3`) и сумматор (число `n_add=4`) с символической передаточной функцией `['1','1']`.

Есть 4 связи. Первая (с именем `'U'`) связывает вход (порт 0 условного блока -1 не рассматривается) с портом 1 сумматора. Вторая и третья связи соответственно (выходной) порт 1 сумматора с (входным) портом 1 системы `S1`, а (выходной) порт 1 `S1` с (входным) портом 1 `S2`. Четвёртая связь (названная `'Y'`) связывает (выходной) порт 1 `S2` с выходом (порт 0 условного блока -1 не рассматривается) и с (входным) портом 2 сумматора.

## Examples

    //Инициализация
    syst=list('blocd'); l=1;

    //Системы
    l=l+1;n_s1=l;syst(l)=list('transfer','S1');  //Система 1
    l=l+1;n_s2=l;syst(l)=list('transfer','S2');  //Система 2
    l=l+1;n_adder=l;syst(l)=list('transfer',['1','1']);  //сумматор

    //Связи
    // Выходы  -1 --> выход 1
    l=l+1;syst(l)=list('link','U1',[-1],[n_adder,1]);

    // Внутренние
    l=l+1;syst(l)=list('link',' ',[n_adder,1],[n_s1,1]);
    l=l+1;syst(l)=list('link',' ',[n_s1,1],[n_s2,1]);

    // Выходы // -1 -> output 1
    l=l+1;syst(l)=list('link','Y',[n_s2,1],[-1],[n_adder,2]);

Для `s=poly(0,'s');S1=1/(s+1);S2=1/s;` результатом вызова исполнения `sl=bloc2ss(syst);` является представление в пространстве состояний для `1/(s^2+s-1)`.

[2] Пример LFT

    // Инициализация
    syst=list('blocd'); l=1;

    // Система (установка блоков 2x2)
    l=l+1;n_s=l;syst(l)=list('transfer',['P11','P12';'P21','P22']);

    // Контроллер
    l=l+1;n_k=l;syst(l)=list('transfer','k');

    // Связи
    l=l+1;syst(l)=list('link','w',[-1],[n_s,1]);
    l=l+1;syst(l)=list('link','z',[n_s,1],[-1]);
    l=l+1;syst(l)=list('link','u',[n_k,1],[n_s,2]);
    l=l+1;syst(l)=list('link','y',[n_s,2],[n_k,1]);

С

    A=[0,1;0,0];
    B=[1;1];
    C=[1,1];
    D=poly(0,'s');
    P=syslin('c',A,B,C,D);

`bloc2exp(syst)` возвращает lft `P` и `K`.

## Смотрите также

- bloc2exp