Блок управления вертолетом БУВ – 8А: Создание имитационной обучающей программы

Автор: Пользователь скрыл имя, 16 Ноября 2011 в 10:40, дипломная работа

Краткое описание

Особое сложное понимание переходных процессов (динамики). Трудность восприятия циклического и общего шага.

Файлы: 1 файл

(диплом БУВ-8А).doc

— 772.50 Кб (Скачать)

    UM включает в себя ядро и ряд  дополнительных модулей, расширяющих  функциональность ядра: автомобильный  модуль (UM Automotive), железнодорожный модуль (UM Loco), модуль моделирования гусеничных машин (UM Tracked Vehicle), модуль импорта из CAD программ (UM CAD), модуль моделирования упругих тел (UM FEM), модуль многовариантных расчетов и оптимизации UM Experiments, модуль связи с Matlab/Simulink UM Control и другие.

    Использование UM для моделирования механических систем, особенности програмного комплекса и его основных модулей, а также множество рисунков и анимаций, которые помогут Вам составить первое впечатление о программе, объектах исследования и принятых методиках, все это представлено в презентации Применение UM в решении задач общего машиностроения (zip архив, 83 Мб, рус. яз., с анимациями). 
 

1.7.1. UM.Imput 

    Программа ввода данных

    Программа описания объекта (uminput.exe) предназначена для создания, корректировки объектов/систем тел, а также для автоматизированного синтеза уравнений движения и

    их  компиляции. 

    Основными элементами программы являются (Рис.7)

    Основное  меню команд:

    ·  панель  инструментов  с  кнопками, дублирующими  наиболее  часто используемые  команды основного меню;

    ·набор  закладок с типовыми элементами (компонентами) для визуального конструирования простых объектов (см. п. 3.5); 

    ·  конструктор  объектов – средство  ввода  и  корректировки  параметров  моделируемых

    объектов.

    Программа  является  многозадачной, то  есть  позволяет  одновременно  открывать  несколько конструкторов с разными объектами. Активным является объект, окно конструктора которого расположено поверх конструкторов остальных объектов.

 
 

Рис. 7. Общий вид программы  ввода UM Input 
 

