Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 1804

.pdf
Скачиваний:
9
Добавлен:
30.04.2022
Размер:
2.24 Mб
Скачать

s + 10

Ввести обозначение входной переменной 'тяга' и выходной переменной 'скорость', а также заменить символ 's' на 'р'.

»set(h,'input','Тяга','output','Скорость','variable','p')

»h

Transfer function from input "Тяга" to output "Скорость":

1

------

p + 10

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

Если какие-либо названия следует оставить не присвоенными, то вместо них надо указать пустую строку.

По команде set(sys) можно вывести на экран все свойства для lti-модели

sуs.

Предупреждение:

Переустановка значения периода дискретности, например с нулевого на ненулевое значение, характерное для дискретных систем, не влечет за собой построения дискретной модели. Для перехода от непрерывной модели к дискретной и обратно следует использовать функции c2d и d2c.

Третий способ установки значений свойств - это присваивание значений элементам структуры. Используемые в ППП Control System Toolbox Iti-объекты с точки зрения типа данных являются массивами записей (структурами) языка MATLAB, которые снабжены дополнительным флагом, указывающим, что они являются lti-объектами.

Пример:

Рассмотрим одномерную стационарную систему в tf-форме и выявим ее структуру.

» sys=tf(2,[0.1 1])

Transfer function:

2

---------

0.1s + 1

»namefields=fieldnames(sys)

namefields =

'num'

'den'

'Variable'

'lti'.

Для получения значений полей следует использовать следующие опера-

торы:

» sys.num

ans =

[1x2 double]

» sys.num{1}

ans =

0 2

» sys.den{1}

ans =

0.1000 1.0000

» sys.var ans = s

Имена полей массива записей (структуры) являются именами свойств, поэтому можно назначать или изменять значения свойств, присваивая значения элементам структуры:

PropertyValue = sys.PropertyName % получить значение свойства sys.PropertyName = PropertyValue % установить значение свойства

Эти операторы присваивания эквивалентны следующим операторам с использованием функций get и set:

PropertyValue = get(sys,'PropertyName') set(sys,'PropertyName',PropertyValue).

Вотличие от использования стандартных структур системы MATLAB в

ПППControl System Toolbox не надо указывать полное имя поля структуры и различать строчные и прописные буквы.

Пример:

Вводя операторы и используя сокращения для имени поля

» h = tf(1,[1 0],'inputname','u','variable','p'); % h(p)=1/p;

h.inp получим ans = 'u'

Этот результат эквивалентен обращению в форме h.InputName. Все допустимые форматы операторов, используемые для работы с массивами записей (структурами), распространяются на объекты класса Iti.

Пример:

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

» h=tf(1,[1 0],'inputname','u','variable','p')

Transfer function from input "u" to output:

1

-

p

» h.num{1}=[1 2]

Transfer function from input "u" to output:

p + 2

-----

p

» h.num{1}(1)=3

Transfer function from input "u" to output:

3 p + 2

-------

p

» h.num{1}(2)=5

Transfer function from input "u" to output:

3 p + 5

-------

p

 

3.5. Функции создания и преобразования lti-моделей

ss

Содание ss модели

Синтаксис:

sys = ss(a, b, c, d) sys = ss(a, b, c, d, Ts)

Функция sys = ss(a, b, c, d) формирует непрерывную ss-модель, описываемую четверкой векторов пространства состояний системы. Вторая форма оператора формирует дискретную модель с периодом дискретности Ts.

Все формы операторов могут быть дополнены парами свойство/значение (Property/Value). Если Вы забыли какие-либо свойства lti-моделей, можно воспользоваться командой ltiprops, которая даст необходимую подсказку.

tf

Содание tf модели

 

 

Синтаксис:

sys = tf(num, den) sys = tf(num, den, Ts)

Команда по своим свойствам и порядку действия аналогична вышеописанной, за исключением того, что в результате выполнения команды формируется объект подкласса tf.

zpk

Содание zpk модели

 

 

Синтаксис:

sys = zpk(z, p, k) sys = zpk(z, p, k, Ts)

