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

Введение	4



Глава I. Сущность построения программно аппаратных комплексов с числовым программным управлением.	7

	§1.1. Оборудование с числовым программным управлением. Назначения, функции, существующие решения и модели	7

	§1.2. Шаговый двигатель. Устройство, принцип работы, управление	8

	§1.3. Архитектура микроконтроллеров. Необходимые параметры	12

	§1.4. Программная среда для микроконтроллера	15

	§1.5. Программная среда для модуля управления станком ЧПУ на ПК	16



Глава II. Реализация необходимых модулей управления станком ЧПУ.	22

	§2.1. Постановка задачи	22

	§2.2. Анализ данных и структура файла сверления с расширением *.drl.	24

	§2.3. Алгоритм чтения данных в микроконтроллере поступающих с ПК	28

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

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

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

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

	§2.8. Модернизация комплекса ЧПУ	41



Глава III. Анализ и тестирование комплекса.	45

	§3.1. Тестирование комплекса ЧПУ в комплексах компьютерного моделирования	45

	§3.2. Тестирование модуля сверления	46

	§3.3. Ручное управление	49

	§3.4. Выжигание	50



Заключение	55

Используемая литература	57

Приложение 1. Справочные данные и схемы.	58

Приложение 2. Исходные коды программ	61


Введение

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

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

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

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

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

- сверление отверстий для изготовления печатных электронных плат, автоматически управляя  ПК;

- ручное управление комплексом с ЧПУ средствами ЭВМ;

- перенос изображений с ПК на обрабатываемый материал путем термической обработки.

Для реализации такого программно-аппаратного комплекса необходимо  решить следующие задачи: 

а) изучить механические технологии для создания рабочей физической	области станка; 

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

в) изучить архитектуру и работу микроконтроллеров серии Atmel;

г) изучить режим обмена данными через интерфейс RS232;

д) разработать физическую аппаратную часть комплекса с минимальным количеством необходимых материалов и агрегатов;

е) разработать плату управления физической частью комплекса и взаимодействия с ПК, непосредственно через интерфейс RS232, на базе микроконтроллера Atmel;

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

з) создать программную часть комплекса на ПК, обеспечивающую следующие операции:

- сверление;

- выжигание;

- ручное управление;

и) ознакомиться с новейшими компьютерными симуляторами электронных устройств для тестирования аппаратно-программного комплекса.







Глава I. Сущность построения программно аппаратных комплексов с числовым программным управлением



§1.1. Оборудование с числовым программным управлением. Назначения, функции, существующие решения и модели

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

Числовое программное управление или ЧПУ — означает компьютеризованную систему управления, считывающую инструкции в G-code (технический формат данных для систем ЧПУ, описан далее) и управляющую станочной оснасткой и приводами металлообрабатывающих станков. ЧПУ производит интерполяцию движения обрабатывающего инструмента в соответствии с управляющей программой. 

Это одно из многих определений числового программного управления, взятое из материалов википедии [24], в дальнейшем ЧПУ. 

То есть основной отличительной функциональностью ЧПУ является компьютеризированная система управления, которая подразумевает наличие управляемого оборудования и управляющего терминала. В нашем случае, управляемым оборудованием будет многофункциональный станок на основе управления с ЧПУ и управляющим терминалом – ЭВМ со специальным программным комплексом. 

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

- шаговый двигатель, далее ШД;

- механическая часть комплекса;

- силовые ключи управления ШД;

- автономный терминал управления силовыми ключами, контроллер с возможностью автономной работы без участия ЭВМ и вмешательства оператора;

- модуль формирования команд, отправляемых на контроллер для управления аппаратным комплексом;

- интерфейс обмена данными между модулем управления и управляемым контроллером;

- линии приема-передачи информации между управляющим модулем и аппаратным комплексом.

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



§1.2. Шаговый двигатель. Устройство, принцип работы, управление

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

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

Двигатели постоянного тока (ДПТ) начинают работать сразу, как только к ним будет приложено постоянное напряжение [19], [20]. Переключение направления тока через обмотки ротора осуществляется механическим коммутатором - коллектором. Постоянные магниты при этом расположены на статоре. Шаговый двигатель может быть рассмотрен как ДПТ без коммутатора. Обмотки его являются частью статора. На роторе расположен постоянный магнит или, для случаев с переменным магнитным сопротивлением, зубчатый блок из магнитомягкого материала. Все коммутации производятся внешними схемами. Обычно система мотор - контроллер разрабатывается так, чтобы была возможность вывода ротора в любую, фиксированную позицию, то есть система управляется по положению. Цикличность позиционирования ротора зависит от его геометрии. 

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

Шаговые двигатели (ШД) делятся на две разновидности: двигатели с постоянными магнитами и двигатели с переменным магнитным сопротивлением (гибридные двигатели). С точки зрения контроллера отличие между ними отсутствует. Двигатели с постоянными магнитами обычно имеют две независимые обмотки, у которых может присутствовать или отсутствовать срединный отвод (см. рис.1.2.1). 


Рис.1.2.1 Униполярный ШД с постоянными магнитами.

Биполярные шаговые двигатели с постоянными магнитами и гибридные двигатели сконструированы более просто, чем униполярные двигатели, обмотки в них не имеют центрального отвода (см рис.2.2.2). 


Рис.2.2.2 Биполярный и гибридный ШД.

За это упрощение приходится платить более сложным реверсированием полярности каждой пары полюсов мотора. 

