Skip to main content
CNC.wikiCNC.wiki

M00, M01, M02, M30: Programmhalt und Programmende im CNC-Leitfaden

Sicherer Einsatz von M00, M01, M02 und M30 auf Fanuc, Siemens und Mitsubishi. Vermeiden Sie Toleranzüberschreitung, Kollisionen und P36 oder 16954 Alarme.

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

CNC CARE Mitgründer

Einleitung

Ein massiver Werkzeugbruch an einer Schraubstockbacke (vise jaw) oder einem stationären Spannmittel (clamp) ist oft die direkte Folge eines einzigen nicht aktivierten Schalters am CNC-Bedienpult. Wenn der Bediener den physischen Schalter für den optionalen Halt (Optional Stop) an der Steuerungsfront übersieht, wird ein im Programmcode hinterlegter M01-Befehl vom Interpreter komplett ignoriert. Die Maschine verfährt im Eilgang direkt zur nächsten Operation und rammt das Werkzeug in ein unvollständig ausgerichtetes Werkstück. Binnen Sekunden führt dies zu einer verheerenden Kollision, einer verbogenen Revolverachse (turret axis) und irreparablem Ausschuss. Wird dieser Parameter nicht verifiziert, liegt das Ergebnis außerhalb der Toleranz — und der Fehler zeigt sich erst bei der Endmessung. Die sichere Steuerung der Zykluszeiten und des Programmendes mittels M00 (Programmhalt), M01 (Optionaler Halt), M02 (Programmende) und M30 (Programmende mit Rücklauf) ist daher keineswegs nur eine Frage der Syntax, sondern eine fundamentale Sicherheitsbarriere. Sie regelt den Hardware-Handshake zwischen dem CNC-Interpolator und der speicherprogrammierbaren Steuerung (PLC). Um zu verstehen, wie dies mit Koordinatenpositionierungen harmoniert, empfiehlt sich ein Blick in den Leitfaden zu den G94 und G95 Vorschubmodi.

Technische Übersicht

Technische SpezifikationDetails
BefehlscodesM00, M01, M02, M30
Modale GruppeNon-modal (nur in dem Block aktiv, in dem sie programmiert sind)
Unterstützte MarkenFanuc, Siemens, Mitsubishi
Kritische ParameterFanuc Parameter 3404 (Rücklaufverhalten), Siemens MD 22254 / MD 22256 (Benutzerdefinierte M-Codes für Halt), Mitsubishi Parameter #12005 (Maximale Anzahl M-Codes pro Block)
Main ConstraintPeripheriestopps (Spindel, Kühlmittel) werden durch die spezifische PLC-Steuerung des Maschinenherstellers geregelt, nicht durch die CNC-Basisspezifikation; darf nicht innerhalb von Siemens Stopp-Verzögerungsbereichen programmiert werden (Alarm 16954).

Schnellleser

  • HMI-Panel-Status verifizieren: Kontrollieren Sie stets, ob der Schalter für den optionalen Halt (Optional Stop) am HMI aktiv ist, bevor Sie Programme starten, die M01 für Zwischenmessungen nutzen.
  • Endbefehle isolieren: Programmieren Sie M02 und M30 in einem eigenen, dedizierten Block, um Hardware-Handshake-Fehler der PLC mit Peripheriegeräten wie Stangenladern oder Werkstückzählern zu vermeiden.
  • Stopp-Verzögerungsbereiche meiden: Platzieren Sie M00 oder M01 niemals während eines aktiven Gewindeschneid- oder Synchron-Gewindebohrzyklus, um Synchronisationsverluste und den Siemens-Alarm 16954 zu verhindern.
  • Parameter 3404 prüfen: Konfigurieren Sie den Fanuc-Parameter 3404 (Bit 4 für M30, Bit 5 für M02), um festzulegen, ob das Programm automatisch zum Anfang zurückspringt oder auf ein externes Signal wartet.
  • Handshakesignale abgleichen: Stellen Sie sicher, dass die Mitsubishi-PLC so programmiert is, dass sie bei M02 und M30 ein Reset- und Rewind-Signal (RRW) anstelle eines Standard-FIN1/FIN2-Signals zurückgibt, da sonst der Alarm P36 ausgelöst wird.
  • Look-Ahead-Puffer beachten: Beachten Sie, dass M00, M01, M02 und M30 den Look-Ahead-Puffer (Vorauslesepuffer) auf Fanuc, Siemens und Mitsubishi blockieren, um eine vorzeitige Ausführung nachfolgender Blöcke zu verhindern.

Grundlegende Konzepte

Programmhalt- und Programmendebefehle sind die primären logischen Schnittstellen, die automatische CNC-Zyklen unterteilen, steuern und prozesssicher beenden. Im Gegensatz zu Verfahrbefehlen, die Achsmotoren oder Interpolationsbahnen steuern, kommunizieren M00, M01, M02 und M30 über Hardware-Handshake-Relais direkt mit der speicherprogrammierbaren Steuerung (PLC) der Maschine. Diese Befehle setzen eine starre Betriebsgrenze: Nachfolgende Koordinaten- oder Werkzeugbefehle können erst dann ausgeführt werden, wenn bestimmte Bedieneraktionen oder automatisierte Zyklen erfolgreich abgeschlossen wurden.

