Langzeitprojekt neue Eigenbau CNC Fräse mit LinuxCNC und EtherCAT als Steuerung

McIlroy

ww-robinie
Registriert
29. März 2011
Beiträge
787
Alter
47
Nachdem ich bereits etwas Erfahrung im Eigenbau von CNC-Fräsmaschinen gesammelt habe, meine letzte Kreation mit einem Bearbeitungsraum von 900x600x200mm allerdings für meine Bedürfnisse unnötig groß war, möchte ich einen neuen Versuch wagen.

Die neue Maschine soll allerdings nicht nur deutlich kompakter werden (300x300x100mm Bearbeitungsraum). Ich möchte auch erstmals LinuxCNC als Steuerungssoftware einsetzen, und außerdem statt den sonst üblichen Parallelport- oder Mesa-Interfaces vollständig auf EtherCAT setzen.

Da beides für mich Neuland ist, und die Einrichtung der Steuerung sicher einige Zeit in Anspruch nehmen wird, stelle ich den Bau der Maschine erstmal hinten an. Stattdessen wird es in den ersten Beiträgen um den Bau und die Konfiguration der Steuerung gehen, sowohl Hardware- als auch Softwareseitig.

Doch warum LinuxCNC und warum EtherCAT? Bisher habe ich die Steuerung von Estlcam verwendet, und war damit auch immer zufrieden. Nichts, was LinuxCNC mehr kann (und das ist sehr viel), werde ich jemals benötigen. Drei persönliche Gründe für LinuxCNC sind:

  • Ich habe auf meinem Laptop sowieso schon immer Linux oder FreeBSD eingesetzt, und muss jetzt für die CNC-Steuerung keine separate Windows-Partition oder Virtuelle Maschine mehr vorsehen, oder gar einen eigenen Rechner dafür abstellen. LinuxCNC läuft sogar ohne Probleme auf einem Raspberry Pi 4 oder 5, wenn man den Rechner gleich in die Steuerung integrieren möchte.
  • LinuxCNC ist (genauso wie die EtherCAT-Erweiterung) kostenlos und open source. Das Thema EtherCAT lässt sich im Windows-Umfeld garnicht kostenlos bzw. für Hobbyverhältnisse kostengünstig umsetzen, zumindest soweit mir bekannt. Wie bei Linux üblich, ist allerdings deutlich mehr Einarbeitung erforderlich, und man sollte sich von dem Gedanken verabschieden, dass man alles komfortabel mit Einstellungs-Dialogen wie in den meisten Windowsprogrammen erledigen kann. Aber das führt uns auch zum letzten Punkt:
  • Der Spieltrieb. Ich mag es, mich in sowas reinzufuchsen, Konfigurationsdateien zu editieren und alles so zu optimieren bzw. anzupassen, bis es für mich passt. Das ist bei Windows-Software manchmal nur in begrenztem Umfang oder gar nicht möglich.
EtherCAT möchte ich diesmal einsetzen, weil ich es einfach schon immer mal ausprobieren wollte, und weil es den Aufbau der Steuerungshardware deutlich vereinfacht. Statt jede menge Strippen ziehen zu müssen, läuft nur eine Kette aus Netzwerkkabeln von Komponente zu Komponente. Die einzigen „losen“ Kabel werden für die Stromversorgung der Komponenten und für die Kabel zur „Außenwelt“ (Sensoren, Motoren, Encoder, Ventile usw.) benötigt.

Es gibt keine Pulse/Direction-Kabel zu den Endstufen mehr, keine für Enable- oder Alarmsignale, keine für die 0-10V-Ansteurung des Frequenzumrichters usw.
Das alles läuft über den EtherCAT-Bus.

Die ersten Komponenten wie Ethercatmodule und ein 24V Schaltnetzteil sind schon unterwegs, und im nächsten Beitrag werde ich mich mit der grundlegenden Einrichtung von LinuxCNC und dem Aufbau eines minimalen Testsystems befassen.

Das Projekt wird also in den ersten Wochen bis Monaten eher Hard- und Software-lastig sein. Aber es wird noch genug Holz(werkstoff) zu sehen geben, versprochen. :emoji_slight_smile: Denn auch die Neue wird im Grundgerüst wieder aus MDF, Multiplex oder Siebdruckplatte bestehen, schaun mer mal.
 

McIlroy

ww-robinie
Registriert
29. März 2011
Beiträge
787
Alter
47
Heute habe ich Linux-CNC auf meinem Laptop installiert.

