49214

Виртуальная модель вертолета в среде MatLab

Курсовая

Информатика, кибернетика и программирование

Математическое моделирование движителя вертолета. Создание виртуальной модели вертолета в среде VRBuilder. Особенностью моделируемого вертолета является то что используется движитель роль которого выполняет двигатель постоянного тока ДПТ.

Русский

2013-12-23

265.65 KB

66 чел.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

БРЯНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра: «Информатика и программное обеспечение»

Курсовая работа

по информатике

«Виртуальная модель вертолета в среде MatLab»

Выполнил студент группы 12-ЭиН2:

Семченко И.А.

Преподаватель:

Симкин В. В.

Брянск 2013

СОДЕРЖАНИЕ

  1.  Введение……………………………………………………………………3
  2.  Описание объекта моделирования………………………………………..4
  3.  Математическое моделирование движителя вертолета………………….4
  4.  Создание виртуальной модели вертолета в среде VR-Builder…………..6
  5.  Заключение………………………………………………………………..10
  6.  Список используемой литературы ……………………………………...10
  7.  Приложение 1……………………………………………………………..11

Введение

MATLAB (Matrix Laboratory) — пакет прикладных программ для решения задач технических вычислений.

Основной особенностью языка MatLab является то, что его функции основаны на матричных операциях, которые создатели языка выразили в лозунге «думай векторно».

MATLAB как язык программирования был разработан Кливом Моулером  (англ. Cleve Moler) в конце 1970-х годов, когда он был деканом факультета  компьютерных наук в Университете Нью-Мексико. Целью разработки служила задача дать студентам факультета возможность использования программных библиотек Linpack и EISPACK без необходимости изучения Фортрана. Вскоре новый язык распространился среди других университетов и был с большим интересом встречен учёными, работающими в области прикладной математики. До сих пор в Интернете можно найти версию 1982 года, написанную на Фортране, распространяемую с открытым исходным кодом. Инженер Джон Литтл (англ. John N. (Jack) Little) познакомился с этим языком во время визита Клива Моулера в Стэндфордский университет в 1983 году. Поняв, что новый язык обладает большим коммерческим потенциалом, он объединился с Кливом Моулером и Стивом Бангертом (англ. Steve Bangert). Совместными усилиями они переписали MATLAB на C и основали в 1984 компанию The MathWorks для дальнейшего развития. Эти переписанные на С библиотеки долгое время были известны под именем JACKPAC. Первоначально MATLAB предназначался для проектирования систем управления (основная специальность Джона Литтла), но быстро завоевал популярность во многих других научных и инженерных областях. Он также широко использовался и в образовании, в частности, для преподавания линейной алгебры и численных методов.

Программа Simulink является приложением к пакету MatLab и представляет собой программу моделирования аналогово-цифровой машины, которые использовались для моделирования динамических систем.

Simulink - интерактивный инструмент для моделирования, имитации и анализа динамических систем. Он дает возможность строить графические блок-диаграммы, имитировать динамические системы, исследовать работоспособность систем и совершенствовать проекты. Simulink полностью интегрирован с MATLAB, обеспечивая немедленным доступом к широкому спектру инструментов анализа и проектирования. Simulink также интегрируется с Stateflow для моделирования  поведения, вызванного событиями. Эти преимущества делают Simulink наиболее популярным инструментом для проектирования систем управления и коммуникации, цифровой обработки и других приложений моделирования.

Virtual Reality раздвигает границы возможностей систем MATLAB и Simulink в мир виртуальной реальности. Используя технологию языка моделирования виртуальной реальности Virtual Reality Modeling Language (VRML), можно создавать анимационные   3-D сцены, которые управляются из среды MATLAB и Simulink.


  1.  Описание объекта моделирования

В качестве объекта моделирования выбран вертолет. Особенностью моделируемого вертолета является то, что используется движитель, роль которого выполняет двигатель постоянного тока (ДПТ). Для упрощения моделирования аэродинамические характеристики вертолета не учитываются, а моделируется только движитель.

Условное графическое обозначение (УГО) ДПТ представлено на рис.1.

Рис.1 УГО ДПТ

  1.  Математическое моделирование движителя вертолета

Роль движителя вертолета выполняет ДПТ. С целью упрощения моделирования ДПТ принимаем допущения:

  1.  Магнитный поток, создаваемый обмоткой возбуждения, величина постоянная;
  2.  Момент сопротивления двигателю равен нулю;
  3.  Постоянные ДПТ  и  равны.

Выпишем дифференциальное уравнение (уравнение Кирхгофа) для цепи якоря:

(закон Кирхгофа),

где

Uп - напряжение питания (входной сигнал)[В];

