1. Einführung

Dieses Dokument konzentriert sich auf die Verwendung von LinuxCNC, es ist für Leser gedacht, die es bereits installiert und konfiguriert haben. Einige Informationen zur Installation werden in den folgenden Kapiteln gegeben. Die vollständige Dokumentation über die Installation und Konfiguration kann im Handbuch des Integrators gefunden werden.

2. Wie LinuxCNC funktioniert

LinuxCNC ist eine Reihe von hochgradig anpassbaren Anwendungen für die Steuerung von computergesteuerten Fräsmaschinen und Drehmaschinen, 3D-Druckern, Robotern, Laserschneidern, Plasmaschneidern und anderen automatisierten Geräten. Sie ist in der Lage, eine koordinierte Steuerung von bis zu 9 Bewegungsachsen zu ermöglichen.

Im Kern besteht LinuxCNC aus mehreren Schlüsselkomponenten, die zusammen integriert sind, um ein komplettes System zu bilden:

  • eine grafische Benutzeroberfläche (GUI) als grundlegende Schnittstelle zwischen dem Bediener, der Software und der CNC-Maschine selbst bildet;

  • der Hardware Abstraction Layer (HAL) bietet eine Methode zur Verknüpfung aller verschiedenen internen virtuellen Signale, die von LinuxCNC erzeugt und empfangen werden, mit der Außenwelt, und

  • die High-Level-Controller, welche die Erzeugung und Ausführung der Bewegungssteuerung der CNC-Maschine koordinieren, sind der Motion Controller (EMCMOT), der diskrete Input/Output-Controller (EMCIO) und der Task Executor (EMCTASK).

Die nachfolgende Darstellung ist ein einfaches Blockdiagramm, das zeigt, wie eine typische 3-Achsen-CNC-Fräse mit Schrittmotoren aussehen könnte:

Einfache LinuxCNC-gesteuerte Maschine
Abbildung 1. Einfache LinuxCNC-gesteuerte Maschine

Ein Computer, auf dem LinuxCNC läuft, sendet eine Folge von Impulsen über die parallele Schnittstelle an die Schrittantriebe, von denen jeder einen Schrittmotor hat, der an ihn angeschlossen ist. Jeder Antrieb erhält zwei unabhängige Signale; ein Signal, um den Antrieb zu befehlen, seinen zugehörigen Schrittmotor im oder gegen den Uhrzeigersinn zu bewegen, und ein zweites Signal, das die Geschwindigkeit definiert, mit der sich dieser Schrittmotor dreht.

Während ein Schrittmotor-System unter parallelen Port-Steuerung dargestellt ist, kann ein LinuxCNC-System auch die Vorteile einer Vielzahl von dedizierten Hardware-Motion-Control-Schnittstellen für erhöhte Geschwindigkeit und E / A-Funktionen. Eine vollständige Liste der von LinuxCNC unterstützten Schnittstellen kann auf der unterstützte Hardware Seite des Wikis gefunden werden.

