LinuxCNC Documentation

1. Вступ

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

2. Як працює LinuxCNC

LinuxCNC — це набір висококонфігурованих програм для управління фрезерними та токарними верстатами з числовим програмним управлінням (CNC), 3D-принтерами, роботами, лазерними та плазмовими різаками та іншими автоматизованими пристроями. Він здатний забезпечувати скоординоване управління до 9 осей руху.

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

  • графічний інтерфейс користувача (GUI), який утворює базовий інтерфейс між оператором, програмним забезпеченням та самим верстатом з CNC;

  • Рівень абстракції обладнання (HAL), який забезпечує метод зв’язку всіх різноманітних внутрішніх віртуальних сигналів, що генеруються та отримуються LinuxCNC, із зовнішнім світом,

  • контролери високого рівня, які координують генерацію та виконання управління рухом верстата з CNC, а саме контролер руху (EMCMOT), контролер дискретного вводу/виводу (EMCIO) та виконавець завдань (EMCTASK).

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

Простий верстат з керований LinuxCNC
Figure 1. Простий верстат з керований LinuxCNC

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

Хоча на малюнку зображена система крокового двигуна під керуванням паралельного порту, система LinuxCNC також може використовувати широкий спектр спеціальних апаратних інтерфейсів керування рухом для підвищення швидкості та можливостей вводу-виводу. Повний перелік інтерфейсів, що підтримуються LinuxCNC, можна знайти на сторінці Supported Hardware вікі.

У більшості випадків користувачі створюють конфігурацію, специфічну для їхнього верстата, використовуючи або Майстер конфігурації крокового двигуна (для систем CNC, що працюють з використанням паралельного порту комп’ютера), або Майстер апаратного забезпечення Mesa (для більш просунутих систем, що використовують PCI-карту Mesa Anything I/O). Запуск будь-якого з цих майстрів призведе до створення на жорсткому диску комп’ютера декількох папок, що містять низку файлів конфігурації, специфічних для даного верстата з CNC, а також піктограму на робочому столі, що дозволяє легко запускати LinuxCNC.

Наприклад, якщо майстер налаштування крокового двигуна був використаний для створення налаштувань для 3-осьового фрезерного верстата з CNC, зображеного вище під назвою «My_CNC», папки, створені майстром, зазвичай містять такі файли:

  • Folder: My_CNC

    • My_CNC.ini
      The INI file contains all the basic hardware information regarding the operation of the CNC mill, such as the number of steps each stepper motor must turn to complete one full revolution, the maximum rate at which each stepper may operate at, the limits of travel of each axis or the configuration and behaviour of limit switches on each axis.

    • My_CNC.hal
      This HAL file contains information that tells LinuxCNC how to link the internal virtual signals to physical connections beyond the computer. For example, specifying pin 4 on the parallel port to send out the Z axis step direction signal, or directing LinuxCNC to cease driving the X axis motor when a limit switch is triggered on parallel port pin 13.

    • custom.hal
      Customisations to the mill configuration beyond the scope of the wizard may be performed by including further links to other virtual points within LinuxCNC in this HAL file. When starting a LinuxCNC session, this file is read and processed before the GUI is loaded. An example may include initiating Modbus communications to the spindle motor so that it is confirmed as operational before the GUI is displayed.

    • custom_postgui.hal
      The custom_postgui HAL file allows further customisation of LinuxCNC, but differs from custom.HAL in that it is processed after the GUI is displayed. For example, after establishing Modbus communications to the spindle motor in custom.hal, LinuxCNC can use the custom_postgui file to link the spindle speed readout from the motor drive to a bargraph displayed on the GUI.

    • postgui_backup.hal
      This is provided as a backup copy of the custom_postgui.hal file to allow the user to quickly restore a previously-working postgui HAL configuration. This is especially useful if the user wants to run the Configuration Wizard again under the same My_CNC name in order to modify some parameters of the mill. Saving the mill configuration in the Wizard will overwrite the existing custom_postgui file while leaving the postgui_backup file untouched.

    • tool.tbl
      A tool table file contains a parameterised list of any cutting tools used by the mill. These parameters can include cutter diameter and length, and is used to provide a catalogue of data that tells LinuxCNC how to compensate its motion for different sized tools within a milling operation.

  • Folder: nc_files
    The nc_files folder is provided as a default location to store the G-code programs used to drive the mill. It also includes a number of subfolders with G-code examples.

