Применение препроцессора языка высокого уровня систем ЧПУ для обработки сложных контуров

Р.Л. Пушков,
препод., м.н.с.,
pushkov@ncsystems.ru,
А.И. Обухов,
м.н.с.,
obukhov@ncsystems.ru,
МГТУ «Станкин», г. Москва

Работа выполнена по Госконтракту № П978 на проведение НИР в рамках ФЦП «Научные и научно-педагогические кадры инновационной России» на 2009 – 2013 годы.

 

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

 

Using the high-level language interpreter for CNC part programs can help the operator to do some additional things: creation difficult user cycles, creation of parameterized functions, creation of part-programs for group technologies, special test programs for testing the CNC components and system at all. Also with high-level language operator can work with difficult contours, for example, mathematical contours.

Введение

Лучшим способом расширения средств программирования систем ЧПУ является использование языка высокого уровня для создания управляющих программ. Это позволяет: реализовывать сложные пользовательские циклы; сокращать размер управляющей программы; создавать параметризованные функции; разрабатывать управляющие программы для групповых технологий; расширять сервисные возможности (например, организация эффективного диалога с оператором); создавать специальные тестовые программы для проверки работоспособности приводов, входов/выходов электроавтоматики и системы в целом. Таким образом, весьма актуальна задача построения универсального препроцессора языка высокого уровня для систем ЧПУ, использующих в качестве входного языка ISO-7bit.

Структурированный язык позволяет составлять программы из независимых фрагментов кода; вызывать подпрограммы; применять алгоритмические конструкции ветвления, организовывать циклы, команды условного и безусловного перехода; использовать системные, глобальные и локальные переменные [1]. Управляющую программу на структурированном языке представляют в виде сочетания главной программы и нескольких вызываемых подпрограмм, состоящих из набора одиночных или заключенных в блоки операторов. Выполнение программы начинается вызовом главной функции. Каждая функция имеет блок выполняемых операторов. Блок операторов – это последовательность выражений и сложных операторов. С точки зрения процесса выполнения программа представляет собой рекурсивную интерпретацию блоков операторов и выражений.

Интеграция препроцессора языка высокого уровня в систему ЧПУ

Обработка файла на языке ISO-7bit в системе ЧПУ возложена на модуль интерпретатора программ. Интерпретатор входит в реализацию геометрической задачи системы ЧПУ [2] и выполняет: синтаксический анализ строк управляющей программы; преобразование координат и единиц измерения; эквидистантную коррекцию траектории; вызов и подстановку подпрограмм,  чтобы в результате сформировать данные для интерполятора.

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

Предложена схема реализации препроцессора языка высокого уровня в качестве надстройки над имеющимся в системе интерпретатором ISO-7bit (рис. 1) [3].

Файлы управляющей программы на языке ISO-7bit пропускаются через препроцессор без обработки и передаются интерпретатору.

Файл на языке высокого уровня обрабатывается препроцессором, а полученные строки в коде ISO-7bit передаются на выполнению интерпретатору.

Препроцессор настраивается с помощью файла конфигурации языка в формате XML. В файле конфигурации описаны: лексемы структурных элементов языка; соответствие между входными и выходными командами языка ISO-7bit, что позволяет настроить препроцессор на обработку файлов разных диалектов ISO-7bit.

Набор операторов языка высокого уровня остается жестко заданным, но посредством файла конфигурации лексемы операторов, блоков и других элементов языка можно свободно расширить [4].

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

рис. 1 Интерпретатор и препроцессор в структуре системы ЧПУ

Практическое применение препроцессора в системе ЧПУ

Интеграция препроцессора по предложенной схеме реализована в системе ЧПУ WinPCNC [5], что позволило значительно расширить возможности программирования системы управления. Любой сложный цикл легко реализуется в виде параметрической функции, вызываемой управляющей программой [6]. В качестве иллюстрации создания сложных станочных циклов приведем пример кода фрезерования восемнадцати круглых карманов (рис. 2).

рис. 2 Пример траектории инструмента при обработке контура, построенного с помощью пользовательских циклов

рис. 3 Пример подпрограммы реализации фрезерование кармана

Фрезерование кармана оформляется в виде подпрограммы cut_round() с параметрами (рис. 3), которая в свою очередь вызывается в подпрограмме G384_routine(), реализующий стандартный цикл фрезерования отверстий по шаблону G384 (рис. 4).

 

рис. 4 Пример подпрограммы реализующей цикл G384

Ещё одним примером использования языка высокого уровня может быть взаимодействие с контроллером электроавтоматики. В памяти ПЛК выделяется фрагмент для хранения переменных ПЛК. Описание этой области памяти с разбиением по переменным размещается в XML-файле. Набор переменных, прочитанных ядром системы ЧПУ из конфигурационного файла, анализируется при разборе управляющей программы интерпретатором. В случае если в программе встречается переменная, производится ее поиск среди системных переменных (в том числе и переменных ПЛК) и, если такова найдена, то используется обращение к определенной области памяти ПЛК.

Основная область, где целесообразно применение в управляющей программе переменных ПЛК - это задачи, связанные с разработкой управляющих программ для деталей с параметризованными размерами. Такие программы создаются, в частности, при реализации  групповых технологии обработки [7] или, если работа управляющей программы зависит от определенных факторов, например, от состояния износа инструмента.

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

рис. 5. Пример управляющей программы с использованием ПЛК-переменных

Заключение

Структурированная природа «C»–подобного языка высокого уровня позволяет относительно легко реализовать препроцессор для систем ЧПУ на основе нисходящего рекурсивного синтаксического анализатора.

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

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

Литература

1.   Мартинов Г.М., Пушков Р.Л. Построение инструментария отладки управляющих программ систем ЧПУ на языках высокого уровня // Приборы и системы. Управление, контроль, диагностика. 2008. №11. C. 19-24.

2.   Сосонкин В.Л., Мартинов Г.М. Системы числового программного управления: Учеб. Пособие. – М.: Логос, 2005. – 296с.

3.   Мартинов Г.М., Обухов А. И., Пушков Р.Л. Принцип построения универсального интерпретатора языка программирования высокого уровня для систем ЧПУ // Мехатроника, автоматизация, управление. 2010. №6. C. 42-50.

4.   Сосонкин В.Л., Мартинов Г.М. Программирование систем числового программного управления: учеб. пособие. – М.: Логос; Университетская книга; 2008. – 344с. + 1 компакт-диск.

5.   Мартинов Г.М. Университетская система ЧПУ WinPCNC для обучения и производства // Стружка. 2008. №1. C. 29-30.

6.   Мартинов Г.М., Григорьев А.С. Разработка пользовательских токарных циклов в системе ЧПУ WinPCNC // Объединенный научный журнал. 2007. №6. C. 8–50.

7.   Митрофанов С.П. Групповая технология машиностроительного производства. В 2-х т. Т. 1. Организация группового производства. 3-е изд., перераб. И доп. – Л.: Машиностроение, Ленингр. отд-ние, 1983. – 407 с., ил.