Разработка программно – аппаратного устройства с числовым программным управлением

Автор работы: Пользователь скрыл имя, 07 Апреля 2011 в 00:32, дипломная работа

Описание работы

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

Файлы: 1 файл

MyDip.doc

— 321.50 Кб (Скачать файл)

    Для решения поставленной задачи, были анализированы функции и процедуры, имеющиеся в Code Visio AVR для работы с вводом/выводом через UART. Анализ велся исходя из поставленной задачи. Необходимо принять строку с ПК, отделить от другой строки, прочитать ее, анализировать на содержимое, если это команда -  то перейти далее к анализу данных о координатах. Здесь главное правильно выбрать формат принимаемых данных, чтобы он был наиболее удобен для использования имеющихся функций. Первое время не удавалось «правильно» читать строки данных поступающих на МК, так как необходимо точно определить последний символ строки. А также прием и передача в МК организована на прерывании. И данные хранятся в том самом буфере, которых два – один на прием, другой на передачу. В Интернете [18], [19] и в научных источниках [9], [11], [17] для решения поставленной задачи  были найдены функции, которые сканируют получаемые данные, автоматически выделяя строки. Например, такая функция, как scanf(), которая считывает из входного потока данные в формате определенном в первом параметре и сохраняет их в переменных, адреса которых переданы ей в качестве следующих параметров. Например:

    Scanf(“%d,%d/n”,&x&y); - мы считываем два числа в десятичной форме, которые разделены запятой в переменные X, Y соответственно. Но, как говорилось ранее, есть проблема, касающаяся нахождения конца строк, и эта функция не совсем правильно работает с данными, которые поступают от ПК. Было решено создать «свою» процедуру, формирующую строки из поступающих данных. Приведем ниже реализацию алгоритма формирования строки:

    su[ii]=getchar();

         if (su[ii]=='\n')

            {

                sscanf(su,"G%d\n",&op);

      Опишем более подробно данный алгоритм. Мы не работаем напрямую с прерыванием по приему символа. Буфер формируется самостоятельно по прерываниям и не стоит загружать функцию формирования буфера лишними операциями. Мы, когда нам необходимо будет, спокойно считываем символы из буфера  (su[ii]=getchar();)  в строку su, используя индексный массив, и одновременно проверяем приходящий символ на наличие символа конца строки. При наличии такого, сканируем строку на всевозможно-необходимые для нас данные, которые могут быть в полученной строке. При помощи процедуры sscanf(su,"G%d\n",&op);, которая в данном случае сканирует строку su на наличие символа ‘G’ и при наличии такого помещает в переменную op число, находящееся в строке после символа ‘G’.

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

    §2.4. Формирование файла сверления для отправки на микроконтроллер

    Для ведения диалога ПКßàМК был организован алгоритм «общения» станка ЧПУ с ПК через интерфейс RS232 [1], [6]. Для этого организован диалог между МК и ПК, используя некоторый набор управляющих и информационных команд. Также, было учтено, что на МК размер буфера составляет 256 байт. То есть, при отправке большей информации, происходят потери данных и, вследствие этого, возникает ошибка работы, как станка ЧПУ, так и всей системы в целом. Для этого было решено отправлять данные на МК пакетами, размер которых не будет превышать 256 байт.

    Но  также нам необходимо знать, что отправлять. Был составлен список команд, которые будут использоваться для обеспечения диалога ПКßàМК. Например, отправленная на МК, команда G05  означает, что начинается операция сверления, G22 – операция выжигание.

    §2.5. Операция сверления

    Для сверлений отверстий необходимо знать координаты отверстия на плате  и глубину опускания сверла. Для  экономии времени и ресурсов, введем еще понятие начальной позиции  сверла, то есть если рабочий ход  сверла 100 мм, а толщина платы всего 3 мм, то нет необходимости полностью поднимать и опускать сверло над отверстием.  Функция перемещения по координатам на МК организована таким образом, что при выполнении в первую очередь перемещается ось Z, а затем ось X и Y. Поэтому алгоритм сверления отверстия на МК будет следующим:

  1. Получили команду G05 на сверление в основном цикле программы;
  2. Передаем управление процедуре сверления;
  3. Ожидаем строку с данными о начальной позиции сверла (ZN{значение}) и заносим его в переменную zn;
  4. Ожидаем строку с данными о максимальной позиции сверла (глубина опускания сверла  - ZH{значение}) и заносим его в переменную zh;
  5. Ожидаем строку с командой DRL1 (старт сверления) и передаем управление в цикл сверления;
  6. Ожидаем строку с командой DRL0 (конец сверления) и передаем управление в основной цикл программы, предварительно инициализировав станок ЧПУ, если нет такой строки, то выполняем далее;
  7. Ожидаем строку с координатами в формате “{значение_X},{значение_Y}” и заносим их в соответствующие переменные. Переводим сверло в указанную позицию, ось Z в позиции zn, затем включаем электродвигатель сверла, опускаем сверло до позиции zh,  и снова пункт 6;

    При тестировании данного алгоритма  не удалось добиться таких же результатов  как в симуляторе на контроллере. После многих попыток изменения кода программы удалось добиться правильной работы на «реальном» устройстве, но пришлось пожертвовать правильными результатами в симуляторе. Это обусловлено несоответствием анализа конца строки симулятора и рабочего приложения с контроллером. В конечном результате удалось добиться успеха и произвести сверление пробных отверстий. При тестировании операции сверления было обнаружено, что точность станка не соответствует требуемой. После проведения серии тестирований, было установлено, что за один шаг шагового двигателя шпиндель станка ЧПУ проходит расстояние в 1,6 мм. Это значит, что невозможно будет сверлить отверстия для промышленных микросхем, так как не позволит существующая точность. Было решено увеличить точность позиционирования шпинделя станка. Для этого нужно увеличить передаточное число от ШД к кареткам. Для этого, были заменены существующие шестерни на соответствующие большего диаметра. Заменив шестерни быстрым монтажом сверху существующих и при помощи клея, а также удаления ШД от шестерни, как показано на рис. 2.5.1, были проведены еще несколько операций сверления.  

Рис. 2.5.1. – увеличение передаточного числа  от ШД к кареткам.

    После модернизации станка вновь не удалось  добиться желаемой точности. Теперь за один шаг ШД шпиндель станка ЧПУ  перемещается на расстояние 0.8 мм. Это не то чего хотелось, но было решено оставить все так, как есть.

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

    При длительном тестировании было обнаружено, что иногда возникают ошибки сверления. Это обуславливается различными факторами, такими как помехозащищенность, отказ программных средств и различные неблагоприятные факторы. Для избегания данной проблемы было решено организовать систему контроля сверлимых отверстий и возможность контроля ошибочных операций с последующим исправлением ошибок.   Была написана процедура, организующая все необходимые функции контроля целостности операций, а также все необходимые доработки. Главные параметры для анализа целостности берутся из контроллера из данных, которые поступают на ПК после каждой завершенной операции перемещения каретки. В этих данных содержится информация о текущей позиции шпинделя станка ЧПУ. То есть в ответ мы должны получить ту же строку, которую отправили, и если строки различны, значит «ошибка», и добавляем данную строку в список ошибок для последующего исправления. Этим нам удалось добиться безошибочного сверления отверстий. Далее задумано развитие данного пункта. Но пока оставим это на будущее развитие.

      §2.6. Ручной режим

      Далее был создан модуль, который обеспечивает управление станком ЧПУ в режиме реального времени с набором различных команд. Команды управляют различными функциями станка ЧПУ. Среди них такие, как установка скорости, установка режима шага-полушага, включение-выключение двигателя сверла, перемещение каретки в трехмерном пространстве и другие. Все это было организовано использованием списка команд, взаимно понимаемых как контроллером, так и приложением, а также использованием уже имеющихся функций процедур на уровне, как микроконтроллера, так и на уровне ПК.

      Описание  используемых команд приведено ниже.

Команда Описание
G02 Команда на вызов процедуры ручного управления
DRL1 Старт процедуры
X10 Позиция каретки по оси X
Y15 Позиция каретки по оси Y
Z32 Позиция каретки по оси Z
SLEEP5 Время задержки между импульсами фаз (глобальная скорость)
RM1 Выбор режима половинного шага – полного шагового
DRL0 Конец процедуры
DR1 Включение (1) выключение (0) двигателя сверла

      Данные  команды распознаются контроллером и выполняются необходимые операции в соответствии с командами. На уровне приложения отправки данных команд, решение задачи ручного управление было достигнуто следующим образом. Созданы необходимые визуальные элементы управления позицией шпинделя станка, включением выключением электродвигателей, смены режимов и т.д. При изменении значений любого из элементов, по включению обработчика данного события отправляется существующая команда на МК. В ответ ожидается информация о текущем состоянии станка. Только после успешного получения ответа, вновь возможна отправка пакета данных на МК.

      После тестирования данного режима на реальном устройстве, было обнаружено, позиционирование станка не всегда выполняется в соответствии с управлением в приложении. Так как обработчик событий изменения параметров отправляет данные только при изменении данных на форме приложения. А отправка пакета данных происходит только после получения подтверждения предыдущей операции. На выполнение операции,  например перемещение каретки на определенное количество шагов, необходимо определенное время, и из-за этого пропускаются определенные пакеты данных. Для исправления данной ошибки было решено использовать либо очередь, что не совсем эффективно, либо организовать в C++ Builder таймер, в котором будет проводиться проверка соответствия данных на ПК и текущей позицией станка ЧПУ.

      §2.7. Выжигание

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

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

      Под методом «рисование» понимается выполнение операции выжигания путем  перемещения термического инструмента  на поверхности материала по заданной траектории кривыми линиями, прямыми и т.д.

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

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

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

Информация о работе Разработка программно – аппаратного устройства с числовым программным управлением