3. Графічні інтерфейси користувача

A graphical user interface is the part of the LinuxCNC that the machine tool operator interacts with. LinuxCNC comes with several types of user interfaces which may be chosen from by editing certain fields contained in the INI file:

AXIS

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

AXIS, стандартний інтерфейс графічного інтерфейсу клавіатури
Figure 2. AXIS, стандартний інтерфейс графічного інтерфейсу клавіатури
Доторкливий

Touchy, графічний інтерфейс для сенсорних екранів:

Touchy, сенсорний графічний інтерфейс
Figure 3. Touchy, сенсорний графічний інтерфейс
G-екран

Gscreen, графічний інтерфейс із сенсорним екраном, що налаштовується користувачем:

Gscreen, налаштовуваний базовий сенсорний екран GUI
Figure 4. Gscreen, налаштовуваний базовий сенсорний екран GUI
GMOCCAPY

GMOCCAPY, Сенсорний графічний інтерфейс користувача на базі Gscreen. GMOCCAPY також розроблений для однаково ефективної роботи в програмах, де клавіатура та миша є переважними методами керування графічним інтерфейсом:

GMOCCAPY, графічний інтерфейс із сенсорним екраном на базі Gscreen
Figure 5. GMOCCAPY, графічний інтерфейс із сенсорним екраном на базі Gscreen
NGCGUI

NGCGUI, підпрограма GUI, що забезпечує програмування G-коду у форматі майстра. NGCGUI може працювати як самостійна програма або бути вбудована в інший GUI у вигляді серії вкладок. На наступному знімку екрана показано NGCGUI, вбудовану в AXIS:

NGCGUI, графічний інтерфейс, інтегрований в AXIS
Figure 6. NGCGUI, графічний інтерфейс, інтегрований в AXIS
'TkLinuxCNC

TkLinuxCNC, ще один інтерфейс на основі Tcl/Tk. Колись найпопулярніший інтерфейс після AXIS.

Графічний інтерфейс TkLinuxCNC
Figure 7. Графічний інтерфейс TkLinuxCNC
QtDragon

QtDragon, графічний інтерфейс користувача для сенсорних екранів на базі QtVCP з використанням бібліотеки PyQt5. Він доступний у двох версіях: «QtDragon» і «QtDragon_hd». Вони дуже схожі за функціональністю, але QtDragon_hd призначений для більших моніторів.

QtDragon, графічний інтерфейс із сенсорним екраном на основі QtVCP
Figure 8. QtDragon, графічний інтерфейс із сенсорним екраном на основі QtVCP
QtPlasmaC

QtPlasmaC, Графічний інтерфейс для плазмового різання з сенсорним екраном, заснований на QtVCP та бібліотекі PyQt5. Він доступний у трьох співвідношеннях сторін: 16:9, 4:3 та 9:16.

QtPlasmaC, сенсорний графічний інтерфейс для плазмового різання на основі QtVCP
Figure 9. QtPlasmaC, сенсорний графічний інтерфейс для плазмового різання на основі QtVCP

4. Інтерфейс користувача

Ці інтерфейси користувача є способом взаємодії з LinuxCNC поза межами графічних інтерфейсів користувача.

halui

Інтерфейс користувача на основі HAL, що дозволяє керувати LinuxCNC за допомогою кнопок та перемикачів

linuxcncrsh

Інтерфейс користувача на основі Telnet, що дозволяє надсилати команди з віддалених комп’ютерів.

5. Віртуальна панель керування

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

