Skip to main content
CNC.wikiCNC.wiki

G65, G66 und G67 Makroaufrufe in Fanuc-, Siemens- & Mitsubishi-CNC

G65, G66 und G67 Makroaufrufe sicher nutzen. Parameter für Fanuc, Siemens und Mitsubishi konfigurieren, Kollisionen vermeiden und Toleranz sichern.

Hakan Gündoğdu
Hakan Gündoğdu

CNC CARE Mitgründer

Einleitung

Ein mit maximaler Eilganggeschwindigkeit in eine gehärtete Schraubstockbacke (vise jaw), ein geschlossenes Spannfutter (chuck), eine Spannpratze (clamp) oder einen Revolver (turret) krachender Hartmetallfräser ist die unmittelbare physische Konsequenz eines einzigen, nicht abgewählten modalen Makroaufrufs. Programmierer konfigurieren häufig benutzerdefinierte Unterprogramme über G65 und G66, um lokale Variablen für sich wiederholende Messzyklen oder Taschenfräsoperationen zu übergeben. Das Versäumnis, diese modalen Zustände unmittelbar nach ihrer Nutzung abzuwählen, verwandelt sicheren NC-Code jedoch schlagartig in unkontrollierte Verfahrbefehle. Vergisst der Bediener, vor einem Werkzeugwechsel oder dem Wechsel des Koordinatensystems einen G67-Abwahlblock einzufügen, führt die Steuerung das Makrounterprogramm bei jeder nachfolgenden Achsbewegung unbeabsichtigt weiter aus. Dies mündet in einer verheerenden harten Kollision (hard collision), führt zu massiven mechanischen Schäden an der Maschine und verwandelt hochwertige Werkstücke in teuren Ausschuss (scrap part).

Über die reinen Crash-Gefahren hinaus beeinflussen diese Aufrufe die Fertigungspräzision und Werkstücktoleranzen direkt. Wird dieser Parameter nicht verifiziert, liegt das Ergebnis außerhalb der Toleranz — und der Fehler zeigt sich erst bei der Endmessung. Die exakte Konfiguration der Parameter auf Steuerungen von Fanuc, Siemens und Mitsubishi eliminiert die häufigste Ursache für Maßabweichungen bei diesem Befehl. Werden Variablenargumente falsch zugewiesen oder modal verschleppt, verändern sich interne Geometriedaten unbemerkt. Um eine lückenlose Prozesssicherheit in der Serienfertigung zu gewährleisten und die Maschinenspindel sowie Werkzeuge dauerhaft vor vorzeitigem Verschleiß zu schützen, müssen Bediener und Programmierer die Syntax, die gerätespezifischen Parameter und die Fehlerbehebung der Makroaufruf-Befehle G65, G66 und G67 bis ins kleinste Detail beherrschen.

Technische Übersicht

SpezifikationDetails
BefehlscodesG65 (Einfacher Aufruf), G66 (Modaler Aufruf A), G66.1 (Modaler Aufruf B), G67 (Modaler Abbruch)
Modale GruppeGruppe 00 / Nicht-modal (G65), Gruppe 12 / Modal (G66, G66.1), Löschen (G67)
Unterstützte MarkenFanuc, Siemens, Mitsubishi
Kritische ParameterFanuc Parameter 6000 (Bit 0 - G67, Bit 5 - SBM), Siemens $MC_EXTERN_FUNCTION_MASK (Bit 6), Mitsubishi Parameter #1241 set13/bit5, Parameter #11053 UserProgramStorage
Hauptsächliche EinschränkungDie Makro-Verschachtelungstiefe ist im Vergleich zu M98-Unterprogrammaufrufen streng limitiert (5 Ebenen tief bei Fanuc, 4 Ebenen tief bei Mitsubishi), und das Programmieren von G65/G66 im selben Block wie feste Zyklen ist streng verboten.

Schnellleser

  • G65 für Einzelblock-Ausführungen einsetzen: Programmieren Sie G65, wenn ein benutzerdefiniertes Unterprogramm bedingungslos genau einmal ausgeführt werden muss, ohne einen modalen Zustand aktiv zu hinterlassen.
  • Modalen Zustand über G67 abwählen: Programmieren Sie immer einen eigenständigen G67-Befehl unmittelbar nach dem Beenden von G66- oder G66.1-Schleifen, um eine unbeabsichtigte Makroausführung in nachfolgenden Verfahrbewegungen zu verhindern.
  • Numerische Typen der Parameter verifizieren: Übergeben Sie nur Ganzzahlen für Unterprogramm-Nummern (P) und Wiederholungen (L), um sofortige Steuerungsfehler auf Siemens- und Mitsubishi-Systemen zu vermeiden.
  • Strenge Verschachtelungsgrenzen verwalten: Überwachen Sie die Verschachtelungstiefen genau und halten Sie die Aufrufe innerhalb der Grenze von 5 Ebenen bei Fanuc und 4 Ebenen bei Mitsubishi, um Überlaufalarme zu vermeiden.
  • Speicherorte fest verankern: Registrieren Sie Unterprogrammdateien in den präzisen Festplatten- oder Speichergerätepfaden, die durch Parameter wie den Mitsubishi-Parameter #11053 UserProgramStorage deklariert sind.
  • Aufrufblöcke isolieren: Programmieren Sie nur einen Makroaufruf oder festen Zyklus pro NC-Satz, um Konflikte durch doppelte Wortzuweisungen und Programmstillstände zu verhindern.

