Учебное пособие для студентов высших учебных заведений
Скачать 5.41 Mb.
|
kalmd - Дискретный фильтр Калмана для непрерывной системы lqgreg - Формирователь LQG-регулятора по LQ-коэффициентам и фильтру Калмана. Решение матричных уравнений lyap - Решение непрерывных уравнений Ляпунова dlyap - Решение дискретных уравнений Ляпунова care - Решение непрерывных алгебраических уравнений Риккати dare - Решение дискретных алгебраических уравнений Риккати Демонстрационные программы ctrldemo - Введение в Control System Toolbox. jetdemo - Классическое проектирование САУ углом рыскания. diskdemo - Цифровое проектирование контроллера привода жесткого диска milldemo - ОМ и ММ LQG управление прокатного стана kalmdemo - Проектирование и моделирование фильтра Калмана Далее процедуры пакета изучаются более подробно. 6.1. Ввод и преобразование моделей LTI- модели можно создавать в трех видах - SS, TF и ZPK-объектов. Для этого используются соответственно процедуры-конструкторы ss, tf и zpk. Создание LTI-модели рассмотрим на примере модели трехстепенного аста- тического гироскопа. Уравнения движения такого гироскопа имеют вид: && & ( ) && & ( ) α λβ β λα + = − = ⎧ ⎨ ⎪ ⎩⎪ n t l t (1) 6.1. Ввод и преобразования модели 273 где n(t) и l(t) - моменты сил, действующие на гироскоп по осям подвеса; α и β - углы поворота гироскопа в пространстве; λ - частота собственных (нутационных) колебаний гироскопа. Чтобы создать ss-модель, необходимо прежде всего привести дифференци- альные уравнения движения динамической системы к стандартному виду типа: dx dt A x B u y C x D u = ⋅ + ⋅ = ⋅ + ⋅ ⎧ ⎨ ⎪ ⎩⎪ (2) где u - вектор входных переменных ; - вектор выходных переменных, а y x - век- тор переменных состояния системы. Из этого следует, что перед формированием ss-модели необходимо: - определить, какие величины будут задаваться как явные функции времени, т. е. какие величины составят вектор u входных переменных; - определить, какие величины будут образовывать вектор выходных пе- ременных (т.е. будут находиться путем решения системы заданных дифференци- альных уравнений); y - установить какие величины будут составлять вектор x переменных со- стояния системы (их число должно совпадать с порядком системы заданных диф- ференциальных уравнений); - с помощью введенных переменных состояния привести заданную систему дифференциальных уравнений к так называемой нормальной форме Коши , т.е. к системе дифференциальных уравнений первого порядка, разрешенных относи- тельно производных. Будем полагать моменты сил - "входами" гироскопа, а углы поворота гиро- скопа - "выходами". Тогда система "гироскоп" (будем обозначать ее "GYRO") имеет 2 входа ( n(t) и l(t) ) и 2 выхода ( α и β ). В качестве переменных состояния примем выходные переменные и их первые производные по времени: x x x x 1 2 3 4 = = = α β α ; ; &; & = β t . (3) Тогда уравнения гироскопа в форме Коши приобретут вид: & ; & ; & ( ); & ( ); x x x x x x n x x l t 1 3 2 4 3 4 4 3 = = = − ⋅ + = ⋅ + ⎧ ⎨ ⎪ ⎪ ⎩ ⎪ ⎪ λ λ (4) Теперь нужно образовать матрицы A, B, C и D в соответствии с формой (2) представления системы в пространстве состояния. В рассматриваемом случае в качестве выходного вектора у примем: [ ] y T = α β , ; (5) в качестве входного - вектор моментов сил: [ ] u n t l t T = ( ), ( ) . (6) 6.1. Ввод и преобразования модели 274 Полагая [ ] x x x x x T = 1 2 3 4 , , , , (7) значения указанных матриц должны быть такими: A = − ⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ 0 0 1 0 0 0 0 1 0 0 0 0 0 0 λ λ ; ; ; . (8) B = ⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ 0 0 0 0 1 0 0 1 C = ⎡ ⎣ ⎢ ⎤ ⎦ ⎥ 1 0 0 0 0 1 0 0 D = ⎡ ⎣ ⎢ ⎤ ⎦ ⎥ 0 0 0 0 Введем эти матрицы в командном окне MatLAB, принимая λ =10: >> lambda=10; >> A=zeros(4,4); A(1,3)=1;A(2,4)=1;A(3,4)= -lambda;A(4,3)=lambda; A A = 0 0 1 0 0 0 0 1 0 0 0 -10 0 0 10 0 >> B=zeros(4,2); B(3,1)=1; B(4,2)=1 B = 0 0 0 0 1 0 0 1 >> C=zeros(2.2); C=[diag([1 1]) C] C = 1 0 0 0 0 1 0 0 Теперь можно приступить к созданию LTI -объекта по имени GYRO , ис- пользуя модель в пространстве состояния: >> GYROss=ss(A,B,C,0) a = x1 x2 x3 x4 x1 0 0 1 0 x2 0 0 0 1 x3 0 0 0 -10 x4 0 0 10 0 b = u1 u2 x1 0 0 x2 0 0 x3 1 0 x4 0 1 c = x1 x2 x3 x4 y1 1 0 0 0 y2 0 1 0 0 d = u1 u2 y1 0 0 y2 0 0 Continuous-time system. Как видно, модель сформирована правильно. Можно начать некоторые ее преобразования. 6.1. Ввод и преобразования модели 275 Прежде всего, интересно найти передаточные функции созданной системы. Очевидно, их должно быть 4 (ибо у нас 2 выхода и 2 входа). Для этого применим процедуру преобразования tf : >> GYROtf=tf(GYROss) Transfer function from input 1 to output... s^2 #1: ------------- s^4 + 100 s^2 10 s #2: ------------- s^4 + 100 s^2 Transfer function from input 2 to output... -10 s #1: ------------- s^4 + 100 s^2 s^2 #2: ------------- s^4 + 100 s^2 Теперь преобразуем введенную ss -модель в zpk -модель при помощи проце- дуры zpk : >> GYROzp=zpk(GYROss) Zero/pole/gain from input 1 to output... s^2 #1: --------------- s^2 (s^2 + 100) 10 s #2: --------------- s^2 (s^2 + 100) Zero/pole/gain from input 2 to output... -10 s #1: --------------- s^2 (s^2 + 100) s^2 #2: --------------- s^2 (s^2 + 100) Ввиду того, что первая ( ss ) модель GYROss была создана непосредственно процедурой-конструктором по заданным числовым данным, а последующие (GYROtf и Gyrozp) - путем преобразования уже созданной модели, будем назы- вать модель, созданную конструктором основной, а остальные - вспомогательны- ми. Отметим, что ss -модель в MatLAB можно создать и по системе дифференци- альных уравнений первого порядка, не разрешенных относительно производных, т.е. когда система описывается совокупностью уравнений вида: E dx dt A x B u y C x D u ⋅ = ⋅ + ⋅ = ⋅ + ⋅ ⎧ ⎨ ⎪ ⎩⎪ , (9) где E - произвольная квадратная матрица размером (n*n), а n - порядок заданной системы дифференциальных уравнений. Для этого следует уже использовать не конструктор ss, а специальную процедуру dss , отличие которой от предыдущей лишь в том, что она требует задания не четырех, а пяти матриц, последней из ко- торых должна быть матрица Е. 6.1. Ввод и преобразования модели 276 В качестве примера рассмотрим уравнения того же гироскопа в виде J H N J H L 1 2 ⋅ + ⋅ = ⋅ − ⋅ = ⎧ ⎨ ⎪ ⎩⎪ && & ( ) && & ( ). α β β α t t (10) Вводя те же переменные (см. (3), (5)...(7)), получим систему уравнений в виде (9), где матрицы A и E будут иметь вид: A H H = − ⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ 0 0 1 0 0 0 0 1 0 0 0 0 0 0 ; . (11) E J J = ⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 2 Остальные матрицы - B, C и D будут прежними (8). Введем новые матрицы при таких значениях параметров - H=10, J 1 =2, J 2 =3: >> H= 10; J1=2; J2=3; >> A=zeros(4); A(1,3)=1; A(2,4)=1; A(3,4)=-H; A(4,3)=H A = 0 0 1 0 0 0 0 1 0 0 0 -10 0 0 10 0 >> E=eye(4); E(3,3)=J1; E(4,4)=J2 E = 1 0 0 0 0 1 0 0 0 0 2 0 0 0 0 3 Теперь зададим ss -модель, пользуясь процедурой dss : >> Gyross=dss(A,B,C,0,E) a = x1 x2 x3 x4 x1 0 0 1 0 x2 0 0 0 1 x3 0 0 0 -10 x4 0 0 10 0 b = u1 u2 x1 0 0 x2 0 0 x3 1 0 x4 0 1 c = x1 x2 x3 x4 y1 1 0 0 0 y2 0 1 0 0 d = u1 u2 y1 0 0 y2 0 0 e = x1 x2 x3 x4 x1 1 0 0 0 x2 0 1 0 0 x3 0 0 2 0 x4 0 0 0 3 Continuous-time system. 6.1. Ввод и преобразования модели 277 Как и ранее, создадим на этой основе вспомогательные tf- и zpk- модели: >> Gyrotf=tf(Gyross) Transfer function from input 1 to output... 0.5 s^2 #1: --------------- s^4 + 16.67 s^2 1.667 s #2: --------------- s^4 + 16.67 s^2 Transfer function from input 2 to output... -1.667 s #1: --------------- s^4 + 16.67 s^2 0.3333 s^2 #2: --------------- s^4 + 16.67 s^2 >> Gyrozp=zpk(Gyross) Zero/pole/gain from input 1 to output... 0.5 s^2 #1: ----------------- s^2 (s^2 + 16.67) 1.6667 s #2: ----------------- s^2 (s^2 + 16.67) Zero/pole/gain from input 2 to output... -1.6667 s #1: ----------------- s^2 (s^2 + 16.67) 0.33333 s^2 #2: ----------------- s^2 (s^2 + 16.67) В предыдущих примерах за основу была принята ss -модель. Но в качестве основной можно выбрать и любую из двух других моделей. Возьмем, например, в качестве основной модель в передаточных функциях. Система, описываемая уравнениями (10), если принять те же, что и ранее входные и выходные величины, имеет 4 передаточных функции, которые образу- ют матрицу передаточных функций размером (2*2). Каждый из столбцов этой матрицы содержит передаточные функции, соответствующие некоторой одной входной величине по всем выходным величинам. Определенная строка матрицы, наоборот, содержит передаточные функции какой-то одной выходной величины по всем входам системы. В целом матрица передаточных функций в рассматри- ваемом случае может быть представлена в виде: W s W s W s W s W s ( ) ( ) ( ) ( ) ( ) = ⎡ ⎣ ⎢ ⎤ ⎦ ⎥ 11 12 21 22 В соответствии с уравнениями (10) значения элементов этой матрицы рав- ны: W s J J J s H 11 2 1 2 2 ( ) ; = ⋅ ⋅ + 2 W s H s J J s H 12 1 2 2 2 ( ) ( ) ; = − ⋅ ⋅ ⋅ + 6.1. Ввод и преобразования модели 278 W s H s J J s H 21 1 2 2 2 ( ) ( ) ; = ⋅ ⋅ ⋅ + W s J J J s H 22 1 1 2 2 ( ) = ⋅ ⋅ + 2 . (12) Чтобы ввести эти передаточные функции и создать на их основе tf -модель, следует вначале создать два массива ячеек - массив ячеек размером (2*2) из векторов коэффициентов всех числителей передаточных функций; - массив ячеек такого же размера из векторов коэффициентов знаменателей передаточных функций. Для рассматриваемого случая это можно сделать так. Сначала создадим вектор коэффициентов общей части знаменателей: [ ] V J J H zn1 1 2 2 0 = ⋅ , , , затем - вектор дополнительного множителя в некоторых знаменателях: [ ] V = 1 0 , Теперь создадим вектор коэффициентов второго знаменателя путем свертки этих двух векторов (это соответствует перемножению полиномов): V zn2 = conv (V zn1 , V). Сформируем массив den ячеек знаменателей по схеме: for k1=1:4 for k2=1:2 den(k1,k2)={V zn1 }; end end den(1,2)={V zn2 }; den(2,1)={V zn2 }. Переходя к определению массива ячеек nom числителя, можно записать его таким образом: nom = {J 2 , -H; H, J 1 }. Теперь можно сформировать tf -модель, используя установленные матрицы ячеек числителей и знаменателей. Ниже приводится пример этого: >> Vzn1=[J1*J2, 0, H^2] Vzn1 = 6 0 100 >> V=[1, 0] V = 1 0 >> Vzn2=conv(Vzn1,V) Vzn2 = 6 0 100 0 >> for k1=1:2 for k2=1:2 den(k1,k2)={Vzn1}; end end >> den(1,2)={Vzn2}; den(2,1)={Vzn2} den = [1x3 double] [1x4 double] [1x4 double] [1x3 double] >> nom ={J2, -H; H, J1} nom = [ 3] [-10] 6.1. Ввод и преобразования модели 279 [10] [ 2] >> gyrotf=tf(nom,den) Transfer function from input 1 to output... 3 #1: ----------- 6 s^2 + 100 10 #2: ------------- 6 s^3 + 100 s Transfer function from input 2 to output... -10 #1: ------------- 6 s^3 + 100 s 2 #2: ----------- 6 s^2 + 100 Предостережение. При манипуляциях или преобразованиях LTI-модели следует учитывать, что: 1) три формы представления LTI-объектов не являются эквивалентными при численных расчетах; в частности, точность вычислений с передаточными функциями высокого порядка часто недостаточна; вы должны работать по преимуществу со сбалансированными моделями пространства состояния и ис- пользовать передаточные функции только для отображения на экране или для интерпретации (расшифровки) результатов; 2) преобразования в формат передаточных функций может сопровож- даться потерями точности; в результате, полюсы передаточной функции мо- гут заметно отличаться от полюсов заданной zpк -модели или модели простран- ства состояния (для проверки наберите help roots ); 3) преобразования в пространство состояния не являются однозначно оп- ределенными в случае одномерной системы и не гарантируют создания мини- мальной конфигурации системы в случае многомерной системы; так, заданная в пространстве состояния модель sys, при преобразовании ss ( tf (sys)) может сформировать модель с другими матрицами пространства состояния или даже с другим числом переменных состояния в многомерном случае; таким образом, следует по возможности избегать преобразований моделей из одной формы в другую и наоборот. Итак, к процедурам создания lti -моделей относятся : ss - создает модель пространства состояния по заданным матрицам A, B, C, D уравнений состояния системы; dss - создает аналогичную модель по описанию пространства состояния более общего вида, когда уравнения переменных состояния не разре- шены относительно производных; tf - создает модель по заданным передаточным функциям системы; zpk - создает модель по заданным нулям, полюсам и коэффициентам передачи системы; 6.1. Ввод и преобразования модели 280 filt - создает модель по дискретным передаточным функциям, записан- ным в форме полиномов от 1 − z ; set - присваивает значения некоторым другим полям LTI-объекта (та- ким, как названия входов и выходов, название системы и т.п.). Указанные процедуры позволяют создавать как непрерывные модели , так и дискретные. В последнем случае к числу входных параметров процедуры следует добавить в конце значение параметра Ts - шага дискретизации, а вводимые значе- ния коэффициентов уже должны задавать параметры дискретных передаточных функций (для функций tf и zpk ), либо матрицы конечно-разностных уравнений пространства состояния - при использовании процедур ss и dss . При использова- нии процедуры filt должны задаваться векторы коэффициентов числителя и зна- менателя дискретной передаточной функции, представленной в виде отношения полиномов от . Приведем несколько примеров: 1 − z kzv1 = tf([1 4], [1 2 100]) Transfer function: s + 4 --------------- s^2 + 2 s + 100 kzv2 = tf([1 4], [1 2 100],0.01) Transfer function: z + 4 --------------- z^2 + 2 z + 100 Sampling time: 0.01 kzv3 = tf([1 4], [1 2 100],'Variable','z^-1') Transfer function: 1 + 4 z^-1 --------------------- 1 + 2 z^-1 + 100 z^-2 Sampling time: unspecified kzv4 =filt([1 4], [1 2 100]) Transfer function: 1 + 4 z^-1 --------------------- 1 + 2 z^-1 + 100 z^-2 Sampling time: unspecified Как следует из примеров, процедура |