Рассмотрим следующую команду для вызова пользовательского макроса обработки круглых карманов:
N050 G65 P1000 X5.0 Y5.0 Z0 D0.5 R0.75 F5.0
X и Y указывают расположение центра кармана. Z указывает на поверхность, на которой машина сделает карман. D - глубина, а R - радиус кармана. F определяет скорость подачи при обработке.
G65 не является модальным. Чтобы обработать еще один круглый карман в другом месте, наладчик должен предоставить еще одну полную команду G65 (конечно, изменив связанные аргументы). Однако у CNC FANUC есть два G-кода для модального вызова пользовательского макроса: G66 и G66.1. После установки любого из них программист должен использовать G67 для их отмены.
G66
G66 не вызывает пользовательский макрос сам по себе; он назначит только локальные переменные, соответствующие указанным аргументам адреса письма. Рассмотрим эти команды:
N050 G66 P1000 Z0 D0.5 R0.75 T0.5 F5.0
N055 G00 X5.0 Y5.0
N060 X10.0
N065 Y10.0
N070 X5.0
N075 G67
Строка N050 устанавливает локальную переменную #26 в значение Z, #7 в значение D, #18 в R, #20 в T и #9 в F. Но, опять же, эта строка не вызывает пользовательский макрос O1000.
В следующей команде (N055), которая должна быть командой движения (обычно G00 или G01), ЧПУ переместится в заданное положение, а затем вызовет пользовательский макрос O1000. Локальные переменные, назначенные в команде G66, будут доступны для использования в пользовательском макросе, но их невозможно обновить после выполнения команды G66. ЧПУ будет продолжать двигаться в нужное положение и вызывать пользовательский макрос в последующих командах движения, пока не достигнет команды G67 (N075).
Вот пример пользовательского макроса круглого кармана при использовании G66:
O1001 (Пользовательский макрос, вызываемый G66)
#32=#5001 (Достичь текущего абсолютного положения X)
Z[#26+0.1] (Переход в положение приближения)
G01 Z[#26-#7] F[#9/2] (Погружение в карман)
G02 X[#32+#18-#20/2] R[[#18-#20/2]/2] F#9
Я-[#18-#20/2]
X#32 R[[##18-#20/2]/2]
G00 Z[#26+0.1]
М99
G66.1
Как и G66, команда G66.1 укажет номер пользовательского макроса и установит локальные переменные в значение аргументов адреса письма. Также, как и G66, в конечном итоге должна быть указана команда G67, чтобы отменить модальный вызов. Но в отличие от G66, G66.1 вызовет пользовательский макрос. Рассмотрим эти команды:
N050 G66.1 P1001 X5.0 Y5.0 Z0 D0.5 R0.75 T0.5 F5.0
N055 X10.0
N060 Y10.0
N065 X5.0
N070 G67
Теперь линия N050 будет обрабатывать первый карман. В каждой последующей команде, которая не является командой движения, ЧПУ сбрасывает локальные переменные и снова вызывает пользовательский макрос. В строке N055 значение локальной переменной #24 (X) становится 10.0. Предполагая, что программист правильно написал пользовательский макрос, команда движения в пользовательском макро переместит инструмент в это положение до того, как машина начнет создавать карман.
Преимущество G66.1 перед G66 заключается в том, что любой из аргументов адреса письма может изменяться в любое время, когда пользователь вызывает пользовательский макрос. Например, если глубина кармана изменяется для карманных машин N060, программист может включить адрес буквы D в строку N060.
Создание пользовательских макросов с использованием G66.1 более сложно, чем G66. Поскольку значения всех локальных переменных возвращаются к вакантным по команде M99, завершающей пользовательский макрос, пользователи должны хранить эти значения в общих переменных, которые не теряются до отключения питания.
Рассмотрим эту пользовательскую макропрограмму с использованием G66.1:
O1001 (Пользовательский макрос, вызываемый G66.1)
(Измените значения аргументов, включенных в вызывающую команду)
ЕСЛИ [#24 NE #0], ТО #100 = #24
ЕСЛИ [#25 NE #0], ТО #101 = #25
ЕСЛИ [#26 NE #0], ТО #102 = #26
ЕСЛИ [#7 NE #0], ТО #103 = #7
ЕСЛИ [#18 NE #0], ТО #104 = #18
ЕСЛИ [#20 NE #0], ТО #105 = #20
ЕСЛИ [#9 NE #0], ТО #106 = #9
G00 X#100 Y#101 (Переместить в центр кармана)
Z[#102+0.1] (Переход в положение приближения)
G01 Z[#102-#103] F[#106/2] (Погружение в карман)
G02 X[#100+#104-#105/2] R[[#104-#105/2]/2] F#106
Я-[#104-#105/2]
X#100 R[[#104-#105/2]/2]
G00 Z[#102+0.1]
М99
Что Лучше?
Хотя такие макросы для ЧПУ требуют больше работы по программированию, G66.1 обеспечивает большую гибкость, чем G66. А именно, наладчик может изменить любой аргумент в любой из команд между командой G66.1 и командой G67. В нашем примере это означает положение кармана X/Y, радиус, глубину, расположение поверхности Z или скорость подачи. В этом смысле пользовательский макрос, вызываемый с помощью G66.1, ведет себя почти точно так же, как любой цикл обработки отверстий, например G81.
С другой стороны, если вы уверены, что после указания начального набора аргументов не потребуется ничего менять, использование G66 может быть более подходящим для вашего приложения, поскольку G66 намного проще в использовании.