Шаговые двигатели имеют широкий диапазон угловых разрешений. Более грубые моторы обычно вращаются на 90° за шаг, в то время как прецизионные двигатели могут иметь разрешение 1,8° или 0,72° на шаг. Если контроллер позволяет, то возможно использование полушагового режима или режима с более мелким дроблением шага (микрошаговый режим), при этом на обмотки подаются дробные значения напряжений, зачастую формируемые при помощи ШИМ - модуляции. 

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

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

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

Схема управления для биполярного шагового двигателя требует наличия мостовой схемы для каждой обмотки. Эта схема позволит независимо менять полярность напряжения на каждой обмотке. На рис.3.2.3 показана последовательность управления для режима с единичным шагом. 


Рис.3.2.3 Управляющая последовательность для режима с единичным шагом.

На рис.4.2.3 показана последовательность для полушагового управления. 


Рис.4.2.3 Управляющая последовательность для режима с половинным шагом.



§1.3. Архитектура микроконтроллеров. Необходимые параметры

МК это микросхема (чип, камень, IC) - которая в ответ на внешние электрические сигналы действует в соответствии:

- с возможностями, заложенными производителем  

- с электроникой подключенной к МК 

- с программой, которую в него мы загрузили.

Возможность МК действовать по нашей программе - вот суть-соль МК.  
Это главное отличие МК от "обычных" НЕ программируемых  микросхем. AVR – это семейство МК от компании ATMEL, разработанных с учетом особенностей и удобства написания программ на языке Си. Почему AVR? 
Это не дорогие, широко доступные, надежные, простые, довольно быстро считающие  большинство инструкций выполняется за 1 такт - т.е. при кварце 10 МГц выполняется до 10 млн. инструкций в секунду. 

AVR имеют развитую периферию, т.е. набор аппаратуры окружающей процессор-вычислитель в одном корпусе МК или набор встроенных в МК электронных устройств, блоков, модулей [18]. 



Для управления ШД необходим промежуточный силовой ключ для усиления импульсов по току и контролер, обеспечивающий, как управление ШД, так и взаимодействие с ПК. Наиболее понятным и подходящим по требуемым параметрам можно считать 8-разрядный микроконтроллер фирмы AVR - AT Mega 8 с с 8 Кбайтами внутрисистемно программируемой Flash памяти, имеющего следующие отличительные способности:

8-разрядный высокопроизводительный AVR микроконтроллер с малым потреблением; прогрессивная RISC архитектура; 130 высокопроизводительных команд; большинство команд выполняется за один тактовый цикл; 32 8-разрядных рабочих регистра общего назначения; полностью статическая работа; встроенный 2-цикловый перемножитель; энергонезависимая память программ и данных; 8 Кбайт внутрисистемно программируемой Flash памяти (In-System Self-programmable Flash); обеспечивает 1000 циклов стирания/записи; дополнительный сектор загрузочных кодов с независимыми битами блокировки; обеспечен режим одновременного чтения/записи (Read-While-Write); 512 байт EEPROM; обеспечивает 100000 циклов стирания/записи;  1 Кбайт встроенной SRAM, программируемая блокировка; обеспечивающая защиту программных средств пользователя; встроенная периферия; два 8-разрядных таймера/счетчика с отдельным предварительным делителем; один с режимом сравнения, один 16-разрядный таймер/счетчик с отдельным предварительным делителем и режимами захвата и сравнения; счетчик реального времени с отдельным генератором; три канала PWM, 8-канальный аналого-цифровой преобразователь (в корпусах TQFP и MLF), 6 каналов с 10-разрядной точностью; 2 канала с 8-разрядной точностью; 6-канальный аналого-цифровой преобразователь (в корпусе PDIP); 4 канала с 10-разрядной точностью; 2 канала с 8-разрядной точностью; байт-ориентированный 2-проводный последовательный интерфейс; программируемый последовательный USART; последовательный интерфейс SPI (ведущий/ведомый); программируемый сторожевой таймер с отдельным встроенным генератором; встроенный аналоговый компаратор; специальные микроконтроллерные функции; сброс по подаче питания и программируемый детектор кратковременного снижения напряжения питания; встроенный калиброванный RC-генератор; внутренние и внешние источники прерываний; пять режимов пониженного потребления: Idle, Power-save, Power-down, Standby и снижения шумов ADC; выводы I/O и корпуса; 23 программируемые линии ввода/вывода;  28-выводной корпус PDIP; 32-выводной корпус; TQFP и 32-выводной корпус MLF; рабочие напряжения: 2,7 - 5,5 В (ATmega8L), 4,5 - 5,5 В (ATmega8); рабочая частота: 0 - 8 МГц (ATmega8L), 0 - 16 МГц (ATmega8). 

Эти параметры во многом удовлетворяют требования для реализации программно-аппаратного комплекса, в связи с этим и было решено использовать именно этот микроконтроллер, как по техническим параметрам, так и по всем остальным, включая его распространенность и знакомую архитектуру команд. Назначение каждой ножки указано в Приложении 1 на рис.1.3.1.



§1.4. Программная среда для микроконтроллера

При написании программы для микроконтроллера использовался компилятор на C CodeVisionAVR. 

CodeVisionAVR - интегрированная среда разработки программного обеспечения для микроконтроллеров семейства Atmel AVR [17].

CodeVisionAVR включает в себя следующие компоненты:

компилятор языка Си для AVR; компилятор языка ассемблер для AVR; генератор начального кода программы, позволяющего произвести инициализацию периферийных устройств; модуль взаимодействия с отладочной платой STK-500; модуль взаимодействия с программатором; терминал. 

Выходными файлами CodeVisionAVR являются:

HEX, BIN или ROM-файл для загрузки в микроконтроллер посредством программатора; COFF - файл, содержащий информацию для отладчика; OBJ – файл. 

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

