Научная статья на тему 'К вопросу построения геометрических примитивов в интерполяторе 3D-принтера с управлением на основе FPGA'

К вопросу построения геометрических примитивов в интерполяторе 3D-принтера с управлением на основе FPGA Текст научной статьи по специальности «Электротехника, электронная техника, информационные технологии»

CC BY
326
195
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПЛИС / ИНТЕРПОЛЯТОР / АЛГОРИТМЫ БРЕЗЕНХЕМА / INTERPOLATOR / BRESENHAM ALGORITHMS / FPGA

Аннотация научной статьи по электротехнике, электронной технике, информационным технологиям, автор научной работы — Мусиенко Максим Павлович, Крайнык Ярослав Михайлович, Денисов Алексей Олегович, Бугаев Виктор Иванович

В статье рассмотрены вопросы интерполяции для обеспечения точного перемещения головки 3D-принтера с управлением на основе FPGA. Предложен метод интерполирования для дуги на основе быстрого вычисления координат по окружности, а также способ уменьшения количества циклов интерполяции при выполнении расчетов для отрезка. Предложены способы организации внутренней работы модулей интерполяции для отрезка и дуги при проведении расчетов.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по электротехнике, электронной технике, информационным технологиям , автор научной работы — Мусиенко Максим Павлович, Крайнык Ярослав Михайлович, Денисов Алексей Олегович, Бугаев Виктор Иванович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

ON GEOMETRIC PRIMITIVES CONSTRUCTION IN INTERPOLATOR OF 3D-PRINTER WITH CONTROL BASED ON FPGA

This scientific article provides consideration of interpolation problems in process of extruder's movement in 3D-printer under FPGA control. Method of interpolation for arc based on fast computation circle coordinates is proposed. In addition, method of decreasing number of interpolation iteration for cut is provided. Possibilities for organizing internal work of interpolation units in computation process are described.

Текст научной работы на тему «К вопросу построения геометрических примитивов в интерполяторе 3D-принтера с управлением на основе FPGA»

7universum.com

UNIVERSUM:

ТЕХНИЧЕСКИЕ НАУКИ

К ВОПРОСУ ПОСТРОЕНИЯ ГЕОМЕТРИЧЕСКИХ ПРИМИТИВОВ В ИНТЕРПОЛЯТОРЕ 3Б-ПРИНТЕРА С УПРАВЛЕНИЕМ НА ОСНОВЕ FPGA

Мусиенко Максим Павлович

д-р техн. наук, профессор, заведующий кафедрой информационных технологий и программных систем Черноморского государственного университета

имени Петра Могилы, Украина, г. Николаев E-mail: musienko2001@ukr.net

Крайнык Ярослав Михайлович

аспирант, Черноморский государственный университет имени Петра Могилы,

Украина, г. Николаев E-mail: codebreaker7@mail.ru

Денисов Алексей Олегович

соискатель, Черноморский государственный университет

имени Петра Могилы, Украина, г. Николаев E-mail: maildenisov@gmail.com

Бугаев Виктор Иванович

бизнес-консультант, Московский физико-технический институт

(государственный университет), РФ, г. Долгопрудный E-mail: vik362@list.ru

К вопросу построения геометрических примитивов в интерполяторе 3D-принтера с управлением на основе FPGA // Universum: Технические науки : электрон. научн. журн. Мусиенко М.П. [и др.]. 2014. № 4 (5) . URL: http://7universum.com/ru/tech/archive/item/1257

ON GEOMETRIC PRIMITIVES CONSTRUCTION IN INTERPOLATOR OF 3D-PRINTER WITH CONTROL BASED ON FPGA

Musienko Maksim

Doctor of Technical Sciences, Professor, Head of the Department of Information Technologies and Software Systems of Petro Mohyla Black Sea State University,

Ukraine, Nikolaev

Krainyk Yaroslav

Post-graduate, Petro Mohyla Black Sea State University, Ukraine, Nikolaev

Denisov Alexei

Candidate, Petro Mohyla Black Sea State University, Ukraine, Nikolaev

Bugaev Viktor

Business-Consultant, Moscow Institute of Physics and Technology State University,

Russia, Dolgoprudnyi

АННОТАЦИЯ