Grundlegende Konzepte

Benutzerdefinierte Makrobefehle wie G65, G66 und G66.1 bieten Programmierern den praktischen Programmiereffekt, Variablenargumente direkt in Unterprogramme zu übertragen, was eine hochdynamische Werkstückprogrammierung und die Erstellung wiederkehrender Zyklen ermöglicht. Eine häufige Fehlerursache tritt auf, wenn Programmierer versehentlich reservierte Adressen verwenden – wie den Versuch, die Adresse G während eines standardmäßigen G65-Aufrufs als Argument zu übergeben –, was sofort einen PS0129-Alarmcode auslöst und den Betrieb stoppt. Programmierer und Bediener müssen den aktiven modalen Zustand bei der Verwendung von G66 (das das Makro nach jeder Achsbewegung ausführt) oder G66.1 (das für jeden Block ausgeführt wird) sorgfältig überwachen. Wenn ein Bediener vergisst, ein G67 zum Abwählen des modalen Aufrufs zu programmieren, bevor er zu einer neuen Werkzeugbahn oder einem Werkzeugwechsel übergeht, führt die CNC das Makro unerwartet weiter aus. Während sich die bereitgestellten Handbücher stark auf Syntaxfehler konzentrieren, anstatt mechanische Zerstörungen im Detail zu beschreiben, ein nicht abgewähltes modales Makro könnte leicht unkontrollierte, sich summierende Sekundärbewegungen befehlen, die das Werkzeug außerhalb der Grenzen in eine Schraubstockbacke (vise jaw), ein Spannfutter (chuck), eine Spannpratze (clamp) oder einen Revolver (turret) treiben, was letztendlich eine harte Kollision verursacht oder zu Ausschuss führt.

Die sichere Verwendung erfordert eine strenge Kontrolle darüber, wie diese Makros während der Testläufe ausgeführt werden. Durch die Nutzung von Parameter 6000#5 (SBM) können Bediener explizit festlegen, ob ein Einzelsatz-Stopp innerhalb der benutzerdefinierten Makroanweisung gültig oder ungültig ist. Dies verhindert physisch, dass die Maschine während der Erstmusterprüfung unkontrolliert komplexe logische Schleifen durchläuft. Die Architektur von Fanuc weist hochgradig eigenständige Verhaltensweisen in ihrer Makroaufruf-Verwaltung auf. Erstens teilt Fanuc seine modale Makrofunktionalität explizit in zwei unterschiedliche Verhaltensweisen auf: G66 verzögert die Makroausführung mathematisch, bis ein Achsbewegungsblock abgeschlossen ist (ideal für benutzerdefinierte Bohrbilder), während G66.1 das Makro bedingungslos für jeden einzelnen NC-Satz unabhängig von einer Bewegung ausführt. Zweitens integriert Fanuc eine strenge Hierarchie zur Parameter-Aliaszuweisung (wie die Parameter 6050 bis 6059), die es Maschinenherstellern ermöglicht, Standard-G-Codes oder M-Codes direkt auf Makroprograms der 9000er-Serie abzubilden, effektiv die komplexe G65-Syntax vor dem Bediener zu verbergen. Schließlich trennt Fanuc seine mathematischen Verschachtelungsgrenzen streng und erzwingt eine maximale Verschachtelungstiefe von fünf Ebenen speziell für Makroaufrufe, die völlig unabhängig von der 15-stufigen Unterprogramm-Verschachtelungsgrenze funktioniert.