- падение напряжения на активном сопротивлении цепи якоря (закон Ома) [Ом];

– ЭДС индукции обмотки якоря (закон Ленца) [];

– индуктивность цепи якоря [Гн];

- ЭДС вращения (закон Лоренца) [В];

- константа, определяется параметрами машины [];

- частота вращения якоря [];

- ток цепи якоря [А].

Дифференциальное уравнение, описывающее электромеханическое поведение ДПТ имеют вид:

(закон Ньютона);

,

где

- момент инерции якоря электродвигателя [];

- электромагнитный момент двигателя [Н*м];

- момент сопротивления двигателя [Н*м];

– угол поворота якоря электродвигателя [рад].

Исходную систему дифференциальных уравнений, описывающую ДПТ, выпишем в форме Коши, т.е. разрешим относительно первых производных:

 

Представим систему дифференциальных уравнений ДПТ в форме пространства состояний, для этого введём новые переменные , ,  и выпишем систему в виде:

   

или в матричном виде:

,

 где

, , , .

Принимая параметры ДПТ равными La=0.001[Гн], Ca=10[], J=10[], R=0.1[Ом] вычислим коэффициенты усилителей структурной схемы ДПТ Gain=1000, Gain1=-100, Gain2=-10000, Gain3=1, Gain4=1.

Структурная схема ДПТ представлена на рис. 2

Рис.2 Структурная схема ДПТ

  1.  Создание виртуальной модели вертолета в среде VR-Builder

С целью создания виртуальной модели открываем новый файл и, используя примитивы и редакторы среды, создадим виртуальную модель вертолета (рис.3).

Рис. 3 Виртуальная модель вертолета

Рис. 4 Дерево узлов виртуальной модели вертолета и виды Main, Top, Right и Front

С целью ориентации модели вертолета в пространстве создаем модуль ориентации в Simulink модели. Модель ориентации представлена на рис. 5 и включает 2 блока констант 3 блока переключателей и мультиплексор. Изменяя положение ключей, формируется код ориентации вертолета в пространстве.

Рис. 5 Структурная схема ориентации в пространстве модели вертолета

С целью реализации функций вертолета формируем входы на VR Sink модуле. При моделировании используем 3 входа vertushka.rotation, vertushka_1.rotation и vertolet.translation (рис. 6)

Рис. 6 Модуль VR Sink с тремя входами

Подключение модуля VR Sink к Simulink модели вертолета выполняем с помощью мастера связи файла модели с файлом визуализации (рис. 7).

Рис. 7. Мастер связи файла модели с файлом визуализации

Для визуализации параметров вертолета создаем S-функцию и подключаем ее к модели движителя, используя мультиплексор (рис. 8).

На экран визуализатора выводим Напряжение питания якоря двигателя, ток якоря, угловую скорость и угол поворота ротора.

Рис. 8. Структурная схема визуализации параметров вертолета

Окно визуализатора представлено на рис. 9. Программный код S-функции визуализатора представлен в приложении 1.

Рис. 9. Окно визуализатора параметров двигателя

ЗАКЛЮЧЕНИЕ

В процессе выполнения курсовой работы по информатике были решены следующие задачи:

  1.  Разработана математическая модель движителя вертолета;
  2.  Представили математическую модель движителя в форме Коши;
  3.  Выписали систему дифференциальных уравнений в форме пространства состояний;
  4.  Сформировали структурную схему движителя в Simulink;
  5.  Создали структурную схему ориентации в пространстве модели вертолета;
  6.  В среде VR-Builder создали виртуальную модель вертолета;
  7.  Выполнили подключение модуля VR Sink к Simulink модели вертолета;
  8.  Создали S-функцию визуализатора параметров движителя;
  9.  Сформировали структурную схему системы моделирования полета виртуальной модели вертолета;
  10.   Провели численные эксперименты моделирования вертолета.

СПИСОК ИСПОЛЬЗОВАНОЙ ЛИТЕРАТУРЫ


1. Matlab. Режим доступа:http://www.mathworks.com/products/matlab/ 
2. Лабораторные работы:http://matlab.exponenta.ru/matlab/default.php
3. Основы информатики. Савельев А.Я. Изд-во МГТУ им Н.Э. Баумана,

2001. — 328 с.

Приложение 1

Код для S-function

function [sys, x0, str, ts] = mysfun(t, x, u, flag)

switch flag

   case 0

       [sys, x0, str, ts] = mdlInitializeSizes;

   case 2

       sys=mdlUpdate(t, x, u);

   case 3

       sys=mdlOutputs(t,x,u);

   case 9

       sys=mdlTerminate(t,x,u);

   otherwise

       error(['Unhandled flag = ',num2str(flag)]);

