Einleitung

(Die folgenden Zeilen haben nicht den Anspruch einer umfassenden und vollständigen Beschreibung von LinuxCNC – hierfür wird auf die offizielle LinuxCNC-Dokumentation verwiesen.)

Die kostenfreie open-source CNC-Steuerungssoftware LinuxCNC (http://www.linuxcnc.org) existiert seit vielen Jahren, sie entwickelt sich stetig weiter und ist dabei doch im Hobbybereich eher weniger oft anzutreffen. Dabei hebt sich LinuxCNC durch seinen Funktionsumfang und seine extrem hohe Flexibilität durchaus von anderen vergleichbaren Produkten (im Hobby-Budgetrahmen!) ab. Im Internet findet man immer wieder Projekte, bei denen eine professionelle Industrie-Fräse auf LinuxCNC umgerüstet wurde.

Die umfangreiche Dokumentation liest sich leider etwas „trocken“ – technische Dokumentation glänzt halt nicht durch viele bunte Bilder. Die Mühe lohnt sich aber und der Blick unter die „Motorhaube“ offenbart viele Möglichkeiten und Freiheiten, die bei proprietären (Hobby-)Lösungen nicht in diesem Umfang anzutreffen sind – und schon gar nicht komplett kostenlos wie bei LinuxCNC.

Der Schlüssel zum Verständnis von LinuxCNC ist der/die „HAL“ („Hardware Abstraction Layer“). Die HAL ist ein Konzept, welches die Verknüpfung („Vernetzung“) vieler einzelner „Software-Funktionsbausteine“ mit jeweils eigenen „Ein/Ausgängen“ (sogenannten „Pins“) ermöglicht. Hier ein paar Beispiele:

Die eigentliche Intelligenz in LinuxCNC entsteht nun durch genau diese Verdrahtung (Verknüpfung) der jeweiligen Ein-Ausgänge der Bausteine miteinander auf Basis der persönlichen Anforderungen. Eine „Grundverdrahtung“ für den Betrieb einer Fräse wird mit dem enthaltenen Stepconf-Wizard assistentgeführt erzeugt.

Eine Einführung in das HAL-Konzept kann in der LinuxCNC eigenen Dokumentation nachgelesen werden:

Oft auch nur selten bekannt sind weitere interessante Features (Auflistung nicht abschließend):

  • Unterstützung verschiedener Kinematiken wie z.B.:
    • Gantry (2 Antriebe an einer Achse)
    • Tripod (bekannt aus 3D-Druckern),
    • 5-Achs (mit Dreh und Schwenk-Achse)
    • Puma (Roboterarm)
  • screw compensation: Ermöglicht die Korrektur von Steigungsfehlern bei Antriebsspindeln (sofern diese entspr. genau gemesen werden können)
  • squareness correction: Erlaubt die Korrektur von nicht rechtwinklig zueinander stehenden Achsen in der Konfiguration. Stichwort „millkins_XYZ“. Hiermit lässt sich selbst eine nicht exakt senkrecht zur XY-Ebene verfahrende Z-Achse korrigieren.
  • verschiedene Bedienoberflächen (auch für Touch-Bedienung) verfügbar. Z.b. das sehr populäre Gmoccapy

Steuerungshardware

Oft stellt sich nach kurzer Zeit auch die Frage nach geeigneter Hardware. In der Dokumentation gibt es eine umfangreiche Auflistung mehr und weniger geeigneter Hardware. Entscheidend ist hier nicht die Prozessorgeschwindigkeit oder die Frage „SSD HDD?“. Die Tauglichkeit für LinuxCNC hängt bedeutender vom Mainboard und den herstellerseitigen „Zusatzfunktionen“ ab, da diese die Echtzeitfähigkeiten des Rechners massiv beeinflussen können. Die Tauglichkeit lässt sich am sogenannten Jitter-Wert erkennen. Ein niedriger Jitterwert  bietet eine hohe Echtzeitfähigkeit. In der oben verlinkten Tabelle ist daher die vorletzte Spalte mit dem Titel „Max Jitter (25 us thread)“ von Bedeutung.

Im Fraeserbruch-Umfeld hat sich beispielsweise folgende Hardware bestens bewährt:

MINI-ITX-Board ASRock Q1900B-ITX (mit Celeron J1900), ca 70€

DELL Optiplex 960 (sehr häufig bei Ebay gebraucht zu finden), ca 60-100€

Schnittstellen

Standardmäßig unterstützt LinuxCNC eine oder mehrere Parallelport-Schnittstellen für die Verbindung zur Steuerungshardware. Selbst damit sind solide 7-9m/min Verfahrgeschwindigkeiten möglich. Weitere Schnittstellen für die Kommunikation wie RS232, 0-10V (4-20mA), RS485 und viele mehr werden ebenfalls unterstützt (geeignete Hardwareschnittstellen vorausgesetzt).

Sollte der LPT-Port dennoch einmal nicht genügen, oder mehr Anschlussmöglichkeiten benötigt werden (z.b. für Absolut-Encoder), kann auf MESA-Karten zurückgegriffen werden. Diese haben einen eigenen Prozessor in dem die Taktgenerierung erfolgt. Auch wenn hier je nach Karte wieder ein SUB-D-25 Stecker zum Einsatz kommt, ist dies keine Parallelport-(Drucker)-Schnittstelle mehr, sondern nur noch die mechanisch identische Steckverbindung. Andere MESA-Karten unterstützen den Anschluss sog. Daughterboards, die wiederum alle Anschlüsse als Schraubklemmen bereitstellen. MESA-Karten mit Ethernet-Anschluss sind ebenfalls verfügbar. Eine gute informative Seite zu diesem Thema ist www.lonnox.de/mesakarten.

Tipp: Die Parallelport-Schnittstelle ist für den Hobbybereich vollkommen ausreichend und sollte nicht von vornherein verteufelt und als „alt / überholt“ oder „langsam“ abgetan werden. Wer sich günstig eine solide Fräsensteuerung aufbauen möchte, ist beispielsweise mit einer Triplebeast in Kombination mit oben genannter Rechnerhardware schon sehr gut ausgestattet und das ganz ohne zwischengeschalteten Arduino, oder teure & proprietäre USB/Ethernet-Steuerungshardware!

Installation & Konfiguration

LinuxCNC kann als ISO-Image heruntergeladen werden. In diesem Image ist eine Linux-Betriebssystem bereits enthalten, so dass die Installation direkt von DVD/USB-Stick erfolgen kann. Nach der Installation sind u.U. noch kleine einfache Konfigurationen des Bootloaders und Einstellungen im Bios erforderlich, bis der Jitter-Wert (Kennzahl für die Echtzeit-Fähigkeit des Rechners) akzeptable Werte erreicht. Bei der Installation des Betriebssystems vom ISO-Image wird LinuxCNC selbst natürlich auch mit installiert und ist nach Abschluss der Installation bereit für die Konfiguration.

Die Konfiguration erfolgt üblicherweise erstmalig über einen Assistenten („Stepconf-Wizard“) und später in Konfigurationsdateien (Text-Dateien). Im wesentlichen sind dies:

[fräsenname].ini => Enthält u.a. die Parameter wie maximale Geschwindigkeit & Beschleunigung je Achse, Home-Position, Verfahrweg, Referenzschalter-Position, Standard Dateipfad & -endungen für GCode-Dateien und weitere grundlegende Einstellungen

[fräsenname].hal => Hier wird überwiegend die „Verknüpfung“ zwischen den einzelnen Funktionsbausteinen untereinander und mit den hardwareseitigen Ein-Ausgängen definiert. 

custom.hal => Individuelle zusätzliche „Verknüpfungen“ werden hier definiert.

custom_postgui.hal => Hier geschieht im Grunde das gleiche wie in der vorigen custom.hal -Datei. Der Unterschied besteht darin, dass diese Datei erst verarbeitet wird, wenn die Bedienoberfläche gestartet wurde. Somit finden hier üblicherweise „Verknüpfungen“ statt, die im Zusammenhang mit der Bedienoberfläche stehen.

Fraeserbruch.de – Konfigurationen

Die folgenden Beispiele für Erweiterungen und Konfigurationsanpassungen stammen direkt aus der Praxis:

Steuerung eines Frequenzumrichters über RS-485

Inhalt des Artikels: 

  • Vorstellung der HAL-Komponenten zur Ansteuerung eines Omron MX2 (Hitachi WJ200) Frequenzumrichters (Vfd)
  • Drehzahlregelung inkl. -rückmeldung an LinuxCNC sowie Integration in Gmoccapy
  • Überwachung des Vfd-Betriebszustands 
  • Überwachung der RS-485 Kommunikation mittels Watchdog
  • Integration in E-Stop-Funktion
  • angepasste Fehlerbenachrichtigungen je nach Ursache
  • Erweiterung von Gmoccapy um zusätzliche Anzeigen

Gmoccapy – Modifikation der Werkzeugwechselprozedur

Inhalt des Artikels: 

  • Anpassung des standardmäßigen Werkzeugwechsel-Macros zur Vermeidung unnötiger Werkzeuglängenmessungen und Anfahrten der Werkzeugwechselposition

Korrektur der Maschinengeometrie (Rechtwinkligkeit) in LinuxCNC

Inhalt des Artikels:

  • Einbindung & Konfiguration einer erweiterten Kinematik