Der praktische Programmiereffekt der Nutzung von G65 and G66 ist die Fähigkeit, sofort benutzerdefinierte Logik auszuführen, während Variablen dynamisch in den Hintergrundspeicher der Steuerung übertragen werden, ohne das Kernunterprogramm zu modifizieren. Während G65 das Makro genau einmal ausführt, müssen Programmierer und Bediener den Systemzustand intensiv überwachen, wenn G66 aktiv ist. Da ein modales Makro implizit nach jedem einzelnen Verfahrblock ausgeführt wird, kann jeder unüberwachte aktive Zustand bei Übergangsbewegungen katastrophale Folgen haben. Vergisst ein Bediener beispielsweise, G67 zu befehlen, und führt eine schnelle Werkzeugwechselbewegung aus oder positioniert die Achsen in der Nähe einer starren peripheren Haltevorrichtung, stürzt die Steuerung automatisch an der falschen Stelle in die Makro-Bearbeitungslogik. Diese unbefohlene Ausführung kann das Werkzeug direkt in eine gehärtete Schraubstockbacke, ein geschlossenes Spannfutter oder einen Revolver treiben, was zu einer katastrophalen harten Kollision führt oder durch unbeabsichtigte Überbearbeitung Ausschuss erzeugt. Um eine sichere Verwendung zu gewährleisten, müssen Bediener sicherstellen, dass der Koordinatenraum frei ist, überprüfen, ob mechanische Haltevorrichtungen wie eine Spannpratze ordnungsgemäß geschlossen sind, und modale Makros immer systematisch in separaten Programmsätzen isolieren, um eine unkontrollierte Ausführung zu verhindern. Ein Versäumnis, diese Zustände zu verwalten, führt unweigerlich zu schweren Koordinatenverletzungen und löst einen Alarmcode aus, der den Kanal vollständig blockiert.

Befehlsstruktur

Die Struktur eines Makroaufrufs besteht aus dem aufrufenden G-Code, der Ziel-Unterprogrammnummer, der Anzahl der Wiederholungen und der Argumentliste. Die Argumentliste weist den entsprechenden Variablen im Unterprogramm direkt numerische Werte zu, wodurch ein einzelnes Programm mehrere Aufgaben basierend auf den Eingabemaßen ausführen kann.

Je nach CNC-Systemtyp werden die Variablen entweder auf nummerierte lokale Variablen oder auf benannte Systemvariablen abgebildet. Die Aufrufsyntax ist über die wichtigsten Industrieplattformen hinweg einheitlich, obwohl jede Marke einzigartige Parametererweiterungen und Grenzen für die Variablenzuordnung unterstützt.

[Fanuc & Mitsubishi Syntax]
G65 P_ L_ [Variable Arguments] ;
G66 P_ L_ [Variable Arguments] ;
G66.1 P_ L_ [Variable Arguments] ;
G67 ;

[Siemens Syntax] G65 P... L... [Parameters] G66 P... L... [Parameters] G67

