Добро пожаловать на Форум по станкам с ЧПУ!

FAQ по Gcode, примеры

Тема в разделе "Программы исполняющие G-код", создана пользователем PRO59, 18 мар 2017.

  1. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    G61 и G64 Коды G61 и G64 используются для переключения режимов обработки углов.
    G61 - exact path mode означает что EMC2 будет стараться следовать заданной траектории вне зависимости от скорости прохождения <=> будет тормозить вплоть до полной остановки на каждом угле, чтобы станок мог пройти по траектории с заданными ускорениями по осям.
    G61.1 - exact stop mode, гарантирует правильность траектории, останавливается на конце каждого сегмента.
    G64 P(допуск скругления) Q(допуск упрощения) - мода при которой EMC2 будет стараться поддержать наибольшую скорость для прохождения траектории с заданными допусками на скругление углов и упрощение траектории. Параметр Р задает максимальное расстояние до траектории при скруглении углов. Параметр Q задает допуск при котором два практически параллельных прямолинейных сегмента будут заменяться одним.
    Пример Gcode
    Код:
    %
    G61 (exact path mode)
    G01 X0 Y0 f3000
    G01 X100
    G64 P10 (скругление с допуском 10мм)
    G01 Y100
    G64 P30 (скругление с допуском 30мм)
    G01 X0
    G01 X0 Y0
    %
    Пример Gкода со скруглением углов emc lookahead blending.png (10.49 Кб) Просмотров: 28771

    Что интересно, если использовать скругление меньше радиуса инструмента, то это никак не скажется на внешних углах, они останутся острыми, скруглятся только внутренние углы, которые и так будут скруглены радиусом инструмента.
    [​IMG]
    [​IMG]
     
  2. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    G53, G54-59, G92 Эти Gкоды используются для задания отступов по осям обработки.
    G53 - абсолютные координаты Вне зависимости от любых установленных отступов по осям, добавление G53 к блоку кода говорит EMC2 использовать реальные координаты станка для этого кода. Например, g53 g0 x0 y0 z0 переместит станок в нули по всем трем осям. Эта команда может использоваться, для смены инструмента и других операций происходящих в определенном месте станка. Или например, если вам нужно убрать режущий инструмент в сторону для удобной смены детали.

    G53 это не модальная команда. Вы должны ставить G53 в каждую строку, где необходимо перемещение в абсолютных координатах станка.

    G54-G59.3 Рабочие или фиксированные отступы используются для установки начальной точки детали, которая отличается от реальных абсолютных координат. Эти отступы часто используются для создания нескольких копий одной детали.
    Значения офсетов хранятся в файле VAR который запрашивается в INI файле при запуске ЕМС2. Например для G55 значения отступа по осям хранятся в переменных
    5241 0.000000
    5242 0.000000
    5243 0.000000
    5244 0.000000
    5245 0.000000
    5246 0.000000
    Первая переменная для отступа по оси Х, вторая по Y и так далее. Такие же наборы переменных есть для всех других заданных офсетов.
    В каждом графическом интерфейсе есть способ задать эти отступы. Также для этого может быть использован код G10.

    Как только заданы значения отступа, вызов любой из систем координат сместит нули осей на указанные значения. В отличие от G53, G54-G59.3 это модальные коды. Они влияют на все код, который находится под ними.

    Обычно система G54 оставляется без изменений, т.е. с нулевым отступом. Вы можете спросить: "зачем, ведь есть G53 для перемещения в абсолютных координатах". Это делается потому, что G53 не модальный код, а G54 модальный и такой переход G54 G0 X0 Y0 Z0 переведет станок в абсолютный ноль по всем координатам и установит абсолютную систему координат.

    G54-G59.3 = G54, G55, G56, G57, G58, G59, G59.1, G59.2, G59.3 - девять различных координатных систем.

    G92 временный отступ Этот отступ применяется поверх всех остальных заданных отступов.

    Набор команд G92:

    G92 X- Y- Z- A- B- C- U- V- W- Эта команда устанавливает текущие значения положения по осям в указанные значения. Пример: G92 X10 Y5.
    G92.1 Эта команда сбрасывает значения временного отступа на 0.
    G92.2 Эта команда временно приостанавливает действие G92, не сбрасывая значения отступов.
    G92.3 Эта команда восстанавливает приостановленное действие G92.

    Вы должны понимать, что команда G92 устанавливает не значения отступов, а значения для текущего положения. Т.е. Если вы хотите установить точку (0,0,0) в положение (10,5,2), выполните следующее:
    G0 X10 Y5 Z2
    G92 X0 Y0 Z0
     
  3. Lodochnik

    Lodochnik Member

    Регистрация:
    5 апр 2012
    Сообщения:
    469
    Симпатии:
    0
    Не нашел подходящей ветки/темы, поэтому спрошу тут, в теме про сглаживание углов.

    Допустим, нам необходимо проехаться по параболе.
    Преобразуем нашу параболу в G-коды из InkScape GTools-ами, получаем некий набор отрезков и дуг, теряем точность.
    Затем выставляем в EMC2 некий допуск упрощения, в MACH3 (насколько я понял) ставим что-то потипу постоянной скорости обработки, и в результате на выходе получаем кривую, в некой определённой мере соответствующей нашей исходной параболе. При сглаживании мы также теряем точность, так как получаем уже не набор отрезков.

    Итого:
    мы либо дважды теряем точность
    либо, если углы не сглаживать настройками УП, менее теряем точность, но сильно теряем скорость обработки.
    Во всей этой цепочка G-код кажется явно излишним звеном.

    Рассмотрим проблему инерционности шпинделя.
    Вроде как максимальная допустимая скорость хода шпинделя конкретного станка по некоторой кривой зависит только от радиуса поворота кривой в текущей точке движения! Так почему бы не дать управляющей программе кривую в, к примеру, svg, а не ломаную в G-кодах? Или почему бы не задать кривую (полилайн, или Безье) в каких-то новых продвинутых G-кодах? Есть программы управления станком, которые умеют такое делать? Или нет? Ведь мы можем получить максимальную допустимую скорость для кривой, и минимальную ошибку точности.
    А станку ведь абсолютно без разницы, что там за коды в УП, главное step/dir чтоб давали, и всё.

    Прошу прощения за некий сумбур =) Надеюсь найдутся люди, которые прояснят ситуацию.
     
  4. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    Для Контроллеры перемещений (EMC2, Mach) специальным образом рассчитывают траекторию. При этом важно знать не только саму траекторию (положение для заданного времени) но и длину каждой ее дуги (скажем от текущего момента до конца траектории).

    Например, если мы подходим к конечной точке траектории в которой нам нужно остановиться, необходимо вычислить точку в которой начать остановку. Эта точка должна быть на определенном расстоянии от конца. Для дуг окружностей и прямых нахождение такой точки не вызывает трудностей, но для произвольный кривых все не так просто.

    Для кривых Безье, в которых работает inkscape, оно не вычисляется аналитически, только численными методами с заданной точностью (опять допуски).
    (вот тут попробовал решить уравнение длины дуги при помощи wlfram solwer результат меня удивил :) : viewtopic.php?f=15&amp;t=52&amp;start=100#p246[/URL] ).

    В EMC2 есть поддержка кривых Безье, но фактически она работеат также как и Gcodetools - аппроксимирует эти кривые арками. Причем, на сколько я понял апроксимирутся они всегда 4 арками без разбиения кривой.

    При необходимости, можно задать нулевые допуски, тогда точность обработки будет упираться только в глубину разбиения.

    Алгоритм скругления углов от EMC2 мне нравится больше, т.к. в нем напрямую задаются максимально возможные допуски, а не косвенная величина скорости. При этом если поставить его не нулевым, а просто очень маленьким, то на гладких кривых замедления на углах происходить не будет, а может замедления не будет и при нулевом допуске, т.к. на гладких кривых, при аппроксимациях биарками углов не создается. Все арки смыкаются без углов, а у EMC2 наверняка есть встроенный очень маленький допуск типа 0,00000001мм.

    Постарался описать как есть надеюсь получилось не очень сумбурно :).

    ЗЫ А ты пробовал прогонять параболу через gcodetools и EMC2 в режиме exact path G61?
     
  5. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    В режиме G61 - exact path пройдет без остановок и скруглений, а какое скругление, если там и так все кругло :). Если траектория хорошая и ее можно пройти на максимальной скорости, то скруглений не будет вообще.
    В режиме G61.1 - exact stop mode, наверняка, будет останавливаться.

    Все это можно проверить в режиме симулятора. В нем будет отображаться реальная траектория инструмента в реальном времени.

    >>То есть полноценная нормальная поддержка кривых упирается только в сложность их расчёта?
    В основном да, только сложность расчета не самих кривых, а их производных параметров. В том числе длинна, изгиб, offset - отступ от кривой Безье вообще не является кривой Безье (кроме кривой 2-го порядка). А кривая Безье второго порядка это кривая составленная из окружностей и прямых, т.е. тот самый Gкод.

    По поддержке кривые в EMC2:
    Кривые Безье и NURBS в EMC2 (Это примерный перевод документации с сайта LinuxCNC http://linuxcnc.org/docs/html/gcode_mai ... G5.3-NURBs )[/B]

    Кривые Безье это частный случай NURBS (англ. Non-uniform rational B-spline - Неоднородный рациональный B-сплайн ). EMC2 умеет работать именно с NURBS.

    Для работы с NURBs в EMC2 есть два специальных Gкода G5.2 G5.3.
    Внимание: G5.2, G5.3 являются экспериментальными и пока не окончательно протестированы.

    G5.2 открывает блок данных задающий NURBs а G5.3 закрывает. В строках между этими кодами задаются контрольные точки кривых с соответствующими весами "P" и их параметрами "L", которые определяют порядок кривой "k" и ее степень.

    Таким образом кривая задается не координатами ее точек, а набором контрольных точек, на основе которых вычисляется траектория (кривая, за редким исключением, не проходит через контрольные точки, кроме первой и последней).

    Пример Gкода с использованием NURBs
    Код:
    G0 X0 Y0
    F10 
    G5.2 X0 Y1 P1 L3
         X2 Y2 P1
         X2 Y0 P1
         X0 Y0 P2
    G5.3
    (Быстрый проход по контрольным точкам, чтобы они отобразились в Liveplot)
    G0 X0 Y1
       X2 Y2
       X2 Y0
       X0 Y0
    M2
    
    Скриншот Gкода из AXIS:
    emc2 nurbs.png (4.26 Кб) Просмотров: 28446
    [​IMG]
     
  6. Genial

    Genial Member

    Регистрация:
    8 май 2012
    Сообщения:
    222
    Симпатии:
    0
    Начал пробовать писать программы. Использую SolidWorks2010+Mastercam X5. Вроде разобрался, сгенерировал nc-файл, но EMC его выполнять не хочет Думаю что-то ей не нравится в коде. Может кто-нибудь генерировал код на таком же софте? Подскажите где я ошибся.
     
  7. rw666

    rw666 Active Member

    Регистрация:
    7 май 2012
    Сообщения:
    20.725
    Симпатии:
    2
    С Х4 Gcode работает нормально. Загрузил твой код в Мач он матюкается. Видать неправльно выбрал постпроцессор.

    Здесь описывал работу с Х4 http://www.chipmaker.ru/topic/24326/
     
  8. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    А что говорит? Какая ошибка?
     
  9. Genial

    Genial Member

    Регистрация:
    8 май 2012
    Сообщения:
    222
    Симпатии:
    0
    Пишет что-то типа "не читается строка 0"
    Кстати, при открытии правильного кода в графическом окне должна отображаться модель и траектории?
    А Вы какой постпроцессор выбираете? Я ставил Fanuc. Не знаю как в Х4, в Х5 сгенерированный код открывается в Mastercam X editor. Там тоже параметров тьма, сейчас разбираюсь...Строки перед номером должны букву N иметь?
    Тему Вашу на chipmaker читал несколько раз - много полезного, но у меня mastercam for solidworks - интегрированый то есть... Перелопатил вчера несколько CAM программ, дошел до инвентора и инвенторкама, кстати там удачно настраивается, довольно просто все, но коды генерировать он отказался наотрез...

    Еще, хотел попросить, скиньте пожалуйста код, желательно из Х4-Х5, который выполняется на EMC. Поковыряюсь, посравниваю...
     
  10. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    Кажись понятно. EMC2 наверное не нравится вот эта строка:
    Код:
    O0000(ЦИЛИНДРПОДОШВА~ПО УМОЛЧАНИЮ)
    Вообще, странно, зачем она нужна ? O - это специальный код, который либо делает вызов подпрограммы, либо задает ее начало или конец, либо задает начало/конец цикла или условия...

    Вроде да, но только не знаю, используются ли эти номера. И что будет, если эти номера не по порядку написать :).
     
  11. rw666

    rw666 Active Member

    Регистрация:
    7 май 2012
    Сообщения:
    20.725
    Симпатии:
    2
    Видно потому как выбрана 4х осевая стойка Фанук.

    Чтоб получить что либо точное нужно знать точно диаметр фрезы + биение. Диаметр фрезы обмеряют Ренишоу

    В хобячных условиях можно фрезернуть материал и обмерить точно рез под микроскопом + ЕМС типо так: http://www.chipmaker.ru/topic/62291/pag ... _p__881289
     
  12. Genial

    Genial Member

    Регистрация:
    8 май 2012
    Сообщения:
    222
    Симпатии:
    0
    Мне пока не до микронной точности, пока восторг вызывает простое движение осей! Но это, конечно, пока...Потом буду шукать чего-нибудь. В принципе, для моих целей точности в 0,05 достаточно. Но стремление к лучшему неискоренимо.
    Кстати, на скрине emc (в теме по микроскопу) есть вкладки камеры. Как их сделать? Как подключить саму камеру?
     
  13. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    Комментарии можно не тереть, номера строк тоже. Все это ECM2 жрет нормально.

    Про камеру в emc2 смотри здесь: viewtopic.php?f=15&amp;t=972&amp;p=5116#p5110[/URL]
     
  14. rw666

    rw666 Active Member

    Регистрация:
    7 май 2012
    Сообщения:
    20.725
    Симпатии:
    2
    тогда как можно будет судить о:
    Воткнуть камеру в USB :)
     
  15. Genial

    Genial Member

    Регистрация:
    8 май 2012
    Сообщения:
    222
    Симпатии:
    0
    Старым колхозным способом - сделать например паз, а потом его обмерить и посмотреть расхождения с моделью...
    :) это-то понятно. EMC сама её видит и делает для неё графическую вкладку, или надо прописывать где-то?
     
  16. rw666

    rw666 Active Member

    Регистрация:
    7 май 2012
    Сообщения:
    20.725
    Симпатии:
    2
    И как потом понять кто виноват станок или кривая фреза.

    PRO59 ссылку выкладывал где описано что нужно сделать чтоб добавилась вкладка с камерой.
     
  17. mahno

    mahno Member

    Регистрация:
    7 апр 2012
    Сообщения:
    426
    Симпатии:
    0
    Макропрограмма - Простой вызов (G65)
    Если задан G65, то вызывается макропрограмма пользователя, заданная в адресе Р. Данные (аргумент) могут передаваться в макропрограмму пользователя.
    G65 P L <аргументы> ;
    P : Номер вызываемой программы
    L : Количество повторов (по умолчанию 1)
    Аргумент : Данные, передаваемые в макропрограмму

    Пример вызова-
    G65 P9010 L2 A1.0 B2.0 ;
    Вызывает подпрограмму O9010, с числом повторений 2 и передает в подпрограмму параметры A(#1) B(#2)

    При определении аргумента значения присваиваются соответствующим локальным переменным.
    Указание аргумента-
    В указании аргумента используются буквы, кроме G, L, O, N и P, каждая один раз.
    Соответствие передаваемого параметра и локальной переменной-
    A(#1) B(#2) C(#3)
    D(#7) E(#8) F(#9)
    H(#11) I(#4) J(#5) K(#6)
    M(#13) Q(#17) R(#18) S(#19)
    T(#20) U(#21) V(#22) W(#23) X(#24) Y(#25) Z(#26)

    Взято (с сокращениями) из описания Fanuc (B-63604)
    (109.31 Кб) Скачиваний: 1345
     
  18. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    В emc2 вместо G65 используются О-коды, в частности, для вызова подпрограммы используется команда Onnn call.

    O коды Каждый блок имеет ассоциированный номер, который используется после O. Нужно следить за тем, чтобы номера после O совпадали во всех частях оной подпрограммы. О-код начинается с латинской буквы O, а не ноля.

    Подпрограммы: sub, endsub, return, call Подпрограмма заключена между кодами O- sub и O- endsub. Строки внутри подпрограммы не выполняются в обычном порядке, они выполняются только когда подпрограмма вызвана при помощи O- call.
    Пример:
    Код:
    O100 sub (подпрограмма для перемещения в ноль станка)
    G53 G0 X0 Y0 Z0
    O100 endsub
    (...)
    (много любых строчек)
    (...)
    O100 call
    
    Внутри подпрограммы может быть использован код, O- return. Это приведет к немедленному возвращению к строчке вызывавшей подпрограмму, точно так же как если бы был встречен код O- endsub.

    O- call принимает до 30 опциональных параметров, которые передаются вподпрограмму как #1, #2 ... #N, параметры #N+1, ..., #30 будут иметь значения параметров с тем же именем в контексте вызывающем подпрограмму. После возвращения из подпрограммы параметры #1, ..., #30 (вне зависимости от количества аргументов) будут возвращены к тем значениям, которые они имели до вызова подпрограммы. Параметры #1, ..., #30 локальны в подпрограмме.
    Т.к. "1 2 3" будет распознаваться как число 123, параметры должны быть заключены в квадратные скобки. Следующая строчка вызовет подпрограмму с 3 параметрами:
    Код:
    O200 call [1] [2] [3]
    
    Тела подпрограмм не могут быть вложенными. Подпрограммы могут быть вызваны только после того, как они определены при помощи O- sub. Они могут вызываться из других подпрограмм, и могут вызывать самих себя рекурсивно, если это имеет смысл. Максимальный уровень вложенности 10.

    Подпрограммы не имеют возвращаемых значений, но могут изменять параметры больше чем #30 и эти изменения будут видны в вызывающем коде. Подпрограммы могут также менять значения глобальных именных параметров.


    Циклы: do, while, endwhile, break, continue У цикла "while loop" есть две структуры: while/endwhile и do/while. В каждом случае цикл заканчивается когда условие "while" равняется false.
    Код:
    (Отрисовка контура пилы)
    F100
    #1 = 0
    O101 while [#1 lt 10]
    G1 X0
    G1 Y[#1/10] X1
    #1 = [#1+1]
    O101 endwhile
    Внутри цикла while, O- break немедленно завершит цикл, а O- continue немедленно перейдет к следующему вычислению значения условия while, если оно все еще true, переходим к следующей итерации, если false цикл завершается.
    Условия: if, else, endif "if" выполняет одну группу выражений, если условие равно true и другую группу выражений если условие равно false.
    (Установка подачи в зависимости от значения переменной)
    Код:
    O102 if [#2 GT 5]
    F100
    O102 else
    F200
    O102 endif
    Повторения Repeat "repeat" будет выполнять выражения внутри repeat/endrepeat указанное количество раз. Пример показывает как вы можете обработать серию контуров по расположенных диагонали, начиная с текущего положения.
    Код:
    (Обработать 5 контуров по диагонали)
    G91 (Режим приращений)
    O103 repeat [5]
    (...)
    (Вставьте сюда код для обработки.)
    (...)
    G0 X1 Y1 (перемещение к следующей позиции)
    O103 endrepeat
    G90 (Абсолютный режим)
    Indirection Коду O может быть дан параметр или вычисление. Например, следующий код вызовет подпрограмму с номером на 2 больше, чем значение параметра #101.
    Код:
    O[#101+2] call
    
    The O-number may be given by a parameter or calculation.
    O[#101+2] call

    Вычисления значений внутри О-кодов В О-кодах могут использоваться параметры, выражения, бинарные операторы и функции.
    Бинарные операторы: +, -, *, /, **, MOD, EQ, NE, GT, GE, LT, LE, AND, OR, XOR.
    Функции: ATAN[Y]/[X], ABS[arg], ACOS[arg], ASIN[arg], COS[arg], EXP[arg], FIX[arg], FUP[arg], ROUND[arg], LN[arg], SIN[arg], SQRT[arg], TAN[arg].


    Вызов файлов Чтобы вызвать подпрограмму из файла создайте файл с таким же названием, как имя вызова, и включите в него sub и endsub. Файл должен быть в директории указанной в PROGRAM_PREFIX. Имя файла может включать только маленькие буквы, числа, тире и подчеркивание.
    Код:
    o<myfile> call (вызов именного файла)
    (или)
    o123 call (вызов файла с числовым именем)
    
    В файл должны быть включены oxxx sub и oxxx endsub и файл должен быть валидным файлом.
    Код:
    (myfile.ngc)
    o<myfile> sub
    ...
    o<myfile> endsub
    M2
    
     
  19. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    G38 прямая проба (G38.2-G38.5) Используйте G38.2 <оси>, G38.3 <оси>, G38.4 <оси>, G38.5 <оси> чтобы выполнить прямую пробу. В параметрах <оси> не обязательно перечислять все оси, достаточно только одной. В шпинделе должен быть установлен щуп.

    Будет ошибкой если:
    текущая точка совпадает с запрограммированной
    не задана ни одна ось
    включена компенсация радиуса инструмента
    значение подачи равно 0
    щуп уже находится в конечном состоянии
    В ответ на эту команду станок двигает контрольную точку (которая должна быть на конце щупа) по прямой линии с заданной подачей в направлении запрограммированной точки. В режиме "обратной подачи", значение подачи такое, что все движение от текущей точки до указанной точки займет заданное время. Движение останавливается (в пределах максимальных ускорений станка) когда достигается запрограммированная точка или когда появляется требуемое изменение в probe input.

    table.bbcodes thead { font-weight:bold; color:#105289;}table.bbcodes tbody tr:hover, table.bbcodes tbody tr.hover { background-color: #CFE1F6; color: #000;}table.bbcodes tr.main{ font-weight:bold; background-color: #CFE1F6; color:#105289;}table.bbcodes td { padding: 2px 4px; border-bottom: 1px solid #aaaaaa;}


    Gкод
    Целевое состояние
    Направление
    Сигнал ошибки


    G38.2
    Контакт
    В сторону детали
    Да


    G38.3
    Контакт
    В сторону детали
    Нет


    G38.4
    Разрыв контакта
    В сторону от детали
    Да


    G38.5
    Разрыв контакта
    В сторону от детали
    Нет



    После удачной пробы, параметры 5061-5069 будут содержать значения координат X, Y, Z, A, B, C, U, V, W положения контрольной точки во время смены состояния probe-input. После неудачной пробы, они устанавливаются в координаты запрограммированной точки. Параметр 5070 устанавливается в 1 если проба удачна и в 0 если проба не удалась. Если проба не удалась G38.2 и G38.4 выдадут ошибку.

    Комментарий вида (PROBEOPEN filename.txt) откроет файл filename.txt и запишет в него 9 чисел - координаты состоящие из X, Y, Z, A, B, C, U, V, W каждой удачной пробы. Файл должен быть закрыт при помощи (PROBECLOSE).
    Пример
    Код:
    G0 X100 Y100 Z10
    G38.2 Z0
    Выполнит пробу до касания в направлении Z-
    Код:
    F100
    G0 X100 Y100 Z10
    G38.2 Z0
    F1
    G38.4 Z10
    
    Выполнит пробу с уточнением на маленькой скорости.
     
  20. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    G33 Перемещение синхронизированное со шпинделем G33 X- Y- Z- K-

    Для перемещения синхронно со шпинделем в прямом направлении используйте код G33 X- Y- Z- K-, где К задает расстояние перемещения за каждый оборот шпинделя. Например, в точке Z=0 выполнив код G33 Z-10 K1 получим перемещение по Z на 10 мм с 10 оборотами шпинделя. Эта команда может быть частью программы нарезания резьбы с шагом 1мм.

    Замечание: K - следит за перемещением в пространстве XYZ, а не только вдоль оси Z.

    Перемещение синхронизированное со шпинделем ждет индекс шпинделя, поэтому можно выровнять несколько проходов. Движения G33 оканчивается в запрограммированной точке.

    Все координаты опциональны, за исключением одной.

    Это ошибка, если:
    Если опущены все координаты.
    Шпиндель не вращается когда команда выполняется.
    Запрошенное линейное перемещение превышает пределы скорости из-за высокой скорости шпинделя.