Учебное пособие для студентов высших учебных заведений
Скачать 5.41 Mb.
|
filt полностью аналогична процедуре tf с добавлением в конец списка входных параметров записи 'Variable','z^-1'. Те же процедуры ss , dss , tf и zpk применяются также для преобразования моделей из одной из указанных выше форм в другую. Первая и вторая применя- ются для преобразования модели в пространство состояния, третья - в передаточ- ную функцию, а четвертая - в нули-полюсы-коэффициент передачи. Модель, заданную как непрерывная, можно перевести в дискретную фор- му, воспользовавшись процедурой c2d в соответствии со схемой: sysd = c2d (sys, Ts, method). Здесь sys - исходная непрерывная заданная модель, sysd - получаемая в ре- зультате работы процедуры дискретный аналог исходной системы, Ts - задавае- мое значение шага дискретизации, method - параметр, определяющий метод дис- кретизации. Последний параметр может принимать одно из таких значений: 6.1. Ввод и преобразования модели 281 'zoh' - соответствует применению экстраполятора нулевого порядка: внутри интервала дискретизации сигналы аппроксимируются постоянной величиной, равной значению сигнала в начале интервала дискретизации; 'foh'- соответствует применению экстраполятора первого порядка: внутри интервала дискретизации сигналы аппроксимируются отрезками прямых, проходящих через концы кривой сигнала в интервале дискретизации; 'tustin' - билинейная аппроксимация Тастина внутри интервала дискрети- зации; 'prevarp' - та же аппроксимация Тастина с заданной частотой предыскрив- ления; 'matched' - метод согласования нуля и полюса. Ниже приведены примеры перевода введенного ранее непрерывного коле- бательного звена 'kzv1' в дискретные звенья по разным методам: KZVd1= c2d(kzv1,0.01) Transfer function: 0.01008 z - 0.009687 --------------------- z^2 - 1.97 z + 0.9802 Sampling time: 0.01 KZVd2= c2d(kzv1,0.01,'zoh') Transfer function: 0.01008 z - 0.009687 --------------------- z^2 - 1.97 z + 0.9802 Sampling time: 0.01 KZVd3= c2d(kzv1,0.01,'foh') Transfer function: 0.005029 z^2 + 0.0002308 z - 0.004864 ------------------------------------- z^2 - 1.97 z + 0.9802 Sampling time: 0.01 KZVd4= c2d(kzv1,0.01,'tustin') Transfer function: 0.005037 z^2 + 0.0001975 z - 0.00484 ------------------------------------ z^2 - 1.97 z + 0.9802 Sampling time: 0.01 KZVd5= c2d(kzv1,0.01,'prewarp',50) Transfer function: 0.005145 z^2 + 0.000206 z - 0.004939 ------------------------------------ z^2 - 1.97 z + 0.9798 Sampling time: 0.01 KZVd6= c2d(kzv1,0.01,'matched') Transfer function: 0.01009 z - 0.009696 --------------------- z^2 - 1.97 z + 0.9802 Sampling time: 0.01 6.1. Ввод и преобразования модели 282 Процедура d2c осуществляет обратную операцию - переводит дискретную систему в непрерывную , например: k1 = d2c(KZVd1) Transfer function: s + 4 --------------- s^2 + 2 s + 100 k2 = d2c(KZVd4,'tustin') Transfer function: s + 4 --------------- s^2 + 2 s + 100 Как можно убедиться, указанные операции являются взаимно-обратными. Процедура d2d позволяет переопределить дискретную систему , либо меняя шаг дискретизации sys1 = d2d (sys,Ts), либо вводя групповые задержки Nd (целое, в количестве шагов дискретизации) sys1 = d2d (sys,[],Nd). Приведем примеры. Вначале изменим шаг дискретизации на Ts=0.1 для системы KZVd1: kd1=d2d(KZVd1,0.1) Transfer function: 0.09352 z - 0.06018 ----------------------- z^2 - 0.9854 z + 0.8187 Sampling time: 0.1 , а затем введем задержку по входу, равную 3 Ts. Получим: kd2=d2d(k d1,[],3) Transfer function: 0.09352 z - 0.06018 ----------------------------- z^5 - 0.9854 z^4 + 0.8187 z^3 Sampling time: 0.1 Для создания модели нужно предварительно либо привести уравнения всей системы к форме уравнений пространства состояний, либо найти передаточные функции системы. В общем случае это довольно сложная и громоздкая задача. В то же время реальные системы автоматического управления (САУ) состоят из со- единенных между собой отдельных блоков (динамических звеньев), уравнения поведения которых обычно достаточно просты. Поэтому в практике проектирова- ния САУ принято использовать структурные методы, когда САУ задается как оп- ределенная схема соединения отдельных элементарных динамических звеньев, и фактически проектируется одно или несколько из этих звеньев таким образом, чтобы обеспечить заданное качество всей системы. В соответствии с этим в MatLAB предусмотрена возможность "набирать" программно "схему" САУ путем предварительного ввода моделей звеньев, составляющих САУ, и последующего 6.1. Ввод и преобразования модели 283 "соединения" этих звеньев в единую структуру. К процедурам, осуществляющих расчет характеристик соединений отдельных звеньев, относятся: plus (minus) - осуществляет "параллельное соединение" указанных при обращении звеньев, т. е. определяет характеристики модели системы из параллельно соединенных звеньев; особенностью является то что вызов этих процедур может быть осуществлен не только обычным путем - ука- зания имени процедуры и перечисления (в скобках после имени) иденти- фикаторов соединяемых звеньев, - но и простым указанием идентифика- торов звеньев, которые должны быть объединены, с простановкой между ними знаков '+' (при суммировании выходных сигналов звеньев) или '-' (при вычитании выходных сигналов); parallel - осуществляет ту же процедуру параллельного соединения звеньев; в отличие от предыдущей процедуры может использоваться для многомерных систем и осуществления параллельного соединения лишь по некоторым входам и выходам; mtimes - (или знак '*' между именами звеньев) - осуществляет последова- тельное соединение звеньев, имена которых указаны; применяется для одномерных систем; series - последовательное частичное соединение многомерных систем; feedback - такое соединение двух звеньев, когда второе указанное звено составляет цепь отрицательной обратной связи для первого звена; append - формальное объединение не связанных между собой систем (до- бавление выходов и входов второй системы к выходам и входам первой); connect - установление соединений выходов и входов многомерной сис- темы, созданной предварительно формальным объединением процедурой append ; схема соединений задается матрицей Q соединений, указываемой как один из входных параметров процедуры inv - рассчитывает САУ, обратную указанной, т. е. такую, у которой вы- ходы и входы поменены местами; vertcat производит так называемую вертикальную конкатенацию (сцепле- ние) систем (звеньев), т. е. такое их объединение, когда входы их стано- вятся общими, а выходы остаются независимыми; для такого объедине- ния необходимо, чтобы число входов объединяемых систем было одина- ковым; тогда число входов в результирующей системе останется таким же, как и каждой из объединяемых систем, а число выходов равно сумме выходов объединяемых систем; horzcat - осуществляет "горизонтальное сцепление" указанных систем, при котором выходы становятся общими, а входы добавляются. Проиллюстрируем применение некоторых из этих процедур. Создадим мо- дель углового движения торпеды вокруг вертикали в виде последовательно со- единенных двух звеньев: апериодического звена, характеризующего влияние мо- мента внешних сил относительно вертикали на угловую скорость торпеды Torsk = tf(25,[100 50]) Transfer function: 6.1. Ввод и преобразования модели 284 25 ---------- 100 s + 50 и интегрирующего звена, описывающего переход от угловой скорости к углу по- ворота торпеды вокруг вертикали SkUg = tf(1,[1 0]) Transfer function: 1 - s Последовательное соединение этих звеньев можно осуществить двумя спо- собами - применением процедуры series Tor1= series(Torsk,SkUg) Transfer function: 25 -------------- 100 s^2 + 50 s либо просто операцией "перемножения" моделей Tor = Torsk*SkUg Transfer function: 25 -------------- 100 s^2 + 50 s . Теперь сформируем цепь управления, входом которой является угол рыска- ния торпеды, а выходом - момент, накладываемый на торпеду со стороны ее рулей направления. Ее будем предполагать состоящей из двух параллельно соединенных частей - части, управляемой Гироскопом Направления, и представляющей собой обычное усилительное (статическое) звено GN = tf(2,1) Transfer function: 2 Static gain. и части, управляемой ГироТахометром, которую можно представить как диффе- ренциально-колебательное звено GT = tf([100 0],[1 10 100]) Transfer function: 100 s ---------------- s^2 + 10 s + 100 . Параллельное соединение этих двух контуров управление можно осущест- вить тоже двумя путями: либо используя процедуру parallel Izm1=parallel(GN,GT) Transfer function: 2 s^2 + 120 s + 200 ------------------- s^2 + 10 s + 100 , либо применяя операцию "сложения" моделей Izm = GN+GT 6.1. Ввод и преобразования модели 285 Transfer function: 2 s^2 + 120 s + 200 ------------------- s^2 + 10 s + 100 . Теперь найдем модель всей системы автоматического управления угловым дви- жением торпеды, рассматривая цепь управления как цепь отрицательной обрат- ной связи для торпеды и пользуясь для объединения прямой и обратной цепи процедурой feedback : sys=feedback(Tor,Izm) Transfer function: 25 s^2 + 250 s + 2500 ---------------------------------------------- 100 s^4 + 1050 s^3 + 10550 s^2 + 8000 s + 5000 . Конечно, несравненно более простым и удобным средством "создания" (точнее - "набора") сложных систем из отдельных блоков является рассмотрен- ная в главе 7 интерактивная система SIMULINK После того как система сформирована, можно ввести при помощи процеду- ры set некоторые символьные ее описания. В частности, дать названия входам и выходам системы, дать краткий комментарий к самой системе, например: set(sys,'Input Name',' Момент сил','OutputName','Угол рыскания') set(sys,'Notes','Угловое движение торпеды') get(sys) num = {[0 0 25 250 2.5e+003]} den = {[100 1.05e+003 1.06e+004 8e+003 5e+003]} Variable = 's' Ts = 0 InputName = {' Момент сил'} OutputName = {'Угол рыскания'} Notes = {'Угловое движение торпеды'} UserData = [] 6.2. Получение информации о модели 286 В заключение приведем примеры использования процедур конкатенации: sysvsp1=horzcat(Torsk,SkUg) Transfer function from input 1 to output: 25 ---------- 100 s + 50 Transfer function from input 2 to output: 1 - s sysvsp2=vertcat(Torsk,SkUg) Transfer function from input to output... 25 #1: ---------- 100 s + 50 1 #2: - s 6.2. Получение информации о модели Чтобы получить отдельные характеристики (матрицы и векторы, описывающие пространство состояния, коэффициенты числителя и знаменателя передаточной функции и т. п.) полученной модели, можно использовать одну из следующих процедур: tfdata (для получения векторов числителя и знаменателя передаточной функции системы), ssdata (для получения значений матриц уравнений пространства состояния) и zpkdata (для получения векторов значений полюсов и нулей системы), например: [nom,den]=tfdata(sys,'v') nom = 0 0 25 250 2500 den = 100 1050 10550 8000 5000 sssys=ss(sys) [ A,B,C,D] = ssdata(sssys) A = -10.5000 -6.5938 -1.2500 -0.7813 16.0000 0 0 0 0 4.0000 0 0 0 0 1.0000 0 B = 0.5000 0 0 0 C = 0 0.0313 0.0781 0.7813 D = 0 [z,p,k] = zpkdata(sys,'v') 6.2. Получение информации о модели 287 z = -5.0000 + 8.6603i -5.0000 - 8.6603i p = -4.8653 + 8.5924i -4.8653 - 8.5924i -0.3847 + 0.6040i -0.3847 - 0.6040i k = 0.2500 Процедура get дает возможность получить полную характеристику модели, включая имена входов и выходов, примечания, значения шага дискретизации и т. п. Например: get(sys) num = {[0 0 25 250 2.5e+003]} den = {[100 1.05e+003 1.06e+004 8e+003 5e+003]} Variable = 's' Ts = 0 Td = 0 InputName = {' Момент сил'} OutputName = {'Угол рыскания'} Notes = {'Угловое движение торпеды'} UserData = [] get(ssys) Continuous-time system. a = [4x4 double] b = [4x1 double] c = [0 0.0313 0.0781 0.781] d = 0 e = [] StateName = {4x1 cell} Ts = 0 Td = 0 InputName = {' Момент сил'} OutputName = {'Угол рыскания'} Notes = {'Угловое движение торпеды'} UserData = [] О числе входов и выходов системы можно узнать, обратившись к процедуре size: size(sys) Transfer function with 1 input(s) and 1 output(s). size(ssys) State-space model with 1 input(s), 1 output(s), and 4 state(s). 6.3. Анализ системы 288 6.3. Анализ системы Пакет СONTROL предоставляет широкий набор процедур, осуществляю- щих анализ САУ с самых различных точек зрения и, прежде всего, определение откликов системы на внешние воздействия как во временной, так и в частотной областях. Для нахождения временных откликов системы на внешние воздействия не- которых видов предусмотрены функции: impulse - нахождение отклика системы на единичное импульсное входное воздействие; step - нахождение реакции системы на единичный скачок входного воз- действия; initial - определение собственного движения системы при произвольных начальных условиях; lsim - определение реакции системы на входное воздействие произволь- ной формы, задаваемое в виде вектора его значений во временит. Рассмотрим применение этих процедур на примере движения торпеды, па- раметры которой как САУ приведены ранее. Применяя процедуру step к созданной модели: step(sys) можно получить график, представленный на рис. 6.1. Рис. 6.1 Аналогично, использование процедуры impulse(sys) приведет к появлению в графическом окне графика рис. 6.2. Чтобы применить процедуру initial, необходимо в число входных парамет- ров включить, во-первых, полный вектор всех начальных условий по перемен- ным состояния, а во-вторых, момент времени окончания процесса интегрирова- ния. Например: initial(ssys,[0 0 0 1],20). 6.3. Анализ системы 289 Рис. 6.2 Получим в графическом окне картину, показанную на рис. 6.3. Рис. 6.3 Для применения процедуры lsim необходимо предварительно задать вектор 't' значений времени, в которых будут заданы значения входного воздействия, а затем и задать соответствующий вектор 'u' значений входной величины в указан- ные моменты времени t = 0:0.01:40; u = sin(t); lsim(ssys,u,t);grid Результат изображен на рис. 6.4. 6.3. Анализ системы 290 Рис. 6.4 Следующая группа процедур представляет в частотной области реакцию системы на внешние гармонические воздействия. К таким процедурам относятся: bode - строит графики АЧХ и ФЧХ (диаграмму Боде) указанной системы; nyquist - строит в комплексной плоскости график Амплитудно-Фазовой Характеристики (АФХ) системы в полярных координатах; nichols - строит карту Николса системы, т. е. график АФХ разомкнутой системы в декартовых координатах; sigma - строит графики зависимости от частоты сингулярных значений системы; обычно совпадает с АЧХ системы; margin строит диаграмму Боде с указанием запасов по амплитуде и по фазе. Рис. 6.5 Приведем примеры. bode(sys) - результат приведен на рис. 6.5; 6.3. Анализ системы 291 nyquist(sys); grid - результат - на рис. 6.6; nichols(sys); grid - результат показан на рис. 6.7; sigma(sys) - см. рис. 6.8; margin(ssys); grid - см. рис. 6.9. Рис. 6.6 Рис. 6.7 6.3. Анализ системы 292 Рис. 6.8 Рис. 6.9 Теперь рассмотрим процедуры, вычисляющие отдельные характеристики и графически показывающие расположение полюсов и нулей системы. К ним мож- но отнести pole - расчет полюсов системы; zpkdata - расчет полюсов, нулей и коэффициента передачи системы; gram - вычисление граммианов системы - матрицы управляемости (при указании в качестве последнего входного параметра процедуры флага 'c') и матрицы наблюдаемости системы (при указании флага 'o'); damp - вычисление собственных значений матрицы состояния системы и, на этой основе - значений собственных частот (Frequency) незатухающих колебаний системы и относительных коэффициентов демпфирования (Damping) pzmap построение на комплексной плоскости карты расположения нулей и полюсов системы |