Учебное пособие 1804
.pdfs + 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)