Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
5.4.1 - Русский

Change language to:
English - Français - 日本語 - Português -

Please note that the recommended version of Scilab is 2024.0.0. This page might be outdated.
However, this page did not exist in the previous stable version.

Scilab help >> Основные функции > Сигнальная обработка > bloc2exp

bloc2exp

преобразование блок-схемы в символьное выражение

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

[str]=bloc2exp(blocd)
[str,names]=bloc2exp(blocd)

Аргументы

blocd

список

str

строка

names

строка

Описание

Для указанной блок-схемы элемента линейной системы списка bloc2exp возвращает её символьное вычисление. Первый элемент списка blocd должен быть строкой 'blocd'. Остальные элементы этого списка (blocd(2),blocd(3),...) сами по себе являются списком одного из следующих типов:

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 с обратной связью блока.

Есть 3 передаточных звена 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 сумматора.

//Инициализация
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','U',[-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 -> выход 1
l=l+1;syst(l)=list('link','Y',[n_s2,1],[-1],[n_adder,2]);
 
//Вызов выполнения
w=bloc2exp(syst);

Результатом является символьная строка: w=-(s2*s1-eye())\s2*s1.

Заметим, что вызов с двумя выходными аргументами [str,names]=blocd(syst) возвращает в names список символьных имён наименованных связей. Это полезно для установки имён входам и выходам.

[2] второй пример

//Инициализация
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]);
 
//Вызов вычисления
w=bloc2exp(syst);

В этом случае результатом является формула, эквивалентная обычной формуле:

P11+P12*invr(eye()-K*P22)*K*P21;

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

  • bloc2ss — преобразование блок-схемы в пространство состояний
Report an issue
<< Сигнальная обработка Сигнальная обработка bloc2ss >>

Copyright (c) 2022-2023 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Apr 02 17:37:54 CEST 2013