Die Haltebefehle M00 und M01 fungieren als Unterbrechung mitten im Zyklenverlauf. M00 steht für einen bedingungslosen Halt, der den CNC-Interpreter sofort stoppt, jegliche Achsbewegung einfriert und die Programmausführung pausiert. Diese Pause ist speziell für manuelle Bedienerprüfungen vorgesehen, wie etwa das Messen einer kritischen Toleranz mit dem Bügelmessschraube, das Entfernen von Spänen aus einer tiefen Nut oder das manuelle Wenden des Werkstücks. Im Gegensatz dazu ist M01 ein bedingter Halt, der das Programm nur dann pausiert, wenn der Bediener den physischen Schalter für den optionalen Halt (Optional Stop) auf der HMI-Konsole aktiviert hat. Ist dieser Schalter inaktiv, übergeht die Steuerung den M01-Befehl wie einen Kommentar und führt den nächsten Block ohne Verzögerung aus.

Die Programmendebefehle M02 und M30 markieren den physikalischen Abschluss des NC-Programms. Beide Befehle signalisieren der CNC-Steuerung und der PLC, dass alle Bearbeitungsschritte für das aktuelle Werkstück abgeschlossen sind. Dies veranlasst das System, die Spindel zu stoppen, die Hochdruck-Kühlmittelpumpen abzuschalten und interne Register zurückzusetzen. M30 weist die Steuerung zusätzlich an, das Programm auf den allerersten Block zurückzusetzen (Rewind), damit der Zyklenverlauf beim nächsten Betätigen der Taste "Cycle Start" sofort für das nächste Rohteil bereitsteht. Um zu verstehen, wie diese Abläufe mit den Zyklen-Rückzugsebenen harmonieren, konsultieren Sie den Leitfaden zu G98 und G99: Zyklen-Rückzugsebenen.

Befehlsstruktur

Die Programmierung der M-Hilfsfunktionen für Halt und Programmende ist denkbar einfach, erfordert jedoch eine strikte syntaktische Isolation, um eine fehlerfreie Ausführung der Hardwaresequenzen zu gewährleisten. Da Programmhalte und -enden kritische physische Aktionen wie Spindelrelais, Schutztürverriegelungen und Stangenlader-Handshakes auslösen, muss die Steuerung diese Befehle unter spezifischen Look-Ahead-Einschränkungen verarbeiten. Das fehlerhafte Schreiben dieser Befehle oder deren Kombination mit Verfahrbewegungen ist eine der Hauptursachen für Interpreterfehler.

Um maximale Zuverlässigkeit zu garantieren, sollten M00, M01, M02 und M30 in einem eigenen, separaten NC-Block programmiert werden. Zwar erlauben es die meisten Steuerungen, diese Codes an einen Verfahrblock anzuhängen, doch zwingt dies das System dazu, Bewegung und Stopp-Handshake gleichzeitig aufzulösen. Je nach Ausführung der PLC-Leiterdiagramme (PLC ladder logic) des Maschinenherstellers kann dies zu unvorhersehbarem Zeitverhalten führen. Zudem sind diese M-Codes als nicht-puffernd (non-buffering) klassifiziert. Das bedeutet, dass der Interpolator nachfolgende Blöcke erst einlesen oder vorbereiten darf, wenn die Ausführung des M-Codes vollständig abgeschlossen ist.

Programmiersyntax:

M00 ; Bedingungsloser Programmhalt
M01 ; Optionaler Programmhalt
M02 ; Programmende
M30 ; Programmende mit Rücklauf zum Programmanfang

Parameter & Systemparameter:

MarkeSystembezeichnerFunktionelle Einstellung
FanucParameter 3404 Bit 4 (M30)0: Automatischer Rücklauf zum Anfang; 1: Warten auf externes Reset- & Rücklaufsignal.
FanucParameter 3404 Bit 5 (M02)0: Automatischer Rücklauf zum Anfang; 1: Warten auf externes Reset- & Rücklaufsignal.
FanucParameter 3201 Bit 6 (NPE)0: Datenempfang bei M02, M30, M99 sofort beenden; 1: Endecodes ignorieren.
FanucParameter 3204 Bit 6 (MKP)0: Aktive MDI-Sequenz bei Ausführung von M02/M30 löschen; 1: MDI-Programm beibehalten.
SiemensMD22254 $MC_AUXFU_ASSOC_M0_VALUEDefiniert einen zusätzlichen, benutzerdefinierten M-Code für den bedingungslosen Programmhalt.
SiemensMD22256 $MC_AUXFU_ASSOC_M1_VALUEDefiniert einen zusätzlichen, benutzerdefinierten M-Code für den optionalen Programmhalt.
SiemensMD10714 $MN_M_NO_FCT_EOPDefiniert einen benutzerdefinierten M-Code (z. B. 32), um die Spindel nach Reset/Programmende aktiv zu halten.
Siemens$AC_ACTUAL_PARTSAktive Systemvariable des Werkstückzählers, die bei der Ausführung von M02/M30 automatisch hochgezählt wird.
Mitsubishi#12005 MfigBestimmt die maximale Anzahl an M-Codes, die in einem einzigen Block zulässig sind (Bereich 1 bis 4).
Mitsubishi#1278 ext14/bit10: Normales Warten auf PLC-Quittierungssignal; 1: High-Speed-Quittierungsmethode.
Mitsubishi#1405 M_mode(SMLK)Aktiviert oder deaktiviert die physische M-Code-Signalausgabe während einer schnellen Einfachprogrammprüfung.