По состоянию на апрель 2008 года последней является версия 1.25.9.

Данные взяты с википедии [24].

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

Си (англ. C) — стандартизованный процедурный язык программирования, разработанный в начале 1970-х годов сотрудниками Bell Labs Кеном Томпсоном и Денисом Ритчи как развитие языка Би. Си был создан для использования в операционной системе (ОС) UNIX. С тех пор он был портирован на многие другие операционные системы и стал одним из самых используемых языков программирования. Си ценят за его эффективность; он является самым популярным языком для создания системного программного обеспечения. Его также часто используют для создания прикладных программ. Несмотря на то, что Си не разрабатывался для новичков, он активно используется для обучения программированию. В дальнейшем синтаксис языка Си стал основой для многих других языков. Данные взяты с википедии [24].



§1.5. Программная среда для модуля управления станком ЧПУ на уровне ПК

При написании программного модуля управления станком ЧПУ была выбрана за основу программная среда Borland C++Builder 6. Borland C++ Builder - выпущенное недавно компанией Borland средство быстрой разработки приложений, позволяющее создавать приложения на языке C++, используя при этом среду разработки и библиотеку компонентов Delphi. В настоящей статье рассматривается среда разработки C++ Builder и основные приемы, применяемые при проектировании пользовательского интерфейса.

Останавливаться на подробном описании текущей среды разработки управляющего модуля не будем, так как существуют множество учебных пособий и справочников по работе в Borland C++ Builder. При создании комплекса использовались материалы учебников [3],[5] и [6].

Также при разработке, написании и усовершенствовании программного комплекса использовались ранее полученные навыки и  статьи из сети Интернета, взятые с источников [18], [17], а также с различных форумов.

При написании программ, как для контроллера, так и для модуля управления, немалое значение имел комплекс тестирования пакета PROTEUS - симулятор электронных устройств, поддерживает микроконтроллеры   AVR, 8051,  Microchip PIC10, PIC16, PIC18, Philips
ARM7, Motorola MC68HC11 [23], полная система проектирования. Возможность тестирования, начиная от  идеи до результатов работы устройства и файлов для платы.

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

В настоящее время CAM-система представляет собой сложный программный комплекс. За последнее десятилетие сменилось несколько поколений CAM-систем.

По мнению экспертов, современная отечественная CAM-система, способная противостоять лучшим западным образцам, должна иметь следующие характеристики [25].



Развитые средства импорта геометрических моделей. 

Если представление геометрической модели в формате STL или VDA имеет определенные недостатки, связанные с точностью представления модели, а формат STFP еще не нашел должного распространения, то применение стандарта IGES вполне способно решить эту проблему. В настоящее время стандарт IGES является общепризнанным и обеспечивает передачу любой геометрической информации. Его поддерживают все современные системы автоматизированного проектирования.

Поддержка трехмерных объектов в NURBS-представлении.

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

Поддержки трехмерных моделей любой сложности. 

Современные CAM-системы позволяют создавать поверхностные и твердотельные модели высокой сложности (например, кузовные детали автомобиля). Обработка таких моделей возможна при отсутствии количественных и качественных ограничений в САМ-системе.

Средства доступа к элементарным объектам модели.

 Реальная модель состоит из множества поверхностей. Система должна позволять оперировать отдельными поверхностями (или их группами), что необходимо для достижения оптимальных технологических решений.

Средства модификации геометрической модели. 

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

Функции построения вспомогательных геометрических объектов.

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

Широкий спектр способов обработки. 

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

Автоматический контроль на подрезание. 

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

Средства автоматической идентификации зон недоработки.

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

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

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

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

Система не должна накладывать ограничений на форму используемого инструмента. Выполнение этого требования существенно усложняет алгоритмы построения траектории перемещения инструмента.

Средства моделирования процесса и результата обработки.

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

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

Задача трансляции данных из промежуточного формата (например, CLDATA) не является особенно сложной. Однако многообразие систем числового программного управления порождает проблему обеспечения совместимости с произвольным оборудованием. Средства настройки должны быть доступны на уровне пользователя.

Средства динамической визуализации.

 Характерной чертой современных систем является наличие развитых средств визуализации трехмерной модели. Использование таких технологий, как OpenGL или DirectX, позволяет добиться скорости генерации до нескольких кадров в секунду без использования дорогих аппаратных ускорителей, что позволяет динамически управлять ракурсом и масштабом изображения. Для решения этой задачи необходимо выполнить триангуляцию исходной модели, что не всегда просто при условии поддержки широкого набора форм представления трехмерных объектов.

Современный пользовательский интерфейс.

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

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

	Наиболее известными отечественными CAM-модулями являются системы SprutCAM, Компас-ЧПУ, Гемма-3D и др. 

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



Глава II. Реализация необходимых модулей управления станком ЧПУ

§2.1. Физическая модель аппаратной части 

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

	- направляющие с каретками;

	- шаговые двигатели;

	- силовые микросхемы управления ШД;

	- соединительные  разъемы и шлейфы.

	Направляющие с каретками были переоборудованы вместо бронзовых втулок на маятниковые подшипники, так как перемещение на бронзовых втулках с необходимыми нагрузками не представляется возможным из-за силы трения и малой мощности ШД. Подшипники обеспечивают свободное перемещение по координатам Х и У даже при значительных нагрузках (см. Рис.2.1.1). 

	

	Рис. 2.1.1. – применение маятниковых подшипников для кареток перемещения.

	Все детали были надежно закреплены на листе ДСП. Для обеспечения перемещения шпинделя станка по оси Z были использованы детали из обыкновенного CD привода, в котором  применена червячная передача для перемещения лазера над диском (см. Рис.2.1.2.). 

	

	Рис.2.1.2. – применение деталей от CD привода для оси Z.

	Все шлейфы ШД и двигателя шпинделя были проведены к соединительному разъему, который будет подключен к управляющей плате управления станком. Плата управления была собрана на базе микроконтроллера AT Mega 8 на монтажной плате с разъемом для программирования и необходимыми электронными элементами и микросхемами (см. Рис 2.1.3.). 

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

	

	

	Рис 2.1.3. – общий вид аппаратного комплекса с монтажной платой.

	Теперь есть аппаратно-программная часть, которая  управляет станком ЧПУ по трем координатам без использования ПК по предварительно «прошитым» в него алгоритмам и координатам. 

