Mathematische Funktionen in CNC-Makros: SIN, COS und SQRT
Erfahren Sie, wie Sie mathematische Funktionen wie SIN, COS und SQRT in CNC-Makros für Fanuc, Siemens und Mitsubishi anwenden, um Ausschuss aktiv zu vermeiden.
Einleitung
Eine unkontrollierte Achsbewegung im Eilgang, die eine Werkzeugspindel oder einen Werkzeugrevolver (turret) direkt in eine feste Spannbacke (vise jaw), eine Spannbrücke (clamp) oder das Spannfutter (chuck) rammt, ist die unmittelbare mechanische Folge fehlerhafter trigonometrischer Berechnungen in CNC-Makros. Wenn Programmierer mathematische Funktionen wie SIN, COS oder SQRT nutzen, um Werkzeugwege dynamisch auf der Maschine zu berechnen, können sich mikroskopische Rundungsfehler (floating-point dust) unbemerkt summieren. Wird diese fehlerhafte Variable anschließend für die nächste Positionierung verwendet, führt dies zu einem unkontrollierten mathematischen Sprung. Die Steuerung berechnet einen fehlerhaften Bahnvektor, was die Werkzeugbahn verschiebt. Wird dieser Parameter nicht verifiziert, liegt das Ergebnis außerhalb der Toleranz — und der Fehler zeigt sich erst bei der Endmessung oder führt direkt zu einem kapitalen Crash und teurem Ausschuss. Nur durch eine strikte Eingangsvalidierung der mathematischen Werte und die richtige Steuerungskonfiguration lassen sich solche verheerenden Kollisionen im Arbeitsraum zuverlässig verhindern.
Technische Übersicht
| Merkmal | Technische Details |
|---|---|
| Befehlscodes | SIN, COS, SQRT, SQR, POT, POW |
| Modale Gruppe | Mathematische / Arithmetische Makrofunktionen (Nicht-modal) |
| Unterstützte Marken | Fanuc, Siemens, Mitsubishi |
| Kritische Parameter | Fanuc: 6004#1 (MFZ), 6004#0 (NAT), 6008#0 (F16); Siemens: R0 bis R299; Mitsubishi: #1273 (ASIN-Ausgabebereich), #1259 (Makro-Priorität) |
| Haupteinschränkungen | Winkel müssen in Grad angegeben werden; Division durch Null und TAN[90.0] sind verboten; die Verschachtelung ist auf 5 Ebenen bei Fanuc und Mitsubishi begrenzt. |
Schnellleser
- Umschließen Sie Argumente für mathematische Funktionen bei Fanuc und Mitsubishi mit eckigen Klammern
[]und bei Siemens mit runden Klammern(). - Stellen Sie sicher, dass alle trigonometrischen Eingabewerte (
SIN,COS,TAN) strikt in Grad angegeben werden, da Bogenmaß (radians) zu fehlerhaften Berechnungen führt. - Bereinigen Sie Variablenwerte mithilfe logischer Prüfungen, bevor Sie diese an eine
SQRT-Funktion übergeben, um Berechnungen mit negativer Basis zu verhindern. - Programmieren Sie einen Vorlaufstopp (
STOPRE) auf Siemens-Steuerungen, um das LookAhead-Dekodieren einzufrieren, bevor Sie auf berechnete Variablen verweisen. - Beachten Sie die Verschachtelungsgrenzen, indem Sie die Klammern bei Fanuc und Mitsubishi auf maximal 5 Ebenen beschränken, um Pufferüberläufe zu vermeiden.
- Nutzen Sie Parameter wie Fanuc
6004#0oder Mitsubishi#1273, um Quadrantenbereiche für inverse trigonometrische Ergebnisse global zu verschieben.
Grundlegende Konzepte
Eigene Makro-Engines ermöglichen es CNC-Steuerungen, komplexe trigonometrische und arithmetische Operationen in Echtzeit auszuführen. Durch die Nutzung von Funktionen wie SIN, COS und SQRT können Entwickler parametrische Masterprogramme erstellen, die Werkzeugwege direkt an der Maschine dynamisch berechnen. Diese Fähigkeit erübrigt den Export tausender fester Koordinaten aus externer CAD/CAM-Software bei geringfügigen Konstruktionsänderungen. Stattdessen werden Parameter wie Durchmesser, Winkelschritte oder Tiefen direkt an das Makro übergeben, sodass die Maschine ihre eigenen Koordinatenvektoren berechnen kann.
Bei der Programmierung benutzerdefinierter Makros mit G65 Custom Macro B werden mathematische Funktionen häufig mit logischen Makro-Operatoren kombiniert, um Sicherheitsprüfungen durchzuführen. Eine korrekte Parameterzuordnung ist auch bei der G65 Makro-Argumentübergabe erforderlich, um sicherzustellen, dass mathematische Variablen korrekt befüllt werden.
Die trigonometrische Mathematik kann jedoch geringfügige mathematische Anomalien anstelle exakter Werte erzeugen, die als Fließkommastau (floating-point dust) bezeichnet werden. Wenn diese mikroskopischen Rundungsfehler nicht kontrolliert werden, können aufeinanderfolgende Berechnungen im Laufe der Zeit eine Koordinatendrift akkumulieren. Eine CNC-Steuerung, die Positionierbewegungen auf der Grundlage nicht normalisierter Variablen ausführt, läuft Gefahr, das Werkzeug von der Bahn abzubringen. Um diese Koordinatendrift zu verhindern, müssen Programmierer eine mathematische Bereinigung und Fehlerprüfungslogik implementieren, um sicherzustellen, dass alle Variablen innerhalb sicherer Grenzen liegen, bevor Verfahrbefehle ausgeführt werden.
Befehlsstruktur
Arithmetische Makrobefehle folgen einer strukturierten Syntax, bei der das berechnete mathematische Ergebnis direkt einer lokalen, gemeinsamen oder Systemvariable zugewiesen wird. Bei Fanuc- und Mitsubishi-Steuerungen wird diese Syntax als Variablenzuweisung ausgeführt, wobei eckige Klammern verwendet werden, um die Argumente der trigonometrischen oder Quadratwurzelfunktionen zu umschließen. Siemens verfolgt einen anderen Ansatz, indem es die mathematische Syntax direkt in seine hochsprachliche NC-Programmiersprache integriert, was die Auswertung von Variablen über die Standard-Klammerschreibweise ermöglicht.
Die Priorität der Operationen folgt auf allen drei Plattformen den Standard-Mathematikregeln. Funktionen werden zuerst ausgewertet, gefolgt von Multiplikation und Division, und schließlich Addition und Subtraktion. Eckige oder runde Klammern müssen verwendet werden, um diese Standardreihenfolge zu überschreiben und explizite Berechnungswege zu definieren. Wenn ein Programmierer darauf verzichtet, mehrstufige Formeln zu klammern, verarbeitet die Steuerung die Arithmetik sequenziell, was die endgültige Koordinatenausgabe drastisch verändern kann.
Standard-Syntaxformate für jede Marke:
- Fanuc:
#i = SIN[#j],#i = COS[#j],#i = SQRT[#j]oder#i = SQR[#j] - Siemens:
R_var = SIN(x),R_var = COS(x),R_var = SQRT(x),R_var = POT(x),R_var = ATAN2(y, x) - Mitsubishi:
#i = SIN[#j],#i = COS[#j],#i = SQRT[#j]oder#i = SQR[#j],#i = POW[#j, #k]
Kritische Parameter zur Steuerung der Mathematik über Systeme hinweg:
| Marke | Parameter | Beschreibung | Gültige Einstellungen |
|---|---|---|---|
| Fanuc | 6004#1 (MFZ) | Handhabt den Unterlauf mikroskopischer trigonometrischer Ergebnisse. | 0 = Unterlauf; 1 = Normalisierung auf 0 |
| Fanuc | 6004#0 (NAT) | Bestimmt den Ausgabebereich für inverse trigonometrische Funktionen. | 0 = 0° bis 360.0°; 1 = -180.0° bis 180.0° |
| Fanuc | 6008#0 (F16) | Steuert die Kompatibilität der Legacy-Berechnungspräzision. | 0 = Neu; 1 = Kompatibel mit FS16i / FS0i-C |
| Siemens | R0 bis R299 | Vordefinierte arithmetische Parameter (Fließkommaformat). | ±0.0000001 bis 99999999 |
| Mitsubishi | #1273 (ext09/bit0) | Verschiebt den Ausgabebereich des inversen Sinus (ASIN). | 0 = -90° bis 90°; 1 = 270° bis 90° |
| Mitsubishi | #1259 (set31/bit7) | Bestimmt die interne Makroverarbeitungsmethode und die Berechnungspriorität. | Benutzerdefinierte Bit-Einstellungen |
Markenanwendungen
Fanuc
Fanuc-Steuerungen verwalten die mathematische Präzision und den Unterlauf über die Parameter 6004#1 und 6004#0. Der Parameter 6004#1 steuert, ob infinitesimale Berechnungen auf Null normalisiert werden, während 6004#0 den Ausgabebereich der inversen trigonometrischen Funktionen verschiebt.
Arithmetische Variablen werden mit eckigen Klammern zugewiesen, um Ausdrücke auszuwerten:
; Fanuc-Beispiele:
#100 = SQRT[#1 * #1 + #2 * #2] ; Hypotenuse berechnen
#101 = SIN[45.0] * 50.0 ; Sinuskomponente bestimmen
#102 = #101 + COS[#3] ; Mit Kosinuskomponente addieren
- Parameter:
6004#1(MFZ) normalisiert die Unterlauf-Mathematik;6004#0(NAT) schaltet die ATAN/ASIN-Bereiche um;6008#0(F16) erzwingt Kompatibilitätsmodi. - Alarme: Alarm 119 (Unzulässiges Argument für negative SQRT), Alarm 112 (Division durch Null oder TAN[90]), Alarm 118 (Klammerverschachtelungsfehler), Alarm 111 (Überlauf der berechneten Daten).
- Versionsunterschiede: Standardmakros nutzen universelle Befehle. PMC-Ladder/Structured-Text-Umgebungen (ST) greifen auf typisierte Funktionsbausteine basierend auf der Speichergröße zurück: Einfache Genauigkeit (16 Byte) nutzt
SINR,COSR,SQRTR; doppelte Genauigkeit (20 oder 28 Byte) erfordertSINL,COSL,SQRTL.
Warnung: Das Überschreiten von fünf Ebenen der Klammerverschachtelung [] in einer einzigen Befehlszeile löst sofort den Alarm 118 aus, was den Ausführungspuffer der Maschine stoppt.
Siemens
Siemens Sinumerik-Steuerungen nutzen vordefinierte Variablen R0 bis R299 zur Speicherung berechneter arithmetischer Werte. Die Fließkommawerte werden intern im standardmäßigen 64-Bit-IEEE-Format gespeichert, das bei exakten logischen Vergleichen anfällig für Präzisionsdrift ist.
Formeln können mit runden Klammern berechnet und gespeichert oder direkt in Verfahrblöcke integriert werden:
; Siemens-Beispiele:
R40 = ATAN2(30.5, 80.1) ; Quadrantenbezogenen Arkus-Tangens berechnen
R15 = SQRT(R1 * R1 + R2 * R2) ; Hypotenuse berechnen
STOPRE ; Vorlaufstopp-Befehl
N40 G1 Z=SIN(25.3)-R5 F200 ; Direkte trigonometrische In-Line-Verfahrbewegung
- Parameter: R-Parameter (
R0bisR299) speichern Fließkommazahlen. Benutzerdefinierte Real-Variablen werden mitDEF REALdefiniert. - Alarme: Alarm 1019 (Fließkomma-Arithmetikfehler / FPU-Ausnahme), Alarm 1020 (Fließkomma-Arithmetikfehler im Kompilierzyklus).
- Versionsunterschiede: Einstiegssysteme der SINUMERIK 808D-Familie weisen standardmäßig genau 300 R-Parameter zu. High-End-Modelle wie die SINUMERIK 840D sl und die SINUMERIK ONE unterstützen umfangreiche, dynamische Variablen-Arrays und komplexe Mehrachsen-Orientierungstransformationen.
Warnung: Wenn kein Vorlaufstopp (STOPRE) befohlen wird, bevor auf einen berechneten mathematischen Wert zugegriffen wird, kann dies zu einer LookAhead-Fehlanpassung und schweren Werkzeugkollisionen führen.
Mitsubishi
Die Mitsubishi-Makroprogrammierung verwaltet trigonometrische Ausgabebereiche und Prioritätseinstellungen über die Parameter #1273 und #1259. Parameter #1273 bestimmt den Berechnungsbereich der inversen Sinusfunktion, während #1259 die Ausführungsgeschwindigkeit optimiert.
Trigonometrische Werte werden unter Verwendung eckiger Klammern ausgewertet und Variablen zugewiesen:
; Mitsubishi-Beispiele:
#501 = SIN[14] ; Sinus von 14 Grad auswerten
#573 = SQRT[10. * 10. + 20. * 20.] ; Hypotenuse berechnen
#101 = SQRT[[#111 - #112] * SIN[[#113 + #114] * #115]] ; Komplexe verschachtelte Trigonometrie
#107 = POW[2.5, 3.5] ; Potenzberechnung (nur M8-Serie)
- Parameter: Parameter
#1273schaltet den ASIN-Ausgabebereich um; Parameter#1259konfiguriert die interne Verarbeitungsmethode und die Priorität der Makroberechnung. - Alarme: Programmfehler P282 (Arithmetikfehler / negative SQRT), Programmfehler P225 (Formatfehler / nicht geschlossene Klammer), Programmfehler P241 (Negative Variablenreferenz).
- Versions-/Serienunterschiede: Exponenten über die
POW-Funktion erfordern die M8-Serie. SD-Karten für Extended Common Variable III-Dateien werden bei den Serien M800VW/M80VW direkt in die Steuerungseinheit eingesetzt, während sie bei den Serien M800VS/M80V in die Rückseite der Bedieneinheit gesteckt werden.
Warnung: Das Einfügen mathematischer Operatoren direkt in Achsadressen (wie X123+0) verschiebt den interpretierten Dezimalpunkt der Koordinate, was zu Ablesefehlern zwischen Millimeter und Mikrometer führt.
Markenvergleich
| Funktion / Thema | Fanuc | Siemens | Mitsubishi |
|---|---|---|---|
| Klammersyntax für Argumente | Eckige Klammern [] (z. B. SIN[45.0]) | Runde Klammern () (z. B. SIN(45.0)) | Eckige Klammern [] (z. B. SIN[45.0]) |
| Formel-Verschachtelungsgrenze | Max. 5 Ebenen der Klammerverschachtelung ([]) | Priorisierung durch runde Klammern (), kein striktes niedriges Verschachtelungslimit | Max. 5 Ebenen der Klammerverschachtelung ([]) |
| Verschiebung des inversen trigonometrischen Bereichs | Parameter 6004#0 verschiebt den ATAN-Bereich von 0–360.0° auf -180.0° bis 180.0° | ATAN2(,) gibt den Vektorwinkel nativ in allen vier Quadranten aus (-180° bis 180°) | Parameter #1273 verschiebt den ASIN-Bereich von -90° bis 90° auf 270° bis 90° |
| Fließkomma-Präzisionsanomalien | Parameter 6004#1 (MFZ) normalisiert Berechnungen ≤ 1.0×10−8 auf 0 | Nativer Befehl TRUNC() schneidet die Fließkomma-REAL-Präzisionsdrift vor logischen Vergleichen ab | Parameter #1259 legt die Priorität und Verarbeitungsgeschwindigkeit für die Makroauswertung fest |
| Potenz- / Exponentenfunktionen | Standard-Makromultiplikation; EXP für natürlichen Exponenten | Vordefinierte POT(x) (Quadrat) oder benutzerdefinierte Exponentenpotenzen | Natives POW[Basis, Exponent] (nur M8-Serie) |
| In-Line-Verfahrberechnungen | Nicht unterstützt (muss zuerst Variablen zugewiesen werden) | Vollständig unterstützt (mathematische Ausdrücke inline in Verfahrblöcken, z. B. Z=SIN(25.3)) | Nicht unterstützt (muss zuerst Variablen zugewiesen werden) |
Technische Analyse
Die Analyse der arithmetischen Engines von Fanuc, Siemens und Mitsubishi zeigt deutliche Unterschiede bei der Syntaxintegration, der Präzisionsverwaltung und der Pufferung im Vorlauf (preprocessor buffering). Fanuc und Mitsubishi nutzen ein klassisches Makrodesign, bei dem mathematische Operationen in isolierten Blöcken berechnet und anschließend in System- oder Benutzervariablen gespeichert werden. Diese Struktur isoliert Berechnungen von der Achsbewegung, was den Bewegungsparser schützt, aber zusätzliche Codezeilen erfordert. Siemens hingegen integriert fortgeschrittene Mathematik direkt in seinen NC-Kern, was In-Line-Berechnungen innerhalb von Verfahrblöcken ermöglicht. Dadurch können Entwickler Trigonometrie und Linearbewegung in einer einzigen Zeile kombinieren, was den Verarbeitungsaufwand reduziert und die Programmierlesbarkeit erhöht.
Auch das Präzisionsmanagement unterscheidet sich bei den drei Marken. Fanuc begegnet dem Fließkommarauschen durch den Parameter 6004#1, der Unterlaufwerte direkt auf Null normalisiert, um eine Bahndrift zu verhindern. Siemens löst die Fließkomma-Abweichungen bei seinen 64-Bit-IEEE-Variablen mithilfe der nativen Funktion TRUNC(), mit der Programmierer Nachkommastellen-Rauschen abschneiden können, bevor sie logische Koordinatenvergleiche ausführen. Für inverse Trigonometrie verwendet Fanuc den Parameter 6004#0, um ATAN-Quadranten zu verschieben, und Mitsubishi nutzt den Parameter #1273, um den ASIN-Ausgang zu drehen. Siemens umgeht diese Parameter vollständig durch den Befehl ATAN2(,), um Vektorwinkel über alle vier Quadranten aufzulösen.
Schließlich stellt die Synchronisation der Ausführung einen wesentlichen architektonischen Unterschied dar. Während Fanuc und Mitsubishi Makros sequenziell abarbeiten und bei Fehlern stoppen, kann der aktive LookAhead-Puffer von Siemens mathematische Blöcke weit vor den physischen Werkzeugbewegungen dekodieren. Wenn der Siemens-Puffer eine dynamische Geometrievariable analysiert, bevor diese durch aktive Zyklen finalisiert wurde, kommt es zu einer Fehlanpassung. Um die Bahntegrität zu wahren, verlangt Siemens von den Programmierern, einen Vorlaufstopp (STOPRE) zur Synchronisierung des Puffers zu befehlen – eine Einschränkung, die bei Fanuc- oder Mitsubishi-Steuerungen in dieser Form nicht existiert.
Programmbeispiele
Fanuc-Beispiel
#100 = SQRT[#1 * #1 + #2 * #2] ; Hypotenuse des Dreiecks berechnen
#101 = SIN[45.0] * 50.0 ; Sinus-Offsetkomponente berechnen
#102 = #101 + COS[#3] ; Mit Kosinuskomponente kombinieren
Trockenlauf (dry run)
- Satz 1: Die Steuerung berechnet die Quadratwurzel aus der Summe der Quadrate der Variablen
#1und#2und weist das Ergebnis der Variable#100zu. Wenn die Berechnung der Summe von#1und#2ein negatives Ergebnis liefert oder das Argument negativ ist, löst die CNC den Alarm 119 aus. - Satz 2: Der Sinus von 45.0 Grad wird berechnet und mit 50.0 multipliziert. Das Ergebnis wird der Variable
#101zugewiesen. - Satz 3: Der Kosinus der Variable
#3(ausgewertet in Grad) wird berechnet und zum Wert in#101addiert. Die Endsumme wird in der Variable#102gespeichert.
Siemens-Beispiel
R40 = ATAN2(30.5, 80.1) ; Quadrantenbezogenen Arkus-Tangens berechnen
R15 = SQRT(R1 * R1 + R2 * R2) ; Hypotenuse des Dreiecks berechnen
STOPRE ; Vorlaufpuffer anhalten
N40 G1 Z=SIN(25.3)-R5 F200 ; Z-Achse unter Verwendung von In-Line-Mathematik verfahren
R14 = R1 * R2 + R3 ; Priorität: R1 mit R2 multiplizieren, dann R3 addieren
Trockenlauf
- Satz 1: Die Funktion
ATAN2berechnet den Winkel des Vektors, der durch die Koordinaten 30.5 (Y) und 80.1 (X) gebildet wird, löst den genauen Quadranten zwischen -180 und +180 Grad auf und speichert ihn im ParameterR40. - Satz 2: Die Steuerung berechnet die Quadratwurzel aus der Summe der Quadrate der Parameter
R1undR2und speichert das Ergebnis im ParameterR15. - Satz 3: Der Befehl
STOPREstoppt den LookAhead-Vorlaufpuffer und zwingt die CNC zu warten, bis alle vorherigen Rechenoperationen vollständig ausgewertet sind, bevor der nächste Satz gelesen wird. - Satz 4: Die Steuerung führt eine Linearbewegung entlang der Z-Achse zu einer Position aus, die berechnet wird, indem der Wert des Parameters
R5vom Sinus von 25.3 Grad abgezogen wird, mit einer Vorschubgeschwindigkeit (feedrate) von 200 mm/min. - Satz 5: Die Steuerung multipliziert zuerst
R1mitR2(aufgrund der Standard-Operatorpriorität) und addiert dannR3, wobei das Ergebnis im ParameterR14gespeichert wird.
Mitsubishi-Beispiel
#501 = SIN[14] ; Sinus von 14 Grad auswerten
#573 = SQRT[10. * 10. + 20. * 20.] ; Hypotenuse berechnen
#101 = SQRT[[#111 - #112] * SIN[[#113 + #114] * #115]] ; Komplexe verschachtelte Trigonometrie
#107 = POW[2.5, 3.5] ; 2.5 mit 3.5 potenziert
Trockenlauf
- Satz 1: Der Sinus von 14 Grad wird berechnet und in der Variable
#501gespeichert. - Satz 2: Die Steuerung berechnet die Quadratwurzel aus der Summe der Quadrate von 10.0 und 20.0 und weist das Ergebnis der Variable
#573zu. - Satz 3: Die Steuerung wertet die verschachtelten Klammern von innen nach außen aus: Addiert
#113und#114, multipliziert das Ergebnis mit#115, berechnet den Sinus, multipliziert diesen mit der Differenz aus#111und#112und berechnet schließlich die Quadratwurzel, um das Ergebnis in#101zu speichern. Es werden bis zu 5 Verschachtelungsebenen unterstützt. - Satz 4: Der Wert 2.5 wird mit der M8-exklusiven Funktion
POWmit 3.5 potenziert, wobei das Ergebnis der Variable#107zugewiesen wird.
Fehleranalyse
| Alarmcode | Auslöser | Bediener-Symptom | Ursache / Behebung |
|---|---|---|---|
| Fanuc Alarm 119 | Ein negatives Argument wird innerhalb einer SQRT-Funktion angegeben oder ein BCD-Argument ist negativ. | Achsbewegung stoppt und auf dem Bildschirm wird "119 ILLEGAL ARGUMENT" angezeigt, was die Ausführung anhält. | Ursache: Die Eingabevariable ergab einen negativen Wert. Behebung: Bereinigen Sie die Variable vor der Berechnung mit einer logischen IF-Abfrage, um sicherzustellen, dass die Basis ≥ 0 ist. |
| Fanuc Alarm 112 | Eine Division durch Null wird versucht oder ein Tangens-Befehl wird bei genau 90 Grad (TAN[90.0]) aufgerufen. | Die Maschine stoppt mitten im Zyklus und zeigt auf dem Bedienfeld "112 DIVIDED BY ZERO" an. | Ursache: Ein Variablennenner ergab Null oder TAN wurde bei 90.0° ausgeführt.Behebung: Fügen Sie vor der Verarbeitung eine bedingte Prüfung ein, um sicherzustellen, dass der Nenner nicht Null und der Winkel nicht 90.0° ist. |
| Fanuc Alarm 118 | Klammerverschachtelung innerhalb einer mathematischen Formel in Custom Macro B überschreitet fünf Ebenen. | Die Programm-Ausführung bricht im fehlerhaften Satz sofort ab, auf dem Bildschirm steht "118 PARENTHESIS NESTING ERROR". | Ursache: Die Formel verwendet mehr als 5 verschachtelte Klammerpaare ([]).Behebung: Vereinfachen Sie die Gleichung, indem Sie die Berechnung mithilfe von Zwischenvariablen auf mehrere Zeilen aufteilen. |
| Siemens Alarm 1019 | Die FPU des Prozessors löst aufgrund eines fatalen Rechenfehlers (z. B. negatives SQRT-Argument oder Division durch Null) eine Ausnahme (Exception) aus. | Die Ausführung stoppt mit der Meldung "Alarm 1019: Fließkomma-Arithmetikfehler" und der NC-Kanal erfordert einen Reset. | Ursache: Eine mathematische Unmöglichkeit wurde während der Laufzeit ausgewertet. Behebung: Überprüfen Sie die Protokolldateien (abrufbar mit <Strg>+<Alt>+<D>) und fügen Sie Prüfbefehle ein, um negative Quadratwurzelwerte oder Divisionen durch Null zu verhindern. |
| Mitsubishi P282 | Eine arithmetische Operation schlägt mathematisch fehl, wie z. B. die Übergabe eines negativen Werts an SQRT oder eine Division durch Null. | Die CNC stoppt sofort und auf dem Bildschirm blinkt "Programmfehler (P282)". | Ursache: Mathematischer Verstoß während der Makroausführung (negative Quadratwurzelbasis oder Division durch Null). Behebung: Validieren Sie die Eingangsparameter mithilfe von Bereichsprüfungen, um sicherzustellen, dass die Werte innerhalb der zulässigen mathematischen Grenzen liegen. |
| Mitsubishi P225 | Ein Zeilenumbruch wird in einen Makroblock eingefügt, ohne eine Klammer ] zu schließen, oder ein unzulässiges Zeichen befindet sich innerhalb der Klammern. | Der Parser lehnt den Block ab, wirft "Programmfehler (P225)" und verhindert den Zyklusstart. | Ursache: Syntaxfehler oder fehlende schließende Klammer. Behebung: Überprüfen Sie die Ausgewogenheit der Klammern und stellen Sie sicher, dass jede öffnende Klammer [ eine passende schließende Klammer ] besitzt. |
Anwendungshinweis
Ein verheerender Spindelkollisionsschaden an Werkstückspannmitteln wie Spannbacken oder Spannbrücken tritt sofort auf, wenn der Programmierer den Vorlaufstopp (STOPRE) auf Siemens-Steuerungen unmittelbar vor der Verwendung berechneter Geometriewerte weglässt. Da der Interpreter NC-Sätze weit vor der tatsächlichen Werkzeugbewegung auswertet, liest die LookAhead-Funktion veraltete oder leere Variablenwerte ein. Dies führt dazu, dass das Werkzeug seine Sicherheitsabstände ignoriert, unkontrolliert verfährt und mit voller Eilganggeschwindigkeit in Maschinenteile crasht. Auf Fanuc-Steuerungen führt die fehlerhafte Definition des Parameters 6004#1 (MFZ) zu einer schleichenden Bahndrift: Wird dieser Parameter auf 0 belassen, reichert sich das mikroskopische Fließkommarauschen (floating-point dust) trigonometrischer Berechnungen fortlaufend in den Variablen an, anstatt sauber auf 0 abgerundet zu werden. Das Endergebnis liegt dann außerhalb der Toleranz, was erst bei der Endmessung zu spätem Ausschuss führt. Ebenso blockiert die Steuerung bei der Verwendung unzulässiger mathematischer Werte sofort die Achsbewegung und gibt den Alarm 119 (Fanuc), den Alarm 1019 (Siemens) oder den Fehler P282 (Mitsubishi) aus. Um die Prozesssicherheit zu gewährleisten, müssen Programmierer jede Variable vor der Ausführung mit logischen IF-Abfragen sanitieren und bei komplexen Gleichungen die Klammergrenzen (maximal 5 Ebenen bei Fanuc und Mitsubishi zur Vermeidung von Alarm 118 bzw. P225) konsequent einhalten.
Verwandte Befehle
TAN/ATAN2: Wird zusammen mitSINundCOSverwendet, um Winkelberechnungen und Quadrantenpositionen aufzulösen.ABS: Wertet den absoluten Wert eines Ausdrucks aus, um zu verhindern, dass negative Zahlen an dieSQRT-Funktion übergeben werden.ROUND/TRUNC: Korrigiert Fließkomma-Präzisionsanomalien und Dezimaldrift vor der Durchführung exakter logischer Vergleiche.STOPRE: Erzwingt einen Vorlaufstopp bei Siemens, um dynamische mathematische Variablen mit der aktiven Achsbewegung zu synchronisieren.POW/POT: Ermöglicht native exponentielle Potenzberechnungen auf unterstützten Steuerungsarchitekturen.
Fazit
Die Implementierung arithmetischer Funktionen in CNC-Makros erfordert eine präzise mathematische Kontrolle, um Maßabweichungen und mechanische Kollisionen auszuschließen. In der Praxis sollten Programmierer mathematische Berechnungen stets in separaten Vorbereitungsblöcken ausführen und durch logische Grenzprüfungen absichern, bevor Werte an Interpolationsbefehle übergeben werden. Auf Siemens-Systemen ist der Vorlaufstopp (STOPRE) als Standard-Sicherheitsblock vor Bewegungen mit R-Parametern zu etablieren. Auf Fanuc- und Mitsubishi-Systemen schützt die Einhaltung der Verschachtelungsgrenzen von maximal 5 Klammerebenen vor unmittelbaren Programmabbrüchen. Die korrekte Konfiguration der Systemparameter für die Fließkomma-Bereinigung und die Quadrantenverschiebung minimiert Maßabweichungen und sichert eine hohe Oberflächengüte bei der Serienfertigung komplexer Werkstücke.
Häufig gestellte Fragen (FAQ)
Wie verhindere ich eine schleichende Koordinatendrift durch Fließkommafehler (floating-point dust) bei Fanuc?
Um das Aufsummieren von minimalen Rundungsfehlern bei sich wiederholenden Berechnungen zu unterbinden, muss der Parameter 6004#1 (MFZ) auf 1 gesetzt werden. Dadurch normalisiert die Steuerung sehr kleine Rechenwerte unterhalb von 1.0*10^-8 automatisch auf genau Null. Aktion: Kontrollieren Sie vor dem Start von hochpräzisen 3D-Konturmakros den Parameter 6004#1 in den Systemdaten und setzen Sie diesen bei Bedarf auf 1.
Warum schlägt ein logischer Vergleich (IF-Abfrage) zweier berechneter R-Parameter bei Siemens fehl?
Durch die interne Speicherung im 64-Bit-IEEE-Format weisen mathematische Ergebnisse oft eine winzige Abweichung im Nachkommastellenbereich auf, was einen exakten Vergleich auf Gleichheit (==) unmöglich macht. Die Funktion TRUNC() schneidet diese Rauschwerte vor dem Vergleich ab. Aktion: Verwenden Sie bei logischen Verzweigungen in Siemens-Makros immer die Schreibweise 'IF TRUNC(R1) == TRUNC(R2)' anstelle eines direkten Variablenvergleichs.
Wie lassen sich Berechnungsfehler durch unzulässige Werte bei der Quadratwurzelberechnung (SQRT) im Vorfeld abfangen?
Wenn eine Makrovariable aufgrund geometrisvar Abweichungen einen negativen Wert annimmt und an SQRT übergeben wird, bricht die Steuerung sofort mit einem Alarm (z. B. Alarm 119 bei Fanuc oder P282 bei Mitsubishi) ab. Eine vorgeschaltete Werteüberprüfung fängt diesen Zustand prozesssicher ab. Aktion: Programmieren Sie eine Sicherheitsabfrage wie 'IF [#100 LT 0] GOTO 9000' vor dem SQRT-Befehl, um das Programm bei Fehlern geordnet zu stoppen und Ausschuss zu verhindern.
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.