Die empfohlene Methode besteht darin, sich die aktuelle Version als .iso herunterzuladen, und damit einen USB-Bootstick zu erstellen.
Das installiert dann ein komplettes Debian (12) System mit dem Preempt-RT Echtzeitkernel und vorinstalliertem Linux-CNC. Man braucht sich also um nichts weiter zu kümmern und kann direkt loslegen. Wer schonmal irgendein Linux installiert hat, wird damit keine Probleme haben.

Es ist zwar prinzipiell möglich, LinuxCNC als Paket in einem bestehenden System zu installieren, oder es aus dem Quellcode selbst zu kompilieren, aber dann muss man sich auch um die restlichen Dinge kümmern (den Echtzeitkernel installieren usw.), weshalb ich davon eher abraten würde. Das Linux-CNC System lässt sich ja ohne Probleme auch parallel zu einem vorhandenen Linux- oder Windows-System auf dem Rechner installieren.

Hat man diese Hürde genommen, schadet es nicht, direkt mal das System mit…
Code:
sudo apt update
sudo apt upgrade
…zu aktualisieren.

Um sich erstmal mit der Oberfläche vertraut zu machen, bietet LinuxCNC eine ganze Reihe von simulierten Maschinen an, mit denen man schonmal etwas rumspielen, und direkt G-Code laden und ausführen kann. Dazu wählt man z.B. nach dem Start von LinuxCNC die sim.axis.axis_mm Maschine:
Screenshot_2025-06-04_09-48-09.png

Und wird dann von der Standardoberfläche (genannt „axis“) begrüßt:

Screenshot_2025-06-04_09-51-02.png

Zugegeben sieht das ganze etwas altbacken aus, ist aber für den Anfang völlig ok. Man kann die Oberfläche von LinuxCNC im prinzip beliebig anpassen, oder sogar eine komplett Eigene erstellen. Eine beliebte und recht moderne Oberfläche ist z.B. Probe Basic.

Wer seine Maschine über den Parallelport oder eine Mesa-Karte steuern will, braucht dann nichts weiter zu installieren. Eine Grundkonfiguration erstellt man in dem Fall am einfachsten über die beiden Helfer Stepconf (für den Parallelport) oder Pncconf (für Mesa-Interfaces). Ich möchte aber alles über EtherCAT laufen lassen, daher ist noch etwas mehr Aufwand erfprderlich. Die Installation der zusätzlichen Komponenten ist aber recht einfach, und man muss im Prinzip einfach nur Schritt für Schritt der Anleitung von rodw aus dem LinuxCNC Forum folgen.

Das soll es für diesmal auch gewesen sein. Im nächsten Beitrag werde ich dann ein minimales Test-Setup aufbauen und vorstellen.
 

McIlroy

ww-robinie
Registriert
29. März 2011
Beiträge
787
Alter
47
Heute war es dann so weit, und ich habe mit ein paar Komponenten ein erstes Test-Setup aufgebaut. Also fix ein Stück Hutschiene auf ein Brett geschraubt, und dann (vlnr) ein 24V-Netzteil, ein paar Verteilerklemmen, den Beckhoff EK1100 EtherCAT-Koppler und eine EL1008 mit 8 digitalen Eingängen sowie eine EL2008 mit 8 digitalen Ausgängen montiert.

Das gelbe Netzwerkkabel geht direkt zum Laptop, die beiden 24V Stränge sind einmal die Versorgung des EK1100 und dann noch die Versorgung für den Bus aus angekoppelten Modulen.

ecconf.jpg

Um zu prüfen, ob die verbauten EtherCAT-Komponenten erkannt werden, kann man im Terminal den Befehl ethercat slaves ausführen. In meinem Fall wurden die drei Beckhoff Module ohne Probleme identifiziert:

ecslaves.png


Der Status „PREOP“ erscheint, weil noch keine Instanz von LinuxCNC läuft, die für EtherCAT und diese Module konfiguriert ist, bzw. allgemein noch kein Programm läuft, das auf die Komponenten aktiv zugreift.

Um das ganze dann auch in LinuxCNC zum Laufen zu bringen, musste ich erstmal eine Maschinenkonfiguration erstellen. LinuxCNC benötigt mindestens eine INI- und eine HAL-Datei. Wenn man EtherCAT benutzt kommt noch eine XML-Datei hinzu. Für Details verweise ich hier auf die Dokumentation bezüglich INI und HAL, das würde sonst zum Einen den Rahmen hier sprengen, zum Anderen muss ich mich selbst noch in die Feinheiten reinfuchsen.

Für das grobe Verständnis kann man sich vorstellen, dass die INI eine Sammlung von Parametern ist, die die Maschine in den Grundzügen beschreibt. z.B.:
  • Wie viele Achsen gibt es und welcher Art sind sie (linear, rotatorisch usw.)
  • Was sind die Verfahrwege, die maximalen Vorschübe etc.
  • Möchte man die Maschine in mm oder inch konfigurieren