Markenanwendungen

Fanuc

Fanuc-CNC-Systeme greifen auf dedizierte Parameter auf Hardwareebene zurück, um zu regeln, wie Programmhalte und -enden mit der aktiven Speicherregistrierung und dem externen Datentransfer interagieren. Parameter 3404 Bit 4 bestimmt das Rücklaufverhalten für M30, während Parameter 3404 Bit 5 das Rücklaufverhalten für M02 vorgibt. Die Einstellung dieser Bits entscheidet, ob die Steuerung den Speicherzeiger automatisch an den Anfang der Datei setzt oder wartet, bis externe Hardware-Relais ein manuelles Reset-Signal senden.

Auf Fanuc-Steuerungen werden M00, M01, M02 und M30 im Standardformat programmiert und müssen im Block isoliert werden, um die Look-Ahead-Sperrung zu gewährleisten. Bei Drehmaschinen müssen Bediener den Parameter NPE überwachen, um Datenverluste während der seriellen Datenübertragung zu verhindern.

SystemkategorieEinstellungs- / AlarmcodeBeschreibung und Hardwareverhalten
SystemparameterParameter 3404 Bit 4 (M30)Steuert das automatische Rücklaufverhalten bei der Ausführung von M30 im Speicher. Ein Wert von 0 führt einen automatischen Rücklauf zum Programmanfang aus; ein Wert von 1 wartet auf ein externes Reset- und Rücklaufsignal.
SystemparameterParameter 3404 Bit 5 (M02)Steuert das automatische Rücklaufverhalten bei der Ausführung von M02. Ein Wert von 0 führt einen automatischen Rücklauf aus; ein Wert von 1 wartet auf ein externes Reset- und Rücklaufsignal.
SystemparameterParameter 3201 Bit 6 (NPE)0: Beendet die Registrierung des NC-Programms und schließt die Kommunikationsschnittstelle, sobald M02, M30 oder M99 eingelesen wird; 1: Setzt den Empfang ohne Stopp fort.
SystemparameterParameter 3204 Bit 6 (MKP)0: Löscht das aktive MDI-Eingabefenster automatisch nach der Ausführung von M02, M30 oder %; 1: Verhindert das Löschen und behält den MDI-Code bei.
Alarme / FehlerPS5010 (END OF RECORD)Wird ausgelöst, wenn das Dateiende-Zeichen (%) während der Programmausführung ohne vorherigen M02- oder M30-Endbefehl eingelesen wird und Parameter 3404 Bit 6 auf 0 steht.
Alarme / FehlerPS0008 (ILLEGAL USE)Spezieller Alarm bei Steuerungen der M-Serie, wenn versucht wird, das EOR-Zeichen (%) auszuführen, weil am Programmende M02, M30 oder M99 fehlt.
Alarme / FehlerPS5016 (ILLEGAL COMBINATION)Wird ausgelöst, wenn mehrere M-Codes derselben Gruppe in einem einzigen Block programmiert oder ein Endebefehl unzulässig mit anderen M-Codes kombiniert wird.
VersionsunterschiedeLegacy-Systeme (0-Serie)Ältere Fanuc-Steuerungen nutzen den Parameter 0019 Bit 5 (M02NR) zur Steuerung des M02-Rücklaufs, was bei modernen Steuerungen in Parameter 3404 Bit 5 überführt wurde.

Warnung: Das Vergessen eines M02 oder M30 am Ende eines Fanuc-NC-Programms führt dazu, dass die Steuerung das Dateiende-Zeichen (%) einliest. Dies stoppt die Ausführung abrupt und löst die Alarme PS5010 oder PS0008 aus, um unvorhersehbare Speicherüberläufe zu verhindern.

Siemens

Siemens SINUMERIK-Steuerungen bieten eine flexible Syntaxstruktur, die Haltebefehle direkt mit der Teilezählung und der Sicherheit von Messzyklen verknüpft. Die Steuerung aktualisiert bei der Ausführung von M02 oder M30 automatisch Systemvariablen wie $AC_ACTUAL_PARTS und $AC_SPECIAL_PARTS, ohne dass benutzerdefinierte Makrozähler erforderlich sind. Zudem ermöglicht Siemens über die Maschinendaten MD22254 und MD22256 dem Maschinenhersteller, eigene, zusätzliche M-Codes für den Programmhalt zu definieren.

Die Siemens-Syntax unterstützt sowohl das M0/M1- als auch das M00/M01-Blockformat. Diese Codes können zusammen mit Verfahrbefehlen geschrieben werden, obgleich für Blöcke mit Programmende strikte Formatierungseinschränkungen gelten.