§2.2. Анализ данных и структура файла сверления с расширением *.drl.

	На первом шаге была разработана аппаратно-программная часть для сверления отверстий на плате для монтажа микросхем. Для этого был разработан алгоритм, который понимает определенный технический формат данных для сверления отверстий. Для осуществления поставленной задачи, был определен формат данных, с которым будет работать программный комплекс. Проанализировав информацию в Интернете о станках с ЧПУ, были сделаны следующие выводы: в основном все станки работают при помощи купленных драйверов управления ЧПУ и приложенных к ним программ “VriCNC”, которые разработаны за границей и стоят немалых денег. Но также из полученных демо-версий программ и “семплов” для ЧПУ было установлено, что в большинстве случаев для управления станками используется общепринятый формат “Gerber” работающий при помощи G- кодов.  Используя ресурсы [24] было получено: 

	G-code – это имя языка программирования для контроля над NC и CNC машинами. Был создан компанией Electronic Industries Alliance в начале 1960-х. Финальная доработка была одобрена в феврале 1980-о года как RS274D стандарт. В ходе разработки из-за огромной нехватки контроля над всеми многочисленными функциями и инструментами станков, несколько производителей CNC машин взяли G-code как стандарт. Дополнения и нововведения в G-code делалось самими фирмами производителями, поэтому каждый оператор обязан быть осведомлен в различиях между машинами разных производителей.

	Содержание файла Gerber  

	Ниже приведен простой файл Gerber, иллюстрирующий структуру и содержание формата:

	G90

	G70

	G54D10

	G01X0Y0D02

	X450Y330D01

	X455Y300D03

	G54D11

	Y250D03

	Y200D03

	Y150D03

	X0Y0D02

	M02

	1

	2

	3

	4

	5

	6

	7

	8

	9

	10

	11

	12

	Номера строк справа не являются частью файла, они были необходимы для изучения формата Gerber. Каждая строка представляет собой конкретную машинную команду, звездочка (*) – символ конца команды. Существуют разные типы команд и инструкций, начинаемые с G, D, M и данные координат X, Y.