Die HAL (man kann mehr als eine davon haben) sind ganz grob gesagt das Bindeglied zwischen der Hard- und der Software. Hier könnte man z.B. festlegen, dass der hardwareseitige Pin soundso mit dem softwareseitigen Eingang für den Endschalter einer bestimmten Achse verknüpft wird.

Bei EtherCAT kommt dann noch eine XML-Datei hinzu, in der die verwendeten Komponenten beschrieben werden, welche Daten man an sie senden oder von ihnen Empfangen möchte, und wie diese Daten dann mit den Verknüpfungen in der HAL zusammenkommen sollen.

In meinem Fall genügt es für den Testlauf zunächst, die Komponenten nur zu identifizieren, da sie schon vom EtherCAT-Treiber nativ unterstützt werden, so dass die Ein- und Ausgänge in LinuxCNC direkt sichtbar sind. Daraus ergibt sich diese grundlegende XML-Datei:

ethercat-conf-1024x320.png


Um eine lauffähige (vorerst simulierte) Maschinenkonfiguration zu bekommen, habe ich mit Stepconf eine neue Konfiguration mit der Option Create simulated hardware configuration erstellt. Dadurch bekommt man direkt eine lauffähige INI und HAL, ganz ohne eine fertige CNC oder Steuerung zu haben.

Das Schöne ist, dass man trotz simulierter Maschine auch tatsächlich vorhandene Hardwarekomponenten benutzen und konfigurieren kann, so dass man sich Stück für Stück von der Simulation zur fertigen Hardware vorarbeiten kann.

In der HAL sorge ich nur noch dafür, dass die nötigsten Einträge gemacht sind, um EtherCAT sowie die XML einzubinden. Dazu musste ich folgene Zeilen ergänzen:

udun.hal_-1024x795.png


Um nun zu testen, ob das ganze auch wirklich funktioniert, nutze ich das tool halshow von LinuxCNC. Dort kann man alle aktiven Parameter und Pins sehen und auch manipulieren. Ich habe mir also erstmal die Eingänge des EL1008 anzeigen lassen:

Halshow_001.png


Wie man sieht, sind sie alle inaktiv, was ja auch so sein soll. Erst wenn man an einen Eingang eine Spannung anlegt, wird er aktiv. Ich habe also mal an Eingang 5 (bzw. am Modul Eingang 6, weil LinuxCNC von 0 an zählt, das Modul aber bei 1 anfängt) die 24V vom Netzteil angelegt, und glücklicherweise wird das Signal ohne Probleme erkannt, und der Eingang aktiv:

din.jpg

Da könnte ich dann z.B. die Endschalter, eine Tastplatte oder einen 3D-Sensor anschließen.
Als nächstes habe ich mir noch die Ausgänge der EL2008 anzeigen lassen. Wie bei den Eingängen ist auch hier logischerweise erstmal alles inaktiv:

Halshow_002.png


Über den Set Button neben jedem Ausgang kann man ihn zum Test aktivieren. Das habe ich hier mit Ausgang 3 gemacht (Nr. 4 am Modul), und siehe da, es liegen dann 24V an:

dout-1024x420.jpg


Das soll es mal soweit gewesen sein. Als nächstes stehen die Verbindung und die Konfiguration der Servotreiber und des Frequenzumrichters an. Das wird dann ein größeres Stück Arbeit und braucht noch etwas Zeit…
 
Zuletzt bearbeitet:

stefan.

ww-kirsche
Registriert
9. März 2025
Beiträge
154
Ort
Augsburg
Sehr spannend. LinuxCNC hört sich schon sehr mächtig, aber auch sehr komplex an.
Aber mit dieser Editorwahl kann ja nichts schiefgehen :emoji_slight_smile:
 

cncpit

ww-pappel
Registriert
18. Juli 2025
Beiträge
1
Ort
Wischer
Sehr interessant. Wirst du das Projekt hier weiter darstellen? Ich habe eine alte ICP4030 mit ausgerissener Steuerung (also muss ich die ersetzen). Die Stepper, Führung sind OK. Deswegen bin ich von deinem sehr gut und verständlich erstelltem Beitrag begeistert.
Hier noch paar Bilder von meinem Projekt.
 

Anhänge

  • 20250718_144839.jpg
    20250718_144839.jpg
    152,2 KB · Aufrufe: 36
  • 20250718_145044.jpg
    20250718_145044.jpg
    158,6 KB · Aufrufe: 34
  • 20250718_145108.jpg
    20250718_145108.jpg
    245,3 KB · Aufrufe: 36
Oben Unten