SystemkategorieEinstellungs- / AlarmcodeBeschreibung und Hardwareverhalten
SystemparameterMD22254 $MC_AUXFU_ASSOC_M0_VALUEMaschinendaten zur Definition einer zusätzlichen, benutzerdefinierten Hilfsfunktion (M-Code) für einen bedingungslosen Programmhalt.
SystemparameterMD22256 $MC_AUXFU_ASSOC_M1_VALUEMaschinendaten zur Definition einer zusätzlichen, benutzerdefinierten Hilfsfunktion (M-Code) für einen optionalen Programmhalt.
SystemparameterMD10714 $MN_M_NO_FCT_EOPDefiniert einen benutzerdefinierten M-Code (z. B. Wert 32), um die Spindel auch nach einem Reset oder Programmende aktiv und in Betrieb zu halten.
Systemparameter$AC_ACTUAL_PARTSAktive Systemvariable des Werkstückzählers, die bei Ausführung von M02 oder M30 automatisch um 1 erhöht wird. Wertebereich: 0 bis 999.999.999.
Alarme / FehlerAlarm 16954Programmierter Halt (M0/M1) in Stopp-Verzögerungsbereich unzulässig. Wird ausgelöst, wenn ein Haltebefehl innerhalb eines synchronen Gewindeschneid- oder starren Gewindebohrzyklus auftritt.
Alarme / FehlerAlarme 62304 / 62305 / 62306Toleranzüberschreitung (Übermaß, Untermaß oder zulässige Differenz überschritten). Erkennt ein Messzyklus eine Toleranzverletzung, fügt die Steuerung automatisch einen impliziten M00-Halt ein.
VersionsunterschiedeVerschachtelung von ProgrammenSiemens verarbeitet M02 und M30 in aufgerufenen Hauptprogrammen identisch zu M17-Unterprogramm-Rücksprüngen und leitet die Ausführung nahtlos zurück zum aufrufenden Block des Hauptprogramms.

Warnung: Das Platzieren von M00 oder M01 in Stopp-Verzögerungsbereichen (z. B. beim starren Gewindebohren oder Gewindeschneiden) unterbricht die elektronische Synchronisation zwischen Achse und Spindel. Dies löst sofort den Alarm 16954 aus und hinterlässt oft einen abgebrochenen Gewindebohrer im Werkstück.

Mitsubishi

Mitsubishi-CNC-Systeme verarbeiten Stopp- und Endebefehle über eine hochgradig strukturierte, dedizierte Handshake-Schnittstelle zur PLC. Im Gegensatz zu anderen Marken, die generische Strobe-Signale für Hilfsfunktionen nutzen, gibt Mitsubishi beim Einlesen von M00, M01, M02 oder M30 separate, dedizierte Signale an die PLC aus. Dies erlaubt spezielle maschinenseitige Verknüpfungen, wie das automatische Entriegeln der Schutztür bei einem Halt.

Mitsubishi-NC-Programme nutzen eine standardmäßige 8-stellige M-Code-Syntax. Achsbewegungen und Haltebefehle können im selben Block programmiert werden, wobei die zeitliche Ausführung vollkommen von der PLC-Logik des Maschinenherstellers vorgegeben wird.

SystemkategorieEinstellungs- / AlarmcodeBeschreibung und Hardwareverhalten
SystemparameterParameter #12005 MfigBestimmt die maximale Anzahl an M-Codes, die in einem einzigen Block programmiert werden dürfen. Unterstützt bis zu 4 Codes; spätere M-Codes überschreiben bei Überschreitung frühere Codes.
SystemparameterParameter #1278 ext14/bit10: Normales Quittierungsverfahren (wartet auf PLC-Signal); 1: High-Speed-Quittierungsverfahren zur Verkürzung der Zykluszeiten.
SystemparameterParameter #1405 M_mode(SMLK)Aktiviert oder deaktiviert die physische Ausgabe der M-Code-Signale während einer schnellen Einfachprogrammprüfung.
Alarme / FehlerAlarm P36 (Program Error)Wird am Programmende ausgelöst, wenn die PLC nach M02/M30 fälschlicherweise ein standardmäßiges FIN1/FIN2-Quittierungssignal statt des zwingend geforderten Reset- & Rücklaufsignals (RRW) sendet.
Alarme / FehlerAlarm M01 (Operation Alarm)Wird ausgelöst, wenn der Bediener die Taste "Cycle Start" betätigt, während die Steuerung aktiv im Programmprüfmodus läuft.
VersionsunterschiedeHardwarevariationenÄltere Bildschirmeinheiten können nicht alle acht Stellen des programmierten M-Codes anzeigen. Der Systemreset über M00 und der Rücklauf via M02/M30 sind streng herstellerspezifisch.

Warnung: Wenn das PLC-Leiterdiagramm so programmiert ist, dass es für M02 oder M30 ein standardmäßiges FIN1- oder FIN2-Quittierungssignal anstelle des zwingenden Reset- & Rücklaufsignals (RRW) zurückgibt, wird die Endsequenz verletzt und der Fehler P36 generiert.

Markenvergleich

