Автор: Пользователь скрыл имя, 11 Марта 2012 в 09:26, курсовая работа
Спроектирована система управления продольным движением самолета. Управление осуществляется за счет обратной связи по состоянию, обеспечивающей желаемое расположение собственных чисел замкнутой системы. Для оценки вектора состояния используется наблюдатель Люенбергера полного порядка.
Разработанная система может использоваться для управления продольным движением самолета.
ТЕХНИЧЕСКОЕ ЗАДАНИЕ 3
РЕФЕРАТ 4
ВВЕДЕНИЕ 5
1. ПОСТАНОВКА ЗАДАЧИ 6
2. МАТЕМАТИЧЕСКОЕ ОПИСАНИЕ ПРОДОЛЬНОГО ДВИЖЕНИЯ САМОЛЁТА 7
2.1 Исследование модели объекта без привода 9
2.2 Исследование модели объекта с приводом 13
2.3 Исследование моделей датчиков угловой скорости и перегрузки 16
2.4 Математическая модель датчика положения штурвала 18
3. ЛОГАРИФМИЧЕСКИЕ ЧАСТОТНЫЕ И ПЕРЕХОДНЫЕ ХАРАКТЕРИСТИКИ СИСТЕМЫ 19
4. РАСЧЁТ ОБРАТНОЙ СВЯЗИ 23
5. СИНТЕЗ НАБЛЮДАТЕЛЯ 29
10. ИССЛЕДОВАНИЕ ПОЛНОЙ СИСТЕМЫ С УЧЁТОМ НЕЛИНЕЙНОСТЕЙ РУЛЕВОГО ПРИВОДА И ДИНАМИКИ ДАТЧИКОВ 34
11. ИССЛЕДОВАНИЕ СИСТЕМЫ ПРИ РАЗБРОСЕ ПАРАМЕТРОВ 37
%_____________________________
% Коэффициент нормировки передаточных функций.
%_____________________________
[num_rs,den_rs] = tfdata(razomk_systema(1),'v');
K_rs = den_rs(length(den_rs))/num_rs(
%_____________________________
% Нормирование ПФ.
%_____________________________
razomk_systema_norm = razomk_systema*K_rs;
%РУЛЕВОЙ ПРИВОД + ДИНАМИКА САМОЛЁТА + ДАТЧИКИ - РАЗОМКНУТАЯ СИСТЕМА
%_____________________________
% Зададим датчики
системы в пространстве
%_____________________________
A_gir = [-160 -200; 200 0];
B_gir = [200; 0];
C_gir = [0 1];
D_gir = [0];
giroskop = ss(A_gir,B_gir,C_gir,D_gir);
A_aks = [-133 -167; 167 0];
B_aks = [1667; 0];
C_aks = [0 1];
D_aks = [0];
akselerometr = ss(A_aks,B_aks,C_aks,D_aks);
%_____________________________
% Передаточная функции гироскопа.
%_____________________________
disp('ПФ гироскопа');
W_g = tf(giroskop)
%_____________________________
%нули и полюса пф
%_____________________________
disp('Нули и полюсы передаточной функции гироскопа');
[zeros_u_g,poles_u_g,koef_u_g] = zpkdata(zpk(W_g),'v')
%_____________________________
% Передаточная функции акселерометра.
%_____________________________
disp('ПФ акселерометра');
W_a = tf(akselerometr)
%_____________________________
%нули и полюса пф
%_____________________________
disp('Нули и полюсы передаточной функции гироскопа');
[zeros_u_a,poles_u_a,koef_u_a] = zpkdata(zpk(W_a),'v')
%_____________________________
% Соединим последовательно ОУ и привод и датчики
%_____________________________
razomk_systema_dat4ik_aks = razomk_systema(1)*
razomk_systema_dat4ik_gir = razomk_systema(2)*giroskop;
disp('Матрицы ОУ с приводом (рулевой привод и динамика самолёта - разомкнутая система)');
[A_rsd1,B_rsd1,C_rsd1,D_rsd1] = ssdata(razomk_systema_dat4ik_
[A_rsd2,B_rsd2,C_rsd2,D_rsd2] = ssdata(razomk_systema_dat4ik_
%_____________________________
% Передаточная функция объекта.
%_____________________________
disp('ПФ обьекта с приводом (разомкнутой системы)');
W_rsdat = [tf(razomk_systema_dat4ik_aks)
%_____________________________
% Коэффициент нормировки передаточных функций.
%_____________________________
[num_rsd,den_rsd] = tfdata(razomk_systema_dat4ik_
K_rsd = den_rsd(length(den_rsd))/num_
%_____________________________
% Нормирование ПФ.
%_____________________________
razomk_systema_dat4ik_aks_norm = razomk_systema_dat4ik_aks*K_
razomk_systema_dat4ik_gir_norm = razomk_systema_dat4ik_gir*K_
%____________________
% ВЫВОД ГРАФИКОВ
%____________________
% ПФ без привода и с приводом по нормальной перегрузке.
%ltiview({'step'},samolet_
% ПФ без привода и с приводом по угловой скорости тангажа.
%ltiview({'step'},samolet_
% ЛАЧХ нормированной системы и нормированной ситемы с приводом.
%ltiview({'bode'},samolet_
%ltiview({'bode'},samolet_
%ЛАЧХ нормированной системы с приводом и датчиками
%ltiview({'bode'},razomk_
%ltiview({'bode'},razomk_
% Нули и полюсы ПФ по каждой координате от входа к выходу с приводом.
%ltiview({'iopzmap'},razomk_
%ltiview({'iopzmap'},razomk_
%УПРАВЛЕНИЕ
%____________________________
%РАСЧЕТ ОБРАТНОЙ СВЯЗИ
%____________________________
disp('Матрица управлЯемости в базисе h');
Uh(:,1)=B_rs
Uh(:,2)=A_rs*B_rs
Uh(:,3)=A_rs*A_rs*B_rs
Uh(:,4)=A_rs*A_rs*A_rs*B_rs
disp('Ее определитель');
det(Uh)
disp('Так как определитель не равен нулю, система управляемя');
disp('УПРАВЛЕНИЕ');
disp('Желаемые полюсы ЗАМКНУТОЙ системы');
polus_help=[-25+29i;-25-29i;-
disp('Расчет управления');
L= place(A_rs,B_rs,polus_help)
disp('Матрица динамики замкнутой системы');
A_zs= A_rs-B_rs*L
%_____________________________
% Передаточная функция замкнутой системы
%_____________________________
disp('Передаточная функция замкнутой системы');
W_zs=ss(A_zs,B_rs,C_rs,D_rs);
tf(W_zs)
%_____________________________
%Расчет коэффициента усиления по
%командному сигналу
%_____________________________
[num_zs,den_zs]=tfdata(W_zs(1,
disp('Коэфициент усиления по командному сигналу');
Kv = den_zs(length(den_zs))/num_zs(
G=Kv/50
W_zs=W_zs*G;
gain_ny=dcgain(W_zs(1,1));
%gain_ny
%W_zsNORM=W_zs/gain_ny;
%__________________________
%Нули и полюсы объекта с ОС
%__________________________
disp('Нули и полюсы объекта с ОС');
[zero_os1,poles_os1,koef_os1]=
[zero_os2,poles_os2,koef_os2]=
%_____________________________
%Частотные характеристики и переходнаЯ функциЯ
%объекта управлениЯ с приводом
%_____________________________
%ltiview('step',razomk_
%ltiview('step',razomk_
% РАСЧЕТ НАБЛЮДАТЕЛЯ ВЕКТОРА ПЕРЕМЕННЫХ СОСТОЯНИЯ
%ОБЪЕКТА С ПРИВОДОМ
%_____________________________
% Зададим собственные числа наблюдателя.
%_____________________________
polnabludatel = [-30.1; -30.2; -30.3; -30.4];
disp('Матрица наблюдателя');
Kalmana = place(A_rs',C_rs',
%_____________________________
% Рассчитаем регулятор ОУ с приводом
%_____________________________
disp('Расчет регулятора')
regulator = reg(razomk_systema,L,Kalmana);
[A_reg,B_reg,C_reg,D_reg] = ssdata(regulator);
%___________________________
% Обьект с наблюдателем с ОС
%___________________________
razomk_systema_nabl = feedback(razomk_systema,
[A_nabl,B_nabl,C_nabl,D_nabl] = ssdata(razomk_systema_nabl)
%________________
% Нормирование ПФ
%________________
[num_rs_dp,den_rs_dp] = tfdata(razomk_systema_nabl(1),
K = den_rs_dp(length(den_rs_dp))/
razomk_systema_nabl_norm = razomk_systema_nabl*K;
%_____________________________
% Отклик на ступенчатое воздействие
%обьекта + ОС + наблюдетель и объекта с ОС, но без наблюдателя.
%_____________________________
%ltiview('step',W_zsNORM(1),'
%ltiview('step',W_zsNORM(2),'
%___________________________
%Влияние разброса параметров
%___________________________
%Wz_d -20%
B_s=[-Z_d; -(0.8*Mz_d-Mz_at*Z_d)]
samolet = ss(A_s,B_s,C_s,D_s);
razomk_systema = series(privod,samolet);
zamk_systema = feedback(razomk_systema,
zamk_systema_norm1 = zamk_systema*K;
%Wz_d +20%
B_s=[-Z_d; -(1.2*Mz_d-Mz_at*Z_d)]
samolet = ss(A_s,B_s,C_s,D_s);
razomk_systema = series(privod,samolet);
zamk_systema = feedback(razomk_systema,
zamk_systema_norm2 = zamk_systema*K;
%ltiview ('step',zamk_systema_norm1(1),
%ltiview ('step',zamk_systema_norm1(2),
%_____________________________
% начальные условия наблюдателя
%_____________________________
open_system('nabl_poln.mdl');%
sim('nabl_poln');%запуск моделирования
%построение графиков
figure(1);
title(['С наблюдателем с ненулевыми начальными условими и без наблюдателя по нормальной перегрузке'])
xlabel('t');
ylabel('y');
hold on
grid on
plot(ny1.time,ny1.signals.
plot(ny2.time,ny2.signals.
figure(2);
title(['С наблюдателем с ненулевыми начальными условими и без наблюдателя по угловой скорости тангажа'])
xlabel('t');
ylabel('y');
hold on
grid on
plot(wz1.time,wz1.signals.
plot(wz2.time,wz2.signals.
figure(3);
title(['Ошибка оценки вектора x(t) по ny']);
xlabel('t');
ylabel('y');
hold on
grid on
plot(wz3.time,wz3.signals.
figure(4);
title(['Ошибка оценки вектора x(t) по wz']);
xlabel('t');
ylabel('y');
hold on
grid on
plot(wz4.time,wz4.signals.
%___________________________
% учет нелинейностей привода
%___________________________
open_system('model_nelin.mdl')
sim('model_nelin');%запуск моделирования
%построение графиков
figure(1);
title(['С нелинейностями и без по нормальной перегрузке'])
xlabel('t');
ylabel('y');
hold on
grid on
plot(ny1.time,ny1.signals.
plot(ny2.time,ny2.signals.
figure(2);
title(['С нелинейностями и без по угловой скорости тангажа'])
xlabel('t');
ylabel('y');
hold on
grid on
plot(wz1.time,wz1.signals.
plot(wz2.time,wz2.signals.
Рисунок П.2.1 – Полная нелинейная система моделирования
Рисунок П.2.2 – Подсистема «Privod»
Рисунок П.2.3 – Система для проверки влияния начальных условий на наблюдатель
1. Страшинин Е.Э. Основы теории автоматического управления. Часть 1: Линейные непрерывные системы управления: Учебное пособие. Екатеринбург: УГТУ-УПИ, 2000. 214 с.
2. Ванеева Л.А., Оботнин А.Н., Страшинин Е.Э., Цветков А.В. Расчет закона управления продольным движением самолета. Методические указания к курсовому проектированию по курсу "Теория автоматического управления". Екатеринбург: УГТУ-УПИ, 2007. 26 с.
3. А.В. Малов, Е.Э. Страшинин. Пакет математического моделирования Matlab v6.0: Краткое справочное руководство к лабораторным работам по дисциплине “Теория автоматического управления”. Екатеринбург: ГОУ ВПО УГТУ-УПИ, 2005. 52 с.
4. Соколов С.С. Рекомендации
по оформлению курсовых, выпускных и дипломных
проектов (работ). Методические указания.
Электронная версия [http://www.ait.ustu.ru/books]
Информация о работе Расчёт закона управления продольным движением самолёта