Применение объектно–ориентированного программирования и численных методов в решении задач кинематического анализа и синтеза механизмов
Изложен подход к решению на ЭВМ задачи анализа и синтеза механизмов с единичной степеню подвижности и жесткими звеньями с помощью объектно-ориентированного программирования и численных методов. Даны принципы формирования объектно-ориентированной модели механизма и основные формулы используемых численных методов: для решения задачи замыкания контура; для построения сплайнов положений характерных точек механизма по найденным их узловым значениям; для вычисления в произвольных точках механизма производных и определения по ним векторов угловых и линейных скоростей и ускорений механизма.
С развитием вычислительной техники в решении задач кинематического анализа и синтеза механизмов, а также силового расчета, традиционные графоаналитические методы стали все чаще заменяться аналитическими методами. Вначале вычислительная техника использовалась для проведения сложных вычислительных операций согласно результатам, полученным в результате аналитического решения. С помощью ЭВМ решались алгебраические и трансцендентные уравнения, одинаковые для различных положений механизма. Затем широкое применение находит метод процедурного структурирования решения. Типичным примером процедурно–ориентированного языка является Фортран, использование которого в решении задач механики привело к появлению специальных библиотек программирования.
По мере усложнения задач, необходимости хранения в памяти машины быстро увеличивающегося числа часто применяемых алгоритмов и программных решений, связанных с построением изображений и анимации на экране, акцент программирования стал смещаться в сторону совершенствования организации информации и разработки программ, построенных на модульном принципе, реализованном в языках С, Паскаль и многих других.
В настоящее время широкое распространение получил подход в программировании, названный объектно–ориентированным программированием (ООП), реализованный в языках С++, Паскаль (версии 6.0+), а также в других языках. Его основная идея заключается в объединении оперируемых данных (называемых свойствами) с обрабатывающими их процедурами (методами) в единое целое — объект.
Этот принцип позволяет максимально изолировать рассматриваемый объект, повысить надежность разрабатываемых программ, обеспечить легкость переноса объектов из одной программы в другую и обеспечить возможность взаимодействия объектов. Таким образом ООП можно рассматривать как модульный принцип программирования более высокого уровня.
Другим преимуществом ООП является возможность наследования объектами–потомками свойств и методов объектов–предков, а также переопределять методы потомков. Наследование позволяет создавать иерархическую структуру, описывающую решение задач механики машин.
Принципы ООП и широту их применения наглядно показывает известная библиотека «Turbo Vision», входящая в комплект Turbo Pascal версий 6.0 и 7.0.
В данной работе предпринята попытка с помощью объектно–ориентированного программирования и численных методов создать методику решения задач кинематики и силового расчета механизмов. С учетом возможности замены высших кинематических пар на низшие, эта методика может быть распространена и на механизмы с высшими кинематическими парами.
Рассмотрим кинематическую схему плоского механизма. Эта схема состоит из жестких звеньев в виде стержней и ползунов, связанных кинематическими парами 5–ого класса (рис. 1).
Рис. 1. Первоначальные объекты программирования задачи кинематики механизма
Объекты, соответствующие такой схеме, состоят из свойств, описывающих координаты геометрических фигур, образующих эти звенья (точки, прямые и длины звеньев), и методов–процедур, описывающих работу с этими данными (вращение звеньев, привязка точек к системе координат, отображение звеньев на экране).
Для задания координат точек, можно выбрать произвольную систему координат, единую для всего механизма. Вращение звеньев удобно производить в системе координат, начало которой соответствует положению точки–стойки, с помощью известной матрицы вращения вокруг оси Z. После произведения вращения, приведение полученных координат к системе координат механизма производится с помощью прибавления матрицы, составляющей координаты точки в системе координат механизма.
Объектами–потомками являются объекты, дополняющие представленный выше объект до группы Ассура. У такого объекта–потомка к свойствам добавляются длины других звеньев, координаты других стоек и т. п. Добавляются методы, задающие положения звеньев, присоединяющие данную группу к другим группам, описывающие соединение звеньев между собой, или присоединение к звеньям жестко связанных («приваренных») звеньев (рис. 2). А также методы для определения величин векторов скоростей и ускорений точек, характерных для данной группы Ассура.
Рис. 2. Представление группы Ассура как объекта–потомка
Последующее наращивание дерева иерархии связано с построением кинематической схемы механизма, то есть установлением связей между группами Ассура. В методы такого объекта войдут: последовательность присоединения групп Ассура, способ сборки, построение траекторий точек механизма, анимация механизма (в том числе — его масштабирование, перемещение и свободное вращение на экране дисплея), построение на экране изображений векторов скоростей и ускорений, привязанных к точкам механизма, построение их годографов (рис. 3). На рисунке показано такое построение в соответствии со структурной формулой .
Рис. 3. Кинематическая схема механизма как объект более высокого порядка
Перечисленные процедуры присоединения групп, а также вычисления скоростей и ускорений и изображения годографов, целесообразно выполнять с использованием численных методов. Их использование позволяет полностью отказаться от аналитического решения.
Рис. 4. Решение задачи замыкания контура для одной из групп Ассура
Задача замыкания контура с использованием численных методов может быть представлена как задача однопараметрической минимизации (рис. 4):
где — целевая функция, — назначенная точность сборки.
Задача состоит в отыскании такого положения точки , при котором расстояние от нее до точки будет равно . Так как все возможные положения точки лежат на окружности с центром в точке и радиусом , их можно найти путем умножения матрицы координат точки на матрицу вращения. Расстояние от точки до точки можно получить с помощью формулы:
Здесь координаты и заданы в системе координат , определенной в объекте, реализующем соответствующую группу Ассура.
Итерационную процедуру можно вести методом сканирования [3]. Смысл этой процедуры заключается в том, что при перемене характера изменения разности , знак угла поворота меняют на противоположный, а абсолютную величину угла сокращают. Итерационная процедура ведется до тех пор, пока значение целевой функции не окажется меньше .
Переход от системы координат группы Ассура к системе координат механизма можно произвести путем прибавления к полученной матрице положения вершины матрицы положения точки :
Рассмотренный численный метод позволяет получить таблично заданные функции положения вершин звеньев, образующих механизм. Табличное определение координат последовательного циклического ряда одноименных точек механизма, для механизмов со степенью подвижности , при заданной скорости ведущего звена, позволяет однозначно определить кинематические параметры этого механизма (скорости и ускорения). Для вычисления скоростей и ускорений, можно воспользоваться формулой Ньютона, дающей приближенное значение производной функции, заданной таблично с постоянным шагом. Для координаты по оси некоторой точки механизма эта формула примет вид:
где — конечные разности первого, второго и третьего порядков, а шаг аргумента табличных значений функции. Можно воспользоваться и менее точными формулами [4]:
Однако в отличие от аналитического решения, таблично заданная функция не позволяет найти положение механизма для аргумента, не совпадающего ни с одним из найденных табличных значений функции. Уменьшение шага приращения аргумента и увеличение количества рассматриваемых интервалов таблично заданной функции оказывается менее целесообразным, чем использование методов интерполирования. Это объясняется тем, что процесс решения задачи замыкания контура требует большего количества вычислений, чем процесс вычисления функции с помощью интерполяционной формулы, а кроме того требует больше машинной памяти. Применение для интерполяции кубического сплайна позволяет получить достаточно точное приближение, определенное для любых значений аргумента, которое можно считать приемлемой заменой аналитического решения.
Если совокупность найденных табличных значений вектора — это функция положения некоторой точки механизма, то с помощью кубического сплайна для обобщенной координаты (угла поворота кривошипа) можно найти непрерывную дважды дифференцируемую функцию:
Вид этой функции для проекции вектора на ось примет вид [3]:
где — табличные значения аргумента , — табличные значения функции от аргументов . Эти аргументы, являющиеся двумя соседними узловыми точками, выбираются так, чтобы величина оказывалась между ними, т. е. попадала в интервал .
Величины — шаги приращения аргумента на данном интервале (как правило принимается ).
Переменные — наклоны сплайна, численно равные значению производной от табличной функции , вычисленные в узлах, соответствующих и . Для их вычисления целесообразно использование приведенной выше формулы Ньютона, которая запишется следующим образом:
Аналогичный кубический сплайн можно получить и для проекций на две оставшиеся оси путем подстановки в приведенные формулы координат, соответствующих этим осям.
Выражения скоростей и ускорений (при угловой скорости кривошипа ) имеют вид [1]:
Применяя для вычисления производных формулу Ньютона, можно найти компоненты векторов скоростей и ускорений. Найденная дважды дифференцируемая функция позволяет более точно производить вычисление скорости и ускорения, так как с ее помощью можно уменьшать шаг аргумента, подставляемый в формулу Ньютона, и вычислять при этом малом шаге более точные значения векторов скоростей и ускорений.
Рассмотрение формул для определения скоростей и ускорений позволяет установить, что наклоны сплайна совпадают со значения скорости при построении сплайна функции , и — ускорения, при построении функции , что позволяет экономить машинную память при программной реализации вычислений.
С помощью полученных сплайнов можно построить на экране годографы положений, скоростей и ускорений, а также производить анимационное представление механизма с высокой скоростью регенерации изображения и малыми шагами приращения обобщенной координаты, что позволяет сделать анимацию плавной.
Рис. 5. Отображены скорости точек механизма
Рис. 6. Отображены ускорения точек механизма
На рис. 5—6 показаны примеры изображения векторов скоростей и ускорений различных точек для одного из положений кривошипно–ползунного шестизвенного механизма. Решение задачи реализуется с помощью программы на языке Pascal, разработанной на кафедре деталей машин и теории механизмов МАДИ (ГТУ).
Литература1. Попов С. А. Тимофеев Г. А. Курсовое проектирование по теории механизмов и машин /Под ред. К. В. Фролова — М.: Высшая школа, 1986 — 295 с.
2. Фаронов В. В Turbo Pascal 7.0 Начальный курс. — Учеб. пособ. — М.: Нолид, 1999.
3. Амосов А. А., Дубинский Ю. А., Копченова Н. В. Вычислительные методы для инженеров: Учеб. — М.: Высшая школа, 1994.