1. Огляд

Мова G-коду LinuxCNC базується на мові RS274/NGC. Мова G-коду базується на рядках коду. Кожен рядок (також званий «блоком») може містити команди для виконання декількох різних дій. Рядки коду можуть бути зібрані у файл для створення програми.

Типова рядок коду складається з необов’язкового номера рядка на початку, за яким слідує одне або кілька «слів». Слово складається з літери, за якою слідує число (або щось, що обчислюється як число). Слово може бути командою або аргументом команди. Наприклад, «G1 X3» — це дійсний рядок коду з двома словами. «G1» — це команда, що означає «рухатися по прямій лінії із запрограмованою швидкістю подачі до запрограмованої кінцевої точки», а «X3» надає значення аргументу (значення X повинно бути 3 в кінці руху). Більшість команд G-коду LinuxCNC починаються з G або M (для загальних і різних). Слова для цих команд називаються «G-кодами» і «M-кодами». Також поширеними є коди підпрограм, що починаються з «o-», які називаються «o-кодами».

Мова LinuxCNC не має індикатора початку програми. Однак інтерпретатор обробляє файли. Одна програма може міститися в одному файлі, або програма може бути розподілена між декількома файлами. Файл може бути розмежований відсотками наступним чином. Перший непустий рядок файлу може містити тільки знак відсотка «%», можливо оточений пробілами, а далі у файлі (зазвичай в кінці файлу) може бути подібний рядок. Розмежування файлу за допомогою відсотків є необов’язковим, якщо файл містить «M2» або «M30», але є обов’язковим, якщо їх немає. Якщо файл має рядок з відсотками на початку, але не має його в кінці, буде видано повідомлення про помилку. Корисний вміст файлу, розмежованого за допомогою відсотків, закінчується після другого рядка з відсотками. Все, що йде після цього, ігнорується.

Мова G-коду LinuxCNC має дві команди («M2» або «M30»), кожна з яких завершує програму. Програма може закінчитися до кінця файлу. Рядки файлу, що знаходяться після кінця програми, не виконуються. Інтерпретатор навіть не читає їх.

2. Формат рядка

Допустимий рядок вхідного коду складається з наступного, у зазначеному порядку, з обмеженням максимальної (наразі 256) кількості символів, дозволених у рядку.

  1. необов’язковий символ видалення блоку, яким є скісний рисочок /.

  2. необов’язковий номер рядка.

  3. Будь-яка кількість:

    1. слова,

    2. налаштування параметрів,

    3. коди підпрограм та

    4. коментарі.

  4. маркер кінця рядка (повернення каретки або переведення рядка, або обидва).

Будь-який ввід, який явно не дозволено, є незаконним і призведе до того, що інтерпретатор сигналізує про помилку.

Пробіли та табуляції дозволені в будь-якому місці рядка коду і не змінюють значення рядка, за винятком коментарів. Це робить деякі дивно виглядаючі введення допустимими. Наприклад, рядок «G0X +0. 12 34Y 7» еквівалентний «G0 x+0.1234 Y7».

У вхідних даних дозволено використовувати порожні рядки. Їх слід ігнорувати.

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

2.1. /: Видалення блоку

Опціональний символ блокового видалення «/», розміщений на початку рядка, може використовуватися деякими користувальницькими інтерфейсами для пропускання рядків коду за потреби. У Axis комбінація клавіш Alt-m-/ вмикає та вимикає блокове видалення. Коли блокове видалення ввімкнено, всі рядки, що починаються зі знака «/», пропускаються.

В AXIS також можна ввімкнути видалення блоку за допомогою наступного значка:

Піктограма видалення блоку AXIS

../gui/images/tool_blockdelete.png

2.2. Додатковий номер рядка

Номер рядка — це літера N, за якою йде ціле число без знака, за яким може йти крапка та ще одне ціле число без знака. Наприклад, «N1234» та «N56.78» є дійсними номерами рядків. Вони можуть повторюватися або використовуватися в довільному порядку, хоча зазвичай такого використання слід уникати. Номери рядків також можуть пропускатися, і це є нормальною практикою. Номер рядка не обов’язково використовувати, але якщо він використовується, він повинен бути в правильному місці.

Note
Номери рядків не рекомендуються. Див. Найкращі практики.

2.3. Слова, параметри, підпрограми, коментарі

2.3.1. Слова

Слово — це літера, відмінна від N або O ("o"), за якою йде дійсне значення.

Слова можуть починатися з будь-якої літери, наведеної в таблиці нижче. Для повноти таблиця включає літери N і O, хоча, як визначено вище, номери рядків і параметри потоку програми не є словами. Деякі літери (I, J, K, L, P, R) можуть мати різне значення в різних контекстах. Літери, що позначають назви осей, не є дійсними на верстаті, який не має відповідної осі.

Table 1. Слова та їхні значення
Лист Значення

A

Вісь машини

B

Вісь B машини

C

Вісь C машини

D

Номер компенсації радіуса інструменту

F

Швидкість подачі

G

Загальна функція (див. таблицю G-code Modal Groups)

H

Індекс зміщення довжини інструменту

I

Зсув X для дуг та стандартних циклів G87

J

Зміщення Y для дуг та стандартних циклів G87

K

Зміщення по осі Z для дуг та стандартних циклів G87.

Співвідношення руху шпинделя для синхронізованих рухів G33.

L

загальне слово параметра для G10, M66 та інших

M

Різні функції (див. таблицю M-code Modal Groups)

N

Номер рядка (не рекомендується, див. Рекомендації)

O

o-коди для керування потоком програми (див. o-Codes)

P

Час витримки у стандартних циклах та з G4.

Ключ, що використовується з G10.

Q

Збільшення подачі в стандартних циклах G73, G83

R

Радіус дуги або площина стандартного циклу

S

Швидкість шпинделя

T

Вибір інструменту

U

Вісь U машини

V

V-вісь машини

W

Вісь W машини

X

Вісь X машини

Y

Вісь Y машини

Z

Вісь Z машини

2.3.2. Параметри

Параметри позначаються символом "#" перед ними. Див. Parameters Section нижче.

2.3.3. Коди підпрограм

Також називаються «o-кодами», вони забезпечують контроль потоку програми (наприклад, логіку if-else та викличні підпрограми) і повністю висвітлені на сторінці o-Codes, а також нижче в розділі Subroutine Codes and Parameters.

Note
О-коди іноді також називають О-словами.

2.3.4. Коментарі

Коментарі можна вставляти в рядок за допомогою дужок () або в кінці рядка за допомогою крапки з комою. Існують також «активні» коментарі, такі як MSG, DEBUG тощо. Див. розділ section on comments.

2.4. Маркер кінця лінії

Це будь-яка комбінація повернення каретки або переведення рядка.

3. Числа