Thema / MerkmalFanucSiemensMitsubishi
Look-Ahead- PufferungStreng gesperrt für das Einlesen über M00/M01/M02/M30 hinaus, unabhängig von den aktiven Pufferungsparametern.Stoppt den Interpolator und die Achsbewegung sofort, sobald M00 oder M01 im aktiven Ausführungsblock verarbeitet wird.Stoppt den Vorauslesepuffer (look-ahead) augenblicklich, um vorzeitige Folgebewegungen der Achsen zu verhindern.
PLC-Handshake & FeedbackSteuerung über Parameter 3404 zur Auswahl zwischen automatischem Rücklauf und dem Warten auf externe Reset- & Rücklaufsignale.Direkt an den VDI-Status des optionalen Haltschalters am HMI gekoppelt; PLC-Logik bestimmt das Verhalten von Spindel/Kühlmittel bei Halt.M00 und M01 benötigen FIN1/FIN2-Quittierungssignale; M02 und M30 fordern zwingend ein Reset- & Rücklaufsignal (RRW).
Programm- verschachtelungM02 und M30 beenden die Programmausführung der aktiven Speicherebene in jedem Fall.Aufgerufene Hauptprogramme (als Unterprogramm genutzt) interpretieren M02/M30 automatisch als M17-Unterprogrammrücksprung.M98/M99 Unterprogramme werden intern verarbeitet; M02 und M30 setzen den Zeiger herstellerspezifisch auf den Programmanfang zurück.
Integrierte TeilezählungErfordert manuelle Programmzähler oder kundenspezifische Logikprogrammierung in der PLC.Erhöht bei Ausführung von M02/M30 die Systemvariablen $AC_ACTUAL_PARTS und $AC_SPECIAL_PARTS automatisch um 1.Keine native Werkstückzählung; erfordert PLC-seitige Anpassungen durch den Maschinenhersteller oder Makro-Interventionen.

Technische Analyse

Eine analytische Gegenüberstellung der Implementierungen von Fanuc, Siemens und Mitsubishi verdeutlicht grundlegend verschiedene Steuerungsphilosophien bei Look-Ahead-Pufferung, PLC-Handshakes und Verschachtelungseigenschaften. Obwohl alle drei Fabrikate letztendlich die Bewegung stoppen und den Programmanfang vorbereiten, unterscheiden sich die rechentechnischen Abläufe im Hintergrund erheblich.

Die Handhabung des Vorauslesepuffers (Look-Ahead) stellt einen zentralen Unterschied dar. Fanuc interpretiert M00, M01, M02 und M30 als absolute Barrieren. Die Pufferberechnung der Steuerung wird physisch blockiert und liest keine weiteren Sätze ein, ungeachtet der aktiven Buffer-Parameter. Dies friert jegliche Koordinatenberechnung ein. Der Ansatz von Siemens ist ähnlich direkt: Er stoppt den Interpolator und die Achsen, sobald M00 oder M01 im aktiven Block abgearbeitet wird. Mitsubishi hingegen nutzt eine aggressive Pufferblockierung, die das Vorauslesen sofort bei Erkennung dieser vier spezifischen M-Codes unterbricht, um zu verhindern, dass nachfolgende Geometrieblöcke vorzeitig maschinenseitige Aktionen auslösen.

Auch die Feedbackschleife zwischen CNC-Prozessor und dem Schaltschrank variiert. Fanuc überträgt die Kontrolle über den Rücklauf an den Parameter 3404, wodurch der Maschinenhersteller entscheidet, ob die CNC selbsttätig zurückspringt oder auf ein externes Reset- & Rücklaufsignal wartet. Siemens stützt sich auf HMI-Bedienpanels, wobei die physische Reaktion von Spindel und Kühlung vollkommen der PLC-Logik überlassen bleibt. Mitsubishi setzt auf eine einzigartige, unabhängige M-Code-Ausgangsstruktur mit separaten Signalen an die PLC. Mitsubishi differenziert zudem das geforderte Feedback: Haltebefehle verlangen ein normales FIN1/FIN2-Quittierungssignal der PLC, während Endebefehle zwingend ein dediziertes Reset- & Rücklaufsignal (RRW) voraussetzen. Ein fehlerhafter PLC-Handshake führt hier unverzüglich zum Programmfehler P36.

Die Programmverschachtelung hebt schließlich die Flexibilität des Siemens-Interpreters hervor. Wird ein Hauptprogramm, das M02 oder M30 enthält, von einer anderen Datei als Unterprogramm aufgerufen, übersetzt Siemens diese Befehle automatisch in einen M17-Unterprogrammrücksprung. Dies erlaubt es Entwicklern, bestehende Hauptdateien ohne manuelle Codeänderung zu verschachteln. Fanuc und Mitsubishi verfügen nicht über diese automatische Übersetzung: M02 oder M30 beenden dort die Ausführung auf der aktuellen Ebene dauerhaft, weshalb Programmierer zwingend auf dedizierte Unterprogrammstrukturen wie M98 und M99 angewiesen sind. Um zu verstehen, wie Vorschübe mit diesen Modi interagieren, lesen Sie bitte die Anleitung zu G96 und G97: Konstante Schnittgeschwindigkeit und konstante Drehzahl.

Programmbeispiele

Fanuc Programmbeispiel

