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.
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 Spezifikation | Details |
|---|---|
| Befehlscodes | M00, M01, M02, M30 |
| Modale Gruppe | Non-modal (nur in dem Block aktiv, in dem sie programmiert sind) |
| Unterstützte Marken | Fanuc, Siemens, Mitsubishi |
| Kritische Parameter | Fanuc 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 Constraint | Peripheriestopps (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
M01für Zwischenmessungen nutzen. - Endbefehle isolieren: Programmieren Sie
M02undM30in 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
M00oderM01niemals 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ürM02), 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
M02undM30ein 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,M02undM30den 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:
| Marke | Systembezeichner | Funktionelle Einstellung |
|---|---|---|
| Fanuc | Parameter 3404 Bit 4 (M30) | 0: Automatischer Rücklauf zum Anfang; 1: Warten auf externes Reset- & Rücklaufsignal. |
| Fanuc | Parameter 3404 Bit 5 (M02) | 0: Automatischer Rücklauf zum Anfang; 1: Warten auf externes Reset- & Rücklaufsignal. |
| Fanuc | Parameter 3201 Bit 6 (NPE) | 0: Datenempfang bei M02, M30, M99 sofort beenden; 1: Endecodes ignorieren. |
| Fanuc | Parameter 3204 Bit 6 (MKP) | 0: Aktive MDI-Sequenz bei Ausführung von M02/M30 löschen; 1: MDI-Programm beibehalten. |
| Siemens | MD22254 $MC_AUXFU_ASSOC_M0_VALUE | Definiert einen zusätzlichen, benutzerdefinierten M-Code für den bedingungslosen Programmhalt. |
| Siemens | MD22256 $MC_AUXFU_ASSOC_M1_VALUE | Definiert einen zusätzlichen, benutzerdefinierten M-Code für den optionalen Programmhalt. |
| Siemens | MD10714 $MN_M_NO_FCT_EOP | Definiert einen benutzerdefinierten M-Code (z. B. 32), um die Spindel nach Reset/Programmende aktiv zu halten. |
| Siemens | $AC_ACTUAL_PARTS | Aktive Systemvariable des Werkstückzählers, die bei der Ausführung von M02/M30 automatisch hochgezählt wird. |
| Mitsubishi | #12005 Mfig | Bestimmt die maximale Anzahl an M-Codes, die in einem einzigen Block zulässig sind (Bereich 1 bis 4). |
| Mitsubishi | #1278 ext14/bit1 | 0: 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.
| Systemkategorie | Einstellungs- / Alarmcode | Beschreibung und Hardwareverhalten |
|---|---|---|
| Systemparameter | Parameter 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. |
| Systemparameter | Parameter 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. |
| Systemparameter | Parameter 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. |
| Systemparameter | Parameter 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 / Fehler | PS5010 (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 / Fehler | PS0008 (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 / Fehler | PS5016 (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. |
| Versionsunterschiede | Legacy-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.
| Systemkategorie | Einstellungs- / Alarmcode | Beschreibung und Hardwareverhalten |
|---|---|---|
| Systemparameter | MD22254 $MC_AUXFU_ASSOC_M0_VALUE | Maschinendaten zur Definition einer zusätzlichen, benutzerdefinierten Hilfsfunktion (M-Code) für einen bedingungslosen Programmhalt. |
| Systemparameter | MD22256 $MC_AUXFU_ASSOC_M1_VALUE | Maschinendaten zur Definition einer zusätzlichen, benutzerdefinierten Hilfsfunktion (M-Code) für einen optionalen Programmhalt. |
| Systemparameter | MD10714 $MN_M_NO_FCT_EOP | Definiert 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_PARTS | Aktive 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 / Fehler | Alarm 16954 | Programmierter Halt (M0/M1) in Stopp-Verzögerungsbereich unzulässig. Wird ausgelöst, wenn ein Haltebefehl innerhalb eines synchronen Gewindeschneid- oder starren Gewindebohrzyklus auftritt. |
| Alarme / Fehler | Alarme 62304 / 62305 / 62306 | Toleranzüberschreitung (Übermaß, Untermaß oder zulässige Differenz überschritten). Erkennt ein Messzyklus eine Toleranzverletzung, fügt die Steuerung automatisch einen impliziten M00-Halt ein. |
| Versionsunterschiede | Verschachtelung von Programmen | Siemens 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.
| Systemkategorie | Einstellungs- / Alarmcode | Beschreibung und Hardwareverhalten |
|---|---|---|
| Systemparameter | Parameter #12005 Mfig | Bestimmt 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. |
| Systemparameter | Parameter #1278 ext14/bit1 | 0: Normales Quittierungsverfahren (wartet auf PLC-Signal); 1: High-Speed-Quittierungsverfahren zur Verkürzung der Zykluszeiten. |
| Systemparameter | Parameter #1405 M_mode(SMLK) | Aktiviert oder deaktiviert die physische Ausgabe der M-Code-Signale während einer schnellen Einfachprogrammprüfung. |
| Alarme / Fehler | Alarm 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 / Fehler | Alarm 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. |
| Versionsunterschiede | Hardwarevariationen | Ä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 / Merkmal | Fanuc | Siemens | Mitsubishi |
|---|---|---|---|
| Look-Ahead- Pufferung | Streng 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 & Feedback | Steuerung ü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- verschachtelung | M02 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ählung | Erfordert 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
| Steuerung | Alarmcode | Auslösebedingung | Bediener-Symptom | Ursache & Behebung |
|---|---|---|---|---|
| Fanuc | PS5010 (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. |
| Fanuc | PS0008 (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. |
| Fanuc | PS5016 (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. |
| Siemens | Alarm 16954 | Programmierter 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. |
| Siemens | Alarm 62304 / 62305 | Ein 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. |
| Mitsubishi | Alarm 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. |
| Mitsubishi | Alarm 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.

- 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
Siemens CYCLE800 G-Code: Schwenkebene & Werkzeugausrichtung
Siemens CYCLE800 programmieren für 3+2-Achsen. Lernen Sie Schwenkebenen, Werkzeugausrichtung und die Behebung der Sinumerik-Alarme 61190 und 61153.
Siemens CYCLE72 Konturfräsen: Leitfaden zum Sinumerik-Bahnfräsen
Anleitung zum Siemens CYCLE72 Konturfräsen auf Sinumerik. Erfahren Sie alles über Parameter, das Vermeiden von Alarm 61123 und prozesssicheres Arbeiten.
Siemens CYCLE952 Konturdrehzyklus prozesssicher programmieren
Siemens CYCLE952 Konturdrehen auf Sinumerik CNC programmieren. Parameter verifizieren, Alarm 61051 vermeiden und Unterschiede zu Fanuc und Mitsubishi verstehen.
Siemens SLOT1 und SLOT2 Nutfräszyklen sicher programmieren
Programmierung der Nutfräszyklen SLOT1 und SLOT2 auf Siemens Sinumerik Steuerungen. Parameter verifizieren, Alarm 61000 vermeiden und Fräser anpassen.