Затем был осуществлен поиск приложений, работающий с подобным форматом. Внимание было остановлено на распространенной программе Sprint-Layout, предназначенной для разработчиков печатных плат. Данная программа имеет возможность экспортировать результаты в необходимом  нам формате Gerber. Теперь мы можем рисовать необходимые платы экспортировать результат для сверления отверстий в формате *.drl с G-кодами.

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

	- будет операция сверления;

	- будут поступать данные о рабочих переменных;

	- будет поступать блок координат;

	- конец операции. 

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

	Позиционирование станком осуществляться исходя из получаемых координат в формате “X123456Y123456Z123…”. То есть, первые три числа составляют целую часть числа, вторые три числа – дробную часть числа, а у координаты Z - только целую часть. Но в будущем, учитывая коэффициент расстояния на один шаг шагового двигателя на плоскости, будет отправляться только количество шагов для каждой координаты и необходимые команды. 

	Итак, о структуре данных в файле *.drl.  

	В программе Sprint-Layout  был создан проект платы с тремя отверстиями. Внутренний диаметр отверстий установлен  1 мм. Размер платы не принципиален. Затем из меню Файл->Экспорт файла->"Формат Excellon" вызван мастер экспорта сверловки. Установлено Значение «сверлить со стороны печати» или со стороны монтажа (инвертируется горизонтально). Выбрана метрическая система измерения. В поле «Число после запятой» выбрано значение 3.3 и убрана галочка с удаления нулей, как показано на рис. 2.2.1.

	

	Рис. 2.2.1. – Экспорт файлов на сверление.

	

	Это  для того чтобы заранее подготовить файл для более удобного конвертирования в приложении для отправки на ЧПУ. Нажали ОК, указано имя файла и сохранено. Например, 123.drl. Затем, открывая полученный файл любым текстовым редактором имеем следующее:

	

	M48

	T1C001000

	%

	G05

	M71

	T1

	X008000Y009000

	X019000Y008000

	X030000Y004000

	M30

	В заголовке файла информация о версии языка, далее информация о том, что работаем с метрической системой и диаметр отверстия, в нашем случае это 001000 что означает диаметр сверла 1 мм. Затем команда G05 говорит о том, что будет осуществляться операция сверления. Затем начинается блок координат от команды T1, которая указывает на то, что сверлим с отверстия с диаметром 1 мм. И далее три строки данных с информацией о координатах. M30 означает конец программы. Из файла *.drl необходима только информация о координатах, а остальные параметры указываются непосредственно в приложении.

	Для реализации данной задачи необходимо следующее:

	Чтение данных из файла в массив построчно;

	Анализ каждой считываемой строчки на содержание текста;

	Если встречается код G05 (команда на сверление), то продолжаем анализ и считываем данные координат в формате 3.3 и заносим их в массив чисел для последующего формирования рисунка просмотра сверления. 

	Если встречается код M30 (конец программы), то завершаем анализ файла. 

	Вот пример реализации данной задачи на языке C++ в среде C++ Builder:

	if (OpenDialog1->Execute())

	  {slist->LoadFromFile(OpenDialog1->FileName);   //загружает строки из файла (разделение по CR LF)

	    filedrl->Text=slist->Text;   // открываем файл для просмотра

	  } //это по нажатию кнопки «Загрузить» 

	    //Затем анализ файла

	for(int i=0; i < s; i++ ) // s – количество строк

	    { str = slist->Strings[i]; // считываем из массива строку

	      if (str == "G05")       // и проверяем на наличие кода G05

	        { for (i=i+3;i<s-1; i++) // есть код, читаем координаты

	          { str=slist->Strings[i];

	//… и далее код программы

	

	

§2.3. Алгоритм чтения данных в микроконтроллере поступающих с ПК через UART

	Для управления станком с ЧПУ, используя микроконтроллер, была сформирована  совокупность команд и данных, которые будут «пониматься» контроллером, обеспечен диалог ПКМК. Это необходимо для того, чтобы обойти причину нехватки памяти на МК. Ведь передаваемый объем может быть намного больше объема ОЗУ на МК. Для этого было решено формировать буфер приема на МК в 255 байт (255 символов – это с запасом в 2 – 3 раза) и после передачи строки данных дожидаться подтверждения выполнения предыдущей команды и сигнал на разрешение передачи следующей строки. Проанализировав все необходимые условия, было решено разработать алгоритм приема данных на контроллере, так как на нем более ограничены возможности реализации различных методов. 

	Программирование контроллера изначально выполнялось в среде Code Visio AVR на языке C. Во избежание частого перепрограммирования МК, работа программы тестировалась в комплексе Proteus. Однако во время работы часто наблюдались различия выходных результатов в протеусе и  на самом деле, на «железе». 

	Для решения поставленной задачи, были анализированы функции и процедуры, имеющиеся в 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. Поэтому алгоритм сверления отверстия на МК будет следующим: 

	Получили команду G05 на сверление в основном цикле программы;

	Передаем управление процедуре сверления;

	Ожидаем строку с данными о начальной позиции сверла (ZN{значение}) и заносим его в переменную zn;

	Ожидаем строку с данными о максимальной позиции сверла (глубина опускания сверла  - ZH{значение}) и заносим его в переменную zh;

	Ожидаем строку с командой DRL1 (старт сверления) и передаем управление в цикл сверления;

	Ожидаем строку с командой DRL0 (конец сверления) и передаем управление в основной цикл программы, предварительно инициализировав станок ЧПУ, если нет такой строки, то выполняем далее;

	Ожидаем строку с координатами в формате “{значение_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. Выжигание

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

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

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

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

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

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

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

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

	В программном продукте управления станком ЧПУ необходимо реализовать модуль конвертирования векторных файлов (например *.dxf – стандартный формат данных, используемый во многих программных продуктах для создания векторных изображений в формате Gerber) в блок данных для отправки на микроконтроллер. Второй вариант – создание модуля непосредственного рисования кривых линий, прямых, окружностей и т.д. и подготовка  блока данных для отправки на микроконтроллер. 

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

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

	I – На микроконтроллере:

	Ожидание команды на выжигание;

	Получение необходимых параметров для выполнения операции;

	Ожидание команды на начало получения блока данных о точках;

	Получение данных о координатах точки для выжигания;

	Перемещение «выжигателя» в указанную точку;

	Опускание выжигателя на указанную высоту для выжигания;

	Временная задержка на поверхности материала на выжигание;

	Поднимание выжигателя на начальную (указанную) высоту;

	Если не пришла команда конца блока данных, выполнение с 4 шага;

	 Конец операции, инициализация станка.

	II – В программном комплексе на ПК.

	Загрузка изображения в поле обработки по нажатию кнопки;

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

	Отправка блока данных с ПК на МК в режиме диалога по нажатию кнопки с визуализацией процесса и ведением статистики выполнения операции выжигания.

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

	

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

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

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

	- для выжигания одной точки необходимо выполнить три команды в отличие двух при сверлении: 

	а) перемещение шпинделя станка в указанную точку координат;

	б) опускание выжигателя на поверхность материала для выжигания;

	в) поднимание выжигателя в начальную точку и ожидание данных о следующей точке.

	Алгоритм и программную реализацию модуля выжигания по точкам на ПК рассмотрим более подробно.

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

	 После загрузки изображения, оно появится в поле приложения для визуального наблюдения. Далее необходимо анализировать информацию на изображении для формирования блока данных на отправку на МК. Для этого было решено программно исследовать каждый пиксель изображения на цветовую информацию. Практически это было реализовано при помощи функции ImageV->Canvas->Pixels[x][y], которая возвращает число и трех составляющих цветовой палитры. Чем меньше это число, тем темнее пиксель на изображении. Используя эту функцию, было решено отбирать только те точки, интенсивность  которых можно задавать непосредственно на форме приложения управления станком ЧПУ. Для этой цели был использован ползунок с ограничивающими параметрами в виде числовых констант под названием Интенсивность. Можно указать выбор пикселей, начиная от черных и заканчивая всеми пикселями, отличными от белых. 

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

	После формирования блока данных, в отведенное поле выводятся данные, которые практически готовы для отправки на МК. Далее по нажатию кнопки отправляется блок данных с командой на выжигание и с параметрами, необходимыми для выполнения операции. Командой на выжигание является текстовая строка "G22\n", за ней отправляются данные о начальной точке, точки достижения поверхности обрабатывания, временной задержки и отправка строки "DRL1\n", указывающая, что сейчас будет передача данных о координатах точек. И затем включается таймер ведения диалога между МП и ПК, каждая последующая строка будет отправляться   лишь после получения подтверждения о выполнении предыдущей команды в виде строки координат о положении шпинделя в координатной плоскости.

	

	Рис. 2.7.1. – внешний вид модуля выжигания.

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

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

	

§2.8. Модернизация комплекса ЧПУ

	Ранее описывалась модернизация станка, заключающаяся в увеличении передаточного числа от ШД к лентам перемещения кареток в координатах X и Y. Теперь, проанализировав еще раз модуль управления ШД на микроконтроллере, было решено увеличить точность программно. В первую очередь был проанализирован предполагаемый результат данного мероприятия. Теоретически, была поставлена задача: сократить минимальное расстояние перемещения каретки станка с 0.8 мм до 0.2 мм, что  удовлетворило бы большинство потребностей при выполнении различных операций. То есть точность станка предполагается увеличить в 4 раза. 

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

	for(i=1;i<=ar;i++)   

				//импульсы шаг Ось X вперед

	{     

		PORTD.4 = 0;   PORTD.7 = 1;      //0001

			delay_ms(sleep);

		PORTD.5 = 0;   PORTD.4 = 1;      //0010

			delay_ms(sleep); 

		PORTD.6 = 0;   PORTD.5 = 1;      //0100

			delay_ms(sleep);

		PORTD.7 = 0;   PORTD.6 = 1;      //1000

			delay_ms(sleep);

	}  

	

	Данная подпрограмма вызывается при необходимости вращения шагового двигателя для перемещения каретки оси Х вперед на один шаг. Из цикла видно, что для этого необходимо отправить 4 импульса, как и описывалось в теории управления шаговым двигателем. Если подавать за один вызов управления ШД только один импульс, то в 4 раза сократится угол, на который провернется ШД, следовательно, и расстояние, проходимое шпинделем станка в координатной плоскости.

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

	  	for(i=1;i<=ar;i++)

	{          //импульсы шаг Ось X вперед

			switch (bx) 

	 {

		case 0 : PORTD.4 = 0; delay_ms(sleep); PORTD.4 = 1; bx++; break;   // 0001

		case 1 : PORTD.5 = 0; delay_ms(sleep); PORTD.5 = 1; bx++; break;   // 0010

		case 2 : PORTD.6 = 0; delay_ms(sleep); PORTD.6 = 1; bx++; break;   // 0100

		case 3 : PORTD.7 = 0; delay_ms(sleep); PORTD.7 = 1; bx=0; break;   // 1000

			default :;

	 } 

	}              

	

	В подпрограмме была введена новая переменная bx  которая и выполняет функцию сохранения позиции. 4 импульса – 4 возможных значений в дополнительной переменной. При Подаче одного импульса – увеличивается значение bx на 1 и при следующем вызове подпрограммы будет подан «нужный» импульс. При достижении 4 импульса, переменная обнуляется, и цикл подачи импульсов будет продолжаться в соответствии с таблицей импульсов для управления ШД. Также была изменена подпрограмма перемещения каретки в противоположную сторону. Были изменены только подпрограммы управления ШД в режиме полного шага. В случае успешного тестирования будут изменены и подпрограммы управления ШД в режиме половинного шага.

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

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

		for(i=1;i<=ar;i++)

	{

	          //импульсы шаг Ось X

			switch (bx) 

	 {

		case 0 : PORTD.7 = 0; delay_ms(sleep); PORTD.7 = 1; bx=3; break;   // 1000

		case 1 : PORTD.4 = 0; delay_ms(sleep); PORTD.4 = 1; bx--; break;   // 0001

		case 2 : PORTD.5 = 0; delay_ms(sleep); PORTD.5 = 1; bx--; break;   // 0010

		case 3 : PORTD.6 = 0; delay_ms(sleep); PORTD.6 = 1; bx--; break;   // 0100

		default : ;

	 }  

	}

	

	Сравнив с предыдущим фрагментов, видно, что переменная bx не увеличивается, а уменьшается, и порядок фаз подобран в соответствии с теоретическими расчетами.

	Вновь был «прошит» микроконтроллер, инициализация, тестирование, и успешный результат. Цель была достигнута, теперь точность  позиционирования в 4 раза выше, а от первоначального результата в 8 раз, и за один шаг, шпиндель проходит расстояние 0.2 мм.

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

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

		for(i=1;i<=ar;i++)

	{          //импульсы полушаг Ось X Вперед

			switch (bx) 

	 {

		case 0 : PORTD.7 = 0; PORTD.4 = 0; delay_ms(sleep);   //1001

			PORTD.7 = 1; delay_ms(sleep);                     //0001

							PORTD.4 = 1; bx++; break;

		case 1 : PORTD.4 = 0; PORTD.5 = 0; delay_ms(sleep);   //0011

			PORTD.4 = 1; delay_ms(sleep);                     //0010

							PORTD.5 = 1; bx++; break;

		case 2 : PORTD.5 = 0; PORTD.6 = 0; delay_ms(sleep);   //0110

			PORTD.5 = 1; delay_ms(sleep);                     //0100

							PORTD.6 = 1; bx++; break;

		case 3 : PORTD.6 = 0; PORTD.7 = 0; delay_ms(sleep);   //1100

			PORTD.6 = 1; delay_ms(sleep);                     //1000

							PORTD.7 = 1; bx=0; break;

		default : ;

	 }               

	}

	

	Таким образом, была достигнута достаточная точность, которая также очень расширит возможность модуля сверления отверстий в отношении точности. Практически рассчитав новый коэффициент количества «шагов» ШД от пройденного расстояния, были внесены изменения в константы программного продукта управления ШД с ПК. 

	

	

Глава III. Анализ и тестирование комплекса

§3.1. Тестирование комплекса ЧПУ в комплексах компьютерного моделирования

	При конструировании программно-аппаратного комплекса важную роль на первом этапе занимает тестирование в эмулирующих реальную работу устройства программах. За основной комплекс эмулирования был взят пакет тестирования «протеус», который позволяет работать практически со схемами любой сложности и возможность эмулирования программы прошивки микроконтроллера. Пакет эмулирования электронных устройств позволяет обойти всевозможные ошибки при последующем конструировании реального аппаратно-программного комплекса. Огромное преимущество данного метода тестирования заключается в возможности проверки «прошивки» не прошивая программатором микроконтроллер. Ведь при наладке и конструировании комплекса приходится многократно изменять код программы, а тестирование на реальном комплексе показывает необходимость в изменении той или иной  подпрограммы кода для микроконтроллера.

	Одним минусом данного пакета тестирования, который был наиболее неблагоприятен при работе – незначительное несоответствие функционирования комплекса. Это связано с несоответствием тех или иных промежуточных команд взаимодействия, например, некоторые неучтенные разработчиками пакета заводские  особенности микроконтроллеров, а также немного различный интерфейс обмена между терминалом UART в «протеусе» и на ЭВМ. 

	В PROTEUS была смоделирована модель  взаимодействия между узлами и устройствами комплекса ЧПУ, которая включала в себя:

	- микроконтроллер;

	- терминал UART;

	- необходимые «кнопки», переключатели и т.д.;

	- светодиоды для индикации фаз ШД.

	Светодиоды было решено использовать вместо существующих моделей ШД для того чтобы можно было проконтролировать каждый импульс для правильной работы ШД. Комплекс эмулирования показан на рисунке 3.1.1.

	

	Рис. 3.1.1. – внешний вид комплекса в ПРОТЕУСЕ.

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

	

§3.2. Тестирование модуля сверления

	Первым был разработан модуль сверления отверстий, используя формат данных EXCELLON, описанный ранее. При запуске программы, реализующей управление комплексом ЧПУ, данный модуль является активным по умолчанию, ну или в случае его не активности, можно выбрать его, используя страничный выбор модулей (Page Control). В первую очередь необходимо подключить все соединительные провода аппаратной части с ПК и подать питание на станок ЧПУ. Далее открыть коммутируемый порт интерфейса RS-232. По нажатию копки загрузить, диалог загрузки предлагает выбрать файл формата *.drl. Выбираем ранее созданный файл сверления в программе рисования плат, и открываем его. Ниже кнопки появилась информация об имени текущего файла. Теперь необходимо проанализировать открытый файл, для этого нажимаем на, логически понятную кнопку, в  виде стрелочек вправо. По нажатию кнопки происходит обработка файла, которая естественно займет тот или иной временной интервал. При небольшом количестве отверстий этот интервал незначителен. При создании той или иной несложной схемы, количество отверстий не превысит 200-400 отверстий. Ведь даже  схемы, на которой около двухсот отверстий, подразумевают размещение, примерно 10 микроконтроллеров AT Mega 8 и необходимых элементов, или около 15 микросхем серии К155. 

	Но для тестирования была нарисована схема, на которой, как потом стало известно, 1243 отверстий, что очень подходит для тестирования комплекса. Анализ такого файла был осуществлен менее чем за секунду. Этот временной интервал также зависит и от производительности компьютера. Но при работе на разных ЭВМ, это не сильно различимо. После анализа файла, в поле Memo помещается блок данных для отправки на аппаратную часть комплекса, а на изображении в виде плоскости координат отмечаются зеленые точки, означающие отверстия для сверления – рис. 3.2.1.

	Также необходимо указать параметры для правильной работы устройства. Это такие как начальная позиция сверла, рабочая глубина сверла, начальная точка платы и размер платы. Эти данные будут влиять на вид работы станка. Основными параметрами являются начальная позиция сверла и рабочая глубина сверла. Начальная позиция определяет положение сверла в плоскости OZ над обрабатываемой поверхностью. А рабочая глубина – расстояние, на которое опустится или поднимется сверло. При сверлении необходимо экспериментально добиться оптимальных  параметров. Ведь чем меньше величина опускания сверла, тем быстрее оно будет просверлено, то есть нужно установить начальную позицию как можно ближе к обрабатываемой поверхности. 

	

	

	Рис. 3.2.1. – модуль сверления отверстий.

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

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

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

	На сверление около 100 отверстий ушло около 2 минут и ни одной ошибки. 

	

§3.3. Ручное управление

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

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

	

	Рис. 3.3.1. – Внешний вид модуля ручного управления

	

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

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

	Как известно, модуль сканирует изображение попиксельно. Например, для сканирования изображения разрешением 300*300 пикселей необходимо проанализировать 90 000 пикселей. Это занимает намного больше времени, чем при сверлении. И неудобство доставляет процесс сканирования большого изображения, когда возникает ощущение зависания приложения. 

	Загружаем изображение по нажатию кнопки, выпираем, открываем, оно появляется в соответствующем окне модуля. Сразу отображается размер в соответствующих полях, в нашем случае 87*202, и подсчитывается автоматически общее количество точек – 17574. Кнопка «Анализ» становится активной. Нажимаем, примерно 7 секунд, в соответствии с параметрами, отобранные пиксели  закрашиваются синим цветом – рис. 3.4.1.

	

	Рис. 3.4.1 – анализ изображения в модуле выжигания

	 В соответствующем поле видим, что выбрано 2214 точек. Это значительно больше чем при сверлении. Указав параметры, практически такие же, как и при сверлении, в отличие от времени задержки «выжигателя» на поверхности выжигания, нажимаем кнопку пуск. Для выжигания, предварительно, на станке необходимо установить выжигатель и подключить к нему питание (рис. 3.4.2.). 

	

	Рис. 3.4.2. – перенесение изображения на дерево выжиганием.

	При перенесении текущего изображения в виде очертания девушки на лист фанеры, ушло примерно 22 минуты. Это время зависит как от начальных параметров, так и от размера переносимого изображения. При тестировании был перенесен рисунок размером 297 X 400, общее число точек – 118800, при анализе со средней интенсивностью – 22 589 точек. А перенос изображения «выжигателем»  на материал заняло около 6 часов – рис. 3.4.2. 

	

	Рис. 3.4.2 – тестирование с большим количеством точек

	Но при выжигании возник сбой компьютера, и произошла остановка процесса с отключением питания на аппаратной части комплекса. А при включении питания происходит перезагрузка микроконтроллера и инициализация с установкой в начальную точку координат. Хорошо, что операция практически закончилась. Поэтому стоит вопрос о ведении журнала и использования ранее описанного модуля ручного управления для установки начальной позиции. А также усовершенствовать аппаратную часть комплекса для «запоминания» последней позиции с реализацией спящего режима.

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

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

	

	Рис. 3.4.4. – тестирование комплекса на протяжении 24 часов в сутки.

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

	

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

	

Заключение

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

Была разработана аппаратная часть, которая обеспечивает взаимодействие всех ШД, выключателей конечных положений кареток, платы управления и ПК через интерфейс RS232. Программная часть реализована таким образом, что есть возможность управлять всеми узлами станка, а также, благодаря открытому коду с комментариями, расширить функциональные возможности и модернизировать существующие модули управления.

 Тестирование комплекса позволило объективно дать оценку результату работы над данным проектом. Как уже говорилось, есть плюсы и минусы. К плюсам можно отнести:

- функционирование комплекса как единой системы с ЧПУ;

- реализация нескольких функций на базе станка ЧПУ;

- подробный открытый код любого модуля, обеспечивающего работу комплекса:

- возможность совершенствования и расширения функциональных операций комплекса;

- гибкость комплекса и стандартизация интерфейсов обмена между устройствами;

К минусам были отнесены следующие моменты:

- неправильный расчет необходимого времени для реализации изначально поставленных задач;

- отсутствие автономного питания контролера для предотвращения сбоев на уровне контролера;

- отсутствие программных решений ускорения обработки исходных данных.

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

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

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

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









Используемая литература

		Ан П., «Сопряжение ПК с внешними устройствами», Пер. с англ. – М.: ДМК Пресс, 2001. – 320 с.: ил.

		Анурьев В.И. Справочник конструктора-машиностроителя. В 3-х томах. Москва. «Машиностроение». 2001. 

		Дейтел Х., Дейтел П., Как программировать на C++ – 1001 с.

		Дунаев П.Ф., Леликов О.П. Конструирование узлов и деталей машин, М. Высшая школа, 1985.

		Коровин Б.Г., Прокофьев Г.И., Рассудов Л.Н. Системы программного управления промышленными установками и робототехническими комплексами.

		Кузьминов А.Ю. Интерфейс RS232. Связь между компьютером и микроконтроллером. – М.: Радио и связь, 2004. – 168 с.: ил.

		Левин И.Я. Справочник конструктора точных приборов. Москва. ОБОРОНГИЗ. 1962. 

		Литвин Ф.Л. Проектирование механизмов и деталей приборов. Ленинград. «Машиностроение». 1973. 

		Мортон Джон, Микроконтроллеры AVR. Вводный курс, пер. с англ. – М.: Издательский дом «Додэка - XXI», 2006. – 272 с.: ил. (Серия «Мировая электроника»).

		 Орлов П.И. Основы конструирования. В 3-х томах. Москва. «Машиностроение». 1977. 

		 Под редакцией академика Емельянова С.В. Управление гибкими производственными системами. Модели и алгоритмы.

		 Под редакцией Макарова И.М. и Чиганова В.А. Управляющие системы промышленных роботов.

		 Под редакцией профессора Сазонова А.А. Микропроцессорное управление технологическим оборудованием микроэлектроники.

		 Справочник. Приборные шариковые подшипники. Москва. «Машиностроение». 1981. 

		 Справочник металлиста. В 5 томах. Под ред. Богуславского Б.Л. Москва. «Машиностроение». 1978.

		 Фадюшин Л., Музыкант Я.А., Мещеряков А.И. и др. Инструмент  для станков с ЧПУ, многоцелевых станков. М.: Машиностроение, 1990.

		 Шпак Ю.А. Программирование на языке C для AVR и PIC микроконтроллеров – К.: “МК Пресс”, 2006 – 400 с.,   ил.

		 http://avr123.nm.ru/ - микроконтроллеры AVR, описание, инструкции. 

		 http://cec-mc.ru/ - устройство ШД, управление, применение.

		 http://cnc-stanky.narod.ru/ - ЧПУ станки, виды, устройство.

		 http://hobbycnc.hu - Комплексы с ЧПУ за рубежом. 

		 http://imafania.boom.ru – Самодельные  комплексы с ЧПУ.

		 http://proteus123.narod.ru/ - краткий курс - самоучитель PROTEUS.

		 http://ru.wikipedia.org/wiki/ - справочная википедия.

		 http://sapr2000.ru/ - САМ-системы, описание, методы. 





2