
Министерство образования республики Беларусь
Учреждение образования
«БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ»
Институт информационных технологий
Специальность «Информационные технологии
И управление в технических системах»
КОНТРОЛЬНАЯ РАБОТА №1
По курсу Автоматизированный расчёт систем управления
Вариант №19
Выполнил:
Студент-заочник 4 курса
группы № 782422
ФИО Павлейчик Дмитрий
Минск,2009
СОДЕРЖАНИЕ
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 характеристиками');