CNC Kreuztisch für Ständer-Bohrmaschine

  Home     Übersicht     Mechanik     Steuerung     Bedien-Paneel     User-Interface     Dokumentation     Beispiele  

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=C2A2B=\sqrt{C^{2}-A^{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:


© 2025 by Stefan Ludescher