Programmbeispiele
Im nachfolgenden werden einige Beispiele für CNC-Programme erläutert.
Verschachtelte Schleifen
2 verschachtelte Schleifen um eine Anzahl Löcher in der X-Achse und
eine Anzahl Reihen in der Y-Achse zu bohren. Das Beispiel macht 4 x 4
Löcher.
P X0 Y0; Ausgangspunkt ohne zu bohren
Loop YAchse 4; 4 Reihen
X 10 YI+10 Z; Nächste Y-Reihe, erstes Loch
Loop XAchse 3; 3 Wiederholungen
XI 10 Z; X-Achse +10mm und bohren
Next XAchse; Nächstes Loch
Next YAchse; Nächste Reihe
M; Bleibt bei X40 Y40 stehen
Unterprogramme
Das Unterprogramm ist ein Lochbild mit vier Löcher. Sie sollen mit
dem Zentrierbohrer angebohrt werden, dann gebohrt, dann angesenkt und
dann ein Gewinde geschnitten werden. Das bedingt natürlich die Möglichkeit den Spindelmotor
vorwärts und rückwärts umzuschalten.
P X0 Y0 T; Zentrierbohrer einsetzen
Gosub Lochbild; Lochbild anbohren
P X0 Y0 T; Bohrer einsetzen
Gosub Lochbild; bohren
P X0 Y0 T; Senkbohrer einsetzen
Gosub Lochbild; ansenken
P X0 Y0 T; Gewindebohrer einsetzen
Gosub Lochbild; Gewinde bohren
M;
Lochbild:
X10 Y10 Z;
XI10 Z;
YI10 Z;
XI-10 Z;
Return
Nullpunkt verschieben
Das obige Programm soll an 2 verschiedenen Stellen nacheinander
ausgeführt werden. Man könnte natürlich alles inkremental programmieren.
Auch kann man es so optimieren, dass weniger Werkzeug umgespannt
werden muss. Manchmal ist diese Möglichkeit aber einfacher für ein Einzelstück und es
soll es ja auch als Beispiel dienen. Und so wird das Bohrbild bei X0, Y0
bearbeitet und dann nochmals mit der X-Achse um +100mm verschoben.
Die Marke "Zweites:" wurde eingefügt damit man wenn nötig nur das zweite
Stück bearbeiten kann, ohne das Programm zu verändern. Siehe
Beschreibung weiter Unten.
P X0 Y0; Position des ersten Stücks
Gosub Gesamtbild
Zweites:; Marke
P X100 Y0; Position des zweiten Stücks
XZ; X nullen
Gosub Gesamtbild
XZ-; Nullpunkt zurück stellen
M
Gesamtbild:
P X0 Y0 T; Zentrierbohrer einsetzen
Gosub Lochbild; Lochbild anbohren
P X0 Y0 T; Bohrer einsetzen
Gosub Lochbild; bohren
P X0 Y0 T; Senkbohrer einsetzen
Gosub Lochbild; ansenken
P X0 Y0 T; Gewindebohrer einsetzen
Gosub Lochbild; Gewinde bohren
Return
Lochbild:
X10 Y10 Z;
XI10 Z;
YI10 Z;
XI-10 Z;
Return
Sprungmarken
Manchmal möchte man einen Teil überspringen können, z.B. wenn etwas
schief gegangen ist und man abbrechen muss. Das könnte der Fall sein
wenn man unbeabsichtigt in den Anschlag fährt, eine Spannschraube
verschieben muss usw. So kann man Sprungmarken setzen und diese dann im
Programm direkt anspringen oder auch mit der Goto Funktion des
User-Interfaces. So ist um obigen Beispiel die Marke "Zweites:"
eingefügt. Drückt man beim User-Interface den "Goto" Knopf, erscheint
eine Liste mit allen Marken, auch den Unterprogrammen. Wählt man nun "ZWEITES" und drückt OK, startet das Programm direkt dort.
So kann man also auch Programme schreiben, welche mehrere abgeschlossene Bearbeitungen haben und diese dann einzeln aufrufen.
Man kann die Sprungmarken auch innerhalb des Programms anspringen mit dem Goto Kommando, in diesem Fall:"Goto Zweites"
Lochkreis
Beispiel eines Lochkreises wie eine Uhr, also 12 Löcher in einem
Kreis. Dazu wird die Lochkreisfunktion verwendet. Der Kreis soll einen
Durchmesser von 100mm haben, Ausgangspunkt ist 12 Uhr und bohren im
Uhrzeigersinn.
P X0 Y50; Ausgangspunkt ohne zu bohren
YI-100 R50 Z6; 6 Löcher, also 1-6 Uhr
YI+100 R50 Z6; 6 Löcher, also 7-12 Uhr
M; wieder beim Ausgangspunkt
Ein Loch fräsen
Hier ein Beispiel um ein Loch zu fräsen. Ausgangspunkt ist das
Zentrum. Mit einem Fräser wird dann der Lochkreis gefräst. Im Beispiel
soll ein 100mm Loch mit einem 10mm Fräser gefräst werden. Wir beginnen Links am Rand und fräsen im
Uhrzeigersinn, also rechts herum. Das bedeutet hier Gegenlauffräsen.
Dabei wird der Fräser mit der Bewegung weggedrückt. So läuft es
stabiler wenn Kräfte auftreten. Aber es wird ungenauer da es den
Fräser weg drückt.
Um ein gutes Resultat zu erhalten wird deshalb in 2 Durchläufen gefräst. Erster Durchlauf mit
Gegenlauffräsen mit 0.2mm Untermaß. Dazu einfach die Korrektur 0.2mm
vergrößern. Im zweiten Durchlauf fräsen wir dann mit Gleichlauffräsen
aufs Maß,
also mit der richtigen Korrektur.
T; Fräser einsetzen
P X100 Y100; Ausgangspunkt ohne zu bohren
K1=5.2; Fräskorrektur 1. Durchlauf
X+K1 R-K1; Korrekturen anwenden
XI-50 Z; Anfangspunkt, Pinole absenken
F 50; Fräsmodus, 50mm/min
XI+100 R+50 X-K1; 1. Halbkreis
XI-100 R+50 X+K1; 2. Halbkreis
K1=5; Korrektur für 2. Durchlauf
XI0 X+K1; Fahre auf neue Korrektur
XI+100 R-50 X-K1; 1. Halbkreis
XI-100 R-50 X+K1; 2. Halbkreis
Z; Fertig, Pinole nach Oben
M
Ein Rechteck mit Radien fräsen
Das Beispiel zeigt wie ein Rechteck mit Radien in den Ecken gefräst
wird. Dabei kann es sich um eine Außenkontur (z.B. ein Schild) oder eine
Innenkontur handeln (z.B eine Aussparung). Um eine Innenkontur zu
erhalten, würden einfach die Vorzeichen der Werkzeugkorrekturen
invertiert. In diesem Fall ist das Rechteck Außen 40x60mm, die Radien
8mm und der Fräser 5mm.
K1=2.5; Werkzeugkorrektur
F 50; Vorschub
P X-5 Y-5 T; Position für den Werkzeugwechsel
X-K1 R+K1; Korrekturen setzen
P X0 Y8 Z; Startpunkt Kante links unten
F; Fräsen
YI24; Kante Links
Y+K1 XK XI8 YI8 R8; Radius Oben Links
XI44; Kante Oben
YK X+K1 XI8 YI-8 R8; Radius Oben Rechts
YI-24; Kante Rechts
Y-K1 XK XI-8 YI-8 R8;Radius Unten Rechts
XI-44; Kante Unten
X-K1 YK XI-8 YI8 R8; Radius Unten Links
Z; Ende
M
Leuchtschild
Das Leuchtschild mit den Buchstaben X, Y und Z wird in der Steuerung verwendet um die Anzeige der
Achsen mit X, Y und Z zu bezeichnen. Sie wurde aus einem 4mm Plexiglas gefertigt und ist auf den Bildern der
Steuerung zu sehen.
|
Rechts neben den gravierten Buchstaben werden stirnseitig 3 Löcher
für 3 weiße 3mm LEDs gebohrt, die LEDs eingesteckt und gem. Schema verkabelt. Um das Licht besser zu
reflektieren ist eine Alufolie auf der Rückseite bis über die Kanten links und rechts befestigt (LEDs ausgenommen).
Die Fläche vorne ist mit schwarzem Klebeband beklebt bzw.
bemalt, um die Buchstaben besser zu sehen.
|
Das folgende Bild zeigt die mechanische Zeichnung des Leuchtschildes.
Zusätzlich rechts die Bemaßung der Buchstaben für die Gravur.

