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: * einfaches Entdecken und Testen ohne Installation mit dem Live-Image, * einfache Installation von der Live-Image, * benutzerfreundliche grafische Konfigurationsassistenten zum schnellen Erstellen einer maschinenspezifischen Konfiguration, * 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 * Tool zur Erstellung einer grafischen Benutzeroberfläche (Glade, Qt), * the interpreter for G-code (the RS-274 machine tool programming language), * Betrieb von Low-Level-Maschinenelektronik wie Sensoren und Motorantriebe, * eine einfach zu bedienende Steckplatinen-Schicht für die schnelle Erstellung einer einzigartigen Konfiguration für Ihre Maschine, * eine mit Leiterdiagrammen programmierbare Software-SPS.

Under the hood, LinuxCNC provides * ein System zur Bewegungsplanung in Echtzeit mit Vorausschau, * 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. * Zu den Funktionen der Bewegungssteuerung gehören: Fräserradius- und Längenkompensation, auf eine bestimmte Toleranz begrenzte Bahnabweichung, Gewindedrehen, synchronisierte Achsenbewegung, adaptiver Vorschub, Vorschubübersteuerung durch den Bediener und konstante Geschwindigkeitsregelung. * 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
Abbildung 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.

Integrator

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. Das Betriebssystem

LinuxCNC ist als gebrauchsfertige Pakete für Debian-Distributionen verfügbar.

3. Wo bekomme ich Hilfe

3.1. Web-Forum

Ein Webforum finden Sie unter https://forum.linuxcnc.org oder indem Sie dem Link oben auf der linuxcnc.org Homepage folgen.

Diese ist recht aktiv, aber die Zielgruppe ist stärker auf die Benutzer ausgerichtet als die Mailingliste. Wenn Sie sicher sein wollen, dass Ihre Nachricht von den Entwicklern gesehen wird, sollten Sie die Mailingliste bevorzugen.

3.2. IRC

IRC steht für Internet Relay Chat. Es ist eine Live-Verbindung zu anderen LinuxCNC-Benutzern. Der LinuxCNC IRC-Kanal ist #linuxcnc auf libera.chat.

Der einfachste Weg, um ins IRC zu gelangen, ist die Verwendung des eingebetteten Webclient-Clients von libera.

Etwas IRC-Etikette
  • Stellen Sie gezielte Fragen… Vermeiden Sie Fragen wie „Kann mir jemand helfen?“.

  • Wenn Sie wirklich neu auf diesem Gebiet sind, denken Sie ein wenig über Ihre Frage nach, bevor Sie sie tippen. Stellen Sie sicher, dass Sie genügend Informationen geben, damit jemand Ihre Frage beantworten oder Ihr Problem lösen kann.

  • Haben Sie etwas Geduld, wenn Sie auf eine Antwort warten. Manchmal dauert es eine Weile, bis eine Antwort formuliert wird, oder alle sind mit der Arbeit beschäftigt oder so.

  • Richten Sie Ihr IRC-Konto mit Ihrem eindeutigen Namen ein, damit andere wissen, wer Sie sind. Wenn Sie den Java-Client verwenden, sollten Sie jedes Mal, wenn Sie sich anmelden, denselben Namen verwenden. So können sich die Leute merken, wer Sie sind, und wenn Sie schon einmal dabei waren, werden sich viele an die vergangenen Diskussionen erinnern, was für beide Seiten Zeit spart.

Dateien teilen

Die gängigste Art, Dateien im IRC auszutauschen, besteht darin, die Datei auf einen der folgenden oder einen ähnlichen Dienst hochzuladen und den Link einzufügen:

3.3. Mailingliste

Eine Internet-Mailingliste ist eine Möglichkeit, Fragen zu stellen, die jeder auf dieser Liste sehen und nach Belieben beantworten kann. Auf einer Mailingliste können Sie Ihre Fragen besser stellen als im IRC, aber die Antworten dauern länger. Kurz gesagt: Sie senden eine Nachricht an die Liste und erhalten entweder tägliche Zusammenfassungen oder individuelle Antworten, je nachdem, wie Sie Ihr Konto eingerichtet haben.

Sie können die Mailingliste emc-users abonnieren unter: https://lists.sourceforge.net/lists/listinfo/emc-users.

3.4. Web-Forum

Ein Webforum finden Sie unter https://forum.linuxcnc.org/ oder indem Sie dem Link oben auf der https://linuxcnc.org/ Homepage folgen.

Diese ist recht aktiv, aber die Zielgruppe ist stärker auf die Benutzer ausgerichtet als die Mailingliste. Wenn Sie sicher sein wollen, dass Ihre Nachricht von den Entwicklern gesehen wird, sollten Sie die Mailingliste bevorzugen.

3.5. LinuxCNC-Wiki

Eine Wiki-Site ist eine von Benutzern gepflegte Website, die von jedermann ergänzt und bearbeitet werden kann.

Die vom Benutzer gepflegte LinuxCNC-Wiki-Seite enthält eine Fülle von Informationen und Tipps zu http://wiki.linuxcnc.org.

3.6. Fehlerberichte

Melden Sie Fehler an den LinuxCNC GitHub bug tracker.