49214

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

Курсовая

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

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

Русский

2013-12-23

265.65 KB

64 чел.

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

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

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

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

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

«Виртуальная модель вертолета в среде 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));


 

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

51622. Властивості степенів з натуральним показником 75.5 KB
  Тип уроку : урок застосування отриманих умінь і навичок інтерактивний урок Інтерактивні технології : вирішення проблеми аналіз ситуації займи позицію оцінювальна дискусія Обладнання : підручники збірники задач таблиці інтерактивна дошка диференційовані завдання роздатковий матеріал завдання на картках контрольні запитання Зміст урок Організаційний момент. Перевірка домашнього завдання...
51624. Это я, это я, это все мои друзья 35 KB
  У меня руки чистые я только что их вымыл с мылом Ты не мог их вымыть с мылом потому что первоклассник Пупкин на перемене съел мыло и его отвезли в больницу. Ну правильно я попросил мыло у завхоза. Он не мог тебе дать мыло потому что в стране дефицит и мыло выдают по талонам а у завхоза строгий учет Я подкупил завхоза бутылкой спиртного Гражданам СССР не достигшим 21 года спиртные напитки не отпускаются А у меня папа директор ликеро водочного завода.