end

 

function [sys, x0, str, ts] = mdlInitializeSizes

sizes = simsizes;

sizes.NumInputs = 4;

sizes.NumSampleTimes = 1;

sys = simsizes(sizes);

 

x0  = [];

str = [];

ts  = [-1 0];

 

Fig=figure('Position',[644 -11 551 685],...

   'Color', 'k',...

   'MenuBar', 'none',...

   'Name', 'GUI_Simulink',...

   'NumberTitle', 'off');

 

InitControl = 1;

 

uicontrol('Style',   'slider',...

   'Position',[50 485 451 18],...

   'Min', 0, 'Max', 220, 'Value', InitControl,...

   'Callback', @sldCallback);

 

set_param([gcs '/Control'],'Value',num2str(InitControl));

 

axes('Tag', 'ax1',...

 'Units', 'pixels',...

 'Position',[50 334 451 101],...

 'NextPlot','add',...

 'Xlim',    [0 50],...

 'Ylim',    [-50 300],...

 'Color','k',...

 'Xcolor', 'g',...

 'YColor', 'g',...

 'Box', 'on',...

 'XGrid', 'on',...

 'YGrid', 'on');

axes('Tag', 'ax2',...

 'Units', 'pixels',...

 'Position',[50 534 451 101],...

 'NextPlot','add',...

 'Xlim',    [0 50],...

 'Ylim',    [-150 150],...

 'Color','k',...

 'Xcolor', 'g',...

 'YColor', 'g',...

 'Box', 'on',...

 'XGrid', 'on',...

 'YGrid', 'on');

axes('Tag', 'ax3',...

 'Units', 'pixels',...

 'Position',[50 184 451 101],...

 'NextPlot','add',...

 'Xlim',    [0 50],...

 'Ylim',    [-10 7000],...

 'Color','k',...

 'Xcolor', 'g',...

 'YColor', 'g',...

 'Box', 'on',...

 'XGrid', 'on',...

 'YGrid', 'on');

axes('Tag', 'ax4',...

 'Units', 'pixels',...

 'Position',[50 34 451 101],...

 'NextPlot','add',...

 'Xlim',    [0 50],...

 'Ylim',    [-20 250],...

 'Color','k',...

 'Xcolor', 'g',...

 'YColor', 'g',...

 'Box', 'on',...

 'XGrid', 'on',...

 'YGrid', 'on');

 

uicontrol('Style', 'text',...

   'String', 'Signal',...

   'Position', [200 445 151 26],...

   'FontSize', 10,...

   'FontWeight', 'bold',...

   'BackgroundColor', 'k',...

   'ForegroundColor', 'm')

uicontrol('Style', 'text',...

   'String', 'Control',...

   'Position', [200 644 151 23],...

   'FontSize', 10,...

   'FontWeight', 'bold',...

   'BackgroundColor', 'k',...

   'ForegroundColor', 'y')

uicontrol('Style', 'text',...

   'String', 'angular velocity',...

   'Position', [199 285 151 22],...

   'FontSize', 10,...

   'FontWeight', 'bold',...

   'BackgroundColor', 'k',...

   'ForegroundColor', 'r')

uicontrol('Style', 'text',...

   'String', 'angle of rotation',...

   'Position', [199 135 151 22],...

   'FontSize', 10,...

   'FontWeight', 'bold',...

   'BackgroundColor', 'k',...

   'ForegroundColor', 'b')

 

set_param(gcbh, 'UserData', Fig);

 

function sys=mdlUpdate(t, x, u)

Fig = get_param(gcbh,'UserData');

Handles = guihandles(Fig);

PassedSampleNum = int32(t*10);

if mod(PassedSampleNum, 500) == 0  

   set(Handles.ax1, 'XLim', [t t+50])

   set(Handles.ax2, 'XLim', [t t+50])

   set(Handles.ax3, 'XLim', [t t+50])

   set(Handles.ax4, 'XLim', [t t+50])

end

axes(Handles.ax1)

LastPoint = get(Handles.ax1, 'UserData');

if ~isempty(LastPoint)

   plot([LastPoint(1) t],[LastPoint(2) u(2)],...

       'Color', 'm', 'LineWidth', 2)

   set(Handles.ax1, 'UserData', [t, u(2)])

else

   set(Handles.ax1, 'UserData', [t, u(1)*u(2)])

   plot(t, u(1)*u(2),  'Color', 'm', 'LineWidth', 2 )

end

axes(Handles.ax2)

LastPoint = get(Handles.ax2, 'UserData');

if ~isempty(LastPoint)

   plot([LastPoint(1) t],[LastPoint(2) u(1)],...

       'Color', 'y', 'LineWidth', 2)

   set(Handles.ax2, 'UserData', [t, u(1)])