In den meisten Fällen werden die Benutzer eine Konfiguration speziell für ihre Mühle Setup mit entweder der Stepper Configuration Wizard (für CNC-Systeme, die mit dem Computer 'Parallel-Port) oder die Mesa Hardware Wizard (für fortgeschrittene Systeme mit einem Mesa I/O PCI-Karte). Wenn Sie einen der beiden Assistenten ausführen, werden mehrere Ordner auf der Festplatte des Computers erstellt, die eine Reihe von Konfigurationsdateien enthalten, die für diese CNC-Maschine spezifisch sind, und ein Symbol wird auf dem Desktop platziert, um den einfachen Start von LinuxCNC zu ermöglichen.

Wenn zum Beispiel der Assistent für die Schrittmotorenkonfiguration verwendet wurde, um eine Einrichtung für die oben abgebildete 3-Achsen-CNC-Fräse mit dem Namen "My_CNC" zu erstellen, würden die vom Assistenten erstellten Ordner in der Regel die folgenden Dateien enthalten:

  • Ordner: My_CNC

    • Meine_CNC.ini
      Die INI-Datei enthält alle grundlegenden Hardware-Informationen für den Betrieb der CNC-Fräse, wie z.B. die Anzahl der Schritte, die jeder Schrittmotor drehen muss, um eine volle Umdrehung zu vollenden, die maximale Geschwindigkeit, mit der jeder Schrittmotor Geschwindigkeit, mit der jeder Schrittmotor arbeiten darf, die Verfahrgrenzen jeder Achse oder die Konfiguration und das Verhalten der Endschalter an jeder Achse.

    • My_CNC.hal
      Diese HAL-Datei enthält Informationen, die LinuxCNC mitteilen, wie die internen virtuellen Signale mit physischen Verbindungen außerhalb des Computers zu verbinden. Zum Beispiel, die Angabe von Pin 4 an der parallelen Schnittstelle zu senden die Z-Achse Schritt Richtung Signal, oder Anweisung LinuxCNC zu stoppen Fahren der X-Achse Motor, wenn ein Endschalter Schalter am Parallelport Pin 13 ausgelöst wird.

    • custom.hal
      Anpassungen der Fräsenenkonfiguration, die über den Umfang des Assistenten hinausgehen, können vorgenommen werden, indem man weitere Links zu anderen virtuellen Punkten innerhalb von LinuxCNC in dieser HAL-Datei. Beim Starten einer LinuxCNC-Sitzung wird diese Datei gelesen und verarbeitet, bevor die GUI geladen wird. Ein Beispiel kann die Initiierung der Modbus Kommunikation mit dem Spindelmotor, so dass er als betriebsbereit bestätigt wird, bevor die GUI angezeigt wird.

    • custom_postgui.hal
      Die custom_postgui HAL-Datei erlaubt eine weitere Anpassung von LinuxCNC, unterscheidet sich aber von custom.HAL darin, dass sie verarbeitet wird, nachdem die GUI angezeigt wurde. Zum Beispiel, nach dem Aufbau der Modbus-Kommunikation zu den Spindelmotor in custom.hal, kann LinuxCNC die custom_postgui Datei verwenden, um die Spindeldrehzahl Auslese vom Motorantrieb mit einem auf der GUI angezeigten Bargraph zu verbinden.

    • postgui_backup.hal
      Diese Datei wird als Sicherungskopie der Datei custom_postgui.hal bereitgestellt, um dem Benutzer die Möglichkeit zu geben, schnell eine postgui-HAL-Konfiguration wiederherzustellen. Dies ist besonders nützlich, wenn der Benutzer den Konfigurationsassistenten erneut unter demselben Namen My_CNC ausführen möchte, um einige Parameter der Fräse zu ändern. Das Speichern der Mühlenkonfiguration im Assistenten überschreibt die bestehende Datei custom_postgui und lässt die postgui_backup Datei unberührt.

    • tool.tbl
      Eine Werkzeugtabellendatei enthält eine parametrisierte Liste aller von der Fräse verwendeten Schneidwerkzeuge. Diese Parameter können Fräserdurchmesser und -länge enthalten und werden verwendet, um einen Katalog von Daten bereitzustellen, der LinuxCNC sagt, wie seine Bewegung für unterschiedlich große Werkzeuge innerhalb einer Fräsoperation kompensieren soll.

  • Ordner: nc_files
    Der Ordner "nc_files" dient als Standardspeicherort für die G-Code-Programme zur Steuerung der Fräse. Er enthält auch eine Reihe von Unterordnern mit G-Code-Beispielen.

3. Grafische Benutzerschnittstellen

Eine grafische Benutzeroberfläche ist der Teil der LinuxCNC, mit dem der Werkzeugmaschinenbediener interagiert. LinuxCNC verfügt über verschiedene Arten von Benutzeroberflächen, aus denen Sie auswählen können, indem bestimmte Felder bearbeitet werden, die in der Datei INI enthalten sind:

ACHSE

AXIS, die Standard-Tastatur-GUI-Schnittstelle. Dies ist auch die Standard-GUI, die gestartet wird, wenn ein Konfigurationsassistent zum Erstellen eines Desktop-Symbol-Launchers verwendet wird:

AXIS, die standardmäßige Tastatur-GUI-Schnittstelle
Abbildung 2. AXIS, die standardmäßige Tastatur-GUI-Schnittstelle
Touchy

Touchy, eine GUI für Touchscreens:

Touchy, eine Touchscreen-GUI
Abbildung 3. Touchy, eine Touchscreen-GUI
Gscreen

Gscreen, eine vom Benutzer konfigurierbare Touchscreen-GUI:

Gscreen, eine konfigurierbare Basis-Touchscreen-GUI
Abbildung 4. Gscreen, eine konfigurierbare Basis-Touchscreen-GUI
GMOCCAPY

GMOCCAPY, eine Touchscreen-GUI, die auf Gscreen basiert. GMOCCAPY ist so konzipiert, dass es auch in Anwendungen funktioniert, bei denen Tastatur und Maus die bevorzugten Methoden zur Steuerung der GUI sind:

GMOCCAPY, eine Touchscreen-GUI auf der Grundlage von Gscreen
Abbildung 5. GMOCCAPY, eine Touchscreen-GUI auf der Grundlage von Gscreen
NGCGUI

NGCGUI, ein Subroutinen-GUI, das die Programmierung von G-Code im Assistentenstil ermöglicht. NGCGUI kann als eigenständiges Programm ausgeführt oder in eine andere GUI als eine Reihe von Registerkarten eingebettet werden. Der folgende Screenshot zeigt NGCGUI eingebettet in AXIS:

NGCGUI, eine in AXIS integrierte grafische Benutzeroberfläche
Abbildung 6. NGCGUI, eine in AXIS integrierte grafische Benutzeroberfläche
TkLinuxCNC

TkLinuxCNC, eine weitere Schnittstelle, die auf Tcl/Tk basiert. Ehemals die beliebteste Schnittstelle nach AXIS.

TkLinuxCNC grafische Schnittstelle
Abbildung 7. TkLinuxCNC grafische Schnittstelle
QtDragon

QtDragon, ein Touchscreen GUI basierend auf QtVCP mit der PyQt5 Bibliothek. Sie kommt in den Versionen QtDragon und QtDragon_hd. Sie sind sehr ähnlich in Features, aber QtDragon_hd ist für größere Monitore vorbereitet.

QtDragon, eine Touchscreen-GUI auf der Grundlage von QtVCP
Abbildung 8. QtDragon, eine Touchscreen-GUI auf der Grundlage von QtVCP
QtPlasmaC

QtPlasmaC, ein Touchscreen-Plasmaschnitt GUI basierend auf QtVCP mit der PyQt5-Bibliothek. Es kommt in drei Aspektverhältnissen, 16:9, 4:3, und 9:16.

QtPlasmaC, eine Touchscreen-GUI zum Plasma-Schneiden auf der Grundlage von QtVCP
Abbildung 9. QtPlasmaC, eine Touchscreen-GUI zum Plasma-Schneiden auf der Grundlage von QtVCP

4. Benutzerschnittstellen

Diese Benutzeroberflächen sind eine Möglichkeit, mit LinuxCNC außerhalb der grafischen Benutzeroberflächen zu interagieren.

halui

Eine HAL-basierte Benutzeroberfläche, die es erlaubt, LinuxCNC mit Tasten und Schaltern zu steuern

linuxcncrsh

Eine Telnet-basierte Benutzeroberfläche, die es ermöglicht, Befehle von entfernten Computern zu senden.

5. Virtuelle Schalttafeln

Wie oben erwähnt, können viele der GUIs von LinuxCNC vom Benutzer angepasst werden. Dies kann geschehen, um Indikatoren, Anzeigen, Schalter oder Schieberegler zum grundlegenden Aussehen einer der GUIs für erhöhte Flexibilität oder Funktionalität hinzuzufügen. Zwei Arten von Virtual Control Panel sind in LinuxCNC angeboten:

PyVCP

PyVCP, ein auf Python basierendes virtuelles Bedienfeld, das der AXIS-GUI hinzugefügt werden kann. PyVCP nutzt nur virtuelle Signale, die im Hardware Abstraction Layer enthalten sind, wie z.B. die Spindel-bei-Drehzahl-Anzeige oder das Notstopp-Ausgangssignal, und hat ein einfaches, schnörkelloses Aussehen. Dies macht es zu einer ausgezeichneten Wahl, wenn der Benutzer ein virtuelles Bedienfeld mit minimalem Aufwand hinzufügen möchte.

PyVCP eingebettet in AXIS
Abbildung 10. PyVCP-Beispiel eingebettet in AXIS GUI
GladeVCP

GladeVCP, ein Glade-basiertes virtuelles Bedienfeld, das zu den AXIS oder Touchy GUIs hinzugefügt werden kann. GladeVCP hat den Vorteil gegenüber PyVCP, dass es nicht auf die Anzeige oder Steuerung von virtuellen HAL-Signalen beschränkt ist, sondern auch andere externe Schnittstellen außerhalb von LinuxCNC wie Fenster oder Netzwerkereignisse einbeziehen kann. GladeVCP ist auch flexibler in der Art und Weise, wie es konfiguriert werden kann, um auf der GUI zu erscheinen:

GladeVCP eingebettet in AXIS
Abbildung 11. GladeVCP-Beispiel eingebettet in AXIS GUI
QtVCP

QtVCP, ein auf PyQt5 basierendes virtuelles Bedienfeld, das zu den meisten GUIs hinzugefügt oder als eigenständiges Bedienfeld ausgeführt werden kann. QtVCP hat gegenüber PyVCP den Vorteil, dass es nicht auf die Anzeige oder Steuerung von virtuellen HAL-Signalen beschränkt ist, sondern auch andere externe Schnittstellen außerhalb von LinuxCNC, wie z.B. Fenster- oder Netzwerkereignisse, durch Erweiterung mit Python-Code einbeziehen kann. QtVCP ist auch flexibler, wie es konfiguriert werden kann, um auf der GUI mit vielen speziellen Widgets erscheinen:

QtVCP-Panel eingebettet in QtDragon
Abbildung 12. QtVCP-Beispiel eingebettet in QtDragon GUI

6. Sprachen

LinuxCNC verwendet Übersetzungsdateien, um LinuxCNC Benutzeroberflächen in viele Sprachen zu übersetzen, einschließlich Französisch, Deutsch, Italienisch, Finnisch, Russisch, Rumänisch, Portugiesisch und Chinesisch. Unter der Annahme, dass eine Übersetzung erstellt wurde, wird LinuxCNC automatisch verwenden, was auch immer Muttersprache Sie sich mit, wenn Sie das Linux-Betriebssystem. Wenn Ihre Sprache nicht übersetzt wurde, wenden Sie sich an einen Entwickler im IRC, in der Mailingliste oder im Benutzerforum, um Hilfe zu erhalten.

7. Denken wie ein CNC-Bediener

Dieses Handbuch gibt nicht vor, Ihnen den Umgang mit einer Dreh- oder Fräsmaschine beizubringen. Um ein erfahrener Bediener zu werden, braucht man viel Zeit und eine Menge Arbeit. Ein Autor hat einmal gesagt: Wir lernen durch Erfahrung, wenn man sie macht. Zerbrochene Werkzeuge, angegriffene Schraubstöcke und die Narben sind der Beweis für die gelernten Lektionen. Eine schöne Oberfläche, enge Toleranzen und Vorsicht bei der Arbeit sind Beweise für gelernte Lektionen. Keine Maschine und kein Programm kann die menschliche Erfahrung ersetzen.

Jetzt, wo Sie anfangen, mit der LinuxCNC-Software zu arbeiten, müssen Sie sich in die Rolle eines Bedieners versetzen. Sie müssen sich in die Rolle einer Person versetzen, die für eine Maschine verantwortlich ist. Es ist eine Maschine, die auf Ihre Befehle wartet und dann die Befehle ausführt, die Sie ihr geben werden. Auf diesen Seiten werden wir die Erklärungen geben, die Ihnen helfen werden, ein guter CNC-Bediener mit LinuxCNC zu werden.

8. Betriebsarten

Wenn LinuxCNC läuft, gibt es drei verschiedene Haupt-Modi für die Eingabe von Befehlen verwendet. Diese sind Manuell, Auto, und Manuelle Dateneingabe (MDI). Der Wechsel von einem Modus zum anderen macht einen großen Unterschied in der Art und Weise, dass die LinuxCNC-Steuerung verhält. Es gibt bestimmte Dinge, die in einem Modus getan werden können, die in einem anderen nicht getan werden können. Ein Bediener kann eine Achse im manuellen Modus referenzieren, aber nicht im Auto- oder MDI-Modus. Ein Bediener kann die Maschine veranlassen, eine ganze Datei voll von G-Codes in der Auto-Modus, aber nicht in der manuellen oder MDI ausführen.

Im manuellen Modus wird jeder Befehl einzeln eingegeben. In menschlicher Sprache könnte ein manueller Befehl lauten: "Kühlmittel einschalten" oder "X mit 25 Zoll pro Minute verfahren". Dies entspricht in etwa dem Umlegen eines Schalters oder dem Drehen des Handrads für eine Achse. Diese Befehle werden normalerweise auf einer der grafischen Oberflächen durch Drücken einer Schaltfläche mit der Maus oder durch Drücken einer Taste auf der Tastatur ausgeführt. Im Automodus kann eine ähnliche Taste oder ein Tastendruck verwendet werden, um ein ganzes Programm mit G-Code zu laden oder dessen Ausführung zu starten, das in einer Datei gespeichert ist. Im MDI-Modus kann der Bediener einen Codeblock eingeben und die Maschine durch Drücken der <Return>- oder <Enter>-Taste auf der Tastatur anweisen, ihn auszuführen.

Einige Bewegungssteuerungsbefehle sind gleichzeitig verfügbar und führen in allen Modi zu denselben Bewegungsänderungen. Dazu gehören Abbruch, Notaus und Vorschub-Override. Befehle wie diese sollten selbsterklärend sein.

Die AXIS-Benutzeroberfläche verbirgt einige der Unterschiede zwischen Auto und den anderen Modi, indem sie Auto-Befehle in den meisten Fällen verfügbar macht. Sie verwischt auch die Unterscheidung zwischen Manuell und MDI, da einige manuelle Befehle, wie z. B. "Touch Off", eigentlich durch das Senden von MDI-Befehlen implementiert werden. Dies geschieht, indem automatisch in den Modus gewechselt wird, der für die vom Benutzer angeforderte Aktion erforderlich ist.