Das CNC Programm ist aufgeteilt in 5 Unterprogramme, 2 für die Kontur und für die 3
Buchstaben. So können diese einzeln ausgeführt werden. Deshalb ist nach dem Return auch jeweils ein M eingefügt.
Beim Fräsen der
Außen-Kontur müssen die Spannschrauben entfernt werden. Deshalb wird
erst die linke Kante alleine gefräst, dazu müssen die linken
Spannschrauben entfernt werden.
Dann werden
die linken Spannschrauben wieder befestigt und die beiden Oben und
Unten entfernt damit der Rest der Kontur gefräst werden kann.
Ganz zuerst aber werden die beiden Gewindelöcher gebohrt. Durch diese
wird das Glas am Anfang angeschraubt so dass es beim wechseln der
Spannschrauben nicht verrutscht.
Hier das CNC Programm des Leuchtschildes: Da es etwas größer ist, kann man es mit dem Link öffnen der herunterladen (rechte Maustaste, "Ziel speichern unter...").
Im Programm nicht enthalten sind die 3 LED Bohrungen auf der rechten
Seite. Dazu wird das Teil am Besten in einen Schraubstock gespannt und
die Maße von Hand eingestellt.
GX20 Stecker
Die Steuerung hat auf der Rückseite ein
Winkelprofil aus Aluminium in welches die Stecker montiert sind. Die
GX20-Stecker (im Schema J4, J9, J19, J21) haben einen Ausschnitt für ein
19x1 Gewinde mit einer 18mm
breiten Anfräsung damit sie im Loch nicht verdreht werden können. Um das
zu
fräsen kann man wie Folgt vorgehen:

