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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Параметри́ческое программи́рование (англ. parametric programming, также — ма́кропрограммирование) в обрабатывающих системах числового программного управления (ЧПУ) технологическим оборудованием — подход к повышению уровня программирования, реализуемый созданием специализированных языков или расширений к существующим средствам программирования.

Исторически первый язык программирования станков с ЧПУ — G-код, который по своей сути является языком описания циклограмм движения обрабатывающего инструмента, включения/выключения шпинделя, подачи смазочно-охлаждающих жидкостей (СОЖ) и других действий, и не имеет средств текущей проверки состояния процесса обработки. Например, при поломке обрабатывающего инструмента или отсутствии СОЖ, циклограмма, описанная G-кодом, будет бесполезно продолжаться или исполняться опасно для оборудования до вмешательства оператора или окончания G-кода. Для устранения этого существенного недостатка G-кода были разработаны языки параметрического программирования.

Эти языки имеют много общего с обычными высокоуровневыми языками программирования, например, Фортран, Си. Основное преимущество по сравнению с G-кодом — наличие команд/операторов условного перехода. Это расширение позволяет изменять ход обработки при изменении состояния процесса, например, останавливать обработку с подачей аварийного сигнала при срабатывании датчика износа или поломки инструмента.

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

Особенности параметрического программирования[править | править код]

Производители систем управления используют параметрическое программирование в качестве расширения 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 конец функции, возврат в программу

См. также[править | править код]