Например, Бобцов

Управляющая технологическая программа для серии автоматизированных полировально-доводочных оптических станков с компьютерным управлением

УДК 533.317.2: 536.455; 004.42; 681.4.053
УПРАВЛЯЮЩАЯ ТЕХНОЛОГИЧЕСКАЯ ПРОГРАММА ДЛЯ СЕРИИ АВТОМАТИЗИРОВАННЫХ ПОЛИРОВАЛЬНО-ДОВОДОЧНЫХ ОПТИЧЕСКИХ СТАНКОВ С КОМПЬЮТЕРНЫМ УПРАВЛЕНИЕМ

© 2011 г. С. И. Нефедов*; А. Е. Новинский*; Ю. Н. Соловьев** ** “Интел-2002”, Москва ** Научно-производственное объединение “Оптика”, Москва ** E-mail: plff@mail.ru, teopt@npooptica.ru

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

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

Коды OCIS: 220.0220; 220.4610

Поступила в редакцию 19.10.2010

Разработанная технологическая программа предназначена для выполнения на станках серии АПД (автоматизированный полировальнодоводочный) заранее подготовленных технологических сеансов формообразования поверхностей оптических деталей. Данная программа позволяет оператору контролировать исполнение технологических сеансов, отрабатывать аварийные ситуации и возобновлять исполнение после их устранения.
На оптических станках серии АПД ранее использовалась управляющая технологическая программа, работавшая под управлением операционной системы DOS (Disk Operating System). Необходимость в разработке новой программы связана с тем, что аппаратное обеспечение, использовавшееся ранее, в настоящее время не производится. А новое требует наличия на управляющем компьютере операционной системы Microsoft Windows XP, которая не позволяет корректно использовать старое программное обеспечение для DOS и, кроме того, повысились функциональные требования к самой управляющей программе.
В настоящее время на станках серии АПД используется программно-аппаратное обеспечение серии A3200 производства компании Aerotech (США). Контроллер A3200 является

виртуальным, т. е. его основная программная часть исполняется компьютером в режиме реального времени. Так как операционная система Windows XP не является системой реального времени, на управляющий компьютер дополнительно устанавливается расширение реального времени с жестким детерминизмом (hard real time) RTX (Real Time Extension) [1] производства компании IntervalZero (США). Это расширение включено в состав дистрибутива A3200.
Основные требования к программно-аппаратному обеспечению компьютера станка, необходимые для выполнения технологической программы, ограничиваются соответствующими контроллеру A3200 требованиями компании Aerotech. Это двухъядерный процессор (предпочтительно Intel Core 2 Duo, так как данный процессор обладает наилучшими скоростными показателями при взаимодействии Windows XP с RTX; крайне не рекомендуется использовать процессоры семейcтва Celeron и Atom), оперативная память от 2 Гб, жесткий диск от 40 Гб, плата IEEE 1394 (FireWire), так как данный интерфейс используется для связи компьютера с аппаратными контроллерами Aerotech; операционная система Microsoft Windows XP (Service Pack 2 и выше).

“Оптический журнал”, 78, 4, 2011

37

Программное обеспечение A3200 подразделяется на две основные части. Первая из них выполняется подсистемой реального времени RTX – она отвечает за расчет траектории движения и взаимодействие с аппаратными контроллерами NServo, управляющими приводами станка. А вторая – подсистемой Windows, которая отвечает за настройку работы A3200 и передачу команд в подсистему реального времени.
Работа на оптическом станке серии АПД заключается в выполнении технологических сеансов, представленных в виде текстовых файлов, содержащих G- и M-коды (RS-274) и их расширения.
В настоящее время предусмотрена работа станка серии АПД по 6 осям, однако, в технологическую программу заложена возможность расширения этого количества. Одна из осей является шпиндельной, две оси – поворотные. Кроме того, к контроллеру A3200 подключены реле включения приводов станка, разрешения работы приводов станка и включение нагружения.
В составе программного обеспечения A3200 имеется программа, позволяющая выполнять технологические сеансы, однако ее функциональность не отвечает предъявляемым требованиям. В ней не предусмотрена визуализация процесса выполнения технологических сеансов, нет блокировок, определяемых состоянием станка (например, отсутствует запрет выполнения технологических сеансов до поиска нулей осей), отсутствует корректное отключение шпинделя и нагружения при паузе и аварийной остановке, нет и корректного возобновления выполнения технологического сеанса. Для настройки и изменения параметров контроллера A3200 предполагается использовать его штатные программные средства. Настройка параметров работы технологической программы, параметров отображения, кнопок управления устройствами и проч. проводится через ini-файл.
Для управления программно-аппаратным обеспечением A3200 компания-разработчик предоставляет программные интерфейсы (API) для различных языков программирования в виде соответствующих библиотек и документации. Разработанная технологическая программа написана на языке C++ и использует API A3200 для языка C.
При разработке пользовательского интерфейса технологической программы принима-