В статье рассмотрены вопросы интерполяции для обеспечения точного перемещения головки BD-принтера с управлением на основе FPGA. Предложен метод интерполирования для дуги на основе быстрого вычисления координат по окружности, а также способ уменьшения количества циклов интерполяции при выполнении расчетов для отрезка. Предложены способы организации внутренней работы модулей интерполяции для отрезка и дуги при проведении расчетов.

ABSTRACT

This scientific article provides consideration of interpolation problems in process of extruder's movement in 3D-printer under FPGA control. Method of interpolation for arc based on fast computation circle coordinates is proposed. In addition, method of decreasing number of interpolation iteration for cut is provided. Possibilities for organizing internal work of interpolation units in computation process are described.

Ключевые слова: ПЛИС, интерполятор, алгоритмы Брезенхема. Keywords: FPGA, interpolator, Bresenham algorithms.

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

Входными данными для расчетов в интерполяторе являются данные строки G-кодов. Наиболее часто употребляемыми с точки зрения печати изделия являются команды построения геометрических примитивов: прямого отрезка (G00, G01) и дуги (G02, G03). Именно в данные команды преобразуются траектории, которые описаны с помощью линий, сплайнов, кривых в CAD-средствах 3В-визуализации [4]. Из входной строки извлекается информация о следующей точке перемещения, после чего производится интерполирование для указанной точки.

В проекте RepRap [5] для расчетов при построении дуги используются вычисления с плавающей десятичной точкой [3]. Но данный подход не подходит для реализации в FPGA, поскольку операции для чисел с плавающей точкой требуют значительных аппаратных ресурсов, а также являются менее производительными, чем для целых чисел. В работах [1; 2] предложено использование алгоритмов Брезенхема для отрезка и окружности, что позволило использовать именно целочисленные вычисления. Однако еще одним важным примитивом является дуга, которая с использованием данного подхода рассмотрена не была.

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

В соответствии с форматом стандартных команд круговой интерполяции (G02 и G03) для построения дуги должны быть известны конечная точка, в которую необходимо переместиться из текущей точки, а также координаты центра окружности, на которой находится дуга. При известных значениях координат начальной и конечной точек есть возможность рассчитать центр окружности. Расчет координат центра окружности (i, j) производится на основе выражений:

г =

x - У

■л/4

2 2 2 r - x - y

2 ■ д/ x2 + у2

J =

у+x ■ д/4

2 2 2 r - x - у

2 ■ д/ x2 + у2

(1)

(2)

При этом следует учитывать, что вычисление центра окружности для повышения производительности работы алгоритма целесообразно реализовать на основе целочисленных вычислений. Это объясняется также сложностью реализации в FPGA вычислений для чисел с плавающей точкой (использование нестандартных библиотек, снижение производительности и т. д.). Соответственно, при использовании целочисленных расчетов теряется точность, но удается добиться выигрыша в производительности аппаратной реализации.

Для применения данных выражений для целочисленных расчетов на каждом этапе вычислений выполняется отбрасывание дробной части выражения. Сравнение точности проведения вычислений для целых чисел и чисел с плавающей десятичной точкой на столе для печати с физическими размерами, обеспечивающими разрешение 30000 точек (рис. 1), показало, что данный подход позволяет получить достаточно малую разность в результатах, а значит, способен обеспечить необходимую точность вычислений для обеспечения перемещения инструмента.

Рисунок 1. Значение разности между целочисленными вычислениями и вычислениями с плавающей точкой

Проверка характеристик погрешности проводилась для точек координат по оси абсцисс и ординат в интервале [0; 30000] и для радиуса 1000 с шагом в 100 по осям координат. При этом значение разности между вычислением с плавающей точкой и целочисленным вычислением для всех рассмотренных случаев не превысило 1.

После нахождения центра окружности появляется возможность произведения расчетов построения окружности по алгоритму Брезенхема. Однако это является всего лишь промежуточным этапом на пути построения целевого примитива — дуги (команды G02, G03). Исходя из того, что модуль построения окружности позволяет получить на выходе все точки, которые принадлежат окружности, то задача состоит в том, чтобы блокировать точки, которые не принадлежат дуге. Для определения принадлежности точки дуге известны координаты начальной и конечной точки дуги (точки A и B). Обозначим текущую точку на окружности как P. В таком случае принадлежность точки P дуге при обходе против часовой стрелки можно определить исходя из соотношения