else

   set(Handles.ax2, 'UserData', [t, u(1)])

   plot(t, u(1),  'Color', 'y', 'LineWidth', 2 )

end

axes(Handles.ax3)

LastPoint = get(Handles.ax3, 'UserData');

if ~isempty(LastPoint)

   plot([LastPoint(1) t],[LastPoint(2) u(3)],...

       'Color', 'r', 'LineWidth', 2)

   set(Handles.ax3, 'UserData', [t, u(3)])

else

   set(Handles.ax3, 'UserData', [t, u(1)])

   plot(t, u(3),  'Color', 'r', 'LineWidth', 1 )

end

axes(Handles.ax4)

LastPoint = get(Handles.ax4, 'UserData');

if ~isempty(LastPoint)

   plot([LastPoint(1) t],[LastPoint(2) u(4)],...

       'Color', 'b', 'LineWidth', 2)

   set(Handles.ax4, 'UserData', [t, u(4)])

else

   set(Handles.ax4, 'UserData', [t, u(1)])

   plot(t, u(4),  'Color', 'b', 'LineWidth', 1 )

end

sys = [];

 

function sys=mdlOutputs(t,x,u)

sys=[];

 

function sys=mdlTerminate(t,x,u)

button = questdlg('Delete the GUI_Simulink window?','GUI_Simulink',...

   'No','Yes','No');

if isequal(button, 'Yes')

   Fig = get_param(gcbh,'UserData');

   delete(Fig)

end

sys = [];

 

function sldCallback(src,evt)

s = get(src, 'Value');

set_param([gcs '/Control'], 'Value', num2str(s));


 

А также другие работы, которые могут Вас заинтересовать

59751. На Андрія робиться дівицям надія 45 KB
  Дівчата не роздягайтеся. II ДІВЧИНА: Чого причепились Не смішіть не заважайте ідіть геть II ХЛОПЕЦЬ: Макітру вареників на стіл підемо I ДІВЧИНА: Та вже будуть вам вареники їжте хоч лусніть тільки воду дайте донести III ХЛОПЕЦЬ: Ну що ж Вважайте що ви нас вмовили.
59752. Сценарій вистави: Тарас Шевченко - художник 44.5 KB
  І не знаю Чого маленькому мені Тойді так приязно молилось Чого так весело було Господнє небо і село Ягня здається веселилось І сонце гріло не пекло ОКСАНА: Чом же плачеш ти Ох дурненький Тарасе.
59753. Сценарій уроку Вечорниці 39 KB
  На вечорниці збиралися тільки дівчата та хлопці. Співаючи заходять дівчата в українському вбранні. Дівчата: Добривечір у вашій хаті Жінки: І вам вечір добрий. Дівчата: Чи ж нам пристало сідати нам пристало пісню співати співають...
59754. Свято Миколая у родині 36.5 KB
  Миколай усе бачить і чує. Миколай Мама: Ой діточки то довга історія а я не маю часу розповідати. Жив у однім краю служив Господу Богу і людям єпіскоп Миколай. Миколай допоміг їй від щирого серця.
59755. Сценарій вечора “Відкрий, о рідна моя мово, свої скарбниці золоті” 53.5 KB
  Ведучий: В листопаді 1997 р. Ведучий: Людина яка втратила свою мову неповноцінна вона другорядна в порівнянні з носієм рідної мови. Ведучий: У кожному слові приховано жар Та кожне потрібно мов шибку протерти Аби не пристала олжа як іржа.
59757. Разработка концепции позиционирования бренда профессионального кухонного оборудования для рынка общественного питания на примере российской производственной компании «Рада» 3.85 MB
  Торговая марка RADA возникла в результате образовавшейся в начале 2000 года тенденции создания собственных производств крупными дистрибьюторами профессионального кухонного оборудования для сферы общепита. Компания Рада быстро набирала обороты, пользуясь известностью Сухаревки и ее широкой дилерской сетью. Таким образом, собственная торговая марка Сухаревки RADA
59758. Свято Покрови Пресвятої 59 KB
  Сьогодні ми святкуємо одне з найбільших народних свят свято Покрови Пресвятої яке дотримується однієї дати 14 жовтня.: Козацтво України вважало своєю покровителькою і заступницею Покрову пресвятої Богородиці. Тому на Запоріжжі була збудована церква Святої Покрови.
59759. Сценарій уроку: Державні символи України 36.5 KB
  Україна то лан пишний І степи і гори І як мені України Щиро не кохати. Вчитель: Діти перед вами прапор України. Тиха музика Вчитель: Діти а що це таке малюнок Герб України Так це герб головний символ нашої держави України.