Для (явних) чисел використовуються такі правила. У цих правилах цифра – це один символ від 0 до 9.

  • Номер складається з:

    • необов’язковий знак плюс або мінус, а потім

    • від нуля до багатьох цифр, за якими, можливо, слідує

    • одна кома з комою в десятковій козі, а потім

    • від нуля до багатьох цифр – за умови, що десь у числі є хоча б одна цифра.

  • Існує два види чисел:

    • Цілі числа, які не мають десяткової коми,

    • Десяткові дроби, які мають десяткову кому.

  • Числа можуть мати будь-яку кількість цифр, з урахуванням обмеження довжини рядка. Однак буде збережено лише близько сімнадцяти значущих цифр (достатньо для всіх відомих застосувань).

  • Ненульове число без знака, крім першого символу, вважається додатним.

Зверніть увагу, що початкові (перед десятковою крапкою і першою цифрою, відмінною від нуля) і кінцеві (після десяткової крапки і останньої цифри, відмінної від нуля) нулі допускаються, але не є обов’язковими. Число, записане з початковими або кінцевими нулями, буде мати те саме значення при читанні, якби додаткові нулі були відсутні.

Числа, що використовуються для конкретних цілей в RS274/NGC, часто обмежуються деяким скінченним набором значень або деяким діапазоном значень. У багатьох випадках десяткові числа повинні бути близькими до цілих чисел; це стосується значень індексів (наприклад, для параметрів і номерів слотів каруселі), M-кодів і G-кодів, помножених на десять. Десяткове число, яке призначене для представлення цілого числа, вважається достатньо близьким, якщо воно знаходиться в межах 0,0001 від цілого значення.

4. Параметри

Мова RS274/NGC підтримує «параметри» — те, що в інших мовах програмування називається «змінними». Існує кілька типів параметрів різного призначення та вигляду, кожен з яких описаний у наступних розділах. Єдиний тип значень, який підтримується параметрами, — це плаваюча точка; у G-коді немає типів рядків, логічних значень або цілих чисел, як в інших мовах програмування. Однак логічні вирази можна формулювати за допомогою булеві оператори («AND», «OR», «XOR» та оператори порівняння «EQ», «NE», «GT», «GE», «LT», «LE»), а також «MOD», «ROUND», FUP та FIX operators підтримують арифметику цілих чисел.

Параметри відрізняються синтаксисом, областю дії, поведінкою, коли ще не ініціалізовані, режимом, персистенцією та цільовим використанням.

Синтаксис

Існує три види синтаксичного вигляду:

  • numbered - #4711

  • named local - #<localvalue>

  • named global - #<_globalvalue>

Сфера застосування

Область дії параметра може бути глобальною або локальною в межах підпрограми. Параметри підпрограми та локальні іменовані змінні мають локальну область дії. Глобальні іменовані параметри та пронумеровані параметри, починаючи з номера 31, мають глобальну область дії. RS274/NGC використовує «лексичну область дії» — у підпрограмі видимі лише локальні змінні, визначені в ній, та будь-які глобальні змінні. Локальні змінні процедури, що викликає, не видимі в процедурі, що викликається.

Поведінка неініціалізованих параметрів
  • Неініціалізовані глобальні параметри та невикористані параметри підпрограми повертають значення нуль, якщо їх використовувати у виразі.

  • Неініціалізовані іменовані параметри сигналізують про помилку, якщо їх використовувати у виразі.

Режим

Більшість параметрів є параметрами читання/запису і можуть бути призначені в операторі присвоювання. Однак для багатьох попередньо визначених параметрів це не має сенсу, тому вони є параметрами тільки для читання — вони можуть з’являтися у виразах, але не в лівій частині оператора присвоювання.

Наполегливість

Коли LinuxCNC вимикається, тимчасові параметри втрачають свої значення. Всі параметри, крім пронумерованих параметрів у поточному постійному діапазоні примітка:[persistent_range, Діапазон постійних параметрів може змінюватися в міру розвитку. Наразі цей діапазон становить 5161-5390. Він визначений у масиві «required_parameters» у файлі src/emc/rs274ngc/interp_array.cc .] є тимчасовими. Постійні параметри зберігаються у файлі .var і відновлюються до своїх попередніх значень при повторному запуску LinuxCNC. Нестабільні нумеровані параметри скидаються до нуля.

Цільове використання
  • параметри користувача - пронумеровані параметри в діапазоні 31..5000, а також іменовані глобальні та локальні параметри, за винятком попередньо визначених параметрів. Вони доступні для загального зберігання значень з плаваючою комою, таких як проміжні результати, прапорці тощо, протягом усього виконання програми. Вони є читабельними/записувальними (можуть бути присвоєні значення).

  • subroutine-parameters – ці параметри використовуються для зберігання фактичних параметрів, що передаються до підпрограми.

  • numbered-parameters – більшість із них використовуються для доступу до зміщень систем координат.

  • system-parameters – використовуються для визначення поточної запущеної версії. Вони доступні лише для читання.

4.1. Нумеровані параметри

Пронумерований параметр — це символ «#», за яким йде ціле число від 1 до (наразі) 5602. Примітка: [Інтерпретатор RS274/NGC підтримує масив пронумерованих параметрів. Його розмір визначається символом «RS274NGC_MAX_PARAMETERS» у файлі src/emc/rs274ngc/interp_internal.hh). Кількість числових параметрів також може збільшуватися в міру додавання підтримки нових параметрів у процесі розробки.]. Параметр позначається цим цілим числом, а його значенням є будь-яке число, яке зберігається в параметрі.

Значення зберігається в параметрі за допомогою оператора =; наприклад:

#3 = 15 (встановити параметр 3 на 15)

Налаштування параметра набуває чинності лише після того, як будуть знайдені всі значення параметрів у тому самому рядку. Наприклад, якщо параметр 3 було попередньо встановлено на 15 і інтерпретовано рядок «#3=6 G1 X#3», відбудеться прямий рух до точки, де X дорівнює 15, а значення параметра 3 буде 6.

