В этом примере показано, как создать систему управления MIMO с помощью connect
для соединения числовых моделей LTI и настраиваемых блоков Система Управления.
Рассмотрите следующую систему управления с двумя входами и двумя выходами.
Заводская G является дистилляционным столбцом с двумя входами и двумя выходами. Двумя входами являются L орошения и V кипения. Двумя выходами являются концентрации двух химических веществ, представленных векторным сигналом y = [y 1, y 2]. Можно представлять эту модель объекта управления как:
Векторный сигнал уставки r = [r 1, r 2] задает желаемые концентрации двух химических веществ. Вектор векторной ошибки e представляет вход к D, статическую матрицу развязки 2 на 2. CL и CV представляют независимые ПИ-контроллеры, которые управляют двумя входами G.
Чтобы создать модель с двумя входами, двумя выходами, представляющую эту систему управления с обратной связью:
Создайте числовую модель LTI, представляющую заводскую G 2 на 2.
s = tf('s','TimeUnit','minutes'); G = [87.8 -86.4 ; 108.2 -109.6]/(75*s+1); G.InputName = {'L','V'}; G.OutputName = 'y';
Когда вы создаете модель с обратной связью, connect
использует имена входа и выхода для формирования соединений между компонентами блока схемы. Поэтому необходимо присвоить имена входам и выходам передаточной функции G
одним из следующих способов:.
Можно присвоить входные и выходные имена отдельным сигналам путем определения имен сигналов в массиве ячеек, как в G.InputName = {'L','V'}
Также можно использовать именование векторного сигнала, которое автоматически расширяется программой. Для примера, команда G.OutputName = 'y'
присваивает имена 'y(1)'
и 'y(2)'
к выходам G
.
Создайте настраиваемые Блоки Системы управления, представляющие D матрицы разъединения и ПИ-контроллеров CL и CV.
D = tunableGain('Decoupler',eye(2)); D.u = 'e'; D.y = {'pL','pV'}; C_L = tunablePID('C_L','pi'); C_L.TimeUnit = 'minutes'; C_L.u = 'pL'; C_L.y = 'L'; C_V = tunablePID('C_V','pi'); C_V.TimeUnit = 'minutes'; C_V.u = 'pV'; C_V.y = 'V';
Примечание
u
и y
являются краткими обозначениями для InputName
и OutputName
свойства, соответственно. Таким образом, например, вводится:
D.u = 'e'; D.y = {'pL','pV'};
эквивалентно вводу:
D.InputName = 'e'; D.OutputName = {'pL','pV'};
Создайте суммирующее соединение.
Суммирующее соединение формирует сигналы ошибки, e путем взятия различия между r и y.
Sum = sumblk('e = r - y',2);
Sum
представляет передаточную функцию для суммирующего соединения, описанную формулой 'e = r - y'
. Второй аргумент к sumblk
определяет, что входы и выходы Sum
каждый векторный сигнал длины 2. Поэтому программное обеспечение автоматически присваивает имена сигналов {'r(1)','r(2)','y(1)','y(2)'}
на Sum.InputName
и {'e(1)','e(2)'}
на Sum.OutputName
.
Присоедините все компоненты, чтобы создать систему с обратной связью от r до y.
CLry = connect(G,D,C_L,C_V,Sum,'r','y');
Аргументы в connect
функция включает все компоненты системы с обратной связью в любом порядке. connect
автоматически объединяет компоненты с помощью входных и выходных имен для соединения сигналов.
Последние два аргумента в connect
задайте выходные и входные сигналы модели с обратной связью, соответственно. Получающееся genss
модели CLry
имеет два входа и два выхода.