лись во внимание современные подходы к построению промышленных пользовательских интерфейсов. Одним из выполненных требований является возможность управления технологической программой с клавиатуры без использования мыши. Предусмотрена возможность перевода пользовательского интерфейса на различные языки.
При разработке технологической программы одним из основных требований являлась возможность оператора контролировать работу станка без задержек вне зависимости от размера и сложности технологических сеансов, нагрузки на компьютер и др. Что чрезвычайно важно в случае аварийной остановки перемещения инструмента станка или при выполнении технологического сеанса. В связи с этим архитектура программы строилась на следующих принципах: разделение программы на потоки выполнения [2], взаимодействие без блокировок между потоками выполнения, максимальное использование “коротких” функций, использование “длинных” функций с возможностью прерывания их выполнения, отсутствие модальных окон, быстрая отрисовка сложных изображений, использование быстрых файловых операций.
В технологической программе предусмотрены три потока выполнения: поток обработки пользовательского ввода, поток управления контроллером A3200, поток расчета и отрисовки G-кода.
Для взаимодействия между потоками применяется стандартная подсистема Windows обмена сообщениями [2]. Так как при большом количестве сообщений эта подсистема может блокировать их передачу, используются “разумное” количество и частота сообщений между потоками, применяются “короткие” функции для их обработки, неблокирующие функции API A3200, а также алгоритмы “сжатия” очереди сообщений. Использование циклических буферов (circular buffer) позволяет передавать данные между потоками без блокировок. Это достигается выполнением соответствующих требований при их использовании. Таких как
– Однонаправленность: буфер используется для передачи данных только между двумя конкретными потоками в одну сторону, т. е. один поток в буфер пишет, другой читает. Для передачи данных в обратном направлении должен использоваться другой буфер.
– Достаточно большой размер: размер буфера выбирается таким образом, чтобы исключить

38 “Оптический журнал”, 78, 4, 2011

его “переполнение” (т. е. затирания пишущим потоком данных, еще не считанных читающим потоком). Это требование может быть смягчено, если данные имеют короткое “время жизни” (например, обновляемая несколько раз в секунду информация о состоянии контроллера).
– Отсутствие выделения памяти: память под элементы буфера должна быть выделена заранее, а оператор копирования элементов буфера не должен использовать функций выделения памяти.
– Работа по событию: читающий поток обращается к буферу только по команде пишущего потока. В данном случае в качестве интерфейса передачи таких команд используется стандартная система передачи сообщений Windows.
Поток обработки пользовательского ввода получает команды оператора через сообщения от клавиатуры, мыши и пульта управления и с заданной периодичностью – сообщения от потока управления контроллером A3200. При этом он отображает состояние контроллера и простые элементы управления, перестраивает пользовательский интерфейс в зависимости от состояния контроллера, а также отображает технологический сеанс, в том числе его выполнение. Он отсылает в поток управления контроллером A3200 сообщения с командами, в поток расчета – сообщения о загрузке, расчете и отрисовке технологических сеансов, сообщения о перерасчете и перерисовке технологических сеансов в зависимости от состояния контроллера, копирует отрисованные потоком расчета изображения в соответствующие элементы управления.
Поток управления контроллером A3200 с заданной периодичностью опрашивает состояние этого контроллера и отсылает соответствующие сообщения в поток обработки пользовательского ввода, принимает сообщения от потока обработки пользовательского ввода и отсылает команды в контроллер A3200.
Поток расчета и отрисовки G-кода принимает соответствующие сообщения от потока обработки пользовательского ввода и проводит синтаксический анализ, расчет, отрисовку, перерасчет и перерисовку G-кода, отсылает в поток обработки пользовательского ввода сообщения о готовности изображений G-кода, принимает сообщения от потока обработки пользовательского ввода на прерывание расчета и отрисовки.
Для работы с файлами технологических сеансов используется стандартная Windows-тех-