Формирование объекта подкласса zpk. При этом:

z и p являются массивами ячеек размера Ny Nu , где элементы z{i, j} и p{i, j} содержат нули и полюсы передаточной функции по входу j и выходу i;

k двумерный массив обобщенных коэффициентов передачи.

ssdata

Извлечение данных о ss модели

 

 

Синтаксис:

[А, В, С, D] = ssdata(sys)

[А. В, С, D, Ts, Td] = sdata(sys)

Функция [А, В, С, D] = ssdata(sys) возвращает значения четырех матриц {А, В, С, D } для lti-объекта с дескриптором sys. Если lti-объект не является моделью подкласса ss, то в первую очередь он преобразуется в ss-модель.

Функция [А, В, С, D, Ts, Td] = ssdata(sys) позволяет извлечь информацию о четверке матриц {А, В, С, D } для lti-объекта с дескриптором sys, a также о значениях периода дискретности Ts и запаздываниях на входах Td. Для непрерывных моделей Ts = 0, а каждый элемент вектора Td соответствует одному входу. Для дискретных моделей вектор Td является пустым.

Другие свойства lti-объекта с дескриптором sys доступны по команде get или при прямом обращении к элементам массива записей.

tfdata Извлечение данных о tf модели

Синтаксис:

[num, den] = tfdata(sys)

[num, den, Ts, Td] = tfdata(sys) [num. den] = tfdata(sys, V)

Функция [num, den] = tfdata(sys) возвращает матричную передаточную функцию для lti-объекта с дескриптором sys в виде описания массивов числителей и знаменателей. Массивы числителей num и знаменателей den являются массивами ячеек с числом строк, равным числу выходов, и числом столбцов, равным числу входов, а их индексы (i, j) определяют передаточную функцию от входа j до выхода i. Если lti-объект не является моделью подкласса tf, то в первую очередь он преобразуется в tf-модель.

Функция [num, den, Ts, Td] = tfdata(sys) также возвращает значения периода дискретности Ts и запаздывания на входах Td. Для непрерывных моделей Ts = 0, а каждый элемент вектора Td соответствует одному входу. Для дискретных моделей вектор Td является пустым.

Для одномерных систем функция [num, den] = tfdata(sys, V) возвращает числитель и знаменатель в виде числовых значений векторов-строк, а не в виде описания размерностей массива ячеек.

Другие свойства lti-объекта с дескриптором sys доступны по команде get или при прямом обращении к элементам массива записей.

zpkdata

Извлечение данных о zpk модели

 

 

Синтаксис:

[z, p. k] = zpkdata(sys)

[z, р, k, Ts, Td] = zpkdata(sys) [z. p, k] = zpkdata(sys, V)

Функция [z, p, k] = zpkdata(sys) возвращает нули, полюсы и обобщенные коэффициенты передачи для каждого канала М-объекта с дескриптором sys. Массивы ячеек z, p имеют число строк, равное числу выходов, и число столбцов, равное числу входов; их индексы (i, j) задают элементы массива ячеек, которые содержат нули, полюсы и обобщенный коэффициент передачи для передаточной функции от входа j до выхода i. Если lti-объект не является моделью подкласса zpk, то в первую очередь он преобразуется в zpk-модель.

Функция [z, p, k, Ts, Td] = zpkdata(sys) также возвращает значения периода дискретности Ts и запаздывания на входах Td. Для непрерывных моделей Ts = 0, а каждый элемент вектора Td соответствует одному входу. Для дискретных моделей вектор Td является пустым.

Для одномерных систем функция [z, p, k] = zpkdata(sys, V) возвращает нули и полюсы знаменателя в виде числовых значений векторов-столбцов, а не

ввиде описания размерностей массива ячеек.

3.6.Преобразование lti-моделей

 

c2d

Построение дискретной модели непрерывной системы

 

 

d2c

Построение непрерывной модели дискретной системы

 

 

d2d

Изменение периода дискретности и запаздывания по входам

 

 

ss

Преобразование моделей в ss-форму

 

 

tf

Преобразование моделей в tf-форму

 

 