|
Ausgangslage:
Lochdurchmesser 19mm,
Anfräsung 18mm
|

|
Die Höhe der Anfräsung kann mit den Pythagoras berechnet werden:
A = 9mm (18mm / 2)
C = 9.5mm (19mm / 2)
B = 3.04
|

|
Die Punkte relativ vom Zentrum sind demnach:
1: X-9.00 Y-3.04
2: X 9.00 Y-3.04
3: X 9.00 Y 3.04
4: X-9.00 Y 3.04
|
Nun muss der Radius des Fräsers berücksichtigt werden.
Angenommen, wir verwenden einen 4mm Fräser. Dann ist die
Werkzeugkorrektur 2mm. Nun ist aber das Problem, dass Y 3.04
bereits zu
hoch ist und in den Radius hinein fräsen würde. Deshalb muss
die Korrektur des Fräsers
Richtung Zentrum verschoben werden. Mit dem 4mm Fräser ist die
Berechnung des Pythagoras also 7.5mm bzw. 7mm.
Das ergibt dann eine Höhe von 2.69mm anstelle von 3.04mm. Man
könnte nun für Y 2.69mm
verwenden. Besser ist aber 3.04mm und eine Korrektur von 0.35mm. Das ist
einfacher weil man mit einen anderen Fräser nur die Korrekturen
anpassen muss.
Das CNC-Programm sieht demnach wie folgt aus: (Inkremental mit Unterprogramm für mehrere Löcher an verschiedenen Positionen):
F 50; Fräsvorschub einstellen
K1=2; Korrektur für einen 4mm Fräser
K2=0.35; Korrektur der Höhe für den 4mm Fräser
P X0 Y-20 T;Position zum einsetzen des Fräsers
P X50 Y10; Zentrum des ersten Lochs
gosub SteckerGX20
P X100 Y10; Zentrum des zweiten Lochs
gosub SteckerGX20
P X0 Y50; Endposition
T; Werkstück entfernen
M; Programm Ende
SteckerGX20: X+K1 Y+K2 R-K1; Korrekturen anwenden
XI-9 YI-3.04 Z; Punkt 1 anfahren und Pinole absenken
F; Fräsmodus
XI+18 X-K1 R-9.5; Radius zu Punkt 2
YI+6.08 Y-K2; Gerade zu Punkt 3
XI-18 X+K1 R-9.5; Radius zu Punkt 4
YI-6.08 Y+K2; Gerade zu Punkt 1
XK YK RK; Korrekturen aufheben
Z
return
Simulation
Um ein Programm zu testen kann man einen RP2040-Zero oder Raspberry-Pi Pico
als Simulator verwenden wie beim User Interface beschrieben. Ruft man das User Interface Script cnc.py mit
dem Argument -r auf (r für Record), schreibt es die Bewegungsdaten in
die Datei cnc.csv. So kann man diese in einer
Tabellenkalkulation (Excel, Libreoffice) darstellen und überprüfen.
Das obige CNC Programm wurde in die Datei sim.cnc kopiert und am Anfang
das
Kommando V12 (Simulation) eingefügt. Auch wurde der Fräsvorschub von 50
auf 200mm/min geändert damit es schneller läuft. Dann mit der
Kommandozeile:
py/cnc.py -r sim.cnc
startet man das User Interface mit der Datei sim.cnc und schreibt die Bewegungsdaten in
die Datei cnc.csv. Danach das CNC Programm starten und zu Ende laufen
lassen. Das User Interface wird danach beendet. Die cnc.csv kann direkt angeklickt werden um es in die
Tabellenkalkulation zu laden. Nach dem Importieren sind X und Y Werte je
in einer Kolonne. Die Kolonnen anwählen und dann ein x-y Diagramm
einfügen mit der Option "Linien ohne Punkte". Es zeigt sich folgendes
Bild:

|