1. Вступ

У цьому розділі ми спробуємо розвіяти міфи про системи координат. Це дуже важлива концепція для розуміння роботи верстата з CNC, його конфігурації та використання.

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

У цьому розділі ви знайдете інформацію про зміщення, які використовуються в LinuxCNC. До них належать:

  • Координати машини (G53)

  • Дев’ять зміщень системи координат (G54-G59.3)

  • Глобальні зміщення (G92) та локальні зміщення (G52)

2. Система координат машини

При запуску LinuxCNC положення кожної осі є початком координат верстата. Після повернення осі в початкове положення початок координат верстата для цієї осі встановлюється в початкове положення. Початок координат верстата є системою координат верстата, на якій базуються всі інші системи координат. G-код G53 можна використовувати для переміщення в системі координат верстата.

2.1. Переміщення координат машини: G53

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

G53 G0 X0 Y0 Z0

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

G53 — це немодальна команда. Її необхідно використовувати в кожному блоці, де потрібне переміщення в системі координат верстата.

3. Системи координат

Приклад систем координат
Figure 1. Приклад систем координат
Зміщення системи координат
  • G54 - використовувати систему координат 1

  • G55 - використовувати систему координат 2

  • G56 - використовувати систему координат 3

  • G57 - використовувати систему координат 4

  • G58 - використовувати систему координат 5

  • G59 - використовувати систему координат 6

  • G59.1 - використовувати систему координат 7

  • G59.2 - використовувати систему координат 8

  • G59.3 - використовувати систему координат 9

Зсуви координатної системи використовуються для зміщення координатної системи від координатної системи верстата. Це дозволяє програмувати G-код для деталі без урахування її розташування на верстаті. Використання зсувів координатної системи дозволяє обробляти деталі в різних місцях за допомогою одного і того ж G-коду.

Значення зміщень зберігаються у файлі VAR, який запитується файлом INI під час запуску LinuxCNC. У наведеному нижче прикладі, де використовується G55, положення кожної осі для початку координат G55 зберігається у пронумерованій змінній.

У схемі VAR-файлу перша змінна номер зберігає зміщення X, друга – зміщення Y і так далі для всіх дев’яти осей. Існують такі пронумеровані набори для кожного зі зміщень системи координат.

Кожен з графічних інтерфейсів має спосіб встановлення значень для цих зміщень. Ви також можете встановити ці значення, редагуючи сам файл VAR, а потім перезапустивши LinuxCNC, щоб LinuxCNC прочитав нові значення, однак це не є рекомендованим способом. Використання G10, G52, G92, G28.1 тощо є кращими способами встановлення змінних. У нашому прикладі ми безпосередньо відредагуємо файл, щоб G55 приймав такі значення:

Table 1. Приклад параметрів G55
Вісь Змінна Значення

X

5241

2.000000

Y

5242

1.000000

Z

5243

-2.000000

A

5244

0.000000

B

5245

0.000000

C

5246

0.000000

U

5247

0.000000

V

5248

0.000000

W

5249

0.000000

Це слід інтерпретувати як зміщення нульових позицій G55 на X = 2 одиниці, Y = 1 одиниця та Z = -2 одиниці від абсолютного нуля.

Після присвоєння значень виклик G55 у блоці програми змістить нульову точку відліку на значення, що зберігаються. Наступний рядок перемістить кожну вісь у нове нульове положення. На відміну від G53, G54–G59.3 є модальними командами. Вони будуть діяти на всі блоки коду після того, як одна з них буде встановлена. Програма, яка може виконуватися з використанням зміщень кріплення, вимагатиме лише однієї координатної точки відліку для кожного з місць і всієї роботи, яка має бути виконана там. Наступний код наводиться як приклад створення квадрата з використанням зміщень G55, які ми встановили вище.

G55 ; використовувати систему координат 2
G0 X0 Y0 Z0
G1 F2 Z-0.2000
X1
Y1
X0
Y0
G0 Z0
G54 ; використовувати систему координат 1
G0 X0 Y0 Z0
M2

У цьому прикладі G54 біля кінця залишає систему координат G54 з усіма нульовими зміщеннями, так що існує модальний код для абсолютних положень осей на основі верстата. Ця програма припускає, що ми це зробили, і використовує кінцеву команду як команду для обробки нуля. Можна було б використовувати G53 і дійти до того ж результату, але ця команда не була б модальною, і будь-які команди, видані після неї, повернулися б до використання зміщень G55, оскільки ця система координат все ще була б чинною.

[source,ngc]

G54     використовує параметри системи координат 1
G55     використовує параметри системи координат 2
G56     використовує параметри системи координат 3
G57     використовує параметри системи координат 4
G58     використовує параметри системи координат 5
G59     використовує параметри системи координат 6
G59.1   використовує параметри системи координат 7
G59.2   використовує параметри системи координат 8
G59.3   використовує параметри системи координат 9