zpk

Преобразование моделей в zpk-форму

 

 

 

c2d

Построение дискретной модели непрерывной системы

 

 

 

 

Синтаксис:

SysD = c2d(SysC, Ts)

SysD = c2d(SysC, Ts, 'метод')

SysD = c2d(SysC, Ts, 'PREWARP', We) [SysD, G] = c2d(SysC, Ts, 'FOH')

Функция SysD = c2d(SysC, Ts) реализует построение дискретной моде-' ли SysD непрерывной системы SysC с периодом дискретности Ts и с использованием экстраполятора нулевого порядка по умолчанию.

Функция SysD = c2d(SysC, Ts, 'метод') реализует построение дискретной модели SysD непрерывной системы SysC с периодом дискретности Ts и с использованием одного из ниже перечисленных методов экстраполяции:

Метод экстраполяции

Описание метода

ZOH

Экстраполятор нулевого порядка

FOH

Экстраполятор первого порядка

TUSTIN

Билинейная аппроксимация Тастина

PREWARP

Аппроксимация Тастина с коррекцией

MATCHED

Метод соответствия нулей и полюсов

Функция SysD = c2d(SysC, Ts, 'PREWARP', We) реализует построение дискретной модели SysD непрерывной системы SysC с периодом дискретности Ts и с использованием аппроксимации Тастина с коррекцией, параметр We задает частоту, на которой выполняется согласование частотных характеристик непрерывной и дискретной моделей. Эта функция применима только для одномерных моделей.

Функция [SysD, G] = c2d(SysC, Ts, 'FOH') реализует построение дискретной модели SysD непрерывной системы SysC с периодом дискретности Ts и с использованием экстраполятора первого порядка. Выходная матрица G позволяет для модели SysC, заданной в подклассе ss, с вектором начальных условий х0, вычислить эквивалентное начальное состояние по формуле x0-G*u(l,:).

Пример: построить дискретную модель с экстраполятором первого порядка и периодом дискретности 0,1 с для непрерывной системы с запаздыванием по входу 0,35 с.

» H=tf([1 -1], [1 4 5],'InputDelay',0.35)

Transfer function:

s - 1 exp(-0.35*s) * -------------

s^2 + 4 s + 5

 

» Hd=c2d(H,0.1,'foh')

 

Transfer function:

 

0.0115 z^3 + 0.0456 z^2 - 0.0562 z - 0.009104

 

z^(-3) * ---------------------------------------------------------

 

z^3 - 1.629 z^2 + 0.6703 z

 

Sampling time: 0.1

 

 

d2c

Построение непрерывной модели дискретной системы

 

 

 

Синтаксис:

 

SysC = d2c(SysD, Ts)

 

SysC = d2c(SysD, Ts, 'метод')

Первый вариант функции реализует построение непрерывной модели SysC дискретной системы SysD при условии, что модель дискретной системы соответствует экстраполятору нулевого порядка. Второй – использует один из методов экстраполяции, указанных в описании предыдущей функции.

Ограничения:

Аппроксимация Тастина не определена для систем с полюсами z = -1 и плохо обусловлена для систем с полюсами, близкими к z = -1.

Восстановление непрерывной модели с экстраполяцией ‗ZOH‘ не применимо к дискретным моделям с нулевыми полюсами. Кроме того, этот метод приводит к росту порядка непрерывной модели, если исходная дискретная система имеет отрицательные действительные полюсы. Это связано с тем, что функция логарифма от матрицы отображает отрицательные действительные полюсы в комплексные.

d2d

Изменение периода дискретности и учет запаздыания

 

 

Синтаксис:

sys = d2d(sys, Ts) sys = d2d(sys, [ ], Nd)

Первая функция формирует дискретную модель системы sys с новым периодом дискретности Ts. При этом предполагается, что дискретной модели соответствует экстраполятор нулевого порядка и соответствующее преобразование равносильно такой последовательности преобразований: sys1 = = c2d (d2c (sys), Ts).

