Samstag, 15. November 2014

LibreCAD, dxf2gcode, LinuxCNC und der Stepcraft Styroporschneider

Ich hab zu meiner Stepcraft auch den Heißschneider, mit dem ich immer wieder mal Dinge aus Styropor herstelle. Wie aus vorherigen Posts bekannt, verwende ich LibreCAD zum Zeichnen, wandle die .dxf-Dateien mit dxf2gcode in G-Code um, der dann von LinuxCNC ausgeführt wird.

Was ist beim Styroporschneiden nun anders?

Wir haben einen heißen Draht, keine sich drehende Spindel. In Analogie zum Fräsen soll aber der Draht erhitzt werden, wenn sich auch die Spindel dreht, daher wird das Netzteil des Heißschneiders an die Schaltsteckdose angeschlossen.

Beim Styroporschneiden gibt es aber keine Bewegung in der Z-Achse und man kann den Draht nicht erst einschalten, wenn man am Startpunkt ist, weil man nicht "über dem Material" fahren kann sondern immer mitten durch muss.

dxf2gcode besitzt glücklicherweise einen Mechanismus, wie man das Abbilden kann: Es erlaubt das Hinterlegen verschiedener Post-Prozessor-Konfigurationen.
Dies sind Dateien im Ordner dxf2gcode/source/postpro_config, welche angeben, welcher G-Code wofür generiert werden soll.
Also legen wir eine neue Datei namens styrofoam.cfg in diesem Ordner an, welche zunächst eine Kopie der dort vorhandenen Default-Konfiguration namens postpro_config.cfg ist.

Die folgende Abbildung zeigt einen Überblick über die gegenüber der Default-Konfiguration notewendigen Änderungen:

Die Änderungen im Detail:
  • Im Abschnitt General brauchen wir einen anderen output_text, dieser wird dann in dxf2gcode als möglicher Dateityp in der Combobox ganz unten sichtbar:
     
  • Ebenfalls wird in General der code_end so erweitert, dass vor dem Ende des Programms die Schaltsteckdose ausschaltet.
  • Im Abschnitt Program wird der tool_change so erweitert, dass die Schaltsteckdose unmittelbar danach einschaltet (dies ist an genau dieser Stelle notwendig, weil M6 sie ausschaltet). Weiters werden sämtliche Einträge, die ein Fahren in der Z-Achse auslösen würden (rap_pos_depth, lin_mov_depth) leer gemacht.
    Und schliesslich werden auch pre_shape_cut und post_shape_cut leer gemacht, da es nicht möglich ist, nach einem Shape den Draht (so wie die Fräse) auszuschalten und zum Startpunkt der nächsten Shape zu fahren (zumindest nicht ohne den Draht abzureissen oder das Styropor mit auf die Reise zu nehmen ... habe ich alles gehabt ;-).
Wer das jetzt nicht zu Fuß machen will, kann sich Datei auch hier herunterladen. Hat man die Datei in dxf2gcode/source/postpro_config abgelegt und dxf2gcode neu gestartet, dann hat man ab diesem Zeitpunkt beim Exportieren nach GCode zwei Formate zur Auswahl.

Ab Revision: r533 von dxf2gcode werden die Formate übrigens alphabetisch sortiert, sodass das Styropor-Profil nach dem Standard-Profil kommt. Wer das nicht will, muss die Datei von styrofoam.cfg nach z.B. a_styrofoam.cfg umbenennen.

Viel Spass beim Schneiden :-)


Freitag, 7. November 2014

Antasten-Knopf, V2.0

Nachdem ich über das Einrichten des Werkzeuglängensensors und eines Knopfes zum Antasten von X und Y Achse schon mal gepostet habe ist mir heute im Keller aufgefallen, dass der Knopf "X/Y auf 0 setzen" nicht richtig funktioniert.

Das Problem ist, dass zwar X und Y gesetzt werden, das Axis-GUI aber die aktuelle Datei neu laden muss, damit das Werkstück auch optisch richtig "nachrutscht".

Durch Studium des LinuxCNC Forums hier und hier bin ich dann zu folgender Lösung gekommen:

  • Ein "User defined Command" (ich habe willkürlich M122 genommen), welches das Neuladen besorgt
  • Eine Subroutine, die auf den Knopf gelegt wird und nebem dem G92 X0 Y0 eben auch das M122 aufruft.
So gehts im Detail:

Im Verzeichnis linuxcnc/nc_files eine Datei namens M122 anlegen mit folgendem Inhalt:
#!/bin/sh
axis-remote --reload &
Diese Datei muss ausführbar sein, daher nach dem Editieren folgendes Kommando auf der Kommandozeile absetzen:
rli@rlicnc:~/linuxcnc/nc_files$ chmod +x M122

Im Verzeichnis linuxcnc/nc_files eine Datei namens touchoffxy.ngc anlegen mit folgendem Inhalt:
O<touchoffxy> sub

G92 X0 Y0
M122

O<touchoffxy> endsub
 Und unsere Fräsen-Konfigurationsdatei (<Name>.ini in linuxcnc/configs/<Name>), die bisher diese Zeile enthielt:
MDI_COMMAND = G92 X0 Y0
auf
MDI_COMMAND = O<touchoffxy> call
ändern, sodass das neue Kommando auch ausgeführt wird.

Nach einem Neustart von Axis funktioniert dann der Knopf wie gewünscht.