1.7.2. UM.Simulation 

    Программа моделирования 

    Программа моделирования представляет собой  отдельное приложение EUMSimul.exe) и 

    подгружает  уравнения движения исследуемого объекта, используя предварительно подготовленную динамическую библиотеку Eumtask.dll) задачи.

    Для  запуска  программы  используйте  пункт  меню Объект=|=Моделирование в программе описания моделей EUMInput.exe). Если текущая активная задача полностью подготовлена  для  моделирования Eто есть  для нее создана динамическая  библиотека с уравнениями движения umtask.dll), то программа моделирования автоматически подгружает модель. Если задача не имеет aLL, то ее моделирование невозможно, однако модуль интегрирования  может  быть  запущен. В  этом  случае  пользователь  может  подгрузить  любую ранее подготовленную модель с помощью команды меню Файл=|=Открыть. 

    Численный анализ уравнений движения включает:

    ·  численное интегрирование уравнений  движенияX

    ·  анализ XVA-файлов и создание демонстрацийX

    ·  анализ линеаризованных уравнений. 

 

 2. Опытно-экспериментальная часть.  

    В программе  UM Input была создана модель вертолёта Ми-8 в трёх мерном реальном масштабе. Материал корпуса алюминий, толщина 5 мм, что соответствует реальности. На основе этих данных было выполнено UM системы. Что позволило вводить силу момента и наблюдать поведение модели в режиме времени. Модель позволяет наблюдать изменение переменных на графиках. Учитывая то, что стандартные силы и моменты применяются для двух тел. Одно тело вертолет, а второе тело, воздух. Но нельзя задать воздух как второе тело. Поэтому стандартных средств для данной задачи не достаточно. Вынуждены применить программирование в среде UM, был создан файл управления.

    unit ClAshanin;

    interface

    uses

      CtvSt, CtvDll;

    procedure UserCalc( _x, _v, _a : VectRPtr; _isubs, _UMMessage : integer; var WhatDo : integer ); cdecl; export;

    procedure ControlPanelMessage( _x, _v, _a : VectRPtr; _isubs, _index : integer; _Value : double ); cdecl; export;

    procedure TimeFuncCalc( _t : real_; _x, _v : VectRPtr; _isubs : integer ); cdecl; export;

    procedure Get1stOrderODE( _t : real_; _x, _f : VectRPtr; _isubs : integer ); cdecl; export;

    procedure Get2ndOrderODE( _t : real_; _x, _v, _f : VectRPtr; _isubs : integer ); cdecl; export;

    procedure UserConCalc( _x, _v : VectRPtr; _Jacobi : MatrRPtr; _Error : Vec3RPtr; _isubs, _ic : integer; _predict : boolean; _nright : integer ); cdecl; export;

    implementation

    uses

      DGetVars, AshaninC, _TAshanin;

    { Функция "TimeFuncCalc" используется исключительно для расчета функций времени.

    Не  используйте функции типа "GetPoint" внутри этой процедуры.

    Недопустим  расчет сил в этой процедуре. }

    procedure TimeFuncCalc( _t : real_; _x, _v : VectRPtr; _isubs : integer );

    var

      _ : _AshaninVarPtr;

    begin

      _ := _PzAll[SubIndx[_isubs]];

    end;

    procedure ForceFuncCalc( _t : real_; _x, _v : VectRPtr; _isubs : integer ); {Здесь вычисляются силы и мометы}

    var

      _ : _AshaninVarPtr;

    Force, Moment : coordin;

    begin

    Force[1]:=0; Force[2]:=10000; Force[3]:=0;

    Moment[1]:=0; Moment[2]:=0; Moment[3]:=10000;

    AddForceToBody(1,1, Force,

    BodyCoordinateSystem) : integer;

    {Функция добавляет вектор силы corce к телу ibody подсистемы isubs в начало отсчета

    СК, связанной с телом.}

    AddMomentToBody(0,1, Moment,

    BodyCoordinateSystem) : integer;

    {Функция  добавляет вектор  момента Moment к  телу ibody подсистемы isubs.}

     := _PzAll[SubIndx[_isubs]];

    end;

    procedure Get1stOrderODE( _t : real_; _x, _f : VectRPtr; _isubs : integer );var

      _ : _AshaninVarPtr;begin

      _ := _PzAll[SubIndx[_isubs]];end;

    procedure Get2ndOrderODE( _t : real_; _x, _v, _f : VectRPtr; _isubs : integer );var

      _ : _AshaninVarPtr;begin

      _ := _PzAll[SubIndx[_isubs]];end;

    procedure UserConCalc( _x, _v : VectRPtr; _Jacobi : MatrRPtr; _Error : Vec3RPtr; _isubs, _ic : integer; _predict : boolean; _nright : integer );var

      _ : _AshaninVarPtr;begin

      _ := _PzAll[SubIndx[_isubs]];end;

    procedure UserCalc( _x, _v, _a : VectRPtr; _isubs, _UMMessage : integer; var WhatDo : integer );var

      Key : integer;begin

      Key := WhatDo;

      WhatDo := NOTHING;

      case _UMMessage of FORCESCALC_MESSAGE : begintry

       ForceFuncCalc( t, _x, _v, _isubs );

          except WhatDo := -1;end;

    procedure ControlPanelMessage( _x, _v, _a : VectRPtr; _isubs, _index : integer; _Value : double );var

      : _AshaninVarPtr;begin

      _:= _PzAll[SubIndx[_isubs]];end;

    end.

    Несмотря  на то, что данные были введены в  соответствии с инструкции! Не удалось смоделировать воздействие линейных сил и моментов.

Информация о работе Блок управления вертолетом БУВ – 8А: Создание имитационной обучающей программы