Параметрическое программирование (ЧПУ) (Hgjgbymjncyvtky hjkijgbbnjkfguny (CHR))
Стиль этой статьи неэнциклопедичен или нарушает нормы литературного русского языка. |
Параметри́ческое программи́рование (англ. 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 | конец функции, возврат в программу |
См. также
[править | править код]
Для улучшения этой статьи желательно:
|