AdresseBeschreibungFormatHinweise
PAufgerufene Unterprogrammnummer oder DateinameGanzzahl oder in Klammern gesetzte ZeichenfolgeStrikte Ganzzahl bei Fanuc/Siemens; Mitsubishi unterstützt <Dateiname> mit bis zu 32 Zeichen
LWiederholungszähler (Anzahl der Durchläufe)GanzzahlStandardmäßig L1, wenn weggelassen. Siemens und Mitsubishi lehnen Dezimalformate strikt ab.
ArgumentsDynamische Variablen, die an das Makro übergeben werdenBuchstaben A-Z (außer P, L, O, N)Zugeordnet zu lokalen Variablen (#1-#33) bei Fanuc/Mitsubishi oder Variablen $C_A-$C_Z bei Siemens

Markenanwendungen

Fanuc

In Fanuc-Systemen wird das Verhalten von benutzerdefinierten Makroaufrufen maßgeblich durch Systemvariablen und Konfigurationsparameter gesteuert. Programmierer verwenden die Parameter 6000 und 6007, um die Makrosteuerung anzupassen.

Standardmäßige Syntaxkonfigurationen nutzen G65 für einfache Aufrufe, G66 für bewegungsgesteuerte modale Aufrufe und G66.1 für eine modale Ausführung Satz für Satz, wobei G67 den Löschmechanismus bereitstellt.

Parameter / VariableEinstellungsverhaltenZugehöriger Alarm / Version
Parameter Nr. 6000 (Bit 0)0 (Löst Alarm PS1100 bei redundantem G67 aus); 1 (Ignoriert redundantes G67)PS1100 Abwählen ohne modalen Aufruf
Parameter Nr. 6000 (Bit 5)0 (Einzelsatz-Stopp im Makro deaktiviert); 1 (Einzelsatz-Stopp im Makro gültig)SBM-Steuerung
Parameter Nr. 6007 (Bit 3)0 (Benutzerdefinierter G-Code-Aufruf verhält sich wie G66.1); 1 (Verhält sich wie G66)MGE-Steuerung
Parameter Nr. 6007 (Bit 4)0 (Argumentübergabe im Standard-NC-Format); 1 (Konvertierung in Makroformat)CVA-Steuerung

Warnung: Das Belassen eines aktiven modalen Makros bei der Ausführung von manuellen Werkzeugwechseln oder Eilgängen löst unbeabsichtigte Makroschleifen aus und führt zu harten Kollisionen mit dem Revolver oder Spannfutter.

Siemens

Siemens-Steuerungen erreichen eine hochgradig flexible Integration, indem sie Standard-ISO-Dialektaufrufe auf native Sinumerik-Variablen abbilden. Die Steuerung erweitert Programmnamen mithilfe der Variable $MC_EXTERN_FUNCTION_MASK.

Die Syntaxausführung nutzt G65 für nicht-modale Operationen, G66 für modale Makroaufrufe und G67 zum Löschen aktiver modaler Makrowahlen.

Parameter / VariableEinstellungsverhaltenZugehöriger Alarm / Version
$C_A bis $C_ZÜbergabeparameter, die von den Adressen A-Z (außer P, L, O, N) zugeordnet werdenSystemvariablen
$C_I[], $C_J[], $C_K[]Chronologische Sequenz-Arrays zur Speicherung mehrerer I-, J-, K-ParameterdurchläufeReihenfolgenverfolgung in $C_I_ORDER
$MC_EXTERN_FUNCTION_MASK (Bit 6)0 (Füllt P auf 4 Stellen auf, >4 Stellen meldet Alarm); 1 (Keine Nullstellenauffüllung, bis zu 8 Stellen)Alarm 12720

Warnung: Ein Verstoß gegen das strikte Ganzzahlformat für die Programmnummer P oder das Schleifenlimit L führt zu sofortigen Satzausführungsfehlern und blockiert den Kanal.

Mitsubishi

Mitsubishi-CNC-Plattformen integrieren eine parametergesteuerte Aliaszuweisung, um Unterprogramme benutzerdefinierten Codes zuzuordnen. Bediener konfigurieren Parameter #1241 und Parameter #11053, um die Argumentzuordnung und Programmspeicherung zu steuern.

Die Plattform unterstützt G65 für einfache Aufrufe, G66 für modale Aufrufe A, G66.1 für modale Aufrufe B und G67 zum Abwählen aktiver modaler Zustände.

Parameter / VariableEinstellungsverhaltenZugehöriger Alarm / Version
Parameter #1241 set13/bit50 (L und P ungültig als Variablenargumente); 1 (L und P gleichzeitig als Variablenargumente gültig)Einstellung der Gültigkeit von Makroargumenten
Parameter #11053Definiert das Suchgerät und den Verzeichnispfad für das aufgerufene MakroprogrammP232 Programmfehler, wenn anderswo gespeichert
Parameter #7202 G[10] Type0 (Äquivalent zu M98); 1 (Äquivalent zu G65); 2 (G66); 3 (G66.1)Ausführungstyp für benutzerdefinierten G-Code
Parameter #1081 Gmac_P0 (Standard-G-Code-Verhalten); 1 (Aktives Aliasing-Makro für System-G-Code)Aktivierung der G-Code-Aliaszuweisung

Warnung: Die Aktivierung eines Benutzermakroaufrufs in Verbindung mit hochgenauen Hochgeschwindigkeits-Steuerungsmodi löst sofortige Programmfehler aus.

Markenvergleich

FunktionsvergleichFanucSiemensMitsubishi
Makro-VerschachtelungstiefeStreng limitiert auf 5 Ebenen.— (keine Quelle)Bis zu 4 Ebenen.
Unterprogramm-VerschachtelungstiefeBis zu 15 Ebenen tief über M98.— (keine Quelle)Bis zu 27 Ebenen tief über M98/M99.
Dateinamensgebung mit Strings— (keine Quelle) (nur numerische Programme)— (keine Quelle)Unterstützt. Kann einen Dateinamen mit bis zu 32 Zeichen in eckige Klammern setzen wie <Dateiname>.
Modale AufruftypenUnterstützt G66 (Bewegungsauslöser) und G66.1 (Ausführung Satz für Satz).Unterstützt G66 (Achsenverfahrbewegungsauslöser).Unterstützt G66 (Modaler Aufruf A, Bewegungsauslöser) und G66.1 (Modaler Aufruf B, Ausführung Satz für Satz).
Parameter-ArrayübergabeStandard-Adresszuordnung zu lokalen Variablen #1-#33. Adresse G ist verboten.Zuordnung zu Variablen $C_A-$C_Z. Unterstützt bis zu 10 Instanzen von I, J, K über Array-Sequenzzuordnung.Standardzuweisung. Unterstützt die gleichzeitige Verwendung von L und P als Variablen, wenn Parameter #1241 set13/bit5 = 1.

Technische Analyse

Die wesentlichen Unterschiede zwischen den Makroarchitekturen von Fanuc, Siemens und Mitsubishi liegen in der Verwaltung von Systemvariablen, der Speicherbelegung und den Syntaxgrenzen. Fanuc erzwingt ein hochgradig strukturiertes, starres Adresszuordnungssystem, bei dem Buchstaben fest mit bestimmten nummerierten lokalen Variablen verknüpft sind und die Verschachtelung strikt auf fünf Ebenen begrenzt ist. Das System trennt die modale Ausführung klar zwischen G66 und G66.1, wodurch Überschneidungen zwischen bewegungsbasierten und blockbasierten Aufrufen verhindert werden, und verlässt sich auf strenge Parameterzuordnungen wie 6050–6059 für benutzerdefiniertes Aliasing.

Siemens unterscheidet seine Makroarchitektur von anderen Steuerungsmarken durch drei hochentwickelte Verhaltensstrukturen. Erstens bietet Siemens eine beispiellose plattformübergreifende Interoperabilität: Ein über ein ISO-konformes G65 aufgerufenes Makro füllt nahtlos und automatisch native Siemens-Systemvariablen (like $C_X or $C_A). Dies bedeutet, dass das im Hintergrund laufende Unterprogramm vollständig in der leistungsstarken nativen G290-Siemens-Sprache geschrieben sein kann, während das Hauptprogramm zu 100 % kompatibel mit älteren ISO-Dialekt-Teileprogrammen bleibt. Zweitens bettet Siemens unglaublich tiefe, arraybasierte Parameterübergabefunktionen direkt in die Standard-NC-Satzzeichenfolge ein. Im Gegensatz zu anderen Steuerungen, die doppelte Parameter überschreiben, ermöglicht Siemens Programmierern, bis zu zehn separate I-, J- und K-Werte in einem einzigen G65-Satz zu übergeben. Diese werden nativ in chronologischen Arrays (z. B. $C_I bis $C_I[12]) organisiert und ihre genaue Programmierreihenfolge wird über $C_I_ORDER erfasst. Dies ermöglicht die Übergabe hochkomplexer geometrischer Muster ohne benutzerdefinierte Variablentabellen. Schließlich ermöglicht Siemens dem Maschinenhersteller, die Verarbeitung von Makro-Programmnummern über Maschinendaten-Bitmasken tiefgehend zu steuern. Dies gewährt die einzigartige Flexibilität, entweder klassische 4-stellige, mit Nullen aufgefüllte Programmgrenzen strikt durchzusetzen oder die Interpretation der P-Adresse zu erweitern, um moderne 8-stellige Programmnamen ohne Syntaxfehler zu verarbeiten.

Mitsubishi zeichnet sich in seiner Makroarchitektur durch drei eigenständige, hochflexible Verhaltensweisen aus. Erstens integriert Mitsubishi eine einzigartige G66.1-Funktion „Makro-Modaler Aufruf B“, die das Makro bedingungslos für jeden einzelnen NC-Satz aufruft (wobei alle Satzdaten außer O-, N- und G-Codes als Argumente übergeben werden), anstatt die Ausführung nur nach Achsbewegungssätzen wie beim Standardbefehl G66 zu triggern. Zweitens unterstützt die Mitsubishi-Plattform nativ alphanumerische String-Ziele direkt im G-Code-Block. Programmierer können ein Makro aufrufen, indem sie einen spezifischen <Dateiname> von bis zu 32 Zeichen in spitzen Klammern angeben, anstatt starr auf traditionelle numerische P-Adressen beschränkt zu sein. Schließlich integriert Mitsubishi ein umfangreiches parametergesteuertes Aliasing-System, mit dem Anwender bis zu 538 benutzerdefinierte oder System-G-Codes direkt auf G65-, G66- oder G66.1-Makroaufrufe abbilden können. Unter Verwendung von Parametern wie #7202 G[10] Type ermöglicht dies den Maschinenherstellern, proprietäre Zykluslogik dauerhaft in die Basisarchitektur der Maschine einzubetten, ohne dass Bediener komplexe Variablenketten auswendig lernen müssen.

Programmbeispiele

Fanuc-Beispiel: Taschenfräszyklus

%
O0001 (MAIN PROGRAM - POCKETING SETUP) ;
G90 G54 G00 X0 Y0 Z10. ;
G65 P9010 L1 X100.0 Y80.0 Z-5.0 F300 ; ; Einfacher Aufruf des Taschenfräszyklus mit Maßen
G00 Z100. M30 ;
%
%
O9010 (TASCHENFRÄSZYKLUS - UNTERPROGRAMM) ;
#10 = #24 / 2.0 (X-HALBBREITE) ;
#11 = #25 / 2.0 (Y-HALBBREITE) ;
G01 Z#26 F#9 ;                         ; Eintauchen auf Zieltiefe Z
G01 X#10 F#9 ;                         ; Entlang X-Halbbreite fräsen
Y#11 ;                                 ; Entlang Y-Halbbreite fräsen
X-#10 ;                                ; Negatives X fräsen
Y-#11 ;                                ; Negatives Y fräsen
X0 Y0 ;                                ; Zurück zur Mitte
M99 ;                                  ; Zurück zum Hauptprogramm
%

Trockenlauf (dry run): Der Bediener führt den Satz G65 aus. Die Steuerung liest das Programm O9010 und ordnet die Adresse X (100.0) der Variable #24, Y (80.0) der Variable #25, Z (-5.0) der Variable #26 und F (300) der Variable #9 zu. Das Werkzeug taucht mit einer Vorschubgeschwindigkeit von 300 auf Z-5.0 ein. Anschließend berechnet es die Halbbreiten #10 (50.0) und #11 (40.0) und führt nacheinander eine rechteckige Taschenbahn aus. Beim Satz M99 wird das Unterprogramm beendet und die Bahnsteuerung direkt an den Satz G00 im Hauptprogramm O0001 zurückgegeben.

Siemens-Beispiel: Helixbohrungs-Array

; HAUPTPROGRAMM - KREISBEWEGUNG
G90 G54 G00 X0 Y0 Z50.0
G66 P1234 A10.0 C45.0 X100.0 Z-10.0    ; Modaler Aufruf wird nach Verfahrbewegungen ausgeführt
X50.0 Y50.0                            ; Verfahrblock triggert Unterprogramm 1234
X150.0 Y100.0                          ; Zweiter Verfahrblock triggert Unterprogramm 1234
G67                                    ; Aktiven modalen Makroaufruf abwählen
G00 Z100.0 M30
%
; UNTERPROGRAMM 1234 - BOHRHELIX
G01 Z$C_Z F250                         ; Eintauchen auf Z-Tiefe, übergeben von Adresse Z
G03 I$C_A U$C_C                        ; Kreisförmiges schraubenförmiges Einfahren mit den Parametern A und C
G01 Z5.0
M99
%

Trockenlauf: Die Steuerung verarbeitet G66 und lädt das Unterprogramm 1234 mit den Argumenten A=10.0, C=45.0, X=100.0 und Z=-10.0. Die Achse verfährt nach X50.0 Y50.0. Beim Erreichen dieser Koordinate löst der modale Trigger aus und führt das Unterprogramm 1234 aus. Das Werkzeug taucht auf Z-10.0 ($C_Z) ein und führt das schraubenförmige Einfahren unter Verwendung der Argumente $C_A und $C_C aus. Nach M99 verfährt das Werkzeug nach X150.0 Y100.0, was das Unterprogramm 1234 sofort an der neuen Position erneut triggert. Der Satz G67 wird ausgeführt und wählt den modalen Zustand vor dem Werkzeugrückzug ab.

Mitsubishi-Beispiel: Benutzerdefinierter Messzyklus

; HAUPTPROGRAMM - ZIELDATEINAME
G90 G54 G00 X0 Y0 Z25.
G65 <PROBE_X> L1 X150. Y100. S2. ;     ; Makro über Dateinamen mit Zielvariablen aufrufen
G00 Z100. M30
%
; DATEINAME: PROBE_X
(UNTERPROGRAMM FÜR SEITENMESSUNG)
G01 X#24 F150 ;
IF [#19 EQ 2.] GOTO 10 ;
#30 = #5021 ;
GOTO 20 ;
N10 #30 = #5022 ;
N20 G00 X0 ;
M99 ;
%

Trockenlauf: Der Bediener initiiert G65 mit dem alphanumerischen Ziel <PROBE_X>. Die Steuerung durchsucht den im Parameter #11053 UserProgramStorage festgelegten Datenträger, lädt die Datei PROBE_X und weist X (150.0) der Variable #24, Y (100.0) der Variable #25 und S (2.0) der Variable #19 zu. Der Taster bewegt sich mit einem Vorschub von 150 auf X150.0. Da die Variable #19 gleich 2.0 ist, springt die Logik zu N10 und erfasst das Koordinatenregister #5022 in #30. Der Taster fährt auf X0 zurück und kehrt über M99 in das Hauptprogramm zurück.

Fehleranalyse

Steuerung & AlarmAuslösebedingungBediener-SymptomUrsache / Behebung
Fanuc - PS1100G67-Abwahlbefehl wird ausgeführt, wenn kein modaler Zustand G66 aktiv ist.Das Programm stoppt sofort mit einer roten Statusanzeige auf dem Bedienpult.Parameter 6000#0 ist auf 0 eingestellt. Korrigieren Sie das Programm, um redundantes G67 zu entfernen, oder stellen Sie Parameter 6000#0 auf 1 ein.
Fanuc - PS0129Die Adresse 'G' ist in der G65- oder G66-Argumentzuordnungsliste enthalten.Sofortiger Satzstopp durch Syntaxalarm beim Einlesen des Aufrufs.Die Adresse G ist reserviert. Wechseln Sie den Argumentcode von G zu einem anderen Variablenbuchstaben (A-Z außer P, L, O, N) oder verwenden Sie G66.1.
Siemens - Alarm 12720G65 oder G66 ist programmiert, ohne eine Unterprogrammnummer über die Adresse P zu definieren.Die Maschine stoppt und zeigt einen Zyklusausführungsalarm auf dem Bildschirm an.Fehlende Ziel-Unterprogrammnummer. Fügen Sie im Makroaufruf eine gültige Unterprogrammnummer über die Adresse P hinzu.
Siemens - Alarm 12722G65/G66 im selben Block wie ein fester Zyklus (G81-G89) oder ein anderes Makro programmiert.Die CNC lehnt das Einlesen des Satzes ab und friert die Kanalbewegung ein.Satzkonflikt. Trennen Sie den Makroaufruf und den festen Zyklus oder Folgebefehl in separate aufeinanderfolgende Sätze.
Mitsubishi - P276Ein G67-Makroabwahlbefehl wird ausgegeben, während sich die CNC nicht in einem aktiven G66/G66.1 modalen Aufrufzustand befindet.Die NC-Zyklen stoppen und melden einen Programmausführungsfehler.Ungültige Abwahlreihenfolge. Programmieren Sie G67 nur nach aktiven modalen Makroroutinen.
Mitsubishi - P232Das zugewiesene Makro-Unterprogramm ist auf einem nicht autorisierten Speichergerät registriert.Die Steuerung meldet eine fehlende Datei und stoppt mitten im Zyklus.Pfadabweichung. Verschieben Sie die Unterprogrammdatei auf das Gerät, das mit dem Parameter #11053 UserProgramStorage übereinstimmt.

Anwendungshinweis

Eine plötzliche Betriebsunterbrechung mitten im Zerspanungszyklus und massiver Ausschuss durch unvollständige Bearbeitung sind die unmittelbare Folge, wenn Bediener auf einer Mitsubishi M80V TypeB-Steuerung versuchen, einen einfachen Makroaufruf (G65) zeitgleich mit der Hochgeschwindigkeits-Hochpräzisionssteuerung I (G05.1 Q1) auszuführen, was unverzüglich den folgenschweren Programmfehler P34 auslöst. Da solche hochpräzisen Bahnsteuerungen eine extrem schnelle Satzverarbeitung erfordern, vertragen sie sich nicht mit der dynamischen Hintergrundberechnung komplexer Anwender-Makros. Zur Sicherung engster Bauteiltoleranzen muss das Makro zwingend vor Aktivierung solcher Hochgeschwindigkeitsmodi vollständig abgearbeitet und über G67 beendet sein. Korrekte Konfiguration eliminiert die häufigste Ursache für Maßabweichungen bei diesem Befehl. Wird dieser Parameter nicht verifiziert, liegt das Ergebnis außerhalb der Toleranz — und der Fehler zeigt sich erst bei der Endmessung, da Achsversätze oder unvollständige Fräsbahnen unentdeckt bleiben.

Zur Erreichung maximaler Prozesssicherheit müssen Techniker zudem sicherstellen, dass die Unterprogramme exakt auf dem im Mitsubishi-Parameter #11053 UserProgramStorage deklarierten Speicherpfad registriert sind, da sonst der Alarm P232 den Automatikbetrieb lähmt. Bei Fanuc-Steuerungen wiederum verhindert die bewusste Validierung von Parameter 6000#5 (SBM), dass die Maschine bei Erstmusterprüfungen im Trockenlauf ungeprüft durch komplexe Logikblöcke rast, indem sie den Einzelsatz-Stopp innerhalb der Makrosätze aktiviert. Auf Siemens-Plattformen hingegen steuert der Maschinendaten-Bitmasken-Parameter $MC_EXTERN_FUNCTION_MASK (Bit 6) die Expansion von Programmnummern über die P-Adresse, um Kollisionen durch falsche Programmzuweisungen zu unterbinden. Nur die konsequente, parameterbasierte Absicherung schützt vor unkontrolliertem Verzug und kostspieligen Kollisionen mit Schraubstockbacke, Spannfutter oder Revolver.

Verwandte Befehle

  • M98 / M99 Unterprogrammaufruf: Führt Unterprogramme ohne Variablenübertragung aus und ermöglicht eine Verschachtelung von bis zu 15 Ebenen bei Fanuc und 27 Ebenen bei Mitsubishi.
  • G60 Genauhalt / Konturbahn: Häufig mit benutzerdefinierten Makroroutinen kombiniert, um eine vollständige Achsverzögerung zwischen den Koordinatenschritten zu erzwingen und Eckenverrundungen bei Makroschleifen mit hohem Vorschub zu verhindern. Dies wird ausführlich im Leitfaden G60 Genauhalt / Konturbahn beschrieben.
  • G62 / G63 Eckenverzögerung / Gewindebohren: Verhindert Vorschubverzögerungen oder Eckenabsplitterungen in kritischen Makro-Taschenfräs- und Gewindebohrunterprogrammen, wie unter G62/G63 Eckenverzögerung / Gewindebohren erläutert.
  • G50 / G92 Koordinatensystem-Einstellung: Richtet globale Arbeitskoordinaten ein, um sicherzustellen, dass sich variable Makro-Offsets perfekt an den physischen Werkstückreferenzen ausrichten, wie in G50 und G92 Koordinatensystem-Einstellung behandelt.

Fazit

Die prozesssichere Implementierung von G65-, G66- und G67-Makroaufrufen bildet das Fundament für hochpräzise, automatisierte Fertigungsabläufe auf modernen CNC-Fräszentren und Drehmaschinen. Um teure Zerstörungen an Werkzeugen und Vorrichtungen zuverlässig auszuschließen, sollte die systematische Abwahl modalem Aufrufs über G67 als feste Programmierrichtlinie vor jedem Werkzeugwechsel etabliert werden. Korrekte Konfiguration eliminiert die häufigste Ursache für Maßabweichungen bei diesem Befehl. Wird dieser Parameter nicht verifiziert, liegt das Ergebnis außerhalb der Toleranz — und der Fehler zeigt sich erst bei der Endmessung, was das Bauteil als unbrauchbaren Ausschuss disqualifiziert. Führen Sie vor dem ersten Span zwingend einen Trockenlauf mit Einzelsatz-Prüfung (SBM-Aktivierung über Parameter 6000#5 bei Fanuc) durch, um das Zusammenspiel der Variablenübertragung und die Nesting-Tiefen prozesssicher zu verifizieren. Diese bewusste Qualitätsroutine sichert die Wiederholgenauigkeit der Werkstücke und garantiert langfristig höchste Produktivität.

Häufig gestellte Fragen (FAQ)

Wie lässt sich eine Toleranzüberschreitung an Ecken verhindern, wenn modale G66-Makros mit hohem Vorschub ausgeführt werden?

Da ein modales G66-Makro nach jeder Achsbewegung ausgeführt wird, erzeugen Verzögerungsrampen an den Satzgrenzen leichte Verweilzeiten, was bei hohem Vorschub zu Rattermarken führt und Konturabweichungen verursacht. Wird dieser Parameter nicht verifiziert, liegt das Ergebnis außerhalb der Toleranz — und der Fehler zeigt sich erst bei der Endmessung durch ungenaue Bauteilmaße. Aktion: Nutzen Sie zur Prozesssicherheit an kritischen Außenkanten nicht-modale G65-Befehle oder aktivieren Sie bei Fanuc das CVA-Flag (Parameter 6007#4), um sicherzustellen, dass Vorschübe exakt im Makroformat übergeben und nicht durch Standardsätze gedämpft werden.

Warum führt eine falsche Speicherpfad-Konfiguration des Makros zu Maßabweichungen und wie behebt man den Fehler?

Wenn das Unterprogramm über G65 aufgerufen wird, aber auf einem falschen Speichermedium hinterlegt ist, kann es vorkommen, dass die Steuerung ein veraltetes Programm mit abweichenden Variablenwerten lädt. Korrekte Konfiguration eliminiert die häufigste Ursache für Maßabweichungen bei diesem Befehl. Wird dieser Parameter nicht verifiziert, liegt das Ergebnis außerhalb der Toleranz — und der Fehler zeigt sich erst bei der Endmessung als irreparabler Ausschuss. Aktion: Überprüfen Sie bei Mitsubishi-Steuerungen den Parameter #11053 UserProgramStorage und vergleichen Sie den darin deklarierten Pfad explizit mit dem tatsächlichen Speicherort auf der Festplatte des Anzeigegeräts, bevor Sie den Automatiklauf starten.

Wie lässt sich die Verschachtelungstiefe von Makros überwachen, um plötzliche Programmstopps und Ausschuss zu verhindern?

Sowohl Fanuc (max. 5 Ebenen) als auch Mitsubishi (max. 4 Ebenen) besitzen enge physikalische Grenzen für die Verschachtelung von Makros. Ein Überschreiten dieser Limits stoppt die Maschine abrupt mitten im Fräspfad, was thermische Brandflecken erzeugt und das Werkstück ruiniert. Wird dieser Parameter nicht verifiziert, liegt das Ergebnis außerhalb der Toleranz — und der Fehler zeigt sich erst bei der Endmessung. Aktion: Verwenden Sie für rein geometrische Verzweigungen ohne Variablenübergabe konsequent M98-Unterprogrammaufrufe, da diese mit bis zu 15 (Fanuc) bzw. 27 (Mitsubishi) Ebenen eine deutlich höhere Prozesssicherheit bieten.

Immer noch nicht gelöst?

Frage unseren KI-Assistenten zu diesem Thema in natürlicher Sprache. Basierend auf verifizierten Quellen, keine Halluzinationen.

KI-Assistent fragen
Hakan Gündoğdu
Hakan Gündoğdu
  • CNC CARE Co-Founder (May 2025 - Present)
  • Mitsubishi Electric NC Sales & Service Section Manager (2008 - 2025)
  • Reis CNC Service Engineer (2003 - 2005)
  • Ören Kalıp CNC Mold Line Team Leader (1999 - 2002)

Mit über 25 Jahren Erfahrung in allen Bereichen der CNC-Maschinenbranche bin ich weiterhin als Mitgründer von CNC CARE tätig, wo wir markenunabhängige Beratung, Engineering und Original-Ersatzteil-Services anbieten.

Ähnliche Artikel

Weitere Artikel zu diesem Thema