Вторая функция формирует дискретную модель с запаздыванием по входам, которые задаются вектором целочисленных множителей Nd, так что вектор запаздываний по входам равен Nd*Ts. Если запаздывание по всем входам одинаково, то оно может быть задано одним числом Nd.

3.7. Переопределение базисных функций

plus, minus

Сложение и вычитание lti-моделей

 

 

Синтаксис:

sys = plus(sys1, sys2) sys = minus(sys1, sys2)

Функция sys = plus(sys1, sys2) выполняет операцию сложения двух объектов; она переопределена для моделей подкласса ss, tf, zpk и соответствует параллельному соединению lti-объектов.

Функция sys = minus(sys1, sys2) предназначена для вычитания двух объектов и соответствует параллельному соединению lti-объектов, для одного из которых знак изменяется на противоположный.

mtimes

Умножение lti-моделей

 

 

Синтаксис:

sys = mtimes(sys1, sys2)

Функция sys = mtimes(sys1, sys2) предназначена для умножения двух объектов и соответствует последовательному соединению lti-объектов.

ctranspose , transpose

Транспонирование lti-моделей

 

 

Синтаксис:

sys1 = ctranspose(sys) sys1 = transpose(sys)

Функция sys1 = ctranspose(sys) предназначена для построения сопряженных моделей для lti-объектов.

ss-модели:

для непрерывных моделей, заданных четверкой {A, B, C, D}, функция ctranspose возвращает четверку {-A’, -C’, B’, D’};

для дискретных моделей, заданных четверкой {A, B, C, D}, функция ctranspose возвращает четверку {AA, AA*C’’, -B’*AA, D’-B’*AAC’’}, где AA

=inv(A’).

tf и zpk модели:

для непрерывных моделей с передаточной функцией H(s) функция ctranspose возвращает передаточную функцию H(-s)’;

для дискретных моделей с передаточной функцией H(z) функция ctranspose возвращает передаточную функцию H(z -1)’.

Функция sys1 = transpose(sys) предназначена для транспонирования ltiобъектов.

ss-модели:

для непрерывных и дискретных моделей, заданных четверками {A, B, C, D}, функция transpose возвращает четверки {A .’, C .’, B .’, D .’};

tf и zpk модели:

для непрерывных моделей с передаточной функцией H(s) функция transpose возвращает передаточную функцию H(s).’;

для дискретных моделей с передаточной функцией H(z) функция transpose возвращает передаточную функцию H(z).’.

inv

Инверсия lti-моделей

 

 

Синтаксис: isys = inv(sys)

Функция isys = inv(sys) выполняет инверсию входа и выхода системы так, что линейное соответствие вида y G s u преобразуется в соответствие вида

u H sy , где H s G s 1 . Эта операция определена только для систем с

одинаковым числом входов и выходов и обратимой матрицей D. Пример:

Рассмотрим систему с двумя входами и двумя выходами, которая описывается матричной передаточной функцией

H s

и построим ее инверсную модель.

» H=[1 tf(1,[1 1]);0 1]

Transfer function from input 1 to output...

1

 

1

 

 

s

1

 

0

 

1

#1: 1 #2: 0

Transfer function from input 2 to output...

1 #1: -----

s + 1 #2: 1

» Hi=inv(H)

Transfer function from input 1 to output...

#1: 1 #2: 0

Transfer function from input 2 to output...

-1 #1: -----

s + 1

#2: 1

Ограничения: не следует применять функцию inv к моделям с обратными связями.

mrdivide, mldivide

Транспонирование lti-моделей

 

 

Синтаксис:

sys = mrdivide(sys1, sys2) sys = mldivide(sys1, sys2)

Функция sys = mrdivide(sys1, sys2) выполняет операцию левого деления, что соответствует построению модели вида sys1*inv sys2 .

Функция sys = mldivide(sys1, sys2) предназначена для построения модели вида inv sis1 * sys2 .

3.8. Соединение lti-моделей

parallel

Параллельное соединение lti-моделей

 

 

Синтаксис:

sys = parallel(sys1, sys2)

sys = parallel(sys1, sys2, inp1, inp2, out1, out2)