O1001 (FANUC STOP & END EXEMPEL) ;
N10 G90 G21 G17 ;
N20 T0101 M06 (Werkzeug 1 waehlen, laden) ;
N30 G54 G00 X0 Y0 S1200 M03 ;
N40 G43 H01 Z25.0 M08 (Werkzeuglaengenkorrektur aktivieren, Kuehlmittel AN) ;
N50 G01 Z-5.0 F150. ;
N60 X50.0 ;
N70 G00 Z25.0 M09 (Werkzeug freifahren, Kuehlmittel AUS) ;
N80 M00 (Bedingungsloser Stopp - Bediener entfernt Spaene und prueft Werkstuecksitz) ;
N90 G00 X100.0 Y100.0 ;
N100 T0202 M06 ;
N110 S1500 M03 M08 ;
N120 G00 Z5.0 ;
N130 G01 Z-2.0 F200. ;
N140 X150.0 ;
N150 G00 Z50.0 M05 M09 ;
N160 M30 (Programmende und automatischer Ruecklauf zu Block O1001) ;
%

Trockenlauf (dry run) - Analyse

  • Werkzeugzustände: Die Spindel rotiert unter M03 mit 1200 U/min, das Kühlmittel ist über M08 aktiv. In Block N150 wird die Spindel über M05 gestoppt und das Kühlmittel über M09 abgeschaltet.
  • Bedieneraktionen: Während Block N80 (M00) active ist, öffnet der Bediener die Schutztür, entfernt die Späne, misst die Tasche und kontrolliert den Werkstücksitz, bevor er die Tür schließt und erneut CYCLE START betätigt.
  • PLC-Reaktionen: Beim Einlesen von M00 in N80 schaltet die PLC die Relais für Spindel und Kühlung ab und sperrt den Achsvorschub. Beim Ausführen von M30 in N160 beendet die PLC den Zyklus und setzt den Programmzeiger (sofern Parameter 3404 Bit 4 auf 0 steht) automatisch auf den Programmanfang bei O1001 zurück.

Siemens Programmbeispiel

; SIEMENS M00/M30 PROGRAMMHALT & PROGRAMMENDE
N10 G90 G71 G17
N20 T="END_MILL_10" D1 M6
N30 G54 S1800 M3
N40 G0 X0 Y0 Z30.0 M8
N50 G1 Z-8.0 F250.
N60 Y80.0
N70 G0 Z30.0 M9
N80 M01 ; Optionaler Halt - Bediener pruefen Maße auf dem HMI
N90 G0 X120.0 Y50.0
N100 G1 Z-4.0 F300.
N110 X200.0
N120 G0 Z100.0 M5 M9
N130 G53 X0 Y0 D0 ; Rueckkehr zum Maschinennullpunkt
N140 M30 ; Programmende, setzt Steuerung zurueck, erhoeht Zaehler $AC_ACTUAL_PARTS

Trockenlauf-Analyse

  • Werkzeugzustände: Die Spindel läuft in N30 mit 1800 U/min, das Kühlmittel wird in N40 aktiviert. Beide werden in N120 vor dem Freifahren zum Maschinennullpunkt abgeschaltet.
  • Bedieneraktionen: Ist der Schalter für den optionalen Halt am Siemens-HMI aktiviert, stoppt die Maschine bei Block N80. Der Bediener prüft den Werkzeugverschleiß sowie die Taschentiefe und drückt anschließend NC START. Ist der Schalter inaktiv, wird Block N80 komplett ignoriert.
  • PLC-Reaktionen: Die Steuerung verarbeitet M01 in N80. Bei aktivem optionalen Halt blockiert die PLC die Interpolationsimpulse. In Block N140 führt die PLC die Programmendsequenz aus, setzt die modalen Register zurück und erhöht den Werkstückzähler $AC_ACTUAL_PARTS automatisch um den Wert 1.

Mitsubishi Programmbeispiel

; MITSUBISHI M00/M30 DEDIZIERTER PLC-HANDSHAKE
N10 G90 G21
N20 M06 T1
N30 G54 G00 X0 Y0 S1000 M03
N40 G43 H1 Z20. M08
N50 G01 Z-10. F180.
N60 X100.
N70 G00 Z20. M09
N80 M00 ; Dedizierter PLC-Halt - Schutztuer-Entriegelung wird ausgeloest
N90 G00 X0 Y0
N100 M30 ; Zyklenende fordert RRW-Handshake

Trockenlauf-Analyse

  • Werkzeugzustände: Werkzeug 1 aktiv. Spindel läuft mit 1000 U/min, Kühlmittel AN. Spindel und Kühlmittel werden am Programmendeblock N100 deaktiviert.
  • Bedieneraktionen: Während des M00-Halts in Block N80 stoppt die CNC. Die Schutztürverriegelung öffnet sich, der Bediener prüft das Werkstück, schließt die Tür und betätigt CYCLE START.
  • PLC-Reaktionen: Der Befehl M00 gibt ein separates, unabhängiges Signal an die PLC aus. Die PLC steuert das Entriegelungsrelais der Schutztür an. In Block N100 leitet die PLC den Reset- & Rücklauf-Handshake (RRW) an die Steuerung ein, wodurch das System auf den Block N1 zurückgesetzt wird.

