Programmierung

Messergebnisse, V.A.MESS.<Achse> V.A.MERF.<Achse> V.A.MOFFS.<Achse> V.A.MEIN.<Achse>

Beim Messen über den NC-Befehl G100/G310 wird eine Achsposition nach dem Auslösen eines Messtasters gespeichert. Nach Auslösen des Messinterrupt wird die aktuelle Position gespeichert (gelatcht) und die Messfahrt eventuell beendet.

Die durch den Messvorgang erfassten Positionen können im NC-Programm durch G101/G102 (Verrechnung des Messoffsets) sowie spezielle achsspezifische Variablen verwendet werden.

Beispiele:

V.A.MESS.X

Messwert von Achse X in dem Koordinatensystem, in dem gemessen wurde inklusive aller Verschiebungen.

V.A.MERF.X

Messen ist erfolgt (TRUE/FALSE). Gibt an, ob der Messinterrupt vor Erreichen der Zielposition eingetroffen ist.

V.A.MOFFS.X

Distanz zwischen Messposition und programmierter Zielposition.

V.A.MEIN.X

Der aktuell mit G101 eingerechnete Messoffset der X-Achse. Dieser wirkt wie eine additive Verschiebung der programmierten Position:

                           PCS’ = PCS + MessoffsetG101

V.G.MEAS_TYPE

Wert des aktuell aktiven Messtyps   [ab V2.11.2022.03]

Weitere Informationen über die Verwendung der Funktionalität Messen können der Programmieranleitung [PROG// Kapitel Messfunktionen] entnommen werden.

V.A.MEAS.ACS.VALUE.<Achse>

V.A.MEAS.PCS.VALUE.<Achse>

Ab Version V2.11.2020.07 ergänzen die achsspezifischen Variablen V.A.MEAS.ACS.VALUE und V.A.MEAS.PCS.VALUE die Variable V.A.MESS. Die zusätzlichen Variablen liefern den Messwert sowohl im Achskoordinatensystem inklusive aller Verschiebungen als auch den Messwert im Programmierkoordinatensystem.

Beispiele:

V.A.MEAS.ACS.VALUE.X

Messwert von Achse X im Achskoordinatensystem (ACS). Im Wert sind alle Verschiebungen eingerechnet

V.A.MEAS.PCS.VALUE.X

Messwert von Achse X im Programmierkoordinatensystem (PCS).

Im Wert sind keine Verschiebungen eingerechnet. Über die Angabe im Werkzeugradius kann der Kugelradius des Messtasters bei der Berechnung des PCS-Wertes berücksichtigt werden (siehe nachfolgendes Beispiel). Das Einrechnen des Kugelradius kann mit dem Kanalparameter P-CHAN-00311 gesteuert werden.

Programmierbeispiel

Messen mit einem Messtasterwerkzeug mit 2mm Radius

%meas_example
:
;Messtasterwerkz.
;mit Radius 2 mm
D1
:
G0 X150 Z200
G100 Z20
:
M30
Programmierung 1:
Messen mit einem Messtasterwerkzeug mit 2mm Radius

Einrechnen des Messoffsets mit G101, G102

Im NC-Programm kann mit

Syntax:

G101 <Achsname><fact> { <Achsname><fact> }

nicht modal

ein Offset eingerechnet werden.

Der Messoffset ist die Distanz zwischen aufgezeichneter Messposition und der programmierten Zielposition. Er berechnet sich wie folgt:

Messoffset = Messposition - Zielposition

Für die programmierten Koordinaten wird der aus den Messwerten ermittelte Messoffset als weitere Verschiebung zwischen programmierten und absoluten Koordinaten eingerechnet. Es erfolgt eine Fehlermeldung, wenn zuvor keine Messwerte erfasst wurden. Die Zahl hinter der Achsbezeichnung stellt den Faktor für die Einrechnung dar.

Die Verschiebung durch den Messoffset gilt bis zur Abwahl mit G102.

Syntax:

G102 { <Achsname><dummy_expr> }

nicht modal

Programmierung 2:
Messoffset

Werden mehrere Messfahrten sequentiell programmiert, so ist bei der Verwendung der achsspezifischen Variablen V.A.MERF zu berücksichtigen, dass für nicht programmierte Achsen die Werte aus der vorherigen Messung erhalten bleiben.

Für die Berechnung von V.A.MESS.*, V.A.MEAS.* und V.A.MOFFS.* gelten folgende Zusammenhänge (Beispiel für X-Achse):

V.A.

Ohne
Transformation
(2,5D)

Mit kartesischer
Transformation
#CS ON

Mit kinematischer
Transformation
#TRAFO ON

MESS.X

ACS-Position

(beinhaltet alle
Verschiebungen)

Umrechnung der
ACS-Position inklusive Verschiebungen ins aktive Koordinatensystem (PCS)

Umrechnung der
ACS-Position inklusive Verschiebungen ins aktive Koordinatensystem (PCS)

MEAS.ACS.VALUE.X

ACS-Position

(beinhaltet alle
Verschiebungen)

ACS-Position

(beinhaltet alle
Verschiebungen)

ACS-Position

(beinhaltet alle
Verschiebungen)

MEAS.PCS.VALUE.X

PCS Position

(ohne
Verschiebungen)

Umrechnung der
ACS-Position ins aktive Koordinatensystem (PCS) ohne Verschiebungen

Umrechnung der
ACS-Position ins aktive Koordinatensystem (PCS) ohne Verschiebungen

MOFFS.X

= V.A.MESS.X
   – V.A.PROG.X
   – Zero Shifts
   – Tool Offset

= V.A.MESS.X
   – V.A.PROG.X
   – Zero Shifts
   – Tool Offset

= V.A.MESS.X
   – V.A.PROG.X
   – Zero Shifts

Programmierbeispiel

Messen im ACS ohne Verschiebungen

%meas1
N05 #MEAS MODE[1]
N10 G01 G90 Z200 F2000
N20 G100 Z20 F2000
N30 #MSG SYN["V.A.MESS.Z=%f", V.A.MESS.Z]
                            -> V.A.MESS.Z = 100.0
N31 #MSG SYN["V.A.MEAS.ACS.VALUE.Z=%f",
                               V.A.MEAS.ACS.VALUE.Z]
                            -> V.A.MEAS.ACS.VALUE.Z = 100.0