Символ # має пріоритет над іншими операціями, так що, наприклад, #1+2 означає число, отримане додаванням 2 до значення параметра 1, а не значення, знайденого в параметрі 3. Звичайно, #[1+2] означає значення, знайдене в параметрі 3. Символ # може повторюватися; наприклад, ##2 означає значення параметра, індекс якого є (цілим) значенням параметра 2.

  • 31-5000 – параметри користувача G-коду. Ці параметри є глобальними у файлі G-коду та доступні для загального використання. Нестабільні.

  • 5061-5069 – Координати результату зонду G38 (X, Y, Z, A, B, C, U, V та W). Координати вказані в системі координат, в якій відбувся G38. Нестабільний.

  • 5070 - G38 результат зонду: 1, якщо успішно, 0, якщо зонд не вдалося замкнути. Використовується з G38.3 та G38.5. Нестабільний.

  • 5161-5169 - "G28" Домашня сторінка для X, Y, Z, A, B, C, U, V та W. Постійне.

  • 5181-5189 – "G30" Домашня сторінка для X, Y, Z, A, B, C, U, V та W. Постійне.

  • 5210 - 1, якщо наразі застосовується зміщення "G52" або "G92", інакше 0. За замовчуванням постійне; нестабільне, якщо DISABLE_G92_PERSISTENCE = 1 у розділі [RS274NGC] INI-файлу.

  • 5211-5219 – Спільне зміщення "G52" та "G92" для X, Y, Z, A, B, C, U, V та W. За замовчуванням нестабільне; постійне, якщо DISABLE_G92_PERSISTENCE = 1 у розділі [RS274NGC] INI-файлу.

  • 5220 – Номер системи координат 1–9 для G54–G59.3. Постійно.

  • 5221-5230 – Система координат 1, G54 для X, Y, Z, A, B, C, U, V, W та R. R позначає кут повороту XY навколо осі Z. Збережено.

  • 5241-5250 – Система координат 2, G55 для X, Y, Z, A, B, C, U, V, W та R. Постійна.

  • 5261-5270 – Система координат 3, G56 для X, Y, Z, A, B, C, U, V, W та R. Постійна.

  • 5281-5290 – Система координат 4, G57 для X, Y, Z, A, B, C, U, V, W та R. Постійна.

  • 5301-5310 - Система координат 5, G58 для X, Y, Z, A, B, C, U, V, W та R. Постійна.

  • 5321-5330 – Система координат 6, G59 для X, Y, Z, A, B, C, U, V, W та R. Постійна.

  • 5341-5350 - Система координат 7, G59.1 для X, Y, Z, A, B, C, U, V, W та R. Постійна.

  • 5361-5370 - Система координат 8, G59.2 для X, Y, Z, A, B, C, U, V, W та R. Постійна.

  • 5381-5390 - Система координат 9, G59.3 для X, Y, Z, A, B, C, U, V, W та R. Постійна.

  • 5399 – Результат M66 – Перевірте або зачекайте на вхідні дані. Нестабільний.

  • 5400 - Номер інструменту. Нестабільний.

  • 5401-5409 – Зміщення інструменту для X, Y, Z, A, B, C, U, V та W. Встановлюється G43. Нестабільне.

  • 5410 - Діаметр інструменту. Летючий.

  • 5411 - Кут передньої частини інструменту. Летючий.

  • 5412 - Кут нахилу спинки інструменту. Летючий.

  • 5413 - Орієнтація інструменту. Нестабільний.

  • 5420-5428 – Поточне відносне положення в активній системі координат, включаючи всі зміщення та в поточних одиницях програми для X, Y, Z, A, B, C, U, V та W, нестабільне.

  • 5599 – Прапорець для керування виводом операторів (DEBUG). 1=вивід, 0=немає виводу; за замовчуванням=1. Нестабільний.

Збереження нумерованих параметрів

Значення параметрів у постійному діапазоні зберігаються з часом, навіть якщо обробний центр вимкнений. LinuxCNC використовує файл параметрів для забезпечення постійності. Він управляється інтерпретатором. Інтерпретатор зчитує файл під час запуску та записує файл під час виходу.

Формат файлу параметрів показано в таблиці Parameter File Format.

Інтерпретатор очікує, що файл матиме два стовпці. Він пропускає всі рядки, які не містять рівно два числові значення. Перший стовпець повинен містити ціле число (номер параметра). Другий стовпець містить число з плаваючою комою (останнє значення цього параметра). Значення представлене в інтерпретаторі як число з плаваючою комою подвійної точності, але десяткова крапка в файлі не потрібна.

До цього файлу можна додавати параметри у визначеному користувачем діапазоні (31-5000). Такі параметри будуть зчитуватися інтерпретатором та записуватися у файл під час його завершення.

Відсутні параметри в постійному діапазоні будуть ініціалізовані нулем та записані з їхніми поточними значеннями під час наступної операції збереження.

Номери параметрів мають бути розташовані у порядку зростання. Якщо вони не у порядку зростання, буде сигналізовано помилку «Файл параметрів не в порядку зростання».

Оригінальний файл зберігається як резервна копія під час запису нового файлу.

Table 2. Формат файлу параметрів
Номер параметра Значення параметра

5161

0.0

5162

0.0

4.2. Коди та параметри підпрограм

Коди підпрограм, або o-коди (іноді також називаються o-словами), забезпечують логіку та управління потоком у програмах NGC (як у логіці if-else). Вони називаються кодами підпрограм, оскільки вони також можуть утворювати підпрограми (як у sub-endsub).

Див. розділ про o-Codes.

Note
Якщо o-коди використовуються для формування підпрограм, то o-коди також можуть викликати ці підпрограми і передавати до 30 параметрів, які є локальними для підпрограми і мінливими. (Знову ж таки, див. o-Codes для більш повного викладу та прикладів.)
Note
Хоча дійсні як малі, так і великі літери «o-», найкращою практикою є використання малої літери «o-», оскільки вона усуває неоднозначність 0 (нуль) та O (велика o).

4.3. Іменовані параметри

Іменовані параметри працюють як пронумеровані параметри, але їх легше читати. Всі імена параметрів перетворюються в нижній регістр, а пробіли та табуляції видаляються, тому <param> і <P a R am > позначають один і той самий параметр. Іменовані параметри повинні бути укладені в знаки < >.

#<named parameter> є локальним іменованим параметром. За замовчуванням іменований параметр є локальним для області, в якій він призначений. Ви не можете отримати доступ до локального параметра поза його підпрограмою. Це означає, що дві підпрограми можуть використовувати однакові імена параметрів, не побоюючись, що одна підпрограма перезапише значення в іншій.

#<_global named parameter> є глобальним іменованим параметром. До них можна отримати доступ з викликуваних підпрограм і вони можуть встановлювати значення в підпрограмах, доступних для викликувача. Що стосується області дії, вони діють так само, як звичайні числові параметри. Вони не зберігаються у файлах.

Приклади:

