Elektronik: Projekte

Allgemeines

Parallel zur Planung meiner selbstgebauten Portalfräse machte ich mir auch Gedanken über die notwendige CNC-Steuerung. Diese soll in Zukunft auch bei anderen CNC-Maschinen einsetzbar sein, daher wollte ich auf eine Billiglösung verzichten. Zusätzlich sollte die Steuerung mit LinuxCNC betrieben werden und so weit als Möglich der Open Source Philosophie entsprechen, oder wenigstens möglichst viele austauschbare Module enthalten. Aus diesem Grund kam eine AllInOne Fertigsteuerung nicht in Frage.
Die Ergebnisse meiner Überlegungen können Sie im folgenden nachlesen.

Hardware

Nach langer Suche und dem lesen von vielen Forumseinträgen entschied ich mich für ein Triple BEAST von Benezan Electronics. Um mir die Arbeit zu ersparen alle notwendigen Teile selber zusammensuchen zu müssen, bestellte ich gleich ein komplettes Set (mit Netzteil, Gehäuse, Elektrosatz, etc.) bei Sorotec.
Nach ein paar Tagen kam ein 13 kg schweres, rießiges Paket bei mir an. Außer den Kabeln und etwas Zubehör (Adernendhülsen, Kabelklemmen, Kabelbinder, Hutschiene, etc.) ist wirklich alles enthalten was man zum Aufbau einer CNC-Steuerung braucht (sogar ein Luftfilter und Sicherungen werden mitgeliefert). Ein kleines Manko ist lediglich, daß es keinerlei Informationen gibt wo welches der (vielen) Teile hingehört. Mit etwas überlegen läßt sich das aber schnell herausfinden.
Das unten stehende Bild zeigt den Lieferumfang mit Gehäuse, Triple BEAST, Netzteil und allen Teilen aus dem Elektrosatz. Wobei alle Teile bereits von mir an ihrem Platz im Gehäuse montiert wurden.

CNC Steuerung

Die folgenden Bilder zeigen die fertig montierte Steuerung. Wie man sieht ist im Gehäuse noch genug Platz für Erweiterungen, wie z. B. ein Schrittmotortreiber für eine 4. Achse, etc.

CNC Steuerung

CNC Steuerung

Ursprünglich sollte die Steuerung über den Parallelport betrieben werden. Allerdings hatte ich keinen alten PC mehr zu Hause, der noch über eine Parallele Schnittstelle verfügt. Also mußte eine andere Lösung her und zwar in Form einer Zusatzhardware, welche die Erzeugung der benötigten Signale übernimmt. Dabei ergeben sich noch weitere Vorteile, auf die ich hier aber nicht weiter eingehe.
Ein mit LinuxCNC kompatibles Produkt fand ich schließlich in Form einer 7I92 Ethernet Anything I/O Karte von Mesa Electronics. Die Karte verfügt über eine Sub-D 25 Buchse, womit ich sie direkt am Triple Beast anstecken kann und zusätzlich noch über 17 weitere I/O Pins. Die Signalerzeugung erfolgt mit einem FPGA und einer Open Source Firmware. Als PC Schnittstelle dient eine Ethernet Verbindung.

Um festzustellen ob der PC für eine Verwendung als CNC-Steuerung mit LinuxCNC geeignet ist, wird bei LinuxCNC ein kleines Testprogramm mitgeliefert. Infos zur Einrichtung von Linux und LinuxCNC am PC finden Sie unter Software. Auf meinem PC werden beim LinuxCNC Latenz Test die folgenden Werte erreicht:

  • Preempt-RT Linux Kernel (3.0.0-2-rt-686-pae):
    • Servo Thread (1ms): 62956 ns max. Jitter
    • Base Thread (25 μs): 51825 ns max. Jitter
  • Zum Vergleich die Werte mit dem Standard Kernel (3.16.0-4-686-pae):
    • Servo Thread (1ms): 404801296 ns max. Jitter
    • Base Thread (25 μs): 408043343 ns max. Jitter

Diese Werte geben die Eignung des PCs für den Betrieb mit LinuxCNC an. Dabei sollten die Werte in folgenden Bereichen liegen:

  • kleiner 20000 ns → sehr gut geeignet für Software Stepping
  • kleiner 50000 ns → gut geeignet für Software Stepping, aber max. Drehzahl nicht mehr sehr hoch
  • 100000 ns oder mehr → PC ist nicht für Softwarestepping geeignet
  • 1000000 ns oder mehr → LinuxCNC sollte gar nicht auf diesem PC betrieben werden, egal ob mit oder ohne Software Stepping