N32 #MSG SYN["V.A.MEAS.PCS.VALUE.Z=%f",
                               V.A.MEAS.PCS.VALUE.Z]
                            -> V.A.MEAS.PCS.VALUE.Z = 100.0
N40 #MSG SYN["V.A.MOFFS.Z=%f", V.A.MOFFS.Z]
                            -> V.A.MOFFS.Z = 80.0
N50 #MSG SYN["V.A.MEIN.Z=%f", V.A.MEIN.Z]
                           -> V.A.MEIN.Z = 0.0
N60 G101 Z1
N70 #MSG SYN["V.A.MEIN.Z=%f", V.A.MEIN.Z]
                           -> V.A.MEIN.Z = 80.0
N80 G01 Z100 F1000
N90 #MSG SYN["V.A.ABS.Z=%f", V.A.ABS.Z]
                          -> V.A.ABS.Z = 180.0
N100 G102 Z1
N110 #MSG SYN["V.A.MEIN.Z=%f", V.A.MEIN.Z]
                            -> V.A.MEIN.Z = 0.0
N120 G01 Z100 F1000
N130 #MSG SYN["V.A.ABS.Z=%f", V.A.ABS.Z]
                           -> V.A.ABS.Z = 100.0
N140 M30
Programmierung 3:
Messen ohne Verschiebungen

Programmierbeispiel

Messen im ACS mit Bezugspunktverschiebung

%meas2
N05 #MEAS MODE[1]
N10 G92 Z33
N20 G01 G90 Z200 F2000
N30 G100 Z20 F2000
N40 #MSG SYN["V.A.MESS.Z=%f", V.A.MESS.Z]
                           -> V.A.MESS.Z = 100.0
N41 #MSG SYN["V.A.MEAS.ACS.VALUE.Z=%f",
                            V.A.MEAS.ACS.VALUE.Z]
                         -> V.A.MEAS.ACS.VALUE.Z = 100.0
N42 #MSG SYN["V.A.MEAS.PCS.VALUE.Z=%f",
                            V.A.MEAS.PCS.VALUE.Z]
                         -> V.A.MEAS.PCS.VALUE.Z = 67.0
N50 #MSG SYN["V.A.MOFFS.Z=%f",
                            V.A.MOFFS.Z]
                         -> V.A.MOFFS.Z = 47.0
N60 #MSG SYN["V.A.MEIN.Z=%f", V.A.MEIN.Z]
                           -> V.A.MEIN.Z = 0.0
N70 G101 Z1
N80 #MSG SYN["V.A.MEIN.Z=%f", V.A.MEIN.Z]
                           -> V.A.MEIN.Z = 47.0
