Параметрическое программирование (англ. parametrical programming)
Параметрическое программирование (Макропрограммирование) - это язык программирования ЧПУ.
Производители систем управления используют параметрическое программирование в качестве расширения G-кода. Его можно сравнить с компьютерными языками программирования, такими как Basic, но он может быть доступен на уровне G-функций (кодов). В отличие от ЧПУ программирования, в параметрическом программировании расширяются возможности, сравнимые с объектно ориентированными. Используя его системах управления ЧПУ становится возможным вариантность вычисления, применение логических операторов, работа с проходами инструмента, движениями манипуляторов. Возможность организации циклов, выбор по условию, переход, работа с подпрограммами. Добавляются элементы, осуществляющих полный контроль над ЧПУ - доступ к системным переменным и ячейкам программы электроавтоматики, возможность создавать свои собственные G-коды и функции, которые наиболее полно реализуют управление всех компонентов станка. Возможен доступ к параметрам ЧПУ, хранящим информацию об инструменте, положении рабочих органов, манипуляторов, системы координат, значений G-кода управляющей программы и ошибок. С помощью параметрического программирования можно разрабатывать диалоговые управляющие программы. Подобно компьютерным языкам программирования, в параметрическом программировании их существует несколько версий: Custom Macro, User Task (Okuma), Q Routine (Sodick), Advanced Programming Language (APL G& L). Например, язык макропрограммирования FMS-3000 из подмножества языка Basic дает возможность организовать дополнительные информационные окна, систему слежения за параметрами, режимы контроля и протоколирования процессов обработки. Такие программы выполняются в фоновом режиме и в свободное от всех других задач время, при большой загрузке могут временно приостанавливать свою работу. Используя такие возможностями, имеешь один из эффективных способов управления станком, роботом, системой ЧПУ.
Содержание |
Программа, написанная с использованием языка макропрограммирования, имеет аналогичную структуру G-кодов системы управления. Структурную единицу составляет кадр. Кадр является последовательностью символов языка программирования. Элементом кадра является слово, которое состоит из адреса и числового значения или переменной, глобальной переменной.
В качестве примера макропрограммы, можно написать подпрограмму функцию G200 для системы управления FMS-3000 и использовать эту G-функцию в качестве отскока и перехода инструмента между проходами, как в случае перехода сверла от одной координате к другой.
Свойства функции:
1. Начальные условия.
2. Отскок на W (в случае простого отскока) или выход в точку смены инструмента и следуем далее.
3. Выбор инструмента взятие корректора на длину.
4. Выбор G54 G55 G56 G57 G58 G59.
5. Определяем угол поворота детали A
6. Выбор M3 M13 M4 M14.
7. Выбор числа оборотов S.
8. Выход инструмента на позицию по X Y (с коррекцией H).
a=(_a+getparameter(65)) | определяем параметр A (угол поворота), как сумму глобальной переменной (заданной постоянно, угол поворота) и локальной (возвращенной из функции, угол поворота) |
g=getparameter(71) | определяем параметр (выбор точки G54 G55 G56 G57 G58 G59) G, как переменную (возвращенной из функции) |
m=getparameter(77) | определяем параметр (дополнительные функции) M, как переменную (возвращенной из функции) |
s=getparameter(83) | определяем параметр (число оборотов) S, как переменную (возвращенной из функции) |
t=getparameter(84) | определяем параметр (номер инструмента) T, как переменную (возвращенной из функции) |
x=getparameter(88) | определяем параметр (координату) X, как переменную (возвращенной из функции) |
y=getparameter(89) | определяем параметр (координату) Y, как переменную (возвращенной из функции) |
w=getparameter(87) | определяем параметр (величина отскока) W, как переменную (возвращенной из функции) |
tt=getdatacadr(134) | переменной tt возвращаем значение предшествующего (предыдущего номера инструмента) |
В отличие от Custom Macro (система управления Fanuc) параметры функции в FMS-3000 необходимо определить в начале подпрограммы.
_t=t | для организации работы последующих функций текущий инструмент T, определяем, как глобальную переменную |
hh=t+100 | задаем номер корректора на длину инструмента |
Выражение hh=t+100 представляет собой таблицу корректоров от 1 до 200. Все корректора мы разделили на две части от 1..100 корректора на диаметр инструмента, от 101..201 на длину инструмента. Инструменту T1 соответствует номер корректора на диаметр 1 и номер корректора на длину 101. Инструменту T2, номер 2 и номер 102 и т.д.
if paramactive(71)=0 then g=_g | если в функции G54 G55 G56 G57 G58 G59 не задан, выбор точки будет определен из глобальной переменной |
Если в функции G200 параметр G не задать, точка будет взята по умолчанию из глобальной переменной из функции G201.
G37X0Y0A0 | отменяем заданный ранее угол поворота |
if paramactive(87)=0 then goto 500 | если параметр W (отскок) не задан, выходим в точку смены инструмента, переход на метку 500 |
N100G1F2000G17G40G80G91Zw | если параметр W (отскок) не задан, выходим в точку смены инструмента, переход на метку 500 |
G32M1 | технологический стоп |
G90GgG37X0Y0Aa | задаем угол поворота |
goto 600 | если функция задана, как простой отскок (без смены инструмента) переходим на метку 600. |
Отскок в точку смены инструмента.
N500M9 | выкл. охлаждение |
G53G1F2000G90G40G49G80Z0 | выход в точку смены инструмента |
M5 | выкл. обороты |
Функции смены инструмента на каждом станке имеют свои особенности в зависимости от количества инструмента в магазине. Например, когда инструмента много, иногда применяются алгоритмы расставляющие инструмент в произвольном порядке, что бы не привязывать инструмент к определенным ячейкам и сократить время замены. Большое значение имеет конструкция механики смены инструмента, различного рода манипуляторы, ползуны и т.д.
rem S100 | переключаем диапазон скоростей, для ручной смены инструмента |
N502G32M0 | технологический стоп |
hh1=getsystemdata (1000+hh) | читаем значение корректора на длину |
G1G91G43HhhZ-hh1F2000 | отрабатываем корректор |
G90GgG37X0Y0Aa | корректор взят, отрабатываем угол поворота |
if paramactive(83)=0 then goto 600 | если параметр S (обороты) не задан, пропускаем кадры и переходим на метку 600 |
if paramactive(77)><0 then m= | по умолчанию вспомогательная функция M будет M3 |
N520MmSs | задаем дополнительные M и S функции |
Tt | выбираем номер инструмента |
N600if paramactive(88)=0 then goto 9999 | если хоть одна из координат XY позиции не задана, в позицию не выходим, пропускаем кадры и переходим на 9999 |
if paramactive(89)=0 then goto 9999 | если хоть одна из координат XY позиции не задана, в позицию не выходим, пропускаем кадры и переходим на 9999 |
G1F2000G1X(x+1)Y(y+1) | выходим в предпозицию, даем натяг по XY 1mm |
F100G9XxYy | точный выход в позицию XY с проверкой |
N9999G1F2000 | задаем начальные условия для контура |
Текст ячейки | Текст ячейки |
G32 | тормозим просчет программы |
M99 | конец функции, возврат в программу |
Образовательный сайт по ЧПУ программированию. http://cncexpert.ru/. Архивировано из первоисточника 1 августа 2012.
Модмаш-Софт. http://fms3000.ru/. Архивировано из первоисточника 1 августа 2012.
Параметрическое программирование.