Wie man aus den obigen Ergebnissen sieht, wäre mein Laptop ohne den RT Kernel gar nicht für den Betrieb einer CNC-Steuerung geeignet (wie wohl alle PCs ohne RT Kernel). Mit dem RealTime Kernel wäre sogar noch (grenzwertiges) Software Stepping möglich. Die Stepping Signale werden in meinem Fall aber Hardware basiert von der 7I92 Karte erzeugt. Damit ist der vorhandene Laptop also wohl ganz gut für den Einsatz in meiner CNC-Steuerung geeignet.

Software

Als Steuerungssoftware kommt LinuxCNC unter Debian 8.2 Jessie zum Einsatz, wobei das ganze auf einem altem Laptop läuft. Dabei gibt es allerdings ein paar Besonderheiten, da das Ethernet Interface der 7I92 Karte nicht mit der Standard Installation von LinuxCNC funktioniert.

Folgende Punkte sind zu beachten:

  • Statt des RTAI Linux Kernels wird ein Preempt-RT Linux Kernel benötigt
  • Für Debian Jessie ist dieser Kernel nicht in den Installationsquellen enthalten
  • Preempt-RT Linux Kernel werden nur von LinuxCNC 2.7.0 oder neuer unterstützt
  • Es muß die Userspace Version von LinuxCNC installiert werden

Der folgende Link beschreibt die Installation sehr gut: Installing LinuxCNC on Debian Wheezy (with Preempt-RT kernel). Punkt 2 (Install the Preempt-RT kernel and modules) dieser Anleitung funktioniert leider nicht, da es für Jessie keinen Preempt-RT Linux Kernel in den Debian Quellen gibt. Auf die notwendigen Änderungen für eine Installation (wie sie bei mir funktioniert hat) gehe ich im folgenden ein.

Die beste Lösung ist sicher ein selbst kompilierter Kernel. Ich habe zwar schon selber Kernel kompiliert, aber es ist nicht ganz einfach und für den Linux Anfänger auch nicht anzuraten. Außerdem ist einiges an Zeit notwendig.
Ich wollte aber schnell zu einer Lösung kommen und nicht so viel Zeit investieren. Also machte ich mich im Internet auf die Suche und wurde schließlich fündig: Preempt-RT Linux Kernel von Pengutronix. Der dort angebotene Kernel ist zwar nicht der neueste (3.0.0-2-rt-686-pae) aber er funktioniert bei mir.

Vor dem weiteren konfigurieren von LinuxCNC muß erst die richtige Firmware auf die 7I92 Karte kopiert werden. Dies geschieht wie in der Bedienungsanleitung der Karte beschrieben mit dem Programm „mesaflash“. Achtung! Beim Download von der Mesa Electronics Webseite wird eine alte Version des Programms mitgeliefert, diese Version funktioniert nicht mit den Ethernet Karten!
Eine funktionierende Version von „mesaflash“ kann man sich aus den LinuxCNC Paketquellen installieren.

Leider gab es für das TripleBeast keine 7I92 Firmware mit der passenden Pinbelegung. Da die Firmware als Opensource veröffentlicht ist, sollte es leicht möglich sein die Pinbelegung selbst anzupassen (Anleitungen dazu finden sich unten in den Links). Allerdings scheiterten meine Versuche bereits am Download der Entwicklungsumgebung.
Also wandte ich mich kurzerhand an die Herstellerfirma Mesa Electronics, in der Hoffnung das diese mir eine passende Firmware erstellt. Tatsächlich bekam ich eine Antwort und es wurde extra auf meine Anfrage hin die Firmware modifiziert. Auch wenn es nur eine kleine Anpassung ist, die nicht viel Arbeit macht, sicher nicht für jede Firma selbstverständlich so etwas zu tun.
Daher an dieser Stelle mein Dank an Mesa Electronics und insbesondere Peter Wallace, der meine Anfrage bearbeitet und die Firmware modifiziert hat.
Die Firmware können Sie hier herunterladen (TAR / BZIP2). Die Signale an den Pins der Sub-D 25 Buchse entsprechen der Konfiguration, wie sie für den Betrieb des TripleBeast mit Ansteuerung einer 4. Achse benötigt wird. Am Pfostenverbinder wird die selbe Konfiguration verwendet, somit ist ein Betrieb von zwei Triple Beast mit einer 7I92 Karte möglich.

Weitere Informationen zur Konfiguration der 7I92 Karte und LinuxCNC werde ich veröffentlichen, sobald ich es selber geschafft habe alles zum laufen zu bringen.