Logische Operatoren in CNC-Makros: IF, WHILE und GOTO Anleitung
Leitfaden zu logischen Operatoren wie IF, WHILE und GOTO auf Fanuc, Siemens und Mitsubishi zur prozesssicheren Absicherung von CNC-Makros gegen Kollisionen.
Einleitung
Ein vergessener Schleifenzähler wie #1 = #1 + 1 in einer WHILE-Schleife während eines aktiven Vorschubbefehls führt dazu, dass die CNC-Steuerung in einer Endlosschleife verharrt und das Werkzeug unkontrolliert tief in das Werkstück bohrt oder den Werkzeugrevolver (turret) mit voller Wucht in eine Schraubstockbacke (vise jaw), eine Werkstückspannpratze (clamp) oder das rotierende Spannfutter (chuck) rammt. Dieser abrupte Stopp führt unweigerlich zu einem schweren Maschinenschaden, teurem Ausschuss (scrap parts) und langen Stillstandszeiten. Weil logische Makros direkte Entscheidungen auf der Steuerungsebene treffen, kann jede fehlerhafte Bedingung katastrophale Folgen im Arbeitsraum haben. 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. Um die Prozesssicherheit komplexer Fertigungszyklen zu garantieren, müssen CNC-Programmierer die korrekte Logik von IF-, WHILE- und GOTO-Anweisungen verstehen und absichern.
Technische Übersicht
| Technisches Merkmal | Details |
|---|---|
| Befehlscode | IF, WHILE, GOTO, DO, END, ELSE, ENDIF, GOTOF, GOTOB, GOTOC, REPEAT, UNTIL, FOR, LOOP, CASE |
| Modale Gruppe / Modalität | Makro-Steuerbefehle (nicht-modal) |
| Marken | Fanuc, Siemens, Mitsubishi |
| Kritische Parameter | Fanuc: 6000#1 (MGO), 6000#4 (HGO), 6006#0 (MLG); Siemens: $MC_EXTERN_FUNCTION_MASK Bit 3; Mitsubishi: #8101 (MACRO SINGLE), #6452 Bit 6 |
| Hauptsächliche Einschränkung | Fanuc: Max. 3 DO-Schleifen pro Ebene, Verschachtelungsgrenze von 5 Klammerungsebenen; Siemens: 808D auf 11 Verschachtelungsebenen beschränkt; Mitsubishi: Max. 10 IF- und 27 WHILE-Verschachtelungsebenen, Sprünge im Tape mode verboten |
Schnellleser
- Schleifeninkrementierung überprüfen: Schreiben und kontrollieren Sie mathematische Zähler (z. B.
#1 = #1 + 1) inWHILE-Schleifen stets sorgfältig, um eine unendliche Ausführung und hard crashes zu verhindern. - Look-Ahead synchronisieren: Fügen Sie vor bedingten
IF-Verzweigungen in Siemens-Programmen einen Vorabrufstopp (STOPRE) ein, um eine vorzeitige Auswertung dynamischer Variablen zu verhindern. - Gleitkomma-Gleichheitsprüfungen vermeiden: Werten Sie Dezimalvariablen unter Verwendung absoluter Toleranzen (z. B.
[ABS[#10 - #20] LT 0.01]) anstelle strenger Gleichheitsprüfungen (EQ) aus, um Gleitkomma-Berechnungsfehler zu verhindern. - Verschachtelungsgrenzen beachten: Halten Sie die Verschachtelung innerhalb der Grenzen der Steuerung (max. 3 Schleifenebenen auf Fanuc, 11 Unterprogramme auf Siemens 808D und 10 IF- / 27 DO-Ebenen auf Mitsubishi).
- Den richtigen Ausführungsmodus wählen: Vermeiden Sie das Ausführen von Makroschleifen oder -verzweigungen im Tape/DNC mode auf Mitsubishi-Systemen, um einen sofortigen P295-Alarm und den Programmabbruch zu verhindern.
- High-Speed-GOTO-Caching nutzen: Aktivieren Sie die Fanuc-Parameter 6000#1 (MGO) und 6000#4 (HGO), um die Verzweigungsleistung zu optimieren und Verzögerungen bei der Schleifenausführung zu reduzieren.
Grundlegende Konzepte
Der praktische programmiertechnische Effekt logischer Makrooperatoren ist die vollständige Transformation von starrem, linearem G-code in eine dynamische, entscheidungsfähige Software. Mithilfe von WHILE/DO-Schleifen können Programmierer eine hochgradig kondensierte mathematische Routine schreiben, um sich wiederholende physische Aufgaben – wie Tiefloch-Pecken (deep-hole pecking), Gitterbohren oder Spiralfräsen – in nur wenigen Blöcken statt in Tausenden von Zeilen G-code auszuführen. Durch das Ersetzen fester geometrischer Bewegungen durch variable Iterationsstrukturen kann sich ein einziges Hauptprogramm an unterschiedliche Abmessungen, Bahnen und Muster anpassen.
Gleichzeitig ermöglichen bedingte Verzweigungsanweisungen der CNC-Maschine, physische Bedingungen in der Werkstatt autonom auszuwerten. Beispielsweise kann ein Makroprogramm die skip signal-Position eines Messtasters lesen oder eine Systemvariable für die Werkzeugverschleißkorrektur abfragen, um zu prüfen, ob ein Bauteil innerhalb der Toleranz liegt. Die Steuerung kann diese Daten dann logisch auswerten und ihren eigenen Werkzeugweg (toolpath) sofort ändern, um Schlichtdurchgänge zu überspringen, kompensierende Koordinatenverschiebungen auszulösen oder den Zyklus abzubrechen, wenn ein Werkzeug gebrochen ist.
Um einen sicheren und zuverlässigen Betrieb dieser logischen Strukturen zu gewährleisten, müssen Programmierer sicherstellen, dass Schleifengrenzen niemals überschritten und bedingte Parameter korrekt formatiert sind. Fehlerhafte Syntax, verschachtelte Klammern, die die Grenzen der Steuerung überschreiten, oder unpaarige Schleifenmarker werden vom internen Parser der CNC abgefangen. In diesem Fall stoppt die Steuerung die automatische Ausführung und zeigt eine Alarmmeldung an, wodurch die Werkzeugmaschine geschützt wird, bevor physische Bewegungen beginnen können.
Befehlsstruktur
Makroprogramme steuern den Ausführungsfluss über drei Hauptstrukturen: unbedingte Sprünge, bedingte Verzweigungen und iterative Schleifen. Unbedingte Sprünge verwenden den Befehl GOTO, um den Interpreter zu zwingen, direkt zu einer bestimmten Blocknummer zu springen und alle dazwischen liegenden Codezeilen zu umgehen. Bedingte Verzweigungen kombinieren einen logischen Vergleich innerhalb von Klammern mit einem GOTO-Sprung oder einer THEN-Anweisung und führen die Umleitung nur aus, wenn die ausgewertete Beziehung wahr ist. Iterative Schleifen verwenden WHILE-Anweisungen, um einen Teilblock des Codes zwischen den DO- und END-Markern wiederholt auszuführen, solange die bedingten Kriterien erfüllt sind.
Jede Steuerungsmarke implementiert spezifische Syntaxformate für diese Befehle. Fanuc und Mitsubishi folgen dem Custom Macro B-Standard, bei dem Variablen und Operatoren in eckige Klammern eingeschlossen sind. Siemens nutzt strukturierte High-Level-Befehle, die modernen Computerprogrammiersprachen ähneln, einschließlich nativer IF-ELSE-ENDIF-, FOR- und REPEAT-UNTIL-Schleifen. Unabhängig von der Steuerungsstufe sind korrekte Syntaxabstände, Klammerpaare und Schleifenkennungen erforderlich, um sicherzustellen, dass der Interpreter das Programm ohne Unterbrechung kompiliert.
; Fanuc Custom Macro B-Syntax GOTO 100; IF [#100 GT 5.0] GOTO 200; IF [#101 EQ 1.0] THEN #102 = 1.5; WHILE [#1 LT 10.0] DO 1; ... END 1;; Siemens SINUMERIK High-Level-Syntax GOTO LABEL1 IF R10 > 5 GOTOF LABEL2 IF R10 == 1.0 ELSE ... ENDIF WHILE R1 < 10.0 ... ENDWHILE
; Mitsubishi Logik-Syntax GOTO 100; IF [#100 GT 5.0] GOTO 200; IF [#101 EQ 1.0] THEN; ... ELSE; ... ENDIF; WHILE [#1 LT 10.0] DO1; ... END1;
| Parameter / Variable | Marke | Beschreibung |
|---|---|---|
6000#1 (MGO) | Fanuc | High-Speed-GOTO-Verzweigungsverhalten. 0: Standard; 1: High-Speed-Cachesuche (bis zu 20 Blöcke). |
6000#4 (HGO) | Fanuc | Lokalisiertes Verzweigungs-Caching. 1: Cacht 30 Blöcke vor dem Sprung oder 10, die durch die vorherige Suche gespeichert wurden. |
6006#0 (MLG) | Fanuc | Aktiviert boolesche logische Operationen (AND, OR usw.) innerhalb von bedingten Anweisungen. |
$MC_EXTERN_FUNCTION_MASK | Siemens | Bit 3 bestimmt, ob Siemens-spezifische Prüfstrukturen nativ im ISO-Dialektmodus verarbeitet werden. |
#8101 (MACRO SINGLE) | Mitsubishi | Makro-Verarbeitungsmodus. 0: Hintergrund-Batch-Verarbeitung; 1: blockweise gleichzeitig. |
#6452 (bit 6) | Mitsubishi | Validierung des Sprungziels. 1: Überprüft Labels; 0: Fehlende Labels lösen einen Busfehler aus. |
Markenanwendungen
Fanuc
Fanuc Custom Macro B nutzt logische Operatoren und Steuerungsanweisungen, um bedingte Verzweigungen und Iterationen auszuführen. Relationale Operatoren wie EQ, NE, GT, LT, GE und LE werden innerhalb von Klammern ausgewertet. Die Parameter 6000#1 und 6000#4 bestimmen das Look-Ahead-Caching-Verhalten zur Optimierung von GOTO-Suchen.
Unten ist eine typische G-code-Struktur für bedingte Verzweigungen und Schleifensteuerungen auf Fanuc-Systemen dargestellt:
IF [#100 GT 10.0] GOTO 500;
WHILE [#1 LT 5.0] DO 1;
...
END 1;
| Attributtyp | Details |
|---|---|
| Parameter | 6000#1 (MGO) für den GOTO-Geschwindigkeitscache, 6000#4 (HGO) für lokales Caching und 6006#0 (MLG) für boolesche Operationen. |
| Alarme | Alarm 124 (Fehlende END-Anweisung), Alarm 126 (Ungültige Schleifennummer außerhalb von 1-3) und Alarm 128 (Fehlende Sequenznummer). |
| Versionen | Custom Macro B erlaubt einzelne THEN-Zeilen. Moderne Serien unterstützen verschachtelte IF-THEN-ELSE-ENDIF- und CASE-Anweisungen. |
Warning: Forgetting to increment the loop control variable will lock the controller in an infinite execution cycle, resulting in uncommanded motion and a hard collision with workholding clamps.
Siemens
Siemens Sinumerik-Steuerungen betten strukturierte PC-Sprachelemente direkt in den Standard-G-code ein. Bedingte Sprunganweisungen wie GOTOF und GOTOB lenken den Programmfluss. Die Synchronisation wird durch den Befehl STOPRE aufrechterhalten, um die Look-Ahead-Verarbeitung zu steuern.
Das Folgende ist eine Darstellung von Siemens-High-Level G-code-Steuerungsstrukturen:
IF (R10 < 50) AND ($AA_IM[X] >= 17.5) GOTOF LABEL_A
WHILE $AA_IW[DRILL_AXIS] > -10
...
ENDWHILE
| Attributtyp | Details |
|---|---|
| Parameter | $MC_EXTERN_FUNCTION_MASK Bit 3 für Übersetzungseinstellungen der ISO-Dialektverarbeitung. |
| Alarme | Alarm 14080 (Sprungziel-Label nicht gefunden) und Alarm 14000 (Externes Sprungziel außerhalb der Puffergrenzen). |
| Versionen | Die 808D-Familie beschränkt die Verschachtelung auf 11 Ebenen, während 840D sl und SINUMERIK ONE bis zu 16 Verschachtelungsebenen unterstützen. |
Warning: Failing to place a STOPRE preprocessing stop before checking real-time machine states can lead to premature look-ahead evaluations, resulting in tools plunging into clamps or vise jaws.
Mitsubishi
Mitsubishi-CNCs bieten fortschrittliche logische Verzweigungen mit verschachtelten IF-THEN-ELSE-Strukturen und WHILE-Schleifen. Parameter #8101 konfiguriert, ob Makros im Hintergrund-Batch oder blockweise ausgeführt werden. Parameter #6452 validiert die Ziel-Labels.
Hier ist ein Beispiel für bedingte Verzweigungen und Absolutwertvergleiche auf Mitsubishi-Steuerungen:
IF [ABS [#10 - #20] LT 0.01] THEN #120 = 10;
WHILE [#101 LT #2] DO1;
...
END1;
| Attributtyp | Details |
|---|---|
| Parameter | #8101 (MACRO SINGLE) Steuerungsmodus, #1754 (Verarbeitungsgeschwindigkeit), #1259 (Ausführungsoptimierung) und #6452 Bit 6 (Label-Überprüfung). |
| Alarme | P288 (IF-Verschachtelungsüberschreitung über 10 Ebenen), P293 (Schleifenverschachtelung über 27 Ebenen) und P295 (WHILE/GOTO im Tape mode ausgeführt). |
| Versionen | Die M800VW/M80VW-Serie ermöglicht das Aufrufen von Makros, die auf der integrierten Festplatte der Anzeigeeinheit gespeichert sind, über G65/G66, im Gegensatz zu Nicht-VW-Modellen. |
Warning: Running GOTO or WHILE statements in Tape mode will instantly trigger a P295 alarm, halting machine operations mid-cut.
Markenvergleich
| Funktion / Thema | Fanuc | Siemens | Mitsubishi |
|---|---|---|---|
| Schleifen-Verschachtelunggrenze | Max. 3 DO-END-Schleifen (DO 1, DO 2, DO 3) pro Makroebene. | 808D beschränkt Makroverschachtelung auf 11 Ebenen. 840D sl / ONE erlaubt bis zu 16 Ebenen (erweiterbar auf 18 mit ASUBs). | WHILE-DO-Schleifen bis zu 27 Ebenen tief verschachtelt. Schleifenkennungen reichen von 1 bis 127. |
| Strukturierte Syntax | Veraltete IF-GOTO und IF-THEN. Neuere Serien unterstützen verschachtelte IF-THEN-ELSE-ENDIF über reservierte Wörter. | Native PC-ähnliche Steuerungsstrukturen (IF-ELSE-ENDIF, WHILE, FOR, LOOP). | Unterstützt nativ IF-THEN-ELSE-ENDIF direkt im G-code, verschachtelt bis zu 10 Ebenen tief. |
| Such-Caching | Look-Ahead-Parameter 6000#1 (MGO) und 6000#4 (HGO) vermeiden die lineare Programmabtastung bei Sprüngen. | Alarmunterdrückter Sprungbefehl GOTOC unterdrückt den Alarm 14080, wenn das Label fehlt. | Parameter #8101 (MACRO SINGLE) schaltet die Hintergrundlogikverarbeitung EIN/AUS. |
| Eigene Alarmintegration | Verknüpft Logik mit Variable #3000; Anzeigeformat global durch Parameter 6008#1 (MCA) vorgegeben. | Befehl SETAL löst Benutzeralarme (60000 bis 69999) aus. | Programmfehler-Alarmcodes (P288, P289, P293, P294, P295) stoppen die Maschine bei logischen Syntax-/Verschachtelungsfehlern. |
| Bedingungs-Auswertungsregeln | Erfolgt in Custom Macro B; Look-Ahead-Puffer führt Variablen möglicherweise vor der physischen Bewegung aus. | Programmierer müssen den Vorabrufstopp-Befehl STOPRE in einer Zeile vor dynamischen Bedingungsprüfungen verwenden. | Programmierer müssen Dezimalzahlen mit Sicherheitstoleranzen unter Verwendung der ABS-Funktion auswerten, um Gleitkomma-Abweichungen zu verhindern. |
Technische Analyse
Der analytische Vergleich dieser drei CNC-Plattformen offenbart unterschiedliche Philosophien bei der Logikausführung, der Syntax-Sicherheit und der Verarbeitungseffizienz. Fanuc verfolgt einen hochoptimierten, aber strukturell starren Ansatz. Seine Schleifenverschachtelung ist streng auf drei Ebenen begrenzt, was Pufferüberlastungen verhindert, während die GOTO-Suchleistung durch ein spezielles Hardware-Look-Ahead-Caching aufrechterhalten wird. Diese starre Struktur macht das Schreiben komplexer, lesbarer Programme jedoch ohne Rückgriff auf tiefe numerische Variablenindizierung zu einer Herausforderung.
Im Gegensatz dazu konzentriert sich Siemens auf die lesbare High-Level-Programmierung im PC-Stil. Durch die native Einbettung verschachtelter IF-ELSE-ENDIF-, FOR- und REPEAT-UNTIL-Strukturen entfällt die Notwendigkeit obskurer Variablenzuordnungen. Siemens bietet zudem spezialisierte Sprungbefehle wie GOTOC, die Zielalarme unterdrücken, sodass Programme fehlende optionale Blöcke sicher überspringen können. Das Hauptrisiko besteht in der Look-Ahead-Ausführung des Interpreters, die vom Programmierer verlangt, explizit STOPRE-Blöcke zu schreiben, um Echtzeitvariablen vor der Auswertung der Logik zu synchronisieren.
Mitsubishi stellt einen Mittelweg dar, indem es die ISO Custom Macro B-Syntax mit moderner High-Level-Ausführung verbindet. Es erlaubt eine immense Verschachtelungstiefe von bis zu 27 Schleifenebenen und 10 IF-Ebenen, was Programmierern eine enorme Skalierung bietet. Mitsubishi bietet außerdem eine einzigartige Diagnoseflexibilität durch den Parameter #8101 (MACRO SINGLE), der es Bedienern ermöglicht, Makros für Trockenläufe (dry runs) blockweise oder für eine höhere Produktionsgeschwindigkeit im Hintergrund auszuführen. Allerdings sind sorgfältige Dezimalvergleiche unter Verwendung der ABS-Funktion erforderlich, um Gleitkomma-Ungleichheiten zu umgehen, die zu Werkzeugkollisionen führen können.
Programmbeispiele
Fanuc-Programmbeispiel: Gitterbohrzyklus
; Fanuc Custom Macro B Grid Drilling
#100 = 0 (SPALTENZÄHLER)
#101 = 3 (SPALTEN INSGESAMT)
#102 = 50.0 (SPALTENABSTAND IN MM)
WHILE [#100 LT #101] DO 1;
#103 = 0 (ZEILENZÄHLER)
#104 = 4 (ZEILEN INSGESAMT)
#105 = 40.0 (ZEILENABSTAND IN MM)
WHILE [#103 LT #104] DO 2;
G90 G00 X[#100 * #102] Y[#103 * #105];
G81 Z-15.0 R2.0 F150.0;
G80;
#103 = #103 + 1 (ZEILE INKREMENTIEREN);
END 2;
#100 = #100 + 1 (SPALTE INKREMENTIEREN);
END 1;
M30;
Trockenlauf
Bei einem Trockenlauf startet die Steuerung mit #100 = 0 und #101 = 3. Die äußere Schleifenbedingung #100 LT #101 wird als wahr ausgewertet, wodurch in Schleife 1 eingetreten wird. Im Inneren wird #103 auf 0 zurückgesetzt. Die innere Schleifenbedingung #103 LT #104 (0 < 4) wird als wahr ausgewertet, wodurch in Schleife 2 eingetreten wird. Die Maschine bewegt sich auf X0.0 Y0.0 und führt einen G81-Bohrzyklus auf Z-15.0 aus. Die Schleifenvariable #103 wird auf 1 inkrementiert. Die innere Schleife wiederholt sich für Y40.0, Y80.0 und Y120.0. Wenn #103 den Wert 4 erreicht, endet Schleife 2. #100 wird auf 1 inkrementiert, wodurch sich die Maschine auf X50.0 bewegt. Der Prozess wiederholt sich für die Spalten 1 und 2. Wenn #100 den Wert 3 erreicht, wird Schleife 1 als falsch ausgewertet und das Programm endet mit M30.
Siemens-Programmbeispiel: Werkzeugprüfung und sicherer Rückzugsweg
; Siemens Sinumerik Werkzeugprüfung und sicherer Rückzug
R10 = $TC_MPPC1[1] ; Aktiven Werkzeugverschleißwert lesen
STOPRE ; Vorabrufstopp erzwingen, um Look-Ahead zu synchronisieren
IF R10 > 0.25 GOTOF ALARM_RETRCT
; Standardpfad
G00 X100.0 Z50.0
M30
ALARM_RETRCT:
GOTOC SAFE_HOME
SAFE_HOME:
G00 G53 Z0.0 D0 ; Sicherer Z-Rückzug
SETAL(60100) ; Benutzerdefinierten Werkzeugverschleißalarm auslösen
M30
Trockenlauf
Der Interpreter liest den aktiven Werkzeugverschleißwert in R10 ein. Der STOPRE-Block stoppt den Look-Ahead-Puffer und stellt sicher, dass der Verschleißwert vollständig gelesen wird, bevor die Bedingung geprüft wird. Wenn R10 den Wert 0.25 mm überschreitet, wird die IF-Bedingung als wahr ausgewertet und das Programm springt vorwärts (GOTOF) zu ALARM_RETRCT. Der Code initiiert dann einen GOTOC-Sprung zu SAFE_HOME. Wenn das Label SAFE_HOME existiert, führt er den sicheren Z-Achsen-Rückzug zur Maschinenreferenz (G53 Z0.0) aus und deaktiviert die Werkzeugkorrekturen (D0). Die Anweisung SETAL(60100) wird ausgeführt, stoppt die Maschinenbewegung und zeigt den Benutzeralarm 60100 auf dem Bildschirm an.
Mitsubishi-Programmbeispiel: Sicherer parametrischer Tiefbohrschleife
; Mitsubishi sicherer Tiefbohrzyklus (Pecking) mit ABS-Toleranz
#100 = -50.0 (ZIELTIEFE Z)
#101 = 0.0 (AKTUELLE Z-TIEFE)
#102 = -10.0 (TIEFENZUSTELLUNG)
#103 = 0.01 (SICHERHEITSTOLERANZ)
WHILE [ABS[#101 - #100] GT #103] DO1;
#101 = #101 + #102;
IF [#101 LT #100] THEN #101 = #100;
G00 Z[#101 + 2.0];
G01 Z#101 F100.0;
G00 Z2.0; (RÜCKZUG AUF SICHERHEITSABSTAND)
END1;
M30;
Trockenlauf
Das Programm setzt die Zieltiefe #100 auf -50.0 und die aktuelle Tiefe #101 auf 0.0. Die Tiefenzustellung (peck size) beträgt #102 = -10.0. Die WHILE-Schleife prüft, ob die absolute Differenz zwischen #101 und #100 größer als die Toleranz #103 ist. Die erste Prüfung wertet ABS[0.0 - (-50.0)] aus, was 50.0 ergibt. Da 50.0 > 0.01 ist, wird die Schleife betreten. #101 wird auf -10.0 aktualisiert. Das IF-THEN verifiziert, dass #101 die Zieltiefe #100 nicht überschritten hat. Das Werkzeug bewegt sich auf Z-8.0, fährt im Vorschub auf Z-10.0 und zieht sich auf den Sicherheitsabstand Z2.0 zurück. Die Schleife wiederholt sich und führt Tiefenschritte auf Z-20.0, Z-30.0, Z-40.0 und Z-50.0 aus. Bei der letzten Iteration beträgt die Differenz 0.0, was nicht größer als #103 ist, sodass die Schleife beendet wird und das Programm über M30 verlassen wird.
Fehleranalyse
| Marke | Alarmcode | Auslösebedingung | Bediener-Symptom | Ursache / Behebung |
|---|---|---|---|---|
| Fanuc | 124 / PS1124 | DO - END-Verschachtelung entspricht nicht 1:1. | Zyklus stoppt sofort vor dem Ausführen der Schleife. Bildschirm zeigt „MISSING END STATEMENT“. | Stellen Sie sicher, dass jede DO-Anweisung eine entsprechende END-Anweisung mit derselben Kennung im Programm hat. |
| Fanuc | 126 | DO-Kennung m liegt außerhalb des Bereichs von 1 bis 3. | CNC geht bei Blockausführung in Alarmzustand über. Bildschirm zeigt „ILLEGAL LOOP NUMBER“. | Ändern Sie den Schleifenblock so, dass die DO-Kennung streng auf DO 1, DO 2 oder DO 3 beschränkt ist. |
| Fanuc | 128 / PS1128 | GOTO-Zielsequenznummer nicht gefunden oder außerhalb des Bereichs. | Ausführung stoppt beim GOTO-Befehl. Bildschirm zeigt „SEQUENCE NUMBER OUT OF RANGE“. | Überprüfen Sie, ob die Ziel-N-Sequenznummer existiert und im Bereich von 1 bis 99999999 liegt. |
| Siemens | 14080 | Sprungziel-Label oder Blocknummer fehlt in der aktiven Programmebene. | Interpreter-Stopp erfolgt sofort. Bildschirm zeigt „Jump destination not found“. | Überprüfen Sie die Schreibweise des Labels oder der Blocknummer. Stellen Sie sicher, dass das Ziel in der aktiven Programmebene existiert. |
| Siemens | 14000 | Externes Unterprogramm-Sprungziel liegt außerhalb des Nachladepuffers. | Ausführung stoppt mitten im Programm beim Lesen der externen Datei. Bildschirm zeigt Speicherpufferfehler. | Stellen Sie sicher, dass das Sprungziel (wie ein GOTOB- oder REPEAT-Label) innerhalb der Nachladepuffergrenze liegt. |
| Mitsubishi | P288 | IF-Anweisung-Verschachtelungstiefe überschreitet das Maximum von 10 Ebenen. | Ausführung stoppt beim Programmladen oder Makroaufruf. Bildschirm zeigt „IF EXCESS“-Alarm. | Strukturieren Sie die Makrologik um, um den verschachtelten Bedingungsbaum auf 10 Ebenen oder weniger abzuflachen. |
| Mitsubishi | P293 | WHILE-DO-Schleifen-Verschachtelungsebene überschreitet 27 Ebenen. | Interpreter stoppt die Ausführung sofort. Bildschirm zeigt „DO-END nesting over“. | Gestalten Sie die Programmschleifen neu, um sicherzustellen, dass die Verschachtelungstiefe das Hardwarelimit von 27 Ebenen nicht überschreitet. |
| Mitsubishi | P295 | WHILE- oder GOTO-Befehl während des Tape-Betriebsmodus ausgeführt. | Die CNC stoppt mitten im Schnitt während des Tape-Vorschubs. Bildschirm zeigt „WHILE/GOTO in tape“-Alarm. | Laden Sie das Makroprogramm in den internen Speicher der CNC und führen Sie es im Memory mode statt im DNC/Tape mode aus. |
Anwendungshinweis
Ein verheerender hard crash und irreparabler Ausschuss (scrap parts) drohen auf Mitsubishi-Steuerungen, wenn ein Programmierer Gleitkommazahlen direkt mittels EQ oder NE vergleicht und die Steuerung aufgrund mikroskopischer Rundungsfehler eine sicherheitskritische Ausweichbewegung überspringt. 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. Um diese Maßabweichung zu verhindern, muss zwingend die ABS-Funktion zur Toleranzbandprüfung wie in [ABS[#10 - #20] LT 0.01] angewendet werden. Die Ausführung von unbedingten Sprüngen in unzulässigen Betriebsarten führt ebenfalls zum sofortigen Maschinenstopp: Das Aufrufen von WHILE- oder GOTO-Anweisungen im Mitsubishi Tape mode bricht das Programm augenblicklich mit dem Alarmcode P295 ab. Für Siemens-Steuerungen resultiert das Weglassen eines Vorabrufstopps (STOPRE) vor einer bedingten IF-Prüfung in der vorzeitigen Auswertung dynamischer Variablen durch den Look-Ahead-Puffer, wodurch das Werkzeug während eines G331-Gewindeschneidzyklus ungebremst in eine Schraubstockbacke (vise jaw) rammt und den Alarmcode 700011 (clamping timeout) oder 700013 (chuck unclamped) auslöst. Zur Behebung müssen Programmierer STOPRE einsetzen, um den Puffer zu synchronisieren, und auf Fanuc-Systemen die Parameter 6000#1 (MGO) und 6000#4 (HGO) konfigurieren, um lineare GOTO-Suchverzögerungen zu eliminieren, da andernfalls eine unerwünschte Verweilzeit an der Schneide die Maßhaltigkeit zerstört.
Verwandte Befehle
- g65-custom-macro-b: Ruft benutzerdefinierte Makros auf, die eine bedingte Schleifenlogik enthalten, wobei Argumente an lokale Variablen übergeben werden.
- writing-and-calling-subprograms: Implementiert verschachtelte Unterprogramme, die mithilfe logischer Zählerinkrementierungen wiederholt ausgeführt werden können.
- r-parameter-programming: Verwendet arithmetische Variablen auf Siemens-Systemen, um Koordinaten und Vorschübe (feedrates) an strukturierte Schleifen zu übergeben.
- STOPRE: Stoppt den Look-Ahead-Interpreter-Puffer auf Siemens-Steuerungen, um sicherzustellen, dass dynamische Maschinenzustände vollständig ausgewertet werden, bevor bedingte Sprünge ausgeführt werden.
Fazit
Die Absicherung logischer Schleifen und Verzweigungen durch konsequente Inkrementierung, Look-Ahead-Synchronisierung und defensive Toleranzprüfungen ist eine fundamentale Voraussetzung für die CNC-Prozesssicherheit. Die standardmäßige Verwendung des STOPRE-Befehls bei Siemens-Systemen sowie die Begrenzung von Verschachtelungen auf den Steuerungen verhindern unvorhergesehenes Werkzeugverhalten im Arbeitsraum. 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. Durch diese Maßnahmen wird das Risiko von Kollisionen minimiert und eine fehlerfreie, präzise Fertigung sichergestellt.
Häufig gestellte Fragen (FAQ)
Wie lässt sich ein unbemerkter Toleranzfehler bei WHILE-Schleifen auf Fanuc-Steuerungen verhindern?
Wenn Berechnungen innerhalb der Schleife ungenau gerundet werden, kann die Abbruchbedingung übersprungen werden, was zu zusätzlichen, unerwünschten Schnitten führt. 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. Aktion: Programmieren Sie nach dem Schleifenende einen expliziten Kontrollblock, der die finalen Istwerte der bearbeiteten Koordinaten mit den Sollwerten vergleicht und bei Überschreitung einen Alarm über #3000 auslöst.
Warum führen GOTO-Sprünge ohne aktivierte Parameter 6000#1 und 6000#4 zu Maßabweichungen auf Fanuc-Maschinen?
Ohne die Caching-Parameter 6000#1 (MGO) und 6000#4 (HGO) muss die Steuerung das Programm Zeile für Zeile nach der Sprungadresse N absuchen, was den Prozessor ausbremst. Diese Verarbeitungsverzögerung (block processing time) führt bei hohen Vorschüben zu einer kurzen Verweilzeit des Werkzeugs auf der Kontur, was Maßabweichungen und Markierungen verursacht. Aktion: Setzen Sie die Parameter 6000#1 und 6000#4 auf 1, um die Verzweigungssuche im Speicher der Steuerung zu cachen und einen fließenden Übergang ohne Schnittkraftschwankungen zu gewährleisten.
Wie verhindert der STOPRE-Befehl fehlerhafte Ausschussteile bei der Verwendung von IF-Entscheidungen im Siemens-G-Code?
Der Look-Ahead-Puffer liest und interpretiert NC-Sätze weit im Voraus, sodass logische Verzweigungen auf veralteten Koordinaten- oder Werkzeugzuständen basieren, bevor die physische Achse die Position tatsächlich erreicht hat. Das kann dazu führen, dass wichtige Sicherheitsabfragen umgangen werden und Ausschuss entsteht. Aktion: Schreiben Sie den STOPRE-Befehl immer in eine separate Zeile direkt vor der IF-Abfrage, um den Vorlaufpuffer zu stoppen und die Auswertung mit den realen Achspositionen zu synchronisieren.
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
Fanuc 3D-Kollisionsüberwachung einrichten und parametrieren
Richten Sie die Fanuc 3D-Kollisionsüberwachung prozesssicher ein. Lernen Sie Parameter 10930 zu konfigurieren, Alarm PS0492 zu beheben und Crashs zu vermeiden.
Fanuc Custom Macro aktivieren: Parameter 0932 & 8135 einrichten
Erfahren Sie, wie Sie die Fanuc Custom Macro Parameter 0932 und 8135 einrichten, Variablenregister erweitern und Alarm 123 für prozesssichere CNC-Abläufe beheben.
Fanuc Standzeitüberwachung Parameter: G10 L3 Konfiguration
Anleitung zur Fanuc Standzeitüberwachung: Konfigurieren Sie Parameter 6800 und 6810 richtig. Vermeiden Sie Crash-Alarme 156 und 159 für prozesssichere CNC-Zyklen.
Fanuc Rigid Tapping: Parameter für optimale Beschleunigung einstellen
Lernen Sie die Konfiguration der optimalen Fanuc Rigid Tapping Beschleunigung. Vermeiden Sie Ausschuss durch Tuning von Parameter 11420#0 und Beheben von SP0741.