PyVCP

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

PyVCP вбудований в AXIS
Figure 10. Приклад PyVCP, вбудований у графічний інтерфейс AXIS
GladeVCP

GladeVCP, віртуальна панель керування на базі Glade, яку можна додати до графічних інтерфейсів AXIS або Touchy. GladeVCP має перевагу над PyVCP, оскільки не обмежується відображенням або керуванням віртуальними сигналами HAL, а може включати інші зовнішні інтерфейси поза LinuxCNC, такі як події вікна або мережі. GladeVCP також є більш гнучкою в тому, як її можна налаштувати для відображення в графічному інтерфейсі:

GladeVCP вбудований в AXIS
Figure 11. Приклад GladeVCP, вбудований у графічний інтерфейс AXIS
QtVCP

QtVCP, віртуальна панель керування на базі PyQt5, яку можна додати до більшості графічних інтерфейсів користувача або запустити як самостійну панель. QtVCP має перевагу над PyVCP, оскільки не обмежується відображенням або керуванням віртуальними сигналами HAL, а може включати інші зовнішні інтерфейси поза LinuxCNC, такі як події вікна або мережі, шляхом розширення за допомогою коду python. QtVCP також є більш гнучким у налаштуванні для відображення в графічному інтерфейсі користувача за допомогою багатьох спеціальних віджетів:

Панель QtVCP, вбудована в QtDragon
Figure 12. Приклад QtVCP, вбудований у графічний інтерфейс QtDragon

6. Мови

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

7. Думай як оператор CNC

Цей посібник не претендує на те, щоб навчити вас користуватися токарним або фрезерним верстатом. Щоб стати досвідченим оператором, потрібно багато часу і багато роботи. Один автор колись сказав: «Ми вчимося на досвіді, якщо він у нас є». Зламані інструменти, пошкоджені лещата і шрами — це свідчення отриманого досвіду. Гарне покриття, жорсткі допуски і обережність під час роботи — це свідчення отриманого досвіду. Жодна машина чи програма не може замінити людський досвід.

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

8. Режими роботи

Під час роботи LinuxCNC існує три основні режими введення команд. Це ручний, автоматичний та ручний ввід даних (MDI). Перехід з одного режиму в інший суттєво впливає на поведінку системи управління LinuxCNC. У одному режимі можна виконати певні дії, які неможливо виконати в іншому. Оператор може повернути вісь у вихідне положення в ручному режимі, але не в автоматичному або MDI. Оператор може змусити верстат виконати весь файл, заповнений G-кодами, в автоматичному режимі, але не в ручному або MDI.

У ручному режимі кожна команда вводиться окремо. У людських термінах ручна команда може бути «увімкнути охолодження» або «перемістити X зі швидкістю 25 дюймів на хвилину». Це приблизно еквівалентно натисканню перемикача або повороту маховика для осі. Ці команди зазвичай обробляються на одному з графічних інтерфейсів натисканням кнопки мишею або утриманням клавіші на клавіатурі. В автоматичному режимі подібна кнопка або клавіша може використовуватися для завантаження або запуску виконання всієї програми G-коду, яка зберігається у файлі. У режимі MDI оператор може ввести блок коду і наказати верстату виконати його, натиснувши клавішу <return> або <enter> на клавіатурі.

Деякі команди керування рухом доступні одночасно і спричиняють однакові зміни руху в усіх режимах. До них належать «Перервати», «Аварійна зупинка» та «Перевищення швидкості подачі». Такі команди не потребують додаткових пояснень.

Інтерфейс користувача AXIS приховує деякі відмінності між режимом Auto та іншими режимами, роблячи автоматичні команди доступними в більшості випадків. Він також стирає відмінності між режимами Manual та MDI, оскільки деякі команди Manual, такі як Touch Off, фактично реалізуються шляхом надсилання команд MDI. Це досягається шляхом автоматичного переходу до режиму, необхідного для виконання дії, яку запросив користувач.