Оголошення іменованої глобальної змінної
#<_endmill_dia> = 0.049
Посилання на раніше оголошену глобальну змінну
#<_endmill_rad> = [#<_endmill_dia>/2.0]
Змішані літерали та іменовані параметри
o100 call [0.0] [0.0] [#<_inside_cutout>-#<_endmill_dia>] [#<_Zcut>] [#<_feedrate>]

Іменовані параметри з’являються, коли їм вперше присвоюється значення. Локальні іменовані параметри зникають, коли їх область дії закінчується: коли підпрограма повертається, всі її локальні параметри видаляються і більше не можуть бути використані.

Використання неіснуючого іменованого параметра у виразі або в правій частині присвоювання є помилкою. Виведення значення неіснуючого іменованого параметра за допомогою оператора DEBUG, наприклад (DEBUG, <no_such_parameter>), призведе до відображення рядка #.

Глобальні параметри, а також локальні параметри, призначені на глобальному рівні, зберігають своє значення після призначення навіть після завершення програми та мають ці значення під час повторного запуску програми.

Функція EXISTS перевіряє, чи існує заданий іменований параметр.

4.4. Попередньо визначені іменовані параметри

Наступні глобальні параметри з іменами, доступні тільки для читання, використовуються для доступу до внутрішнього стану інтерпретатора та стану машини. Вони можуть використовуватися в довільних виразах, наприклад, для управління потоком програми за допомогою операторів if-then-else. Зверніть увагу, що нові predefined named parameters можна легко додати без змін у вихідному коді.

  • #<_vmajor> – Основна версія пакета. Якщо поточна версія була 2.5.2, повернеться 2.5.

  • #<_vminor> – Додаткова версія пакета. Якби поточна версія була 2.6.2, поверталося б 0.2.

  • #<_line> - Порядковий номер. Якщо виконується файл G-коду, повертається номер поточного рядка.

  • #<_motion_mode> - Повернути поточний режим руху інтерпретатора:

Режим руху повернене значення

G1

10

G2

20

G3

30

G33

330

G38.2

382

G38.3

383

G38.4

384

G38.5

385

G5.2

52

G73

730

G76

760

G80

800

G81

810

G82

820

G83

830

G84

840

G85

850

G86

860

G87

870

G88

880

G89

890

  • #<_plane> - повертає значення, що позначає поточну площину:

Літак повернене значення

G17

170

G18

180

G19

190

G17.1

171

G18.1

181

G19.1

191

  • #<_ccomp> - Стан компенсації різця. Повернені значення:

Режим повернене значення

G40

400

G41

410

G41.1

411

G41

410

G42

420

G42.1

421

  • #<_metric> - Повертає 1, якщо G21 увімкнено, інакше 0.

  • #<_imperial> - Повертає 1, якщо G20 увімкнено, інакше 0.

  • #<_absolute> - Повертає 1, якщо G90 увімкнено, інакше 0.

  • #<_incremental> - Повертає 1, якщо G91 увімкнено, інакше 0.

  • #<_inverse_time> - Повертає 1, якщо увімкнено режим зворотної подачі (G93), інакше 0.

  • #<_units_per_minute> - Повертає 1, якщо увімкнено режим подачі в одиницях/хвилину (G94), інакше 0.

  • #<_units_per_rev> - Повертає 1, якщо увімкнено режим одиниць/обертання (G95), інакше 0.

  • #<_coord_system> - Повертає число з плаваючою комою, що відповідає імені поточної системи координат (G54..G59.3). Наприклад, якщо ви використовуєте систему координат G55, то значення, що повертається, буде 550.000000, а якщо ви використовуєте G59.1, то значення, що повертається, буде 591.000000.

Режим повернене значення

G54

540

G55

550

G56

560

G57

570

G58

580

G59

590

G59.1

591

G59.2

592

G59.3

593

  • #<_tool_offset> - Повертає 1, якщо зміщення інструменту (G43) увімкнено, інакше 0.

  • #<_retract_r_plane> - Повертає 1, якщо встановлено G98, інакше 0.

  • #<_retract_old_z> - Повертає 1, якщо G99 увімкнено, інакше 0.

4.5. Системні параметри

* <_spindle_rpm_mode> - Повертає 1, якщо режим обертів шпинделя (G97) увімкнено, інакше 0. * <_spindle_css_mode> - Повертає 1, якщо режим постійної швидкості поверхні (G96) увімкнено, інакше 0. * <_ijk_absolute_mode> - Повертає 1, якщо режим абсолютної дугової відстані (G90.1) увімкнено, інакше 0. * <_lathe_diameter_mode> - Повертає 1, якщо це конфігурація токарного верстата та увімкнено режим діаметра (G7), інакше 0. * <_lathe_radius_mode> - Повертає 1, якщо це конфігурація токарного верстата та увімкнено режим радіуса (G8), інакше 0. * <_spindle_on> - Повертає 1, якщо шпиндель наразі працює (M3 або M4), інакше 0. * <_spindle_cw> - Повертає 1, якщо напрямок обертання шпинделя за годинниковою стрілкою (M3), інакше 0. * <_mist> - Поверніть 1, якщо туман (M7) увімкнено. * <_flood> - Повертає 1, якщо увімкнено повінь (M8). * <_speed_override> - Повертає 1, якщо увімкнено корекцію подачі (M48 або M50 P1), інакше 0. * <_feed_override> - Повертає 1, якщо увімкнено корекцію подачі (M48 або M51 P1), інакше 0. * <_adaptive_feed> - Повертає 1, якщо адаптивна подача (M52 або M52 P1) увімкнена, інакше 0. * <_feed_hold> - Повертає 1, якщо перемикач блокування подачі увімкнено (M53 P1), інакше 0. * <_feed> - Повертає поточне значення F, а не фактичну швидкість подачі. * <_rpm> - Повертає поточне значення S, а не фактичну швидкість шпинделя. * <_x> - Повертає поточну відносну координату X, включаючи всі зміщення. Те саме, що й 5420. У конфігурації токарного верстата завжди повертає радіус. * <_y> - Повертає поточну відносну координату Y, включаючи всі зміщення. Те саме, що й 5421. * <_z> - Повертає поточну відносну координату Z, включаючи всі зміщення. Те саме, що й 5422. * <_a> - Повертає поточну відносну координату A, включаючи всі зміщення. Те саме, що й 5423. * <_b> - Повертає поточну відносну координату B, включаючи всі зміщення. Те саме, що й 5424. * <_c> - Повертає поточну відносну координату C, включаючи всі зміщення. Те саме, що й 5425. * <_u> - Повертає поточну відносну U-координату, включаючи всі зміщення. Те саме, що й 5426. * <_v> - Повертає поточну відносну V-координату, включаючи всі зміщення. Те саме, що й 5427. * <_w> - Повертає поточну відносну координату W, включаючи всі зміщення. Те саме, що й 5428. * <_abs_x> - Повертає поточну абсолютну координату X (G53) без урахування зміщень. * <_abs_y> - Повертає поточну абсолютну координату Y (G53) без урахування зміщень. * <_abs_z> - Повертає поточну абсолютну координату Z (G53) без урахування зміщень. * <_abs_a> - Повернути поточну абсолютну координату A (G53) без урахування зміщень. * <_abs_b> - Повертає поточну абсолютну координату B (G53) без урахування зміщень. * <_abs_c> - Повертає поточну абсолютну координату C (G53) без урахування зміщень. * <_current_tool> - Повернутий номер поточного інструменту в шпинделі. Те саме, що й 5400. * <_current_pocket> - Повертає індекс tooldata для поточного інструменту. * <_selected_tool> - Повернутий номер вибраного інструменту після T-коду. За замовчуванням -1. * <_selected_pocket> - Повертає індекс tooldata вибраної кишені після T-коду. За замовчуванням -1 (кишеня не вибрана). * <_value> - Повернене значення з останнього O-коду return або endsub. Значення за замовчуванням 0, якщо після return або endsub немає виразу. Ініціалізується значенням 0 під час запуску програми. * <_value_returned> - 1.0, якщо останній виклик O-коду return або endsub повернув значення, 0 в іншому випадку. Очищається наступним викликом O-коду. * <_task> - 1.0, якщо екземпляр інтерпретатора, що виконується, є частиною milltask, в іншому випадку - 0.0. Іноді необхідно по-особливому підходити до цього випадку, щоб зберегти правильний попередній перегляд, наприклад, під час перевірки успішності зонда (G38.n) шляхом перевірки #5070, що завжди призведе до помилки в інтерпретаторі попереднього перегляду (наприклад, Axis). * <_call_level> - Поточний рівень вкладеності процедур O-коду. Для налагодження. * #<_remap_level> - поточний рівень стеку перепризначення. Кожне перепризначення в блоці додає одиницю до рівня перепризначення. Для налагодження.

5. Піни HAL та значення INI

Якщо ввімкнено у файлі INI, G-код має доступ до значень записів INI-файлу та виводів HAL.

  • #<_ini[section]name> Повертає значення відповідного елемента у INI-файлі.

Наприклад, якщо INI-файл виглядає так:

[SETUP]
XPOS = 3.145
YPOS = 2.718

Ви можете звернутися до іменованих параметрів #<_ini[setup]xpos> та #<_ini[setup]ypos> у G-коді.

EXISTS можна використовувати для перевірки наявності заданої змінної INI-файлу:

o100 if [EXISTS[#<_ini[setup]xpos>]]
  (налагодження, [setup]xpos існує: #<_ini[setup]xpos>)
o100 else
  (налагодження, [setup]xpos не існує)
o100 endif

Значення зчитується з файлу INI один раз і кешується в інтерпретаторі. Ці параметри доступні тільки для читання - присвоєння значення призведе до помилки виконання. У G-коді імена не чутливі до регістру - вони перетворюються у верхній регістр перед зверненням до файлу INI. Тому записи INI, що містять символи нижнього регістру, недоступні з G-коду.

  • #<_hal[HAL item]> Дозволяє програмам G-коду зчитувати значення виводів HAL. Доступ до змінних є тільки для читання, єдиним способом встановлення виводів HAL з G-коду залишаються коди M62-M65, M67, M68 і користувацькі коди M100-M199. Зверніть увагу, що зчитане значення не оновлюється в режимі реального часу, зазвичай повертається значення, яке було на контакті під час запуску програми G-коду. Це можна обійти, примусово синхронізувавши стан. Один із способів зробити це — за допомогою фіктивної команди M66: M66E0L0

Приклад:

(debug, #<_hal[motion-controller.time]>)

Доступ до елементів HAL здійснюється лише для читання. Наразі таким чином можна отримати доступ лише до імен HAL, написаних виключно нижніми літерами.

EXISTS можна використовувати для перевірки наявності певного елемента HAL:

o100 if [EXISTS[#<_hal[motion-controller.time]>]]
  (налагодження, [motion-controller.time] існує: #<_hal[motion-controller.time]>)
o100 else
  (налагодження, [motion-controller.time] не існує)
o100 endif

Ця функція була мотивована бажанням забезпечити більш тісний зв’язок між компонентами користувацького інтерфейсу, такими як GladeVCP і PyVCP, щоб вони могли слугувати джерелом параметрів для керування поведінкою файлів NGC. Альтернативний варіант — використання контактів M6x і їх підключення — має обмежений, не мнемонічний простір імен і є надмірно громіздким як механізм комунікації між користувацьким інтерфейсом та інтерпретатором.

6. Вирази

Вираз — це набір символів, що починається з лівої дужки «[» і закінчується відповідною правою дужкою «]». Між дужками знаходяться числа, значення параметрів, математичні операції та інші вирази. Вираз обчислюється для отримання числа. Вирази в рядку обчислюються під час читання рядка, перед виконанням будь-яких дій у рядку. Прикладом виразу є «[1 + acos[0] - [#3 ** [4.0/2]]]».

7. Бінарні оператори

Бінарні оператори з’являються тільки всередині виразів. Існує чотири основні математичні операції: додавання («+»), віднімання («-»), множення («») і ділення («/»). Існує три логічні операції: не виключна або («OR»), виключна або («XOR») і логічна і («AND»). Восьма операція — операція модуля («MOD»). Дев’ята операція — це операція «потужність» («*»), що підносить число зліва від операції до потужності справа. Реляційні оператори — це рівність («EQ»), нерівність («NE»), строго більше («GT»), більше або дорівнює («GE»), строго менше («LT») і менше або дорівнює («LE»).

Бінарні операції поділяються на кілька груп за їх пріоритетом. Якщо операції з різних груп пріоритету з’єднані між собою (наприклад, у виразі «[2.0 / 3 * 1.5 - 5.5 / 11.0]»), операції з вищої групи виконуються перед операціями з нижчої групи. Якщо вираз містить більше однієї операції з однієї групи (наприклад, перші «/» і «*» у прикладі), спочатку виконується операція зліва. Таким чином, приклад еквівалентний: «[ [ [2.0 / 3] * 1.5] - [5.5 / 11.0] ]», що еквівалентно «[1.0 - 0.5]», тобто «0.5».

Логічні операції та модуль слід виконувати над будь-якими дійсними числами, а не лише над цілими. Число нуль еквівалентне логічній хибності, а будь-яке ненульове число еквівалентне логічній істині.

Table 3. Пріоритет операторів
Оператори Пріоритет

**

highest

* / MOD

+ -

EQ NE GT GE LT LE

І АБО Виключаюче АБО

lowest

8. Рівність та значення з плаваючою комою

Перевірка рівності або нерівності двох значень з подвійною точністю з плаваючою комою є за своєю суттю проблематичною. Інтерпретатор вирішує цю проблему, вважаючи значення рівними, якщо їх абсолютна різниця менше 1e-6 (це значення визначено як TOLERANCE_EQUAL у src/emc/rs274ngc/interp_internal.hh).

9. Функції

Доступні функції наведені в наступній таблиці. Аргументи для унарних операцій, які приймають величини кутів («COS», «SIN» і «TAN»), вимірюються в градусах. Значення, що повертаються унарними операціями, які повертають величини кутів («ACOS», «ASIN» і «ATAN»), також вимірюються в градусах.

Table 4. Функції G-коду
Назва функції Результат функції

ATAN[arg]/[arg]

Арктангенс чотирьох квадрантів

ABS[arg]

Абсолютне значення

ACOS[arg]

Арккосинус

ASIN[arg]

Арексинсус

COS[arg]

Косинус

EXP[arg]

e, зведене до заданого степеня

FIX[arg]

Округліть до меншого числа до цілого

FUP[arg]

Округліть до цілого числа

ROUND[arg]

Округліть до найближчого цілого числа

LN[arg]

Логарифм з основою e

SIN[arg]

Його/її

SQRT[arg]

Квадратний корінь

TAN[arg]

Тангенс

EXISTS[arg]

Перевірте іменований параметр

Функція «FIX» округляє числову пряму вліво (менш додатне або більш від’ємне), таким чином, «FIX[2.8] = 2» та «FIX[-2.8] = -3».

Операція «FUP» округляє число праворуч (більш додатне або менш від’ємне) на числовій прямій; «FUP[2.8] = 3» та «FUP[-2.8] = -2».

Функція «EXISTS» перевіряє наявність одного іменованого параметра. Вона приймає тільки один іменований параметр і повертає 1, якщо він існує, і 0, якщо він не існує. Використання пронумерованого параметра або виразу є помилкою. Ось приклад використання функції EXISTS:

o<test> sub
o10 якщо [EXISTS[#<_global>]]
    (debug, _global існує та має значення #<_global>)
o10 інакше
    (debug, _global не існує)
o10 endif
o<test> endsub

o<test> call
#<_global> = 4711
o<test> call
m2

10. Повторювані елементи

Рядок може містити будь-яку кількість G-слів, але два G-слова з однієї модальної групи не можуть з’являтися в одному рядку. Див. розділ Modal Groups для отримання додаткової інформації.

Рядок може містити від нуля до чотирьох M-слів. Два M-слова з однієї модальної групи не можуть з’являтися в одному рядку.

Для всіх інших дозволених літер рядок може містити лише одне слово, що починається з цієї літери.

Якщо налаштування одного і того ж параметра повторюється в рядку, наприклад, «#3=15 #3=6», то чинним буде лише останнє налаштування. Налаштувати один і той же параметр двічі в одному рядку — це нерозумно, але не є порушенням правил.

Якщо в рядку з’являється більше одного коментаря, буде використано тільки останній; кожен з інших коментарів буде прочитано і перевірено його формат, але після цього він буде проігноровано. Очікується, що розміщення більше одного коментаря в рядку буде дуже рідкісним.

11. Порядок товарів

Три типи елементів, порядок яких може змінюватися в рядку (як зазначено на початку цього розділу), — це слово, налаштування параметра та коментар. Уявіть, що ці три типи елементів поділяються на три групи за типом.

Першу групу (слова) можна переставляти будь-яким чином, не змінюючи значення рядка.

Якщо друга група (налаштування параметрів) буде перепорядкована, значення рядка не зміниться, якщо тільки один і той самий параметр не буде встановлений більше ніж один раз. У цьому випадку буде діяти тільки останнє налаштування параметра. Наприклад, після інтерпретації рядка «#3=15 #3=6» значення параметра 3 буде 6. Якщо порядок буде змінено на «#3=6 #3=15» і рядок буде інтерпретовано, значення параметра 3 буде 15.

Якщо третя група (коментарі) містить більше одного коментаря та перевпорядковується, буде використано лише останній коментар.

Якщо кожна група зберігається в порядку або перепорядковується без зміни значення рядка, то три групи можуть бути переплетені будь-яким чином без зміни значення рядка. Наприклад, рядок «g40 g1 #3=15 (foo) #4=-7.0» має п’ять елементів і означає абсолютно те саме в будь-якому з 120 можливих порядків (наприклад, «#4=-7.0 g1 #3=15 g40 (foo)») для п’яти елементів.

12. Команди та режими роботи машини

Багато команд змушують контролер переходити з одного режиму в інший, і режим залишається активним, поки інша команда не змінить його явно або неявно. Такі команди називаються «модальними». Наприклад, якщо охолоджуюча рідина ввімкнена, вона залишається ввімкненою, поки її явно не вимкнуть. G-коди для руху також є модальними. Наприклад, якщо команда G1 (прямий рух) задана в одному рядку, вона буде виконана знову в наступному рядку, якщо в цьому рядку є одне або кілька слів осі, за винятком випадків, коли в наступному рядку задана явна команда з використанням слів осі або скасування руху.

«Немодальні» коди впливають лише на ті лінії, на яких вони зустрічаються. Наприклад, G4 (затримка) є немодальним.

13. Полярні координати

Полярні координати можна використовувати для визначення координат XY переміщення. @n — це відстань, а ^n — кут. Перевага цього полягає в тому, що для таких елементів, як кола отворів для болтів, можна дуже просто переміститися до точки в центрі кола, встановити зміщення, а потім переміститися до першого отвору і запустити цикл свердління. Полярні координати завжди відраховуються від поточної нульової позиції XY. Щоб змістити полярні координати від нуля верстата, використовуйте зміщення або виберіть систему координат.

В абсолютному режимі відстань і кут вимірюються від нульової позиції XY, а кут починається з 0 на позитивній осі X і збільшується в напрямку проти годинникової стрілки навколо осі Z. Код G1 @1^90 є таким самим, як G1 Y1.

У відносному режимі відстань і кут також враховуються від нульового положення XY, але вони є сукупними. Спочатку може бути заплутано, як це працює в інкрементальному режимі.

Наприклад, якщо у вас є наступна програма, ви можете очікувати, що вона буде квадратним візерунком:

F100 G1 @.5 ^90
G91 @.5 ^90
@.5 ^90
@.5 ^90
@.5 ^90
G90 G0 X0 Y0 M2

З наступного рисунка видно, що результат не такий, як можна було б очікувати. Тому що ми додавали 0,5 до відстані щоразу, коли відстань від нульової точки XY збільшувалася з кожною лінією.

Полярна спіраль
Figure 1. Полярна спіраль

Наступний код створить наш квадратний візерунок:

F100 G1 @.5 ^90
G91 ^90
^90
^90
^90
G90 G0 X0 Y0 M2

Як бачите, додаючи до кута лише 90 градусів щоразу, відстань до кінцевої точки однакова для кожної лінії.

Полярна площа
Figure 2. Полярна площа

Це помилка, якщо:

  • Поступовий рух починається з початку координат

  • Використовується поєднання полярних слів та слів X або Y

14. Модальні групи

Commands are arranged in sets called modal groups, and only one member of a modal group may be in force at any given time. In general, a modal group contains commands for which it is logically impossible for two members to be in effect at the same time - like measure in inches versus measure in millimeters. A machining center may be in many modes at the same time, with one mode from each modal group being in effect. The modal groups are shown in the following Table.

Table 5. Модальні групи G-коду
Значення модальної групи Слова учасника

Немодальні коди (Група 0)

G4, G10 G28, G30, G52, G53, G92, G92.1, G92.2, G92.3,

Рух (Група 1)

G0, G1, G2, G3, G33, G38.n, G73, G76, G80, G81 G82, G83, G84, G85, G86, G87, G88, G89

Вибір площини (Група 2)

G17, G18, G19, G17.1, G18.1, G19.1

Режим дистанції (Група 3)

G90, G91

Режим відстані дуги IJK (група 4)

G90.1, G91.1

Режим швидкості подачі (Група 5)

G93, G94, G95

Одиниці (Група 6)

G20, G21

Компенсація діаметра різця (Група 7)

G40, G41, G42, G41.1, G42.1

Зміщення довжини інструменту (Група 8)

G43, G43.1, G49

Режим повернення стандартних циклів (група 10)

G98, G99

Система координат (Група 12)

G54, G55, G56, G57, G58, G59, G59.1, G59.2, G59.3

Режим керування (Група 13)

G61, G61.1, G64

Режим швидкості шпинделя (Група 14)

G96, G97

Режим діаметра токарного верстата (група 15)

G7, G8

Table 6. Модальні групи M-кодів
Значення модальної групи Слова учасника

Зупинка (Група 4)

M0, M1, M2, M30, M60

Контакти вводу/виводу (Група 5)

(M62-M65 digital output), (M66 цифровий або аналоговий вхід), (M67, M68 аналоговий вихід)

Зміна інструменту (Група 6)

M6 Tn

Шпиндель (Група 7)

M3, M4, M5

Охолоджувальна рідина (Група 8)

(M7 M8 можуть бути обидві), M9

Перемикачі керування (Група 9)

M48, M49

Визначено користувачем (Група 10)

M100-M199

Для декількох модальних груп, коли обробний центр готовий приймати команди, один член групи повинен бути активним. Для цих модальних груп існують налаштування за замовчуванням. Коли обробний центр вмикається або іншим чином переініціалізується, значення за замовчуванням автоматично вступають в силу.

Група 1, перша група в таблиці, – це група G-кодів для руху. Один з них завжди активний. Він називається поточним режимом руху.

Помилкою є розміщення G-коду з групи 1 і G-коду з групи 0 в одному рядку, якщо обидва вони використовують слова осі. Якщо G-код з групи 1, що використовує слова осі, неявним чином діє в рядку (будучи активованим у попередньому рядку), а G-код з групи 0, що використовує слова осі, з’являється в рядку, дія G-коду з групи 1 для цього рядка призупиняється. G-коди з групи 0, що використовують слова осі, — це G10, G28, G30, G52 і G92.

Включати будь-які непов’язані слова в рядок з керуванням потоком O- є помилкою.

15. Коментарі

Коментарі носять суто інформативний характер і не впливають на роботу машини.

Коментарі можна додавати до рядків G-коду, щоб пояснити наміри програміста. Коментарі можна вставляти в рядок за допомогою дужок () або в кінці рядка за допомогою крапки з комою. Крапка з комою не розглядається як початок коментаря, якщо вона знаходиться в дужках.

Коментарі можуть з’являтися між словами, але не між словами та відповідним їм параметром. Отже, «S100(встановлена швидкість)F200(подача)» прийнятний, тоді як «S(швидкість)100F(подача)» – ні.

Ось приклад програми з коментарями:

G0 (Швидкий пуск) X1 Y1
G0 X1 Y1 (Швидкий пуск; але не забудьте про охолоджувальну рідину)
M2 ; Кінець програми.

Існує кілька «активних» коментарів, які виглядають як коментарі, але викликають певні дії, наприклад «(debug,..)» або «(print,..)». Якщо в рядку є кілька коментарів, то за цими правилами інтерпретується тільки останній коментар. Отже, звичайний коментар, що йде за активним коментарем, фактично вимикає активний коментар. Наприклад, «(foo) (debug,#1)» надрукує значення параметра «#1», а «(debug,#1)(foo)» — ні.

Коментар, що починається з крапки з комою, за визначенням є останнім коментарем у цьому рядку та завжди інтерпретуватиметься відповідно до синтаксису активного коментаря.

Note
Вбудовані коментарі до O-кодів не слід використовувати, див. розділ comments для отримання додаткової інформації.

16. Повідомлення

* «(MSG,)» — відображає повідомлення, якщо «MSG» з’являється після лівої дужки і перед будь-якими іншими друкованими символами. Допускаються варіанти «MSG», що містять пробіли та символи нижнього регістру. Решта символів перед правою дужкою вважаються повідомленням. Повідомлення повинні відображатися на пристрої відображення повідомлень інтерфейсу користувача, якщо такий передбачений.

Приклад повідомлення
(MSG, Це повідомлення)

17. Реєстрація зонда

* (PROBEOPEN filename.txt) - відкриє filename.txt та збереже в ньому 9-значну координату, що складається з XYZABCUVW кожного успішного прямого зондування. * (PROBECLOSE) - закриє відкритий файл журналу проб.

Для отримання додаткової інформації про зондування див. розділ G38.

18. Лісозаготівля

* (LOGOPEN,filename.txt) - відкриває іменований файл журналу. Якщо файл вже існує, він скорочується. * (LOGAPPEND,filename) - відкриває іменований файл журналу. Якщо файл вже існує, дані додаються. * (LOGCLOSE) – закриває відкритий файл журналу. * (LOG,) – все, що знаходиться після ,, записується до файлу журналу, якщо він відкритий. Підтримує розширення параметрів, як описано нижче.

Приклади логування знаходяться у файлах G-коду nc_files/examples/smartprobe.ngc та nc_files/ngcgui_lib/rectange_probe.ngc.

19. Повідомлення про скасування

* (ABORT,) – відображає повідомлення типу (MSG,) з додаванням спеціальної обробки параметрів коментарів, як описано нижче, та переривання поточного запущеного процесу.

20. Повідомлення про налагодження

* (DEBUG,) – відображає повідомлення типу (MSG,) з додаванням спеціальної обробки параметрів коментарів, як описано нижче.

21. Друк повідомлень

* (PRINT,) - Повідомлення виводяться на stderr зі спеціальною обробкою параметрів коментарів, як описано нижче.

22. Параметри коментарів

У коментарях DEBUG, PRINT та LOG значення параметрів у повідомленні розгортаються.

Наприклад: вивести іменовану глобальну змінну до stderr (вікно консолі за замовчуванням).

Приклад параметрів
(print,endmill dia = #<_endmill_dia>)
(print,value of variable 123 is: #123)

Усередині вищезазначених типів коментарів послідовності типу «#123» замінюються значенням параметра 123. Послідовності типу «#<іменований параметр>» замінюються значенням іменованого параметра. З іменованих параметрів видаляються пробіли. Отже, «#<іменований параметр>» буде перетворено на «#<іменованийпараметр>».

Номери параметрів можна форматувати, наприклад:

(DEBUG, value = %d#<some_value>)

виведе значення, округлене до цілого числа.

  • %lf використовується за замовчуванням, якщо рядок форматування відсутній.

  • %d = 0 десяткові дроби

  • %f = чотири знаки під комою

  • %.xf = x (0-9) кількість знаків під комою

Форматування буде виконано для всіх параметрів в одному рядку, якщо не буде змінено, тобто в одному рядку дозволено кілька форматів.

Рядок форматування не обов’язково має бути одразу поруч із параметром.

Якщо рядок форматування створено з неправильним шаблоном, він буде надрукований як символи.

23. Вимоги до файлу

Файл G-коду повинен містити один або декілька рядків G-коду та завершуватися символом Program End. Будь-який G-код після кінця програми не обчислюється.

Якщо код закінчення програми не використовується, використовується пара знаків відсотка «%», де перший знак відсотка знаходиться в першому рядку файлу, за ним йде один або кілька рядків G-коду, а потім другий знак відсотка. Будь-який код після другого знака відсотка не обробляється.

Warning
Використання % для обгортання файлу G-коду не дасть того ж результату, що і використання кінця програми. Машина буде перебувати в тому стані, в якому її залишила програма, що використовує %, шпиндель і охолоджуюча рідина можуть залишатися увімкненими, а такі параметри, як G90/91, залишаться такими, як їх встановила остання програма. Якщо ви не використовуєте належний преамбулу, наступна програма може запуститися в небезпечному стані.
Note
Файл має бути створений за допомогою текстового редактора, такого як Gedit, а не текстового процесора, такого як Open Office Word Processor.

24. Розмір файлу

Інтерпретатор і завдання ретельно написані таким чином, що єдиним обмеженням розміру програми обробки деталей є ємність диска. Однак інтерфейси TkLinuxCNC і Axis завантажують текст програми для відображення його користувачеві, тому обмежуючим фактором стає оперативна пам’ять. В Axis, оскільки попередній перегляд малюється за замовчуванням, час перемальовування також стає практичним обмеженням розміру програми. Попередній перегляд можна вимкнути в Axis, щоб пришвидшити завантаження великих програм обробки деталей. В Axis розділи попереднього перегляду можна вимкнути за допомогою коментарів preview control.

25. Порядок виконання G-коду

Порядок виконання елементів у рядку визначається не позицією кожного елемента в рядку, а наступним списком:

  • Команди O-коду (необов’язково з коментарем, але інші слова в тому ж рядку не допускаються)

  • Коментар (включно з повідомленням)

  • Встановити режим швидкості подачі (G93, G94).

  • Встановіть швидкість подачі (F).

  • Встановіть швидкість шпинделя (S).

  • Виберіть інструмент (T).

  • Вхід/вихід HAL (M62-M68).

  • Змінити інструмент (M6) та встановити номер інструменту (M61).

  • Увімкнення або вимкнення шпинделя (M3, M4, M5).

  • Зберегти стан (M70, M73), Відновити стан (M72), Визнати стан недійсним (M71).

  • Увімкнення або вимкнення охолоджувальної рідини (M7, M8, M9).

  • Увімкнути або вимкнути заміни (M48, M49,M50,M51,M52,M53).

  • Команди, визначені користувачем (M100-M199).

  • Затримка (G4).

  • Встановити активну площину (G17, G18, G19).

  • Встановити одиниці вимірювання довжини (G20, G21).

  • Компенсація радіуса різця ввімкнена або вимкнена (G40, G41, G42)

  • Компенсація довжини різця ввімкнена або вимкнена (G43, G49)

  • Вибір системи координат (G54, G55, G56, G57, G58, G59, G59.1, G59.2, G59.3).

  • Встановлення режиму керування траєкторією (G61, G61.1, G64)

  • Встановити режим відстані (G90, G91).

  • Встановити режим відведення (G98, G99).

  • Перейдіть до опорної точки (G28, G30) або змініть дані системи координат (G10) або встановіть зміщення осей (G52, G92, G92.1, G92.2, G92.3).

  • Виконайте рух (G0–G3, G33, G38.n, G73, G76, G80–G89), змінений (можливо) за допомогою G53.

  • Стій (M0, M1, M2, M30, M60).

26. Найкращі практики G-коду

Use an appropriate decimal precision

Use at least 3 digits after the decimal when milling in millimeters, and at least 4 digits after the decimal when milling in inches.

Зокрема, перевірки допусків дуг виконуються для 0,001 та 0,0001 відповідно до активних одиниць вимірювання.

Використовуйте послідовний білий простір

G-код найрозбірливіший, коли перед словами стоїть хоча б один пробіл. Хоча дозволено вставляти пробіл посередині чисел, це не дозволено.

Використовуйте дуги з центральним форматом

Дуги центрального формату (які використовують I- J- K- замість R-) поводяться більш стабільно, ніж дуги R-формату, особливо для кутів, що входять до складу, поблизу 180 або 360 градусів.

Використовуйте модальні групи набору преамбул

Якщо правильне виконання вашої програми залежить від модальних налаштувань, обов’язково встановіть їх на початку програми обробки деталей. Режими можуть бути перенесені з попередніх програм та з команд MDI.

Приклад преамбули для млина
G17 G20 G40 G49 G54 G80 G90 G94

G17 використовувати площину XY, G20 дюймовий режим, G40 скасувати компенсацію діаметра, G49 скасувати зміщення довжини, G54 використовувати систему координат 1, G80 скасувати стандартні цикли, G90 режим абсолютної відстані, G94 режим подачі/хвилини.

Мабуть, найважливішим параметром модального режиму є одиниці вимірювання відстані. Якщо ви не включите G20 або G21, різні верстати будуть фрезерувати програму в різних масштабах. Інші параметри, такі як режим повернення в фіксованих циклах, також можуть бути важливими.

Не пишіть забагато речей в один рядок

Ігноруйте все в розділі Order of Execution, і натомість не пишіть жодного рядка коду, який є хоч трохи неоднозначним.

Не встановлюйте та не використовуйте параметр в одному рядку

Не використовуйте та не встановлюйте параметр в одному рядку, навіть якщо семантика добре визначена. Оновлення змінної до нового значення, наприклад, #1=[#1+#2], є прийнятним.

Не використовуйте номери рядків

Номери рядків не мають жодних переваг. Коли номери рядків повідомляються в повідомленнях про помилки, числа відносяться до номера рядка у файлі, а не до значення N-слів.

Коли переміщуються кілька систем координат

Розгляньте можливість використання режиму зворотної швидкості часу.

Оскільки значення слова «F» в метрах за хвилину варіюється залежно від типу осі, що переміщується, а кількість видаленого матеріалу залежить не тільки від швидкості подачі, простіше використовувати G93, обернену швидкість часу, для видалення необхідної кількості матеріалу.

27. Лінійна та поворотна вісь

Оскільки значення F-слова в режимі подачі за хвилину залежить від того, яким осям подається команда на рух, а також оскільки кількість видаленого матеріалу залежить не тільки від швидкості подачі, для досягнення бажаної швидкості вилучення матеріалу може бути простіше використовувати режим зворотної подачі за часом G93.

28. Поширені повідомлення про помилки

  • G-code out of range - Було використано G-код, більший за G99, діапазон G-кодів у LinuxCNC становить від 0 до 99. Не кожне число від 0 до 99 є дійсним G-кодом.

  • Unknown G-code used - Було використано G-код, який не є частиною мови G-коду LinuxCNC.

  • «i,j,k слово без Gx для його використання» – i, j та k слів мають використовуватися в тому ж рядку, що й G-код.

  • «Неможливо використовувати значення осей без G-коду, який їх використовує» – значення осей не можна використовувати на рядку без активного модального G-коду або G-коду на тому ж рядку.

  • «Файл закінчився без знака відсотка або кінця програми» – кожен файл G-коду повинен закінчуватися на M2 або M30 або бути перенесений на знак відсотка %.