N90 G01 Z100 F1000
N100 #MSG SYN["V.A.ABS.Z=%f", V.A.ABS.Z]
                           -> V.A.ABS.Z = 180.0
N110 G102 Z1
N120 #MSG SYN["V.A.MEIN.Z=%f", V.A.MEIN.Z]
                            -> V.A.MEIN.Z = 0.0
N130 G01 Z100 F1000
N140 #MSG SYN["V.A.ABS.Z=%f", V.A.ABS.Z]
                           -> V.A.ABS.Z = 133.0
N150 M30
Programmierung 4:
Messen mit Bezugspunktverschiebung

Programmierbeispiel

Messen mit CS, nur Verschiebung

%meas3
N05 #MEAS MODE[1]
N10 #CS ON[0,0,33,0,0,0]
N20 G01 G90 Z200 F2000
N30 G100 Z20 F2000
N40 #MSG SYN["V.A.MESS.Z=%f", V.A.MESS.Z]
                           -> V.A.MESS.Z = 67.0
N41 #MSG SYN["V.A.MEAS.ACS.VALUE.Z=%f",
                         V.A.MEAS.ACS.VALUE.Z]
                      -> V.A.MEAS.ACS.VALUE.Z = 100.0
N42 #MSG SYN["V.A.MEAS.PCS.VALUE.Z=%f",
                         V.A.MEAS.PCS.VALUE.Z]
                      -> V.A.MEAS.PCS.VALUE.Z = 67.0
N50 #MSG SYN["V.A.MOFFS.Z=%f", V.A.MOFFS.Z]
                            -> V.A.MOFFS.Z = 47.0
N60 #MSG SYN["V.A.MEIN.Z=%f", V.A.MEIN.Z]
                           -> V.A.MEIN.Z = 0.0
N70 G101 Z1
N80 #MSG SYN["V.A.MEIN.Z=%f", V.A.MEIN.Z]
                           -> V.A.MEIN.Z = 47.0
N90 G01 Z100 F1000
N100 #MSG SYN["V.A.ABS.Z=%f", V.A.ABS.Z]
                           -> V.A.ABS.Z = 147.0
N110 G102 Z1
N120 #MSG SYN["V.A.MEIN.Z=%f", V.A.MEIN.Z]
                            -> V.A.MEIN.Z = 0.0
N130 G01 Z100 F1000
N140 #MSG SYN["V.A.ABS.Z=%f", V.A.ABS.Z]
                           -> V.A.ABS.Z = 100.0
N150 #CS OFF
N160 M30
Programmierung 5:
Messen mit CS, nur Verschiebung

Programmierbeispiel

Messen mit CS, Verschiebung und Rotation

%meas4
N05 #MEAS MODE[1]
N10 #CS ON[0,0,75,0,15,0]
N20 G01 G90 X150 Z100 F2000
N30 G100 Z-10 F1000
N40 #MSG SYN["V.A.MESS.Z=%f", V.A.MESS.Z]
                           -> V.A.MESS.Z = 20.0
N41 #MSG SYN["V.A.MEAS.ACS.VALUE.Z=%f",
                              V.A.MEAS.ACS.VALUE.Z]
                           -> V.A.MEAS.ACS.VALUE.Z = 55.5
N42 #MSG SYN["V.A.MEAS.PCS.VALUE.Z=%f",
                              V.A.MEAS.PCS.VALUE.Z]
                           -> V.A.MEAS.PCS.VALUE.Z = 20.0
N50 #MSG SYN["V.A.MOFFS.Z=%f", V.A.MOFFS.Z]
                            -> V.A.MOFFS.Z = 30.0
N60 #MSG SYN["V.A.MEIN.Z=%f", V.A.MEIN.Z]
                           -> V.A.MEIN.Z = 0.0
N70 G101 Z1
N80 #MSG SYN["V.A.MEIN.Z=%f", V.A.MEIN.Z]
                           -> V.A.MEIN.Z = 30.0
N90 G01 Z50 F1000
N100 #MSG SYN["V.A.ABS.Z=%f", V.A.ABS.Z]
                           -> V.A.ABS.Z = 80.0
N110 G102 Z1
N120 #MSG SYN["V.A.MEIN.Z=%f", V.A.MEIN.Z]
                            -> V.A.MEIN.Z = 0.0
N130 G01 Z50 F1000
N140 #MSG SYN["V.A.ABS.Z=%f", V.A.ABS.Z]
                           -> V.A.ABS.Z = 50.0
N150 #CS OFF
N160 M30
Programmierung 6:
Messen mit CS, Verschiebung und Rotation