Skip to main content
CNC.wiki

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.

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

CNC CARE Mitgründer

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

MerkmalTechnische Details
BefehlscodesSIN, COS, SQRT, SQR, POT, POW
Modale GruppeMathematische / Arithmetische Makrofunktionen (Nicht-modal)
Unterstützte MarkenFanuc, Siemens, Mitsubishi
Kritische ParameterFanuc: 6004#1 (MFZ), 6004#0 (NAT), 6008#0 (F16); Siemens: R0 bis R299; Mitsubishi: #1273 (ASIN-Ausgabebereich), #1259 (Makro-Priorität)
HaupteinschränkungenWinkel 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#0 oder 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:

MarkeParameterBeschreibungGültige Einstellungen
Fanuc6004#1 (MFZ)Handhabt den Unterlauf mikroskopischer trigonometrischer Ergebnisse.0 = Unterlauf; 1 = Normalisierung auf 0
Fanuc6004#0 (NAT)Bestimmt den Ausgabebereich für inverse trigonometrische Funktionen.0 = 0° bis 360.0°; 1 = -180.0° bis 180.0°
Fanuc6008#0 (F16)Steuert die Kompatibilität der Legacy-Berechnungspräzision.0 = Neu; 1 = Kompatibel mit FS16i / FS0i-C
SiemensR0 bis R299Vordefinierte 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) erfordert SINL, 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 (R0 bis R299) speichern Fließkommazahlen. Benutzerdefinierte Real-Variablen werden mit DEF REAL definiert.
  • 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 #1273 schaltet den ASIN-Ausgabebereich um; Parameter #1259 konfiguriert 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 / ThemaFanucSiemensMitsubishi
Klammersyntax für ArgumenteEckige Klammern [] (z. B. SIN[45.0])Runde Klammern () (z. B. SIN(45.0))Eckige Klammern [] (z. B. SIN[45.0])
Formel-VerschachtelungsgrenzeMax. 5 Ebenen der Klammerverschachtelung ([])Priorisierung durch runde Klammern (), kein striktes niedriges VerschachtelungslimitMax. 5 Ebenen der Klammerverschachtelung ([])
Verschiebung des inversen trigonometrischen BereichsParameter 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äzisionsanomalienParameter 6004#1 (MFZ) normalisiert Berechnungen ≤ 1.0×10−8 auf 0Nativer Befehl TRUNC() schneidet die Fließkomma-REAL-Präzisionsdrift vor logischen Vergleichen abParameter #1259 legt die Priorität und Verarbeitungsgeschwindigkeit für die Makroauswertung fest
Potenz- / ExponentenfunktionenStandard-Makromultiplikation; EXP für natürlichen ExponentenVordefinierte POT(x) (Quadrat) oder benutzerdefinierte ExponentenpotenzenNatives POW[Basis, Exponent] (nur M8-Serie)
In-Line-VerfahrberechnungenNicht 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 #1 und #2 und weist das Ergebnis der Variable #100 zu. Wenn die Berechnung der Summe von #1 und #2 ein 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 #101 zugewiesen.
  • Satz 3: Der Kosinus der Variable #3 (ausgewertet in Grad) wird berechnet und zum Wert in #101 addiert. Die Endsumme wird in der Variable #102 gespeichert.

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 ATAN2 berechnet 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 Parameter R40.
  • Satz 2: Die Steuerung berechnet die Quadratwurzel aus der Summe der Quadrate der Parameter R1 und R2 und speichert das Ergebnis im Parameter R15.
  • Satz 3: Der Befehl STOPRE stoppt 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 R5 vom Sinus von 25.3 Grad abgezogen wird, mit einer Vorschubgeschwindigkeit (feedrate) von 200 mm/min.
  • Satz 5: Die Steuerung multipliziert zuerst R1 mit R2 (aufgrund der Standard-Operatorpriorität) und addiert dann R3, wobei das Ergebnis im Parameter R14 gespeichert 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 #501 gespeichert.
  • Satz 2: Die Steuerung berechnet die Quadratwurzel aus der Summe der Quadrate von 10.0 und 20.0 und weist das Ergebnis der Variable #573 zu.
  • Satz 3: Die Steuerung wertet die verschachtelten Klammern von innen nach außen aus: Addiert #113 und #114, multipliziert das Ergebnis mit #115, berechnet den Sinus, multipliziert diesen mit der Differenz aus #111 und #112 und berechnet schließlich die Quadratwurzel, um das Ergebnis in #101 zu speichern. Es werden bis zu 5 Verschachtelungsebenen unterstützt.
  • Satz 4: Der Wert 2.5 wird mit der M8-exklusiven Funktion POW mit 3.5 potenziert, wobei das Ergebnis der Variable #107 zugewiesen wird.

Fehleranalyse

AlarmcodeAuslöserBediener-SymptomUrsache / Behebung
Fanuc Alarm 119Ein 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 112Eine 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 118Klammerverschachtelung 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 1019Die 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 P282Eine 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 P225Ein 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 mit SIN und COS verwendet, um Winkelberechnungen und Quadrantenpositionen aufzulösen.
  • ABS: Wertet den absoluten Wert eines Ausdrucks aus, um zu verhindern, dass negative Zahlen an die SQRT-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.

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