Fehleranalyse

SteuerungAlarmcodeAuslösebedingungBediener-SymptomUrsache & Behebung
FanucPS5010 (END OF RECORD)Dateiende-Zeichen (%) eingelesen während der Programmausführung ohne vorherigen Programmendebefehl (wenn Parameter 3404 Bit 6 auf 0 steht).Der CNC-Bildschirm zeigt PS5010 END OF RECORD, und der Automatikbetrieb stoppt sofort.Stellen Sie sicher, dass ein ordnungsgemäßer M02- oder M30-Endebefehl direkt vor dem abschließenden %-Zeichen programmiert ist.
FanucPS0008 (ILLEGAL USE OF PROGRAM END)Ausführung des Dateiende-Zeichens (%) auf Steuerungen der M-Serie ohne vorhergehendes M02, M30 oder M99.Die rote Alarmleuchte leuchtet auf, die Programmausführung bricht abrupt ab.Fügen Sie ein M30 oder M02 in einem eigenen Block vor dem abschließenden %-Symbol ein.
FanucPS5016 (ILLEGAL COMBINATION OF M CODES)Mehrere M-Codes derselben Gruppe in einem Block programmiert oder ein Endebefehl mit anderen M-Codes kombiniert.Die Steuerung erzeugt den Alarm PS5016 und weigert sich, den Block zu interpretieren.Verschieben Sie den Programmendebefehl (M02/M30) in einen eigenen, isolierten Block ohne weitere M-Codes.
SiemensAlarm 16954Programmierter Halt (M0/M1) innerhalb eines geschützten Stopp-Verzögerungsbereichs (z. B. beim Gewindebohren).Das System meldet „Alarm 16954: Programmierter Halt unzulässig“ und stoppt die Bewegung mittendrin.Platzieren Sie M0/M1 außerhalb von synchronisierten Gewindebohr-, Gewindeschneid- oder Konturbahnen.
SiemensAlarm 62304 / 62305Ein Messzyklus am Werkstück stellt eine Toleranzverletzung fest (Übermaß / Untermaß).Die Programmausführung wird mit einem impliziten M00-Halt unterbrochen, und auf dem HMI wird eine Warnung ausgegeben.Korrigieren Sie die Werkzeugverschleißwerte auf dem Bedienpult und drücken Sie NC START, um das Programm prozesssicher fortzusetzen.
MitsubishiAlarm P36 (Program Error)Fehlerhafte PLC-Logik; die PLC gibt für M02/M30 ein standardmäßiges FIN1/FIN2-Quittierungssignal statt des RRW-Handshakes zurück.Das Programm wird beendet, aber die Maschine verharrt mit aktivem Alarm P36 in einem Störungszustand.Passen Sie das PLC-Leiterdiagramm so an, dass M02 und M30 den Reset- & Rücklauf-Handshake (RRW) an die CNC senden.
MitsubishiAlarm M01 (Operation Alarm)Der Bediener drückt CYCLE START, während die Steuerung aktiv im Programmprüfmodus läuft.Die Steuerung zeigt einen blinkenden M01-Alarm auf dem Bildschirm; der Startbefehl wird ignoriert.Warten Sie, bis der Programmprüflauf bei M02 oder M30 beendet ist, bevor Sie die Automatik starten.

Anwendungshinweis

Ein plötzlicher Systemstillstand mit einem blockierten Steuerungspfad oder ein unkontrolliertes Weiterdrehen der Hauptspindel gefährdet die Prozesssicherheit in der Serienfertigung massiv. Wenn beispielsweise eine Mitsubishi-Steuerung nach der Abarbeitung eines M30- oder M02-Blocks ein standardmäßiges Hilfsfunktions-Quittierungssignal (FIN1 oder FIN2) anstelle des zwingend erforderlichen Reset- & Rücklaufsignals (RRW) erhält, blockiert das System sofort und löst den folgenschweren Alarm P36 aus. Ein ähnlich hohes Risiko besteht bei Siemens-Steuerungen, wenn ein Bediener M00 oder M01 innerhalb eines Stopp-Verzögerungsbereichs programmiert – etwa mitten im Gewindeschneid- oder starren Gewindebohrzyklus. Die elektronische Koppelung zwischen Spindeldrehzahl und Z-Achsen-Vorschub wird augenblicklich unterbrochen, was zum Alarm 16954 führt und das Bauteil durch Gewindebeschädigung sofort in Ausschuss verwandelt. Um Maßabweichungen und Toleranzüberschreitungen dauerhaft auszuschließen, müssen Programmierer diese Steuerbefehle konsequent in isolierten NC-Blöcken programmieren, die systemspezifischen Parameter wie Fanuc Parameter 3404 exakt einrichten und sicherstellen, dass die PLC-Handshake-Zeiten nahtlos auf die Hardware abgestimmt sind. Korrekte Konfiguration eliminiert die häufigste Ursache für Maßabweichungen bei diesem Befehl.

