LinuxCNC (the Enhanced Machine Control) is a software system for computer control of machine tools such as milling machines and lathes, robots such as puma and scara and other computer controlled machines up to 9 axes. LinuxCNC is free software with open source code. Current versions of LinuxCNC are entirely licensed under the GNU General Public License and Lesser GNU General Public License (GPL and LGPL).

To lower the entry-hurdle, LinuxCNC provides: * легке виявлення та тестування без встановлення за допомогою Live Image, * легке встановлення з Live-образу, * прості у використанні графічні майстри конфігурації для швидкого створення конфігурації, специфічної для машини, * directly availability as regular packages of recent releases of Debian (since Bookworm) and Ubuntu (since Kinetic Kudu).

LinuxCNC provides a graphical user interface with many flavours to choose from to match your personal preferences and technical needs. Advanced users may directly exploit * інструменти для створення графічних інтерфейсів (Glade, Qt), * the interpreter for G-code (the RS-274 machine tool programming language), * робота низькорівневої машинної електроніки, такої як датчики та приводи двигунів, * простий у використанні шар «макетної плати» для швидкого створення унікальної конфігурації вашої машини, * програмний PLC, програмований за допомогою сходинок.

Under the hood, LinuxCNC provides * система планування руху в реальному часі з прогнозуванням, * support for non-Cartesian motion systems is provided via custom kinematics modules. Available architectures include hexapods (Stewart platforms and similar concepts) and systems with rotary joints to provide motion such as PUMA or SCARA robots. * support for a variety of hardware interfaces. The control can operate true servos (analog or PWM) with the feedback loop closed by the LinuxCNC software at the computer, or open loop with step-servos or stepper motors. * Функції управління рухом включають: компенсацію радіуса та довжини різака, відхилення траєкторії, обмежене заданим допуском, нарізування різьби на токарному верстаті, синхронізований рух осей, адаптивну швидкість подачі, ручне управління подачею оператором та контроль постійної швидкості. * LinuxCNC runs on Linux using real-time extensions.

LinuxCNC expects G-code that if not entered manually is provided by another software, which supports CAM (Computer Automated Manufacturing) and determines what tool shall be used at what speed for what geometry. Many prominent CAD (Computer Automated Design) tools that determine the desired final shape of your work piece (or the assembly of multiple work pieces that area to be produced individually) offer a CAM module.

1. Architecture - Context diagram

LinuxCNC Architecture - Context diagram
Figure 1. Roles of operators, integrators, developers and hardware

The diagram presents the components and players of the LinuxCNC ecosystem and how they interact. It is not intended to help you understand the functionality of LinuxCNC. Please refer to the following chapters for this.

Operator

One a machine is set up, its operator will only use one of the many graphical user interfaces that LinuxCNC and external groups are providing. The requirements for the operator are determined by how the integrator has set up the machine. The integrator has the option of setting up the machine so that the operator only presses one button to start the machining process, or leaves the GUI in its default state and the operator will fully control the CNC machine using the GUI functionality and G,M,O-codes. The integrator may or may not create a physical or virtual panel for the operator with various buttons and various indicators.

Інтегратор

It is on an integrator (machine builder) to ensure that the LinuxCNC configuration matches the hardware setup both in the wiring and the protocols spoken on those wires. The integrator can choose whether to set up the machine using the Wizard or to configure it manually. If the Wizard is used, the integrator’s knowledge of LinuxCNC is minimal. It is enough to understand the machine hardware. If the integrator wants to use the maximum potential of LinuxCNC, he must be able to create or edit configuration files manually. To do this, it is enough to have knowledge of HAL, INI configuration and ideally the creation of custom HAL components or embedded panels. This knowledge will allow the connection of various hardware combinations with LCNC. Using INI, the integrator selects the GUI (Gmoccapy, Axis, Qt, …), kinematics, number of axes, parameters (velocities, acceleration, distance, …). Using HAL, the integrator selects the hardware control method (velocity mode / position mode, on-off control / analog control, without / with feedback, …). Using a suitable HAL module, various components can be controlled via various buses (PCI, USB, Ethernet, EtherCAT, Modbus RTU/TCP, Parallel port, …)

