CNC Path Analyzer

M98/M99-Unterprogramme: eine wiederholte Form einmal schreiben und mehrfach aufrufen

Erklärt an einem Beispiel den Aufbau aus Unterprogrammaufruf mit M98 und Rücksprung mit M99, die P-Nummer und die Wiederholanzahl L, wie man mit einem inkrementalen Unterprogramm dieselbe Nut an mehreren Stellen fräst, und die Arten von Aufruffehlern.

Warum Unterprogramme?

Dieselbe Nut an fünf Stellen zu fräsen oder dieselbe Kontur mehrfach mit nur geänderter Tiefe zu bearbeiten, ist alltäglich. Kopiert man jedes Mal dieselben Sätze, wird das Programm lang, und eine Maßänderung muss an allen fünf Stellen erfolgen. Wird auch nur eine übersehen, entsteht Ausschuss, bei dem eins von fünf Teilen ein anderes Maß hat.

Ein Unterprogramm lagert den wiederholten Teil in ein eigenes Programm aus, das das Hauptprogramm bei Bedarf aufruft. Die Form wird nur an einer Stelle gepflegt, und das Hauptprogramm muss nur noch „wo und wie oft“ angeben.

Aufruf und Rücksprung

BefehlBedeutungBeispiel
M98 P_Ruft das Programm mit der P-Nummer (O-Nummer) aufM98 P3100
L_ oder vordere Stellen von PWiederholanzahlL3 → 3-mal
M99Rücksprung in die Zeile nach dem aufrufenden SatzLetzte Zeile von O3100
M99 P_Rücksprung, jedoch zur angegebenen SatznummerFür Verzweigungen und Schleifen

Beispiel: drei Nuten mit einem inkrementalen Unterprogramm

Unterprogramm O3100 ist inkremental in G91 geschrieben. Von der aktuellen Position fährt es 6 mm hinunter, fräst eine 30 mm lange Nut in X, fährt 6 mm hoch und versetzt sich beim Zurückfahren auf das Start-X um 10 mm in Y. Die Endposition ist der Start der nächsten Wiederholung; schon dreimal derselbe Aufruf ergibt also drei Nuten im Abstand von 10 mm.

Unterprogramm O3100 mit L3 dreimal aufrufen und drei Nuten im Abstand von 10 mm fräsen

O3007
T1 M6
G21 G90 G17 G94
G54
S3000 M03
G00 X0. Y0. Z5.
M98 P3100 L3
G90 G00 Z50.
M30
O3100
G91 G01 Z-6. F100
X30. F300
G00 Z6.
X-30. Y10.
M99
Unterprogramm O3100 mit L3 dreimal aufrufen und drei Nuten im Abstand von 10 mm fräsen — XY WegXY
Hellblau gestrichelt ist G00-Eilgang, orange durchgezogen ist Schnittbewegung. Kreisbögen werden als berechnete statische Kurven dargestellt.

Die Abbildung oben zeigt das Ergebnis dieses Programms in CNC Path Analyzer (Eilgang 8 Segmente, Linearvorschub 6 Segmente).

Regeln für das Hauptprogramm

  • Modus zurücksetzen: Das Unterprogramm endet in G91, daher wird im Hauptprogramm direkt nach dem Rücksprung erneut G90 programmiert. Das G90 G00 Z50. im Beispiel übernimmt das. Schreibt man nur Z50. ohne G90, wird das als „50 mm über der aktuellen Position“ statt „Höhe 50“ gelesen. Hier geht die Bewegung nach oben und schadet kaum, im Anfahrsatz des nächsten Werkzeugs könnte sie aber zur Kollision führen.
  • Startposition: Ein inkrementales Unterprogramm liefert je nach Position beim Aufruf unterschiedliche Ergebnisse. Programmieren Sie die Startposition direkt vor dem Aufruf eindeutig in Absolutkoordinaten.
  • Korrektur- und Zykluszustand: Wird bei aktiver Fräserradiuskorrektur oder aktivem Bearbeitungszyklus aufgerufen, können die Bewegungen im Unterprogramm unerwartet interpretiert werden. Ordnen Sie den modalen Zustand vor und nach dem Aufruf bewusst.
  • Lage von M30: Steht das Unterprogramm in derselben Datei, gehört es hinter das M30 des Hauptprogramms. Das Hauptprogramm endet bei M30, sodass das Unterprogramm nicht versehentlich ausgeführt wird.

Wiederholanzahl und Berechnung der Zykluszeit

Ein Durchlauf des Unterprogramms schneidet Z 6 mm (F100) und X 30 mm (F300): 3.6 und 6 Sekunden, also 9.6 Sekunden je Durchlauf und bei drei Durchläufen etwa 29 Sekunden reine Schnittzeit. Ändert man die Wiederholanzahl auf L5, genügt ein einziges Zeichen im Hauptprogramm für fünf Nuten und etwa 48 Sekunden Schnittzeit. Das zeigt, wie eine Wiederholstruktur sowohl Programmänderungen als auch Zeitabschätzungen vereinfacht. Die Berechnungsweise wird unter Berechnung der Bearbeitungszeit ausführlicher behandelt.

Arten von Aufruffehlern

Im Werkzeug lassen sich aufgerufene Programme aus separaten Dateien zusammen mit dem Hauptprogramm laden; die P-Nummer wird mit der O-Nummer in der Datei verknüpft, nicht mit dem Dateinamen.

FehlerUrsacheAnzeige in CNC Path Analyzer
Aufgerufenes Programm nicht gefundenKein Programm mit der zu P passenden O-NummerAufrufzeile und nicht gefundene Nummer
Doppelte O-NummerZwei oder mehr Programme mit derselben NummerWarnung, dass nicht entschieden werden kann, welches gilt
Fehlendes M99Das Unterprogramm endet nicht und läuft ins nächste Programm weiterWarnung über fehlenden Rücksprung
Endlose AufrufeProgramme rufen sich gegenseitig auf, oder ein Programm ruft sich selbstBerechnung bricht wegen Rekursion oder Ausführungsgrenze ab

Häufig gestellte Fragen

Kann ein Unterprogramm ein weiteres Unterprogramm aufrufen?
Ja. Das nennt man Verschachtelung; die zulässige Tiefe (meist vier Ebenen oder mehr) hängt von der Steuerung ab. Je tiefer verschachtelt, desto schwerer lässt sich der modale Zustand verfolgen; wir empfehlen daher höchstens zwei Ebenen.
Wie unterscheidet sich M98 von einem G65-Makroaufruf?
G65 ist ein Makroaufruf, der Argumente (A, B, C …) als Variablen übergibt. Man nutzt ihn, um dieselbe Form mit anderen Maßen aufzurufen, während M98 denselben Ablauf ohne Argumente wiederholt.

Nächste Schritte

Werkzeugweg in CNC Path Analyzer prüfen