нология проецируемых в память файлов (file mapping), что позволяет без заметной нагрузки на систему и обращения к файлу подкачки обрабатывать файлы большого размера. Для ускорения работы при открытии файла технологического сеанса проводится его индексирование.
В технологической программе реализован синтаксический разбор G-кода и некоторых его расширений. Для синтаксического разбора применяется алгоритм на основе конечных автоматов.
Обычно файлы технологических сеансов генерируются специальным программным обеспечением, в этом случае их текст содержит ограниченный набор простых команд. Однако технологические сеансы могут быть разработаны и вручную. При этом предусмотрена возможность использования условных и безусловных переходов, циклов, выполняемых по количеству итераций и по условию, повторяющихся последовательностей команд (процедур), переменных, выражений.
Кадры технологического сеанса отображаются как в текстовом, так и в графическом виде. Выделенная строка кадра сеанса подсвечивается на изображении. Текст кадров сеанса может иметь разные цвета и атрибуты шрифта, что позволяет наглядно представить оператору особенности сеанса, комментарии и ошибки.
Графическое представление G-кода проводится как проекция на любые две оси. При этом оператор имеет возможность масштабирования изображения на любую глубину, используя колесо мыши, рамку выделения или элементы управления пользовательского интерфейса.
Отображение осей станка возможно как в режиме чертежа, когда ноль осей находится в левом нижнем углу экрана, так и относительно позиции нуля станка (например, в правом верхнем углу для плоскости XY для текущей версии станка). Это позволяет корректно совместить реальное положение детали и его изображение на экране.
При представлении технологического сеанса отображается координатная сетка, шаг которой меняется в зависимости от масштаба таким образом, чтобы оставаться информативной, но не мешать восприятию кадров технологического сеанса.
После синтаксической обработки команды в бинарном, “ужатом”, виде сохраняются в памяти. Для хранения команд, последовательности их выполнения, списков используемых

“Оптический журнал”, 78, 4, 2011

39

командой осей и проч. используются стандартные массивы библиотеки C++, такие как map (сортированный массив) и vector (простой массив) [3].
Массив типа map хранится в памяти произвольно, что, однако, может приводить к фрагментации памяти, позволяет быстро вставлять элементы в любую позицию, индексом элементов массива может быть определенная структура. Массив типа map проводит поиск элементов за ограниченное время (ln(N)).
Массив типа vector хранится в памяти последовательно, т. е. предпочтительно определение его размера и выделение памяти сразу и заранее, время доступа к его элементам не зависит от их количества, доступ к элементам проводится по целочисленному индексу.
При редактировании текста программы измененные строки сохраняются в специальном временном файле и “прозрачно” подменяются в структурах, связывающих текст команд и их бинарное представление. При этом происходит перерасчет технологического сеанса.
Предусмотрена возможность помещения часто используемых в технологических сеансах процедур в специальный файл, где также находятся предопределенные процедуры, команды для которых отсылаются в контроллер при его инициализации, выполнении команд включения приводов, разрешения работы приводов, автоматического поиска нулей.
Внешний вид и расположение элементов управления в технологической программе:
Экран технологической программы занимает все пространство монитора. В верхней части располагается стандартная системная строка и меню. В системной строке отображается название загруженного технологического сеанса. В левой верхней части экрана находится информация о состоянии и режимах работы контроллера, положении осей, ошибках и др. В левой части экрана – графическое представление технологического сеанса. В правой верхней части экрана есть панель быстрого доступа к различным вкладкам, содержащим элементы управления контроллером, текст технологического сеанса, диагностику и пр. В правой части экрана размещаются вкладки, содержащие элементы управления контроллером, текст технологического сеанса, диагностику и проч. В нижней части экрана располагается статусная строка, отображающая процесс загрузки и расчета технологического сеанса, сообщения об

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

40 “Оптический журнал”, 78, 4, 2011

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

контроллер по отдельности. Тем самым достигается обратная совместимость с программами, используемыми для подготовки технологических сеансов. Данный механизм не снижает производительности.
В качестве дальнейшего развития технологической программы предусматривается отображение технологического сеанса в координатах детали, в трехмерном виде и с использованием OpenGL. Появится возможность оказания оператору помощи в редактировании технологических сеансов в части синтаксиса команд, оператор сможет графически редактировать сеансы. Также планируется доработка управляющей программы в соответствии с пожеланиями, возникающими у операторов в процессе ее эксплуатации.
ЛИТЕРАТУРА
1. Кирюхин П. RTX – расширение реального времени для Windows NT // CITForum. 1998. http://www. citforum.ru/operating_systems/rtx/index.shtml.
2. Рихтер Дж. Windows для профессионалов. Создание эффективных Win32-пpилoжeний с учетом специфики 64-разрядной версии Windows. СПб.: Питер, 2003. 752 с.
3. Страуструп Б. Язык программирования C++. Специальное издание. М.: Бином, 2008. 1104 с.

“Оптический журнал”, 78, 4, 2011

41