3.1. Система координат за замовчуванням

Ще одна змінна у файлі VAR стає важливою, коли ми думаємо про системи зміщення. Ця змінна має ім’я 5220. У файлах за замовчуванням її значення встановлено на 1.00000. Це означає, що при запуску LinuxCNC повинен використовувати першу систему координат як стандартну. Якщо ви встановите це значення на 9.00000, то при запуску і скиданні налаштувань буде використовуватися дев’ята система зміщення як стандартна. Будь-яке значення, відмінне від цілого числа (насправді десяткового) від 1 до 9, або відсутність змінної 5220 призведе до того, що LinuxCNC повернеться до значення за замовчуванням 1.00000 під час запуску.

3.2. Налаштування зміщень системи координат

Команду G10 L2x можна використовувати для встановлення зміщень системи координат:

  • G10 L2 P(1-9) - Встановити зміщення на значення. Поточна позиція не має значення (див. G10 L2 для отримання детальнішої інформації).

  • G10 L20 P(1-9) - Встановити зміщення (зміщення), щоб поточна позиція стала значенням (див. G10 L20 для отримання детальнішої інформації).

Note
Ми наводимо тут лише короткий огляд, повний опис дивіться в розділах G-коду.

4. Локальні та глобальні зміщення

4.1. Команда G52

G52 використовується в програмі обробки деталі як тимчасове «зсунення локальної системи координат» в системі координат заготовки. Прикладом використання є обробка декількох однакових елементів в різних місцях деталі. Для кожного елемента G52 програмує локальну базову точку в координатах заготовки, і викликається підпрограма для обробки елемента відносно цієї точки.

Зсуви осі «G52» програмуються відносно зсувів координат заготовки «G54» до «G59.3». Як локальний зсув, «G52» застосовується після зсуву заготовки, включаючи обертання. Таким чином, елемент деталі буде оброблятися однаково на кожній деталі, незалежно від орієнтації деталі на палеті.

Caution
Як тимчасове зміщення, встановлене та скасоване в локалізованій області дії програми обробки деталі, в інших інтерпретаторах G-коду «G52» не зберігається після перезавантаження верстата, «M02» або «M30». У LinuxCNC «G52» має спільні параметри з «G92», який, з історичних причин, зберігає ці параметри. Див. G92 Persistence Cautions нижче.
Caution
«G52» і «G92» мають однакові регістри зміщення. Тому встановлення «G52» замінить будь-яке попереднє встановлення «G92», а «G52» збережеться після перезавантаження машини, якщо ввімкнено збереження «G92». Ці взаємодії можуть призвести до несподіваних зміщень. Див. Застереження щодо взаємодії G92 і G52 нижче.

Програмування «G52 X1 Y2» зміщує поточну систему координат заготовки по осі X на 1 і по осі Y на 2. Відповідно, на цифровому індикаторі поточні координати X і Y положення інструменту будуть зменшені на 1 і 2 відповідно. Осі, не вказані в команді, такі як Z у попередньому прикладі, не будуть змінені: будь-яке попереднє зміщення Z «G52» залишиться в силі, а в іншому випадку зміщення Z буде дорівнювати нулю.

Тимчасове локальне зміщення можна скасувати за допомогою G52 X0 Y0. Будь-які осі, які не обнулені явно, збережуть попереднє зміщення.

G52 використовує ті самі регістри зміщення, що й «G92», і тому «G52» видно на DRO та в попередньому перегляді з позначкою «G92».

5. Зміщення осей G92

G92 — це найбільш неправильно зрозуміла і найрозумніша команда, яку можна запрограмувати за допомогою LinuxCNC. Спосіб її роботи дещо змінився між першими версіями і поточною. Ці зміни, без сумніву, збентежили багатьох користувачів. Їх слід розглядати як команду, що створює тимчасове зміщення, яке застосовується до всіх інших зміщень.

5.1. Команди G92

«G92» зазвичай використовується у двох концептуально різних значеннях: як «зміщення глобальної системи координат» або як «зміщення локальної системи координат».

Набір команд «G92» включає:

  • G92 - Ця команда, якщо її використовувати з іменами осей, встановлює значення для змінних зміщення.

  • G92.1 - Ця команда встановлює нульові значення для змінних G92.

  • G92.2 - Ця команда призупиняє, але не обнуляє змінні G92.

  • G92.3 - Ця команда застосовує значення зміщення, які були призупинені.

Як глобальне зміщення, «G92» використовується для зміщення всіх систем координат заготовки «G54» до «G59.3». Прикладом використання є обробка декількох однакових деталей в пристосуваннях з відомими розташуваннями на палеті, але розташування палети може змінюватися між циклами або між верстатами. Кожне зміщення кріплення відносно опорної точки на палеті заздалегідь встановлюється в одній із систем координат заготовки, від «G54» до «G59.3», а «G92» використовується для «дотику» до опорної точки палети. Потім для кожної деталі вибирається відповідна система координат заготовки і виконується програма обробки деталі.