Developer

The LinuxCNC developers may be coming up with drivers for new hardware or other new features in the GUI and anything in between a mouse click and a motor turning. For testing, monitoring or possibly also the communication between multiple machines, also a text-based interface to LinuxCNC is available. Since LinuxCNC is an Open-source project, you can modify it in any way you like, provided you meet the very benevolent license conditions. You can create these modifications for the official LinuxCNC community, or for your own needs. Both paths have their advantages and disadvantages. If you offer your modification or improvement to the official developers, if they are interested, they can help you improve it even more and you will receive feedback. If you keep your modification to yourself, you do not have to worry about whether it will interest the official developers, but it may be a problem in the future if someone unfamiliar with these modifications were to maintain the machine you built (modifications, updates, fixes, …). Of course, the developers modify all the code that is part of LinuxCNC, but the diagram only shows the links for which the developer’s skills are necessary (C, C++, Python, Bash, GTK, Glade, QT, Linux OS, GitHub, PC hardware, …)

Wizard

Wizards are standalone programs that LinuxCNC and external groups are providing. They can work without other LinuxCNC components. The main output of Wizards are configuration files (*.ini, *.hal and others). Therefore, it is possible to do your first machine setup using the Wizard and only later, after a deeper study of the LCNC configuration, can you edit the files generated by the Wizard.

2. Операційна система

LinuxCNC доступний у вигляді готових до використання пакетів для дистрибутивів Debian.

3. Отримання допомоги

3.1. Веб-форум

Веб-форум можна знайти за адресою https://forum.linuxcnc.org або за посиланням у верхній частині головної сторінки linuxcnc.org.

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

3.2. IRC

IRC розшифровується як Internet Relay Chat (Інтернет-релейний чат). Це живе з’єднання з іншими користувачами LinuxCNC. IRC-канал LinuxCNC на libera.chat — #linuxcnc.

Найпростіший спосіб потрапити на IRC – це скористатися вбудованим веб-клієнтом від libera.

Трохи етикету IRC
  • Задавайте конкретні запитання… Уникайте запитань на кшталт «Хтось може мені допомогти?».

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

  • Будьте терплячими, чекаючи на відповідь. Іноді формулювання відповіді займає деякий час, або ж усі можуть бути зайняті роботою чи чимось подібним.

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

Спільний доступ до файлів

Найпоширеніший спосіб обміну файлами на IRC – це завантажити файл на один із наведених нижче або подібний сервіс і вставити посилання:

3.3. Список розсилки

Інтернет-розсилка — це спосіб поставити питання, щоб усі учасники розсилки могли їх побачити та відповісти на них у зручний для них час. У розсилці ваші питання отримають більшу увагу, ніж в IRC, але відповіді надходять довше. Коротко кажучи, ви надсилаєте повідомлення на адресу розсилки і отримуєте щоденні дайджести або індивідуальні відповіді, залежно від того, як ви налаштували свій обліковий запис.

Ви можете підписатися на список розсилки emc-users за адресою: https://lists.sourceforge.net/lists/listinfo/emc-users.

3.4. Веб-форум

Веб-форум можна знайти за адресою https://forum.linuxcnc.org/ або за посиланням у верхній частині головної сторінки https://linuxcnc.org/.

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

3.5. Вікі LinuxCNC

Вікі-сайт — це веб-сайт, що підтримується користувачем, який будь-хто може доповнювати або редагувати.

Користувацький сайт LinuxCNC Wiki містить безліч інформації та порад за адресою: посилання: http://wiki.linuxcnc.org

3.6. Звіти про помилки

Повідомляйте про помилки LinuxCNC за посиланням Github: система відстеження помилок github.