Dienstag, 18. März 2014

LibreCAD in LinuxCNC

LibreCAD

Um ein Bauteil vernünftig erstellen zu können benötigt man ein CAD Programm. Ich benutze gerne LibreCAD. Leider ist LibreCAD nicht in LinuxCNC enthalten, daher muss man es selber kompilieren.

Diese Anleitung zeigt, wie es geht (eine englische, allgemeine Anleitung findet sich unter http://librecad.org/cms/home/from-source/linux.html).

Anleitung

Hat man LinuxCNC gestartet, muss man zuerst ein Terminal öffnen (Anwendungen → Zubehör → Terminal). Darin werden nun jeweils die folgenden Kommandos (Kommandos in Monospace, Kommentare normal) eingegeben:

sudo apt-get install qt-sdk libboost-all-dev libmuparser-dev libfreetype6-dev
Damit installiert man notwendige Pakete, um LibreCAD übersetzen zu können



git clone https://github.com/LibreCAD/LibreCAD.git
Dieser Befehl kopiert die Quelldateien von LibreCAD auf den eigenen Rechner.

cd LibreCAD
Wechsel in das Verzeichnis mit den gerade kopierten Quelldateien

git checkout tags/2.0.0beta5
Dieser Schritt ist notwendig, weil leider bei späteren Versionen von LibreCAD mit dem (relativ alten) Compiler von LinuxCNC/Ubunutu 10.04 ein Fehler auftritt. Es wird damit die Version 2.0.0beta5 "ausgewählt".

echo  "CXX_CP11_FLAG = -std=c++0x" > custom.pro
Auch dieser Schritt ist notwendig, um mit dem Compiler das Auslangen zu finden

qmake custom.pro
qmake librecad.pro
make
Diese Schritte vereiten das Compileren vor, bzw. führen es durch. Nach Eingabe von make kann es schon mal ein Weilchen dauern (je nachdem wie schnell der Rechner ist).

Hat alles geklappt, dann kann man mit
cd unix
./librecad
LibreCAD nun starten.
LibreCAD unter LinuxCNC

Video


Und weil ich schon immer mal mit Linux Videotools spielen wollte, gibts die Anleitung (mit Bonus-Material: Desktop-Icon Erstellung) auch als Video:

Samstag, 8. März 2014

Verwendung des Stepcraft Werkzeuglängensensors mit LinuxCNC

Manuelle Verwendung

Nach Durchführung der Referenzfahrt legt man den Werkzeuglängensensor auf die Oberfläche des Werkstücks und fährt man mit Manuelle Kontrolle den Fräser über den Sensor. Dazu verwendet man entweder die Radiobuttons X/Y/Z sowie den - und + Knopf, oder die Pfeiltasten (für X und Y) sowie die Bildlauf-Tasten (für Z) auf der Tastatur.
Mit dem Slider Schrittgeschwindigkeit kann man die Geschwindigkeit reduzieren, wenn man sonst die Position nicht trifft.

Mit der Z-Achse fährt man einige mm über den Sensor, dann wechselt man auf den MDI Reiter, und setzt das Kommando G38.2 Z-10 F20 ab.

Die Z-Achse fährt nun nach unten, bis der Schalter im Sensor erreicht und ausgelöst wird, dann stoppt die Maschine.

Da wir wissen, dass der Sensor auf 33mm Höhe liegt, können wir das nun wiederum im Manuelle Kontrolle Reiter einstellen:
Wie in der Grafik schon dargestellt:
  1. Die Z-Achse auswählen
  2. Auf den Antasten Knopf klicken
  3. 33 in das Eingabefeld des Dialogs eingeben
  4. OK klicken
Danach zeigt die Koordinaten-Anzeige Z: 33.000, wir haben die Werkzeuglänge exakt eingestellt.

Einbindung in Axis

Nun ist die manuelle Verwendung wie oben gezeigt, doch eher mühsam, daher folgt nun eine Anleitung, wie wir die schritte bequem ins Axis-GUI integrieren können.

Anpassungen im .ini - File

Zuerst muss man das .ini - File der Fräse öffnen und an zwei Stellen Anpassungen vornehmen:
Unter [DISPLAY] muss die Datei mit der GUI-Definition als PYVCP angegeben werden (die Datei laengensensor.xml folgt weiter unten)

Ein wenig weiter unten in der Datei geht es weiter ...
Unter [HAL] definiert das POSTGUI_HALFILE die "Verbindungen" unseres GUIs zur Fräse (die Datei laengensensor.hal folgt weiter unten).
Wichtig ist auch die Zeile HALUI = halui, diese war bei mir schon dabei, scheint aber in vielen Fällen zu Fehlen, dann bekommt man die Fehlermeldung: Pin 'halui.mdi-command-00' does not exist.
Unter [HALUI] haben wir hier 4 mal den Schlüssel MDI_COMMAND mit folgenden Befehlen:
  1. G30.1 ... Merken der aktuellen Position als Referenzpunkt
  2. G30 ... Anfahren der gemerkten Position
  3. G38.2 Z-3 F20 ... Langsam (20 mm / Minute) mit der Z Achse bis zu 3 mm nach unten fahren, aufhören, sobald der Kontakt geschlossen ist.
  4. G92 Z33 ... Setzen der Z Koordinate auf 33 mm (die Höhe des Stepcraft Sensors)

GUI-Datei

Unser GUI sieht so aus:

4 Knöpfe, die mit je einem sogenannten halpin verbunden sind.

HAL-Datei

Was machen nun diese Halpins? Das steht in der laengensensor.hal:



Die vier Halpins sind mit mdi-command-00 bis mdi-command-01 verbunden und deren Bedeutung haben wir wiederum in der .ini - Datei unter [HALUI] festgelegt.

Die etwas eigenartige Kette von Verknüpfunen lautet also:
  • .ini File bindet laengensensor.xml und laengensensor.hal ein
  • laengensensor.xml macht 4 Knöpfe, die sich auf Pins in der laengensensor.hal beziehen
  • laengensensor.hal definiert Pins, die MDI-Befehler ausführen die in der .ini - Datei stehen.
Starten wir nun Axis, bekommen wir neben der 3-D Ansicht unsere Panel mit den 4 Knöpfen (die auch hoffentlich funktionieren):

Geschafft! Das Axis-GUI erweitert um unsere 4 Knöpfe.

Anwendungsidee

Gedacht ist das nun so, dass man die Fräse an eine Position fährt, wo man den Sensor bequem drunterstellen kann. Dann fährt man schon mal mit Z bis knapp vor den Sensor, damit man sieht, ob der Druckknopf auch schön unterhalb des Fräsers steht (wer das nicht will, muss beim MDI_COMMAND in der .ini-Datei einen größeren Z-Wert angeben, z.B. Z-50).
Diese Position kann man sich nun mit dem ersten Knopf merken, um sie später (nach einem Werkzeugtausch) mit dem zweiten Knopf wieder leicht anfahren zu können.
Mit dem dritten Knopf führt man die Längenmessung aus, d.h. es wird nach unten gefahren, bis der Kontakt des Schalters im Sensor geschlossen wird.
Danach drückt man auf den vierten Knopf, wodurch Z automatisch auf die Höhe (33mm) gesetzt wird (Hat man einen anderen Sensor, muss man das vierte MDI Kommando in der .ini-Datei entsprechend anpassen)

Download

Die Dateien laengensensor.xml und laengensensor.hal zum Download.

X/Y-Nullpunkt Knopf

Auf Anregung eines Benutzers im Stepcraft Forum habe ich die Axis-Erweiterung noch um einen Knopf ergänzt, der X und Y an der aktuellen Stelle auf 0 setzt.
Dazu muss man:
  1. In laengensensor.xml einen weiteren Knopf einführen, der mit einem neuen halpin verbunden ist
  2. In laengensensor.hal den halpin definieren und ihn mit dem nächsten mdi-command verbinden
  3. In der .ini - Datei MDI_COMMAND = G92 X0 Y0 anfügen
Das Gesamt-Ergebnis sieht dann so aus:
laengensensor.xml:
<pyvcp>
    <button>
        <halpin>"set-probe-xy"</halpin>
        <text>"Längensensorposition merken"</text>
    </button>
    <button>
        <halpin>"goto-probe-xy"</halpin>
        <text>"Zur Längensensorposition"</text>
    </button>
    <button>
        <halpin>"do-the-probe"</halpin>
        <text>"Werkzeuglänge messen"</text>
    </button>
    <button>
        <halpin>"set-the-toollength"</halpin>
        <text>"Werkzeuglänge setzen"</text>
    </button>
    <button>
        <halpin>"set-xy-zero"</halpin>
        <text>"X/Y auf 0 setzen"</text>
    </button>
</pyvcp>


laengensensor.hal:
net set-probe-xy halui.mdi-command-00 <= pyvcp.set-probe-xy
net goto-probe-xy halui.mdi-command-01 <= pyvcp.goto-probe-xy
net do-the-probe halui.mdi-command-02 <= pyvcp.do-the-probe
net set-the-toollength halui.mdi-command-03 <= pyvcp.set-the-toollength
net set-xy-zero halui.mdi-command-04 <= pyvcp.set-xy-zero

.ini-Datei (Ausschnitt):
[HALUI]
MDI_COMMAND = G30.1
MDI_COMMAND = G30
MDI_COMMAND = G38.2 Z-3 F20
MDI_COMMAND = G92 Z33
MDI_COMMAND = G92 X0 Y0


Die (finale?) Deluxe-Version

Nach ein paar weiteren Überlegungen (u.a. im Stepcraft Forum) habe ich nun noch die Knöpfe "do-the-probe" und "set-the-toollength" zusammengefasst und ausserdem das automatische Freifahren des Sensors noch dazuprogrammiert.
Dazu braucht man neben den drei schon bekannten Dateien (laengensensor.xml, laengensensor.hal und .ini-Datei der Fräse) eine vierte (probez.ngc), wo der zusammengefasste Code (runterfahren, Höhe setzen, freifahren) drin ist, diese Datei legt man im Verzeichnis linuxcnc/nc_files ab.

Hier die 4 Dateien:
laengensensor.xml:
<pyvcp>
    <button>
        <halpin>"set-probe-xy"</halpin>
        <text>"Längensensorposition merken"</text>
    </button>
    <button>
        <halpin>"goto-probe-xy"</halpin>
        <text>"Zur Längensensorposition"</text>
    </button>
    <button>
        <halpin>"do-the-probe"</halpin>
        <text>"Werkzeuglänge messen"</text>
    </button>
    <button>
        <halpin>"set-xy-zero"</halpin>
        <text>"X/Y auf 0 setzen"</text>
    </button>
</pyvcp>

laengensensor.hal:
net set-probe-xy halui.mdi-command-00 <= pyvcp.set-probe-xy
net goto-probe-xy halui.mdi-command-01 <= pyvcp.goto-probe-xy
net do-the-probe halui.mdi-command-02 <= pyvcp.do-the-probe
net set-xy-zero halui.mdi-command-03 <= pyvcp.set-xy-zero


.ini-Datei (Ausschnitt):
[HALUI]
MDI_COMMAND = G30.1
MDI_COMMAND = G30
MDI_COMMAND = O<probez> call
MDI_COMMAND = G92 X0 Y0


probez.ngc
O<probez> sub

G38.2 Z-20 F60
G92 Z33
G0 Z40 F800

O<probez> endsub

 


Damit kann man den Sensor unter den Fräser stellen, den Knopf Werkzeuglänge messen drücken und alles ist gut: Der Fräser fährt runter, bis er Schalter auslöst, merkt sich Z=33mm und fährt anschliessenf auf Z=40mm hoch, damit man den Schalter wegräumen kann.

Sonntag, 2. März 2014

Betrieb der Stepcraft 420 mit Linux

Warum Linux?

Bei der USB Starterversion der Stepcraft Fräsen wird "WinPC-NC Starter" mitgeliefert, die auch korrekt als "Einsteigersoftware" bezeichnet wird. Will man die Vollversion haben, muss man noch einmal 200 € extra drauflegen. Als Software-Entwickler und Langzeit Linux-User (demnächst 20 Jahre ...) siegte bei mir der geizige Tüftler. 

Ausserdem gibt es unter Linux jenseits der eigentlichen Maschinensteuerung (LinuxCNC) eine große Menge freier Software, z.B. LibreCAD zum Zeichnen oder dxf2gcode zur Umwandlung von CAD-Zeichnungen in G-Code.
Das ist auch ein weiterer für mich wichtiger Unterschied: LinuxCNC läuft im "Profiformat" G-Code, nicht mit einer Plotdatei, wo die Tiefen der Fräsung erst unmittelbar vor dem Fräsvorgang eingestellt werden.
Und die Tatsache, dass die verwendeten Programme Open Source sind ermöglichen es (mir als Softwareentwickler), diese nach meinen Vorstellungen anzupassen. Von dieser Möglichkeit habe ich auch tatsächlich Gebrauch gemacht, dazu später mehr ...

Ganz wichtig: Für den Betrieb mit LinuxCNC braucht man unbedingt das Parallelport-Interface (zu meinen kleinen Problemen mit der Inbetriebnahme der Fräse siehe meinen Baubericht).

Rechnerauswahl

Zurück zum Betrieb der Fräse mit LinuxCNC. Die erste Hürde ist natürlich die Auswahl eines Rechners, der für den Betrieb mit LinuxCNC geeignet ist.
Paradoxerweise ist dafür ein ganz neuer Rechner nicht unbedingt hilfreich, wichtig ist, dass der Rechner gute Echtzeiteigenschaften hat, d.h. dass er möglichst exakt auf ein vorgegebenes Signalintervall verfügbar ist.
Das Gute daran ist, dass man LinuxCNC ohne Installation von CD starten kann (LiveCD), um festzustellen, ob ein Rechner gut für das Steuern der Fräse geeignet ist. 

Ist LinuxCNC gestartet wählt man aus dem Menü Anwendungen → CNC → Latency Test. Danach muss man auf dem Rechner auch "etwas tun", um die maximalen Abweichungen (Jitter) zu ermitteln. Idealerweise sollten dabei beide Jitter-Werte unter 15.000 bis 20.000 bleiben (lt. LinuxCNC Wiki).

Geschafft! Ein Rechner mit idealen Max Jitter-Werten


Folgende Pi-mal-Daumen-Regeln hab ich aus meinen Erfahrungen abgeleitet:
  • Alte, aber nicht gar zu alte Hardware ist gut. In meinem Fall wurde es ein AMD Athlon(tm) 64 X2 Dual Core Processor 4200+ mit einer nVidia GeForce 6600 GT auf einem nForce2 Motherboard.
  • Wenn man sehr alte Hardware versuchen möchte, kann es empfehlenswert sein, die "ältere" CD von LinuxCNC zu verwenden (siehe hier unter Ubuntu 8.04 Hardy Heron (older)).
  • Je weniger Hardware in einem Rechner verbaut ist, desto geringer die Wahrscheinlichkeit, dass ein Teil darunter ist, das die Echtzeiteignung zunichte macht
  • Die Grafikkarte ist meist das größte Problem. Ich habe viele nVidia-Karten durchprobiert (und auch immer proprietärer Treiber oder der Open-Source "Nouveau"-Treiber), bis ich das passende gefunden habe. Die schon erwähnte nVidia 6600 GT mit nouveau war dann schließlich perfekt.
  • Es wird zwar ausdrücklich erwähnt, dass man beim Latenz-Test den Browser starten soll, allerdings ist Firefox mittlerweile ein echtes Monster und so wird auch in einschlägigen Foren davon abgeraten, Firefox während des Latenztests zu starten. Umgekehrt heißt das natürlich, dass man auch während des Fräsens den Browser besser nicht verwendet.
    Sehr wohl muss man aber ein OpenGL-Programm laufen lassen, da auch Axis (das GUI von LinuxCNC) diese Grafikschnittstelle verwendet. glxgears kann man starten indem man Alt+F2 drückt und dann glxgears in das Eingabefeld eingibt, gefolgt von der Return-Taste.

Installation

Die Installation von LinuxCNC gestaltet sich denkbar einfach, da LinuxCNC auf Ubuntu basiert und dieses um die benötigte Software für die Steuerung (Axis) und Echtzeit - Erweiterungen für den Kernel erweitert. Daher auch der Hinweis, dass man nicht einfach einen Ubuntu-Systemupgrade durchführen darf, sonst ist es aus mit Echtzeit-Steuerung und damit auch mit CNC-Fräsen.

Einrichten der Stepcraft 420

Sowohl im Stepcraft Forum als auch auf YouTube habe ich schon vor dem Kauf meiner Fräse die wichtigsten Informationen gefunden, wie man mit stepconf die Stepcraft einrichtet. Ich habe meine Dateien (ohne jede Garantie, bitte jedenfalls selbst kontrollieren, bei anderer Fräse als 420 natürlich die möglichen Verfahrwege anpassen) hier freigegeben (herunterladen und dann in stepconf Modify a configuration already created with this program auswählen).

Man kann mit stepconf aber natürlich auch ganz einfach selber die Daten eingeben:
 
Hat man die Dateien runtergeladen, wählt man hier Modify a configuration already created with this program, sonst eben Eine neue Konfiguration erstellen.


Wichtige Grundeinstellungen, ich habe bei Maximale Systemtakt-Abweichung einen Wert eingegeben, der deutlich über den ermittelten Werten liegt, um auf der ganz sicheren Seite zu sein.

Hier kann man Erweiterungen zum Axis GUI einstellen, fürs erste hab ich es mal leer gelassen

 
Die Pin-Belegung

Wichtig bei der Pinbelegung ist, dass man Pin 11, den Notausschalter invertiert. Sonst wird in Axis die Fräse als inaktiv angezeigt obwohl sie eigentlich "an" ist. Pin 1 steuert die Schaltsteckdose und auf Pin 10 ist der Werkzeuglängen-Sensor angebracht.

Konfiguration X-Achse (links-rechts), hat man ein anderes Modell als die 420, muss der Verfahrweg angepasst werden.
Konfiguration Y-Achse (vor-zurück); Da der Referenzschalter ganz hinten liegt, gibt man hier das Ende als Punkt an, die Geschwindigkeit ist positiv; Ein paar mm hab ich hier als Sicherheitsreserve eingespart.

Die Z-Achse (auf-ab): Hier ist die lt. Datenblatt geringere Maximale Geschwindigkeit zu beachten.

Wenn man mit stepconf fertig ist, bekommt man einen schönen Link am Desktop, den man zum Starten von Axis benutzen kann. Dort empfiehlt es sich zunächst vorsichtig im Reiter Manual Control die Achsen zu bewegen (läuft alles richtig?, in die richtige Richtung?).

Hat man die Fräse zum ersten Mal in Betrieb sollte man aus der Erste Schritte - Anleitung von Stepcraft den Punkt 2.5 ÜBERPRÜFUNG DER LINEARACHSEN durchführen. Danach steht einem erfolgreichen Betrieb der Fräse nichts mehr im Weg.

Ausblick

Dieser Artikel beschreibt nur die Einrichtung von LinuxCNC. Um von einer Idee zum fertig gefrästen Bauteil zu kommen, braucht es aber noch mehr Software (LibreCAD, dxf2gcode). Deren Einrichtung und Verwendung beschreibe ich einem meiner nächsten Artikel...