Note
Поворот системи координат заготовки «G10 R-» є специфічним для інтерпретатора «rs274ngc», а зміщення «G92» застосовується «після» повороту. При використанні «G92» як глобального зміщення повороти системи координат заготовки можуть мати несподівані результати.

Як локальна система координат, «G92» використовується як тимчасове зміщення в системі координат заготовки. Прикладом використання є обробка деталі з декількома ідентичними елементами в різних місцях. Для кожного елемента «G92» використовується для встановлення локальної точки відліку, а для обробки елемента, починаючи з цієї точки, викликається підпрограма.

Note
Не рекомендується використовувати «G92» для програмування з локальними системами координат у програмі обробки деталі. Замість цього див. «G52», локальну систему координат, яка є більш інтуїтивною, коли відоме бажане зміщення відносно заготовки, але поточне положення інструменту може бути невідомим.

Програмування G92 X0 Y0 Z0 встановлює поточне положення інструменту на координати X0, Y0 та Z0 без руху. G92 не працює з абсолютними координатами верстата. Він працює з поточного положення.

«G92» також працює з поточного місця розташування, зміненого будь-якими іншими зміщеннями, які діють під час виклику команди «G92». Під час тестування відмінностей між робочими зміщеннями та фактичними зміщеннями було виявлено, що зміщення «G54» може скасувати «G92» і, таким чином, створити враження, що жодні зміщення не діють. Однак «G92» все ще діяла для всіх координат і створювала очікувані робочі зміщення для інших систем координат.

За замовчуванням, зміщення «G92» відновлюються після запуску верстата. Програмісти, які бажають отримати поведінку Fanuc, де зміщення «G92» очищаються при запуску верстата, після перезавантаження або закінчення програми, можуть вимкнути збереження «G92», встановивши «DISABLE_G92_PERSISTENCE = 1» в розділі «[RS274NGC]» файлу INI.

Note
Рекомендується очищати зміщення «G92» після їх використання за допомогою «G92.1» або «G92.2». При запуску LinuxCNC з увімкненою функцією збереження «G92» (за замовчуванням) будь-які зміщення в змінних «G92» будуть застосовані при поверненні осі в початкове положення. Див. Застереження щодо збереження G92 нижче.

5.2. Встановлення значень G92

Існує щонайменше два способи встановлення значень G92:

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

  • За допомогою команди G92

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

Програмування «G92 X Y Z A B C U V W» встановлює значення змінних G92 таким чином, що кожна вісь приймає значення, пов’язане з її назвою. Ці значення присвоюються поточній позиції осей. Ці результати відповідають пунктам 1 і 2 документа NIST.

Команди G92 працюють з поточного положення осі та додають і віднімають правильно, щоб надати поточній позиції осі значення, призначене командою G92. Ефекти працюють, навіть якщо попередні зміщення є.

Отже, якщо вісь X наразі показує 2,0000 як своє положення, команда «G92 X0» встановить зміщення -2,0000, щоб поточне положення X стало нульовим. Команда «G92 X2» встановить зміщення 0,0000, і відображуване положення не зміниться. Команда «G92 X5.0000» встановить зміщення 3,0000, так що поточна відображувана позиція стане 5,0000.

5.3. Застереження щодо стійкості G92

За замовчуванням значення зміщення G92 будуть збережені у файлі VAR та відновлені після скидання налаштувань або запуску верстата.

Параметри G92:

  • 5210 - Прапор увімкнення/вимкнення (1.0/0.0)

  • 5211 - Зміщення осі X

  • 5212 - Зміщення осі Y

  • 5213 - Зміщення осі Z

  • 5214 - Зсув осі A

  • 5215 - Зміщення осі B

  • 5216 - Зміщення осі C

  • 5217 - Зміщення осі U

  • 5218 - Зміщення осі V

  • 5219 - Зміщення осі W

де 5210 — це прапор увімкнення «G92» (1 для увімкнення, 0 для вимкнення), а 5211–5219 — це зміщення осей. Якщо ви бачите несподівані позиції в результаті заданого руху, що є наслідком збереження зміщення в попередній програмі та їхнього незнищення в кінці, видайте команду G92.1 у вікні MDI, щоб знищити збережені зміщення.

