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: * easy discovery and testing without installation with the Live Image, * easy installation from the Live Image, * enkelt å bruke grafiske oppsettassistenter for å raskt lage oppsett spesifikk for maskinen, * 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 * graphical interface creation tools (Glade, Qt), * the interpreter for G-code (the RS-274 machine tool programming language), * styring av lavnivå maskinelektronikk som sensorer og motorkontrollere, * an easy to use breadboard layer for quickly creating a unique configuration for your machine, * en programvare-PLA programmerbar med PLA-diagram.

Under the hood, LinuxCNC provides * a realtime motion planning system with look-ahead, * 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. * Motion control features include: cutter radius and length compensation, path deviation limited to a specified tolerance, lathe threading, synchronized axis motion, adaptive feedrate, operator feed override, and constant velocity control. * 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

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. Operativsystemet

LinuxCNC is available as ready-to-use packages for Debian distributions.

3. Getting Help

3.1. Nettsideforum

A web forum can be found at https://forum.linuxcnc.org or by following the link at the top of the linuxcnc.org home page.

Dette er ganske aktivt, men demografien heller mer mot brukere enn epostlisten. Hvis du vil sikre at meldingen din blir sett av utviklerne, så bør en foretrekke epostlisten.

3.2. IRC

IRC står for Internet Relay Chat. Det er en direkte forbindelse til andre LinuxCNC-brukere. IRC-kanalen for LinuxCNC er #linuxcnc på libera.chat.

Den enkleste måten å komme på IRC er å bruke den innebygde nettleserklienten fra libera.

Litt IRC-etikette
  • Still spesifikke spørsmål… Unngå spørsmål som «Kan noen hjelpe meg?».

  • Hvis du er helt ny med alt dette, tenk gjennom spørsmålet ditt før du skriver det ned. Sikre at du oppgir nok informasjon til at det er mulig å forstå og svare på spørsmålet ditt.

  • Have some patience when waiting for an answer. Sometimes it takes a while to formulate an answer, or everyone might be busy working or something.

  • Set up your IRC account with your unique name so people will know who you are. If you use the java client, use the same name every time you log in. This helps people remember who you are. If you have been on before, many will remember past discussions with you which will save time on both ends.

Fildeling

Den vanligste måten å dele filer på IRC er å laste opp filen til en av følgende eller tilsvarende tjenester og lime inn lenken:

3.3. Epostlister

En epostliste på Internett er en måte å legge ut spørsmål som alle på den listen kan se og svare på når det passer dem. Du får større eksponering for dine spørsmål på en epostliste enn på IRC, men det kan ta lengre tid å få svar. Kort sagt så sender du en epost til listen og får enten daglige oppsummeringer eller individuelle svar tilbake, alt etter hvordan du har satt opp kontoen din.

Du kan abonnere på epostlisten emc-users via https://lists.sourceforge.net/lists/listinfo/emc-users.

3.4. Nettsideforum

En kan finne et nettsideforum på https://forum.linuxcnc.org/ eller ved å følge lenken på toppen av hjemmesiden https://linuxcnc.org/.

Dette er ganske aktivt, men demografien heller mer mot brukere enn epostlisten. Hvis du vil sikre at meldingen din blir sett av utviklerne, så bør en foretrekke epostlisten.

3.5. LinuxCNC-wiki

Et wikinettsted er et brukervedlikeholdt nettsted der enhver kan legge til eller endre.

The user maintained LinuxCNC Wiki site contains a wealth of information and tips at: http://wiki.linuxcnc.org

3.6. Feilrapporter

Report bugs on the LinuxCNC Github github bug tracker.