( xp - *а )(Ув - Уа ) - (Ур - У a )(хв - XA ) >= 0 • (3)

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

Пример определения точки по указанному соотношению для случая перемещения против часовой стрелки приведен на рис. 2.

Рисунок 2. Построение дуги на основе начальной и конечной точек

Поскольку помимо передачи данных в микроконтроллер существует возможность производить управление шаговым двигателем с помощью FPGA, появляется необходимость сохранения данных интерполяции в памяти устройства. Размер блока памяти следует выбирать исходя из геометрических параметров пространства для печати. В случае проведения интерполяции дуги на основе модуля окружности количество точек для сохранения составляет

ПС1ЕСЬЕ = 8 ' Г . (4)

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

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

Для случая линии количество точек, которые необходимо хранить в буфере, будет составлять

nLINE = max( *0 - *1> Уо - У1) . (5)

Для самого простого случая заполнение буфера происходит последовательно. Однако, в связи с тем, что при работе алгоритма Брезенхема для построения линии появляется возможность использовать симметричное отображение точек относительно середины отрезка (рис. 3), то количество циклов интерполяции можно сократить вдвое. Внесение данного изменения требует добавления двух дополнительных выводов в модуле для расчета отрезка. Поэтому целесообразно организовать дополнительные выходы координат симметричного отображения. В таком случае сохранение координат следует проводить от начала буфера в прямом порядке и элемента nLINE буфера в обратном порядке.

Рисунок 3. Сравнение результата построения линии по алгоритму Брезенхема с применением симметричного отображения

Полная реализация интерполятора в FPGA предусматривает также наличие канала приема данных и их предварительную обработку перед передачей в модули интерполяции. Таким образом, необходимо создание принимающего и мультиплексирующего модулей в FPGA, которые обеспечат передачу данных в соответствующие модули расчета. От MCU в FPGA по последовательному интерфейсу поступает строка, которая представляет собой команду G-код. Модуль принимает данные и выполняет их разбор и передает необходимую информацию в модули расчета для линии и окружности. Пример строки, которая подается на вход модуля — G01 10 20 200 1000.

Для реализации разбора входной строки в FPGA необходимо реализовать конечный автомат в модуле приема. Состояния автомата, используемые в процессе разбора входной строки для получения значений параметров команд, представлены в виде графа на рис. 4.

Рисунок 4. Граф состояний автомата разбора строки G-кода

На рис. 4 присутствуют состояния, для которых возможен переход в это же состояние. Они соответствуют преобразованию символьного представления числа в числовое значение. Указанные состояния можно разделить на две подгруппы:

1. состояния определения типа команды (S0-S6);

2. состояния определения параметров команд (S7-S15).

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

Рисунок 5. Схема подключения модулей системы

Поскольку для построения окружности предварительно необходимо выполнить также расчет координат центра, то модули, обеспечивающие данные действия, целесообразно объединить в один (рис. 6).

Рисунок 6. Объединение модулей расчета центра окружности и проведения

интерполяции для окружности

Создание структуры модуля верхнего уровня и объединение разработанных модулей произведено с использованием программного продукта Xilinx ISE 14.2 WebPack.

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

Список литературы:

1. Денисов А. Применение FPGA и алгоритмов Брезенхема для повышения быстродействия в системах позиционирования // Компоненты и технологии. — № 10. — 2013. — С. 97—100.

2. Мусиенко М.П., Бугаев В.И., Крайнык Я.М., Денисов А.О. Повышение быстродействия позиционирования экструдера BD-принтера с использованием MCU/FPGA // Технические науки — от теории к практике. — № 12 (25). — 2013. — С. 33—36.

3. ErikZalm/ [Электронный ресурс]. — Режим доступа. — URL:

https://github.com/ErikZalm/Marlin/blob/Marlin_v1/Marlin/motion_control.cpp (дата обращения: 12.03.2014).

4. Evans B. Practical 3D Printers: The Science and Art of 3D Printing / Apress, 2012. — Р. 37—40.

5. RepRap/ [Электронный ресурс]. — Режим доступа. — URL:

http://reprap.org/wiki/RepRap (дата обращения: 12.03.2014).

i Надоели баннеры? Вы всегда можете отключить рекламу.