Якщо при запуску LinuxCNC у файлі VAR містяться значення G92, то значення G92 у файлі var будуть застосовані до значень поточного положення кожної осі. Якщо це вихідне положення і вихідне положення встановлено як нуль верстата, все буде правильно. Після встановлення вихідного положення за допомогою реальних перемикачів верстата або шляхом переміщення кожної осі у відоме вихідне положення і видачі команди вихідного положення осі, будуть застосовані будь-які зміщення G92. Якщо під час повернення осі X у вихідне положення діє G92 X1, DRO покаже «X: 1.000» замість очікуваного «X: 0.000», оскільки G92 було застосовано до початку координат верстата. Якщо ви видаєте G92.1, а DRO тепер показує всі нулі, це означає, що під час останнього запуску LinuxCNC діяло зміщення G92.

Якщо ви не маєте наміру використовувати ті самі зміщення G92 у наступній програмі, найкращою практикою є видання коду G92.1 в кінці будь-яких файлів G-коду, де ви використовуєте зміщення G92.

Коли програма переривається під час обробки, в якій діють зміщення «G92», запуск призведе до їх повторного активування. В якості запобіжного заходу завжди використовуйте преамбулу для налаштування середовища відповідно до ваших очікувань. Крім того, збереження «G92» можна вимкнути, встановивши «DISABLE_G92_PERSISTENCE = 1» у розділі «[RS274NGC]» файлу INI.

5.4. Застереження щодо взаємодії G92 та G52

«G52» і «G92» мають однакові регістри зміщення. Якщо в файлі INI не вимкнено збереження «G92» (див. Команди G92), зміщення «G52» також зберігаються після перезавантаження верстата, «M02» або «M30». Зверніть увагу, що зміщення «G52», яке діє під час переривання програми, може призвести до небажаних зміщень під час виконання наступної програми. Див. Застереження щодо збереження G92 вище.

6. Приклади програм із використанням зміщень

6.1. Приклад програми з використанням зміщень координат заготовки

У цьому зразку гравірувального проєкту фрезерується набір з чотирьох кіл радіусом 0,1 приблизно у формі зірки навколо центрального кола. Ми можемо налаштувати окремий візерунок кола ось так.

G10 L2 P1 X0 Y0 Z0 (переконайтеся, що G54 встановлено на нульовий станок)
G0 X-0.1 Y0 Z0
G1 F1 Z-0.25
G3 X-0.1 Y0 I0.1 J0
G0 Z0
M2

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

G10 L2 P2 X0.5 (зміщення значення G55 X на 0.5 дюйма)
G10 L2 P3 X-0.5 (зміщення значення G56 X на -0.5 дюйма)
G10 L2 P4 Y0.5 (зміщення значення G57 Y на 0.5 дюйма)
G10 L2 P5 Y-0.5 (зміщення значення G58 Y на -0.5 дюйма)

Ми об’єднали їх у наступній програмі:

(програма для фрезерування п'яти маленьких кіл у формі ромба)

G10 L2 P1 X0 Y0 Z0 (переконайтеся, що G54 є нульовою точкою верстата)
G10 L2 P2 X0.5 (зсуває значення G55 X на 0,5 дюйма)
G10 L2 P3 X-0.5 (зсуває значення G56 X на -0,5 дюйма)
G10 L2 P4 Y0.5 (зсуває значення G57 Y на 0,5 дюйма)
G10 L2 P5 Y-0.5 (зсуває значення G58 Y на -0,5 дюйма)

G54 G0 X-0.1 Y0 Z0 (центральне коло)
G1 F1 Z-0.25
G3 X-0.1 Y0 I0.1 J0
G0 Z0

G55 G0 X-0.1 Y0 Z0 (перше зміщене коло)
G1 F1 Z-0.25
G3 X-0.1 Y0 I0.1 J0
G0 Z0

G56 G0 X-0.1 Y0 Z0 (друге зміщене коло)
G1 F1 Z-0.25
G3 X-0.1 Y0 I0.1 J0
G0 Z0

G57 G0 X-0.1 Y0 Z0 (третє зміщене коло)
G1 F1 Z-0.25
G3 X-0.1 Y0 I0.1 J0
G0 Z0

G58 G0 X-0.1 Y0 Z0 (четверте зміщене коло)
G1 F1 Z-0.25
G3 X-0.1 Y0 I0.1 J0
G54 G0 X0 Y0 Z0

M2

Тепер настав час застосувати набір зміщень G92 до цієї програми. Ви побачите, що вона працює в кожному випадку на Z0. Якщо фрезерний верстат перебував у нульовому положенні, команда G92 Z1.0000, видана на початку програми, змістила б все на один дюйм. Ви також можете змістити весь малюнок у площині XY, додавши деякі зміщення X і Y за допомогою G92. Якщо ви це зробите, вам слід додати команду G92.1 безпосередньо перед M2, яка завершує програму. Якщо ви цього не зробите, інші програми, які ви можете запустити після цієї, також використовуватимуть це зміщення G92. Крім того, це збереже значення G92 при вимкненні LinuxCNC, і вони будуть відновлені при повторному запуску.

6.2. Приклад програми з використанням зміщень G52

(Має бути написано)