1. Текст программы…………………………………………………………….........3 2. Графики, полученные в ходе расчета……………………………………………8 3. Результат, выведенный в командной строке программы……………………...12 Литература…………………………………………………………………………..16
1.Текст программы:
%Написать и отладить программу для двухконтурной системы регулирования скорости % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %Копировать каталог ars на компютер, например на диск d: в каталог work %Запустить Матлаб и указать Матлабу путь доступа к каталогу (не файлу) %записав в командной строке команду addpath d:\work\ars %записав в командной строке команду addpath d:\work\ars\dvig %записать в командной строке help control, изучить команды % переименовать этот файл одним словом (свою фамилию) латинскими буквами % В командной строке Матлаб набрать имя файла и тем самым запустить его % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - % после запуска: 1 - зарегистрироваться clear;close all;cc1=datestr(now,2); fam=input(' Введите свою фамилию (латинскими буквами, инициалы без разделителей и точек) ','s'); ngr=input(' Введите номер группы ','s'); disp([' ',fam,' группа № ',ngr,' ',cc1]); reg=[fam,' ',cc1];
%kran11 - кран с силовым, скоростным и следящим приводом % Выбор гибкой ОС как полинома эталонной модели для упрощенной модели объекта, с компенсацией % отброшенной части. Физическая реализуемость гибкой ОС полиномом. % Компьюторная реализация двуконтурная и одноконтурная. % Проверка робастности ОС заменой коэффициентов демпфирования объекта (от -1 до 1) % cr1l2=cran(leng,mblok,mcart) ; % cr1l2 - одномерная линейная двумассовая модель крана на тележке % leng - длина подвеса массы на блоке,mblok - масса груза на блоке,mcart - масса тележки leng=input(' Длина подвеса (М) = '); mblok=input(' Масса груза (КГ) = '); mcart=input(' Масса тележки (КГ) = '); wpriv=input(' Частота среза электропривода тележки (1/С) = '); txkran=['dlina = ',num2str(leng),' m, m.gruz = ',num2str(mblok), ' kg, m.tel = ',num2str(mcart),' kg; privod wc = ',num2str(wpriv),' 1/C ',num2str(reg) ]; % ------------------------------------------------------------------------ % К Р А Н модель с с доп.выходом ускорения тел. % ------------------------------------------------------------------------ g=9.8;% м/с^2 m_p=1/(1/mcart+1/mblok);% масса взаимодействия (паралельного соединения тележки и груза) wkr=(g/leng)^.5;% частота собственных колебаний подвеса % ------------------------------------------------------------------------ b1=tf(1,[mblok 0]);b1.inputname = 'sila.gruz';b1.outputname = 'skor.gruz'; %c1=tf(1,[mcart 0]);c1.inputname = 'sila.tel';c1.outputname = 'skor.tel'; c10=tf(1,[mcart ]);c10.inputname = ' sila.tel';c10.outputname = 'uskor.tel'; c11=tf(1,[1 0]);c11.inputname = 'uskor.tel';c11.outputname = ' skor.tel'; inb=tf(1,[1 0]);inb.inputname = 'skor.gruz';inb.outputname = 'koor.gruz'; inc=tf(1,[1 0]);inc.inputname = ' skor.tel';inc.outputname = 'koord.tel'; oleng=tf(1/leng);oleng.outputname = 'ugol.fi '; ff=tf(g*m_p);ff.inputname = 'ugol.fi '; % ------------------------------------------------------------------------ compM=append(c10,inc,b1,inb,oleng,ff,c11); % компоненты модели soed=[1 -6 0;2 7 -0;3 6 0;4 3 0;5 2 -4;6 5 0;7 1 0];% матрица соединений in=[ 1 3];% № входов [' sila.tel';'sila.gruz'] out=[4,3,2,1,5,7]; % № выходов ['koor.gruz';'skor.gruz';'koord.tel';'uskor.tel';'ugol.fi ';' skor.tel';] cr1u=connect(compM,soed,in,out);% кран с доп.выходом ускорения тел. % ------------------------------------------------------------------------ disp(' К Р А Н с входами [ sila.tel, sila.gruz] и выходами [koor.gruz, skor.gruz, koord.tel, uskor.tel, ugol.fi, skor.tel]'); cr1u,damp(cr1u) disp(' Одномерная zpk-модель К Р А Н А с входом [ sila.tel] и выходом [koor.gruz]'); zpk(cr1u(1,1)) % ------------------------------------------------------------------------ sil_priv=tf(sign(leng),[1/wpriv 1]); % модель силового электропривода апериодическим звеном co1=append(cr1u,sil_priv); cr1sil=connect(co1,[1 7],[3 2],[1:6]);% кран с силовым электроприводом. disp(' К Р А Н с силовым электроприводом (регулируемым током якоря электродвигателя).');objekt=cl_zp(cr1sil(1,1)) % ------------------------------------------------------------------------
% ------------------------------------------------------------------------ disp(' К Р А Н с выбранным типом электропривода - Объект управления в Системе управления координатой груза.'); disp(' Для расчёта регуляторов в Системе управления координатой груза использовать одномерную модель (индексами выходов и входов).');
% Задавать имена (до 31 знака)всех объектов читаемыми и содержательными из нескольких слов % разделители слов в имени: заглавная буква или знак_подчёркивания % Obj, IntReg, - объект, интегральный регулятор % Goc3,ForZv, - гибкая обратная связь 3-й вариант, форсирующее звено % имена соединения объектов отражают его структуру и ключевые элементы % Obj_IntReg,- интегральный регулятор и объект, включённые последовательно % ConGoc_r, - контур гибкой ОС разомкнутый % ConGoc2_z, - контур гибкой ОС #2 (например, с форсирующим звеном) замкнутый % Obj_IntReg_OC_Goc_ForZv_z - т.е. прямая цепь- Obj_IntReg, OC - Goc_ForZv, контур замкнут. % Задать имя выходной переменной объекта (outputName), например: % 'sila','davlenie','skorost','vysota','tok','ugol' % Objekt1.outputName='nechistaya sila', Objekt1.inputName='dobrye namereniya' % Заголовки и подписи фигур могут быть составной строкой из текста и цифр: % title(['objekt, Wgoc(s) = ',num2str(kgoc),'*s, regulyator']); % описывать структуру контура с указанием компонентов ОС и прямой цепи: % xlabel('zam_kon_Goc2;sostav:intReg,objekt ; Goc,kor'); % ------------------------------------------------------------------------ % objekt=cr1sil(1,1),cr1sk(1,1),cr1sL(1,1);% К Р А Н с выбранным типом электропривода - Объект управления disp(' Дополняем Объект управления Пропорциональным (Кпр) или Интегральным (Кин/s) регулятором.'); % 1.1 Пропорциональный (Кпр) регулятор приблизительно рекомендуется выбирать: % 1.1.1 для силового привода - как сумарная масса тележки и груза, умноженную на квадрат частоты колебаний подвеса % 1.1.2 для скоростного привода - как частоту колебаний подвеса % 1.1.2 для следящего привода - как >= 10 (для обеспечения точности регулирования) % 1.2 Интегральныq (Кин/s) регулятор рекомендуется выбирать как пропорциональный, умноженный на частоту колебаний подвеса %1.3 Объединить объект управления и регулятор. Все дальнейшие манипуляции с этим объединением. % regP=tf(Kpr) или regI=tf([Kin 0],1) disp(' Коэф. Кпр и Кин выбираем (по ЛАХ разомкнутого контура)так, чтобы все резонансные пики отсекались жёсткой или гибкой ОС.'); % konObjRegR=objekt*reg %1.4 Построить характеристики (bode)модели объекта управления c регулятором для проверки что % все резонансные пики могут быть отсечены жёсткой или гибкой ОС.'); % % ------------------------------------------------------------------------ %2 Проверить на дееспособность контур с только жёсткой ОС, т.е. %2.1 Вычислить частоту среза и запас устойчивости контура жёсткой ОС (margin или wc_ph, ) % свойства команд и варианты обращения - help margin, help wc_ph %2.2 Прояснить необходимость введения дополнительного контура гибкой обратной связи % figure; margin(konObjRegR) disp(' Систему управления координатой груза делаем двухконтурной: из внутреннего Гибкой ОС и внешнего Жёсткой ОС'); % ------------------------------------------------------------------------ objekt=cl_zp(cr1sil(1,1)) % ----------------------------------------------------------------------- Kpr=(mblok+mcart)*wkr^2; reg=tf(Kpr); konObjRegR=objekt*reg figure;bode(konObjRegR);legend('Силовой привод'); title(txkran); Koc=1; figure;margin(konObjRegR*Koc); figure;step(objekt,100);
%3.%Контур Гибкой обратной связи disp( ' Контур Гибкой обратной связи содержит дифферециальный регулятор + форсирующие звенья (при необходимости)')
%3.1 Создать модель дифференцирующее звено difz=Кgoc*s ( в форме tf или zpk), - создать и проверить что получилось % Принять Wgoc=difz; disp( ' Выбор коэффициента Гибкой обратной связи по ЛАХ прямой цепи и 1/Кос') % figure;bode(Obj_IntReg,1/Koc,1/Wgoc) % Проверить правильность отсечения ЛАХ объекта с регулятором Гибкой обратной связью и изменить её при необходимости figure; bode(konObjRegR,tf(1/Koc)); title('objekt*reg,1/Koc'); Kgoc=1; difz=tf([Kgoc 0],[1]) Wgoc=difz; %3.2 Получить модели разомкнутого контура гибкой ОС (входят все элемента контура) disp( ' Модель разомкнутого контура гибкой ОС ') % zpk(ConGoc_r ) figure; bode(konObjRegR*Wgoc); title('модель разомкнутого контура'); ConGoc_r=konObjRegR*Wgoc; %3.3 Вычислить частоту среза и запас устойчивости контура гибкой ОС (margin , wc_ph) margin(ConGoc_r); title('частота среза'); [wc_goc,ph1]=wc_ph(ConGoc_r); % 3.4 При неустойчивости или недостаточном запасе устойчивости по фазе контура гибкой ОС % добавить в контур гибкой ОС форсирующее звено с w1=wc_goc*0.7; wf=wc_goc*0.7; %3.5 %Создать модель: Форсирующего звена последовательной коррекции Гибкой OC, при необходимости, % (s + wf)/wf , wf - частота излома вблизи wc_goc; wf=wc_goc*(0.7 -:- 0.9)b ; fz=tf([1 wf],[wf]); fzv=1; ConGoc_r=konObjRegR*Wgoc; nf=0;%количество форсирующих звеньев figure; margin(ConGoc_r); figure; margin(feedback(konObjRegR,Wgoc*fzv)); xlabel(['konur s Goc zamknut. Chicslo forsi zvenev=',num2str(nf)]); figure; margin(feedback(feedback(konObjRegR,Wgoc*fzv),Koc)) %3.6 Замкнуть контур гибкой ОС (feedback, help feedback) disp(' Замкнутый контур гибкой ОС '); %zpk( ConGoc2_z) ConGoc2_z=feedback(konObjRegR,Wgoc*fzv) disp(' Замкнутый контур гибкой ОС '); % 4 Провести анализ действия гибкой обратной связи на ЛАХ объекта с интегральным регулятором % 4.1 На одном графике bode изобразить: %1. Объекта управления c интегральныv регулятором - исходный продукт bode(konObjRegR); %2. 1/(Кgoc*s) - обратную величину обратной связи - отсекающий нож bode(1/Wgoc); %3. Замкнутый контур гибкой ОС - результат отсечения спектра обратной связью bode(ConGoc2_z); %4. Разомкнутого контура гибкой ОС - в полосе пропускания которого действует отcекающий нож bode(ConGoc_r); title('разомкнутый контур гибкой ОС');
%4.2 убедиться в отсутствии или малой величине резонасного пика замкнутого контура на wс разомкнутого контура %4.3 если необходимо, ввести Форсирующее звено для последовательной коррекции Гибкой OC % ------------------------------------------------------------------------ %5. контур жёсткой ОС disp( ' Контур жёсткой обратной связи ') %5.1 Получить модель разомкнутого контура жёсткой ОС с замкнутым контуром гибкой ОС (в форме zpk) % Koc = 1; (входят все элемента контура) disp( ' Разомкнутый Контур жёсткой обратной связи ') ConZhoc_r=ConGoc2_z*Koc; %5.2%Вычислить частоту среза и запас устойчивости контура жёсткой ОС (margin , wc_ph) figure; margin(ConZhoc_r); xlabel('Запас устойчивости по фазе'); %5.3 Рассмотреть целесообразность изменения Кос или Kgoc, по ЛАХ определить во сколько раз изменить. %5.4 Замкнуть контур жёсткой ОС (feedback) % ------------------------------------------------------------------------ disp( ' Замкнутый Контур жёсткой обратной связи ') ConZhoc_z=feedback(ConZhoc_r,Koc) %5.5 Построить характеристики модели объекта управления с замкнутыми контурами управления (step,bode) figure; step(ConZhoc_z); title('contur c Zhoc') %5.6 График bode с 4 характеристиками дополнить ЛАХ замкнутого контура figure; bode(ConZhoc_z); title('График bode с 4 характеристиками дополнить ЛАХ замкнутого контур'); legend('График bode с 4 характеристиками');
2. Графики, полученные в ходе расчета.
3. Результат программы.
>> addpath D:\work_dima\ars >> dima Введите свою фамилию (латинскими буквами, инициалы без разделителей и точек) Pavleichik D A Введите номер группы 782422 Pavleichik D A группа № 782422 05/29/09 Длина подвеса (М) = 40 Масса груза (КГ) = 160 Масса тележки (КГ) = 200 Частота среза электропривода тележки (1/С) = 10 К Р А Н с входами [ sila.tel, sila.gruz] и выходами [koor.gruz, skor.gruz, koord.tel, uskor.tel, ugol.fi, skor.tel]
Transfer function from input " sila.tel" to output... 0.0006806 koor.gruz: ------------------------------------------------------------ s^4 + 1.222e-032 s^3 + 0.245 s^2 + 2.994e-033 s + 4.485e-018
0.0006806 s - 7.556e-020 skor.gruz: ------------------------------------------------------------ s^4 + 1.222e-032 s^3 + 0.245 s^2 + 2.994e-033 s + 4.485e-018
Transfer function from input "sila.gruz" to output... 0.00625 s^2 + 3.469e-019 s + 0.0006806 koor.gruz: ------------------------------------------------------------ s^4 + 1.222e-032 s^3 + 0.245 s^2 + 2.994e-033 s + 4.485e-018
К Р А Н с выбранным типом электропривода - Объект управления в Системе управления координатой груза. Для расчёта регуляторов в Системе управления координатой груза использовать одномерную модель (индексами выходов и входов). Дополняем Объект управления Пропорциональным (Кпр) или Интегральным (Кин/s) регулятором. Коэф. Кпр и Кин выбираем (по ЛАХ разомкнутого контура)так, чтобы все резонансные пики отсекались жёсткой или гибкой ОС. Систему управления координатой груза делаем двухконтурной: из внутреннего Гибкой ОС и внешнего Жёсткой ОС Обнуленных полюсов = 2
Контур Гибкой обратной связи содержит дифферециальный регулятор + форсирующие звенья (при необходимости) Выбор коэффициента Гибкой обратной связи по ЛАХ прямой цепи и 1/Кос
Transfer function: s
Модель разомкнутого контура гибкой ОС Замкнутый контур гибкой ОС
1. Антипова М.А., Хаджинов М.К. Методическое пособие к лабораторным работам по курсу «Автоматизированный расчёт систем управления» для студентов специальностей 53 01 03 «Автоматическое управление в технических системах» и 53 01 07 «Информационные технологии и управление в технических системах» / М.А.Антипова, М.К.Хаджинов. – Мн.: БГУИР, 2003. – 24 с.