Verwandte Befehle

  • M98 / M99 (Unterprogrammaufruf & Rücksprung): M98 ruft ein externes Unterprogramm auf, während M99 das Unterprogramm beendet und die Steuerung zurück zum aufrufenden Hauptprogramm leitet.
  • M17 (Siemens Unterprogrammende): Dient als nativer Unterprogrammendbefehl in Siemens-Steuerungen, der den Programmlauf zurück in den übergeordneten aufrufenden Block führt.
  • M03 / M04 / M05 (Spindelfunktionen): Steuern die Spindelrotation im Uhrzeigersinn (M03), gegen den Uhrzeigersinn (M04) sowie den Spindelstopp (M05). Sie werden üblicherweise parallel oder unmittelbar vor einem Programmhalt deaktiviert.
  • EOR / % (Dateiende-Zeichen): Markiert die physikalische Programmgrenze beim Datentransfer. Es signalisiert dem Speicherleser das Ende des Datenstroms und verhindert Speicherüberlauffehler.

Fazit

Die nahtlose Implementierung und präzise Abstimmung der Befehle M00, M01, M02 und M30 bildet das Rückgrat einer kollisionsfreien und hochpräzisen CNC-Bearbeitung. Anstatt diese Hilfsfunktionen als bloße Textzusätze zu betrachten, müssen sie als aktive, steuerungstechnische Sicherheitsbarrieren verstanden werden, die den Maschinenbediener vor folgenschweren Fehleinstellungen und kostspieligen Ausfallzeiten schützen. Die regelmäßige Überprüfung steuerungsspezifischer Systemvariablen und Parameter – wie der automatischen Pufferblockierung auf Fanuc-Steuerungen oder der exakten Signalquittierung auf Mitsubishi-Anlagen – stellt sicher, dass Maßtoleranzen prozesssicher eingehalten werden. Eine standardisierte Programmierung, bei der Halte- und Endbefehle konsequent isoliert in separaten Blöcken stehen, sichert eine maximale Wiederholgenauigkeit und schützt sowohl sensible Messwerkzeuge als auch die gesamte Spindelmechanik dauerhaft vor mechanischer Überlastung.

Häufig gestellte Fragen (FAQ)

Wie wird über den Parameter 3404 auf Fanuc-Steuerungen die Prozesssicherheit beim automatischen Programm-Rewind (M30) gewährleistet?

Der Fanuc-Parameter 3404 steuert das automatische Rücksprungverhalten bei einem M30-Befehl. Steht Bit 4 auf 0, springt die Steuerung selbsttätig an den Programmanfang zurück. Wird Bit 4 jedoch auf 1 konfiguriert, verharrt die Steuerung starr am Programmende und wartet auf ein externes Quittierungssignal des Maschinensystems. Dies verhindert prozesssicher, dass ein neuer Bearbeitungszyklus ungewollt startet, bevor Peripheriegeräte wie automatische Stangenlader, Teilefänger oder Robotergreifer das Werkstück sicher ausgetragen haben. Praktische Maßnahme: Überprüfen Sie bei automatisierten Zellen den Parameter 3404 Bit 4 im System-Parameterfenster und stellen Sie diesen auf 1, um ein fehlerhaftes Anfahren des nächsten Rohteils vor dem vollständigen Werkstücktransfer zu blockieren.

Warum führt ein fehlendes M02/M30-Ende auf Fanuc-Steuerungen zum Alarm PS5010 und wie wird dadurch Ausschuss verhindert?

Fehlt die Programmendekennung M02 oder M30 vor dem abschließenden EOR-Symbol (%), liest die CNC-Steuerung das Dateiende-Zeichen mitten im aktiven Programmsatz ein. Dies löst umgehend den Alarm PS5010 aus. Dieser abrupte Stopp verhindert prozesssicher, dass das System in nachfolgende Speicherbereiche überläuft oder unvollständig übertragene G-Code-Blöcke abarbeitet, was zu unkontrollierten Achsbewegungen und sofortiger Zerstörung des Werkstücks würdet. Praktische Maßnahme: Fügen Sie vor der Datenübertragung via RS-232 oder Netzwerkkarte standardmäßig ein isoliertes M30 vor dem %-Zeichen in den Code ein und setzen Sie Parameter 3201 Bit 6 (NPE) auf 0, um die Schnittstelle bei Programmende sauber zu trennen.

Wie verhindert man bei Siemens-Steuerungen eine Toleranzüberschreitung durch den Alarm 16954 beim Gewindebohren?

Der Siemens-Alarm 16954 wird ausgelöst, wenn M00 oder M01 in geschützten Stopp-Verzögerungsbereichen programmiert werden. Ein Stopp in dieser Phase würde die elektronische Synchronisation zwischen Spindeldrehzahl und Z-Achsen-Vorschub beim Gewindebohren abrupt trennen. Das Werkzeug würde axial verharren, während sich die Spindel austrudelt, was die Gewindeflanken sofort zerstört und das Bauteil als Ausschuss deklariert. Praktische Maßnahme: Platzieren Sie Prüfzyklen oder Spanbrech-Haltemarken ausschließlich vor dem Aufruf des Gewindebohrzyklus und verifizieren Sie, dass kein synchronisierter Pfad durch manuelle Haltebefehle unterbrochen wird.

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