Моделирование привода лунохода в Матлабе

Автор работы: Пользователь скрыл имя, 12 Ноября 2011 в 14:03, курсовая работа

Описание

Цель работы - разработка модели виртуального мира, представляющего собой рельеф поверхности Луны, с необитаемым космическим аппаратом - луноходом. Модель разрабатываемого лунохода должна быть оснащена электрическими двигателем, который приводит в движение луноход.

Работа состоит из  1 файл

Создание виртуального мира.doc

— 565.50 Кб (Скачать документ)

Рис.1. Система  координат и положительное направление  вращение виртуальных объектов (правило  правой руки) 

3. Последовательность создания виртуального мира

3.1. Создание заготовки модели

     Запускаем Matlab и Simulink. Создаём окно редактора блок схем и перетаскиваем в него блоки: Matrix Concatenation, 3 блока Look-up Table и блок VR sink. Располагаем их так, как это показано на рис. 2. У блока Matrix Concatenation необходимо добавить третий вход и изменить метод объединения на вертикальный.

Рис. 2. Редактор блок схем.

     Блок  одномерной таблицы Look-Up Table

     Назначение: задает в табличной форме функцию одной переменной.

     Параметры:

  1. Vector of input values – Вектор значений входного сигнала. Может быть задан в виде дискретных значений (например, [1 2 7 9]), либо в виде непрерывного диапазона (например, [0:10]). Элементы вектора или граница диапазона могут быть заданы в виде вычисляемого выражения, например [tan(5) sin(3)].
  2. Vector of output values – Вектор выходных значений, соответствующий вектору входных значений.

      Блок  работает в соответствии со следующими правилами:

    1. Если входной сигнал равен одному из элементов вектора входных значений (Vector of input values), то выходное значение блока будет равно соответствующему элементу вектора выходных значений (Vector of output values). Например, пусть вектор входных значений равен [0 1 2 5], а вектор выходных значений [-5 –10 3 100], тогда при входном сигнале равном 1 выходной сигнал будет равен –10.
    2. Если входной сигнал не совпадает ни с одним из элементов вектора входных значений, то блок выполняет линейную интерполяцию между двумя ближайшими к нему элементами.
    3. Если входной сигнал выходит за границы вектора входных значений, то блок выполняет линейную экстраполяцию по двум крайним элементам.

     Блок  объединения сигналов в матрицу Matrix Concatenation.

     Назначение: блок выполняет объединение (конкатенацию) входных векторов или матриц.

     Параметры:

  1. Number of inputs – Количество входов.
  2. Concatenation method – Способ объединения. Выбирается из списка:

      Horizontal – Горизонтальный. Массивы объединяются добавлением новых массивов справа.

     Vertical – Вертикальный. Массивы объединяются добавлением новых массивов снизу.

3.1.1. Создание двигателя

     Характеристики  двигателя:

     Напряжение  – 14 В

Для создания модели двигателя необходимо запустить  Matlab и Simulink и перетащить в окно редактора блок схем следующие элементы: блок constant, 4 блока gain, 3 блока integrator, sum, scope. Расположить и соединить как указано на рис.3

Рис. 3. Схема  двигателя

     Источник  постоянного сигнала Constant

     Назначение: Задает постоянный по уровню сигнал.

     Параметры:

  1. Constant value - Постоянная величина.
  2. Interpret vector parameters as 1-D – Интерпретировать вектор параметров как одномерный (при установленном флажке).

   Значение  константы может быть действительным или комплексным числом, вычисляемым  выражением, вектором или матрицей.

   Усилители Gain

   Назначение: выполняют умножение входного сигнала на постоянный коэффициент.

   Параметры:

  1. Gain – Коэффициент усиления.
  2. Multiplication – Способ выполнения операции. Может принимать значения (из списка):

      Element-wise K*u– Поэлементный.

      Matrix K*u – Матричный. Коэффициент усиления является левосторонним операндом.

      Matrix u*K – Матричный. Коэффициент усиления является правосторонним операндом.

  1. Saturate on integer overflow (флажок) – Подавлять переполнение целого. При установленном флажке ограничение сигналов целого типа выполняется корректно.

   Параметр  блока Gain может быть положительным или отрицательным числом, как больше, так и меньше 1. Коэффициент усиления можно задавать в виде скаляра, матрицы или вектора, а также в виде вычисляемого выражения. В том случае если парметр Multiplication задан как Element-wise K*u, то блок выполняет операцию умножения на заданный коэффициент скалярного сигнала или каждого элемента векторного сигнала. В противном случае блок выполняет операцию матричного умножения сигнала на коэффициент заданный матрицей.

   По  умолчанию коэффициент усиления является действительным числом типа double.

   Для операции поэлементного усиления входной  сигнал может быть скалярным, векторным  или матричным любого типа, за исключением  логического (boolean). Элементы вектора должны иметь одинаковый тип сигнала. Выходной сигнал блока будет иметь тот же самый тип, что и входной сигнал. Параметр блока Gain может быть скаляром, вектором или матрицей либого типа, за исключением логического (boolean).

   При вычислении выходного сигнала блок Gain использует следующие правила:

  • Если входной сигнал действительного типа, а коэффициент усиления комплексный, то выходной сигнал будет комплексным.
  • Если тип входного сигнала отличается от типа коэффициента усиления, то Simulink пытается выполнить приведение типа коэффициента усиления к типу входного сигнала. В том случае, если такое приведение невозможно, то расчет будет остановлен с выводом сообщения об ошибке. Такая ситуация может возникнуть, например, если входной сигнал есть беззнаковое целое (uint8), а параметр Gain задан отрицательным числом.

   Блок  вычисления суммы Sum

   Назначение: вполняет вычисление суммы текущих значений сигналов.

   Параметры:

    1. Icon shape – Форма блока. Выбирается из списка.

     round – окружность,

     rectangular – прямоугольник.

    1. List of sign – Список знаков. В списке можно использовать следующие знаки: + (плюс), - (минус) и | (разделитель знаков).
    2. Saturate on integer overflow (флажок) – Подавлять переполнение целого. При установленном флажке ограничение сигналов целого типа выполняется корректно.

     Количество  входов и операция (сложение или вычитание) определяется списком знаков параметра List of sign, при этом метки входов обозначаются соответствующими знаками. В параметре List of sign можно также указать число входов блока. В этом случае все входы будут суммирующими.

     Если  количество входов блока превышает  3, то удобнее использовать блок Sum прямоугольной формы.

     Блок  может использоваться для суммирования скалярных, векторных или матричных  сигналов. Типы суммируемых сигналов должны совпадать. Нельзя, например, подать на один и тот же суммирующий блок сигналы целого и действительного типов.

     Если  количество входов блока больше, чем  один, то блок выполняет поэлементные операции над векторными и матричными сигналами. При этом количество элементов в матрице или векторе должно быть одинаковым.

Если  в качестве списка знаков указать  цифру 1 (один вход), то блок можно использовать для определения суммы элементов вектора.

     Блок  аналогового интегратора Integrator

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

     Параметры:

    Integration method – Метод численного интегрирования:

      Forward Euler - Прямой метод Эйлера.

     Метод использует аппроксимацию T/(z-1) передаточной функции 1/s. Выходной сигнал блока рассчитывается по выражению:

      y(k) = y(k–1) + T*u(k–1),

      y – выходной сигнал интегратора,

      u – входной сигнал интегратора,

      T – шаг дискретизации,

      k – номер шага моделирования.

      Backward Euler – Обратный метод Эйлера.

     Метод использует аппроксимацию T*z/(z–1) передаточной функции 1/s. Выходной сигнал блока рассчитывается по выражению: 
y(k) = y(k–1) + T*u(k).

       Trapeziodal – Метод трапеций.

     Метод использует аппроксимацию T/2*(z+1)/(z–1) передаточной функции 1/s. Выходной сигнал блока рассчитывается по выражению: 
x(k) = y(k–1) + T/2 * u(k–1).

     Осциллограф Scope

     Назначение: строит графики исследуемых сигналов в функции времени. Позволяет наблюдать за изменениями сигналов в процессе моделирования.

     Для проверки работы двигателя можно  запустить модель кнопкой start simulation и два раза щёлкнуть на осциллограф. Если всё сделано правильно, то на осциллографе мы увидим два графика.

3.2. Создание виртуального мира

     Для создания виртуального мира заходим в V-Realm Builder и нажимаем кнопку New.

     Окно  редактора поделено на две части: слева будет отображаться древовидная  структура виртуального мира (пока там видна только надпись <New World>), а справа – объекты виртуального мира.

     Для начала создадим поверхность луны.

     Поверхность луны будем создавать с помощью инструмента <ElevationGrid Editor> показанный на рис.5.

 

Рис. 5.Инструмент <ElevationGrid Editor>

     Затем выберем направление источника  света (в нашем случае это солнце). Для этого выберем меню Nodes > Insert > Light > Directional light. C помощью свойства direction выбираем направление света (рис.6.), с помощью свойства color-цвет (рис.7.)

Рис.6. Окно настройки направления света

Рис. 7. Окно настройки цвета источника света

     Затем приступим к созданию лунохода. Для  начала создадим группирующий элемент  <Transform>, ( меню Nodes > Insert > Groups > Transform). И переименуем его в <lunohod>. Для переименования необходимо 2 раза щёлкнуть на Transform, подождать пару секунд (цвет фона станет синим) затем сменить имя. как это показано на рис.8.

Рис. 8. Последовательность переименования объекта transform.

     Создадим  корпус лунохода, для того чтобы он являлся дочерним объектом объекта lunohod, необходимо раскрыть список свойств объекта lunohod и выделить свойство children. Корпус представляет собой усечённый конус, для его создания используем элемент Extrusion (меню Nodes > Insert > Geometry > Extrusion). Имя объекта Transform меняем на korpus. Результат приведён на рис.9.

Рис.9. Иерархия объектов

     Затем переходим к редактированию объекта  korpus, для этого двойным щёлчком мыши по его названию, вызываем окно Extrusion Editor. В подменю Cross section жмём на кнопку <creates a triangle> (рис.10), а в подменю spine жмём на кнопку <creates a circle> (рис.11.)

     

Рис.10. Окно Extrusion Editor Cross section 

Рис.11. Окно Extrusion Editor spine

     Далее создадим нижнюю часть лунохода, для  её создания используем цилиндр ( меню Nodes > Insert> Geometry > Cylinder), не забываем что он также должен быть дочерним объектом объекта lunohod. Переименовываем его тем же образом, что и остальные объекты. Затем переходим к его редактированию. Выбираем свойство height и редактируем высоту цилиндра, как это показано на рис.12. Затем выбираем свойство radius и редактируем его, как это показано на рис.13.

Информация о работе Моделирование привода лунохода в Матлабе