Skip to main content

Koordinatensystem schieben, drehen und skalieren

G-Code: G53, G54, G55, G56

Funktion:

Die G-Code-Befehle G54, G55 und G56 schieben, drehen und skalieren das Decoderkoordinatensystem, das der Interpreterbaustein SMC_NCInterpreter intern verwendet. Die Koordinatentransformationen werden während der Ausführung der Funktionsbaustein-Instanz SMC_NCInterpreter bei allen Bahnelementen berechnet.

G-Code-Befehl G53 setzt das Decoderkoordinatensystem zurück in die ursprüngliche Lage, Orientierung und Skalierung: Es entspricht dem Maschinenkoordinatensystem.

Tipp

Verschieben und verdrehen Sie das Decoderkoordinatensystem, um den G-Code von Bahnelementen, die sich gleichen und nur durch Lage, Orientierung oder Skalierung unterscheiden, immer wieder zu verwenden.

Tipp

Das Drehen und Skalieren des Decoderkoordinatensystems funktioniert nur im Online-Interpreter (nicht im CNC-Editor).

Koordinatensysteme MCS und DCS

Das Maschinenkoordinatensystem MCS (engl. Machine Coordinate System) wird durch die verwendete Kinematik vorgegeben, die dessen Lage und Orientierung bestimmt.

Das Decoderkoordinatensystem DCS (engl. Decoder Coordinate System) ist ein Koordinatensystem, das der Interpreter (Funktionsbaustein-Instanz SMC_NCInterpreter) verwaltet. Alle Koordinatenangaben für Bewegungsbefehle werden in diesem Koordinatensystem interpretiert. Das betrifft die Zielposition einer Bewegung (X/Y/Z), aber auch einen Kreismittelpunkt (I/J/K) oder eine Ebene, die mit G15/G16/G17/G18/G19 eingestellt wird.

Das DCS wird mit den Befehlen G53/G54/G55/G56 programmiert. Sie können das DCS bezogen auf das Maschinenkoordinatensystem drehen, schieben oder skalieren, und somit innerhalb der G-Codedatei beliebig oft in Lage, Orientierung und Skalierung anpassen. Sie programmieren die Bahnelemente relativ zum DCS. Das kann beispielswiese bei gleichen Bahnenelementen in verschiedenen Lagen und Orientierungen von Vorteil sein.

Die nachfolgende Grafik zeigt eine Verschiebung (links) und eine Verschiebung mit Verdrehung (rechts).

_sm_img_mcs_dcs.png

Der Interpreter erhält über seinen Eingang eOriConv die Information, ob A/B/C als Zusatzachsen behandelt werden oder als Orientierungswerte. Dementsprechend werden die Koordinaten der Bahnelemente transformiert. Der Interpreterbaustein verwaltet somit ein aktives Koordinatensystem. Initial, wenn das DCS weder verschoben, noch gedreht oder skaliert ist, entspricht das DCS dem MCS. Die Start- und Zielposition und die Ebene für Kreisbögen werden in den erzeugten GeoInfo-Objekten immer relativ zum MCS angegeben.

SMC_NCInterpreter.eOriConf = SMC_ORI_CONVENTION.ADDAXES

Keine Orientierungskonvention angegeben. Der Inhalt der G-Code-Worte A/B/C wird als Schiebewert interpretiert.

SMC_NCInterpreter.eOriConf = SMC_ORI_CONVENTION.ZYZ

Die Orientierungskonvention ist die Standard-Y-Konvention (Z, Y‘, Z‘‘). Der Inhalt der G-Code-Worte A/B/C wird als Winkel interpretiert.

SMC_NCInterpreter.eOriConf = SMC_ORI_CONVENTION.ZYX

Die Orientierungskonvention ist die Gier-Nick-Roll-Konvention (Z, Y‘, X‘‘). Der Inhalt der G-Code-Worte A/B/C wird als Winkel interpretiert.

SMC_NCInterpreter.eOriConf = SMC_ORI_CONVENTION.XYZ

Die Orientierungskonvention ist die XYZ-Konvention (X, Y‘, Z‘‘). Der Inhalt der G-Code-Worte A/B/C wird als Winkel interpretiert.

Befehl G53, G54, G55, G56

G-Code

Beschreibung

G53

Setzt das Decoderkoordinatensystems zurück

Das DCS wird wieder in die gleiche Lage und Orientierung gebracht wie das MCS.

G54

Schiebt, dreht und skaliert das DCS absolut

Die Werte beziehen sich auf das MCS.

Wenn keine Orientierungskonvention angegeben ist (SMC_NCInterpreter.eOriConf = SMC_ORI_CONVENTION.ADDAXES), bewirkt der Befehl nur eine Schiebung entlang der Achsen X/Y/Z/A/B/C und auf alle zusätzlichen linearen Achsen P/Q/U/V/W. Somit kann auch eine Schiebung entlang der Achsen A/B/C programmiert werden.

Wenn eine Orientierungskonvention angegeben ist, bewirkt der Befehl auch eine Schiebung entlang der Achsen X/Y/Z und entlang zusätzlichen linearen Achsen P/Q/U/V/W. Außerdem werden die Koordinatenachsen gedreht. Dabei gibt die Orientierungskonvention die Drehfolge an und die G-Code-Wörter A/B/C die Drehwinkel in Grad.

Hinweis: Der Interpreter kann gerichtete Drehungen in einem Bereich von -180° bis +180° ausführen. Wenn Sie einen Winkel außerhalb dieses Bereichs angeben, rechnet der Interpreter den Wert so um, dass er im ausführbaren Bereich liegt. Dann erst führt der Interpreter die Drehung der Koordinatenachsen aus. Beispielsweise wird bei einer Winkelangabe von 350° eine Drehung von -10° ausgeführt.

G55

Schiebt, dreht und skaliert das DCS relativ zu dessen aktueller Lage und Orientierung

Die Werte werden somit relativ zum aktuellen DCS-Ursprung und in Richtung der aktuellen Koordinatenachsen des DCS interpretiert. Bezogen auf das Maschinenkoordinatensystem wird eine weitere Schiebung/Drehung hinzugefügt.

Wenn keine Orientierungskonvention angegeben ist, bewirkt der Befehl nur eine relative Schiebung entlang der Achsen X/Y/Z/A/B/C und auf alle zusätzlichen linearen Achsen P/Q/U/V/W. Somit kann auch eine Schiebung entlang der Achsen A/B/C programmiert werden.

Wenn eine Orientierungskonvention angegeben ist, bewirkt der Befehl auch eine relative Schiebung entlang der Achsen X/Y/Z und entlang der zusätzlichen linearen Achsen P/Q/U/V/W. Vor allem aber werden die Koordinatenachsen weiter gedreht. Dabei gibt die Orientierungskonvention die Drehfolge an und die G-Code-Wörter A/B/C den Drehwinkel.

G56

Setzt den Referenzpunkt des Decoderkoordinatensystems neu

Die aktuelle Orientierung, Position und Skalierung des DCS wird als Referenz gesetzt.

Tipp: Wenn der Referenzpunkt X0 Y0 Z0 A0 B0 C0 ist, dann wird das DCS identisch zur aktuellen Position und Orientierung gesetzt.

Syntax

G53
G54 X Y Z A B C I J K P Q U V W
G55 X Y Z A B C I J K P Q U V W
G56 X Y Z A B C I J K P Q U V W

G-Code Wort

Beschreibung

X

Y

Z

Wert, um den das Decoderkoordinatensystem geschoben wird

A

B

C

Wenn am SMC_NCInterpreter der Eingang eOriConf = SMC_ORI_CONVENTION.ADDAXES ist, dann gibt der Wert in Einheiten an, wie weit die jeweilige Zusatzachse geschoben wird. Der Parameter definiert somit die Schiebung pro Achse des Decoderkoordinatensystem bezüglich des Maschinenkoordinatensystems.

Wenn am SMC_NCInterpreter der Eingang eOriConf auf SMC_ORI_CONVENTION.ZYZ, SMC_ORI_CONVENTION.ZYX oder SMC_ORI_CONVENTION.XYZ ist, dann ist eine Orientierungskonvention angegeben. Dann werden automatisch die hier angebebenen Werte als Winkelgrad interpretiert und bestimmen, um wie viel die Achsen des Decoderkoordinatensystems bezüglich des Maschinenkoordinatensystems gedreht werden. Sie definieren somit die Drehung der Hauptachsen gemäß Orientierungskonvention.

Hinweis: Beachten Sie bei der Programmierung der DCS-Drehung, dass immer für alle 3 Achsen die Drehwinkel in A/B/C anzugeben sind. Das Fehlen eines Drehwinkels führt zu einem Fehler beim Interpretieren (SMC_DEC_DCS_NOT_ALL_OF_ABC_GIVEN).

I

Skalierung in Richtung X

Beispiel: 10 für Streckung um Faktor 10

J

Skalierung in Richtung Y

Beispiel: 10 für Streckung um Faktor 10

K

Skalierung in Richtung Z

Beispiel: 10 für Streckung um Faktor 10

P

Q

U

V

W

Wert, um den die Zusatzachse des Decoderkoordinatensystems geschoben wird

DCS schieben

  1. Setzen Sie den Eingang eOriConv der Funktionsbaustein-Instanz SMC_NCInterpreter auf SMC_ORI_CONVENTION.ADDAXES.

    Das DCS kann geschoben werden. Eine Drehung ist nicht möglich.

  2. Programmieren Sie die CNC-Bahn. Geben Sie zuerst die Lageverschiebung des DCS an.

    Beispiel: G54 X10 Y10 Z10 A30 B30 C30

    Die Achsen X/Y/Z/A/B/C des DCS werden geschoben.

Beispiel 18. Beispiel

Absoluter Offset

N10 G0 X100 Y100 F100
N20 G54 X50 Y50    (Offset auf 50/50)
N30 G1 X0 Y0       (Fahrt nach 50/50)
N40 G54 X100 Y100  (Offset auf 100/100)
N50 G1 X0 Y0       (Fahrt nach 100/100)
N60 G53            (Offset auf 0)
N70 G1 X0 Y0       (Fahrt nach 0/0)

Aktuelle Position als Offset

N0 G0 X100 Y100 F100
N10 G56 X0 Y0  (Aktuelle Position 100/100 wird 0/0)
N20 G1 X10     (Fahrt nach 110/100)
N30 G56 X20 Y0 (Aktuelle Position 110/100 wird 20/0)
N40 G1 X0      (Fahrt nach 90/100)

Offset um Wert anpassen

N0  G54 X10 Y20 Z30  U7 (Offset: X=10, Y=20, Z=30, U=7)
N10 G55 X-10 U7         (Offset: X=0, Y=20, Z=30, U=14)

Gleiches Bahnelemente in 2 Lagen

N05 G17
N10 G54 X10 Y10 Z10
N20 G01 X6.574 Y-10 Z-1.961 I8.287 J-0.000
N30 G02 X-0.480 Y-10 Z0.008 I-3.527 J4.988E-05
N040 G02 X3.418 Y-9.806 Z4.482 I1.949 J0.097
N50 G55 X10 Y10 Z10
N60 G01 X6.574 Y-10 Z-1.961 I8.287 J-0.000
N70 G02 X-0.480 Y-10 Z0.008 I-3.527 J4.988E-05
N80 G02 X3.418 Y-9.806 Z4.482 I1.949 J0.097
_sm_decoder_coordinat_system.png


DCS schieben und drehen

  1. Setzen Sie den Eingang eOriConv der Funktionsbaustein-Instanz SMC_NCInterpreter auf die gewünschte Orientierungskonvention, beispielsweise SMC_ORI_CONVENTION.ZYZ.

    Die Orientierungskonvention und damit die Drehfolge der Achsen X/Y/Z des DCS ist programmiert. Bei SMC_ORI_CONVENTION.ZYZ ist die Drehfolge ZY’Z‘‘ und entspricht der Standard-Y-Konvention.

    Hinweis: Solange der Eingang eOriConv eine Orientierungskonvention enthält, und nicht den Wert SMC_ORI_CONVENTION.ADDAXES, werden bei den G-Code-Befehlen G54/G55/G56 die Werte der Wörter A/B/C als Winkelangaben für die Drehung interpretiert.

  2. Programmieren Sie die CNC-Bahn. Geben Sie zuerst die Lageverschiebung und Drehung des DCS an.

    Beispiel: G54 X10 Y10 Z10 A30 B30 C30

    Die Werte der Wörter A/B/C geben die Drehrichtung und den Winkel in Winkelgrad an. Entsprechend wird das Koordinatensystem gedreht. Die Werte der Wörter X/Y/Z definieren die Schiebung.

    Hinweis: Beachten Sie bei der Programmierung der DCS-Drehung, dass immer für alle 3 Achsen die Drehwinkel in A/B/C anzugeben sind. Das Fehlen eines Drehwinkels führt zu einem Fehler beim Interpretieren (SMC_DEC_DCS_NOT_ALL_OF_ABC_GIVEN).

    Wenn der Eingang eOriConv der Funktionsbaustein-Instanz SMC_NCInterpreter den Wert SMC_ORI_CONVENTION.ADDAXES enthält, ist keine Drehung des DCS möglich. Die Werte in G54/G55/G56 werden als zusätzliche Splineachsenwerte interpretiert. Eine Schiebung ist möglich.

Beispiel 19. Beispiele

Die Orientierungskonvention ist bei den Beispielen auf den Standard-Y-Konvention festgelegt worden (eOriConv = SMC_ORI_CONVENTION.ZYZ). Allgemein gilt bei G54: X/Y/Z/A/B/C/P/Q/V/W gibt einen absolut neuen Wert im MCS an. G55: X/Y/Z/A/B/C/P/Q/V/W gibt einen relativen Wert im DCS an. G56: X/Y/Z/A/B/C/P/Q/V/W gibt einen absolut neuen Wert im DCS an.

Absolute Orientierung mit G54

N01 G54 X10 A30 B0 C0

G54 bewirkt eine Schiebung und Drehung. Dabei ist die Lage und Orientierung absolut zum MCS angegeben.

Relative Orientierung mit G55

N01 G54 X10 A30 B0 C0 (Bezieht sich auf MCS)
N02 G55 Y10 A0 B30 C0 (Bezieht sich auf das in 01 definierte DCS)

G54 führt hier zu einer Schiebung um 10 Einheiten in X-Richtung und um eine 30°-Drehung um die Z-Achse absolut zum MCS. Im Satz 02 wird das DCS dann um weitere 10 Einheiten in Richtung der gedrehten Y-Achse geschoben und dann um weitere 30° um die gedrehte Y-Achse gedreht. Die Transformation in Satz 02 ist also relativ zur Transformation in Satz 01.

Referenzierung bezogen auf aktuelle Orientierung mit G56

N01 G01 X10 A10 B90 C10 (Orientierung ist A=10°, B=90°, C=10°)
N02 G56 A0 B0 C0        (DCS wird auf X=10, A=10°, B=90°, C=10° gesetzt)

G56 bewirkt, dass die aktuelle Orientierung des DCS (im Beispiel programmiert in Satz 01) als Referenz gesetzt wird.

Beispiel Kreisbogen

N0 G17
N0 G54 A0 B90 C0

Die gewählte Kreisebene wird relativ zum DCS interpretiert. Im Beispiel wird mit G17 die X/Y-Ebene gewählt und anschließend das DCS um 90° um die Y-Achse gedreht. Dann ist die gewählte Ebene im DCS nach wie vor die X/Y-Ebene. Im MCS entspricht das der X/Z-Ebene.

Mit G17 wird die X/Y-Ebene gewählt. Danach wird das DCS um 90° gedreht. Das bewirkt, dass im DCS nach wie vor die X/Y-Ebene aktiviert ist. Das entspricht allerdings im MCS der Y/Z-Ebene.



Tipp

Im 2.5D-Modus (G15) darf nur um die Z-Achse gedreht werden. Eine Drehung um eine andere Achse führt zu einem Fehler, der vom Interpreter gemeldet wird (SMC_DEC_DCS_2D_NOT_IN_XY_PLANE). Damit bleibt im 2.5D-Modus immer die X/Y-Ebene des MCS eingestellt.

Koordinatensystem skalieren

Wichtig

Wenn nach einer ungleichmäßigen Skalierung eine Drehung programmiert ist, könnte eine Scherung entstehen. In diesem Fall wird der Fehler SMC_DEC_ROTATION_AFFECTS_SCALING ausgegeben.

Wichtig

Es müssen entweder alle 3 Skalierungsfaktoren angegeben werden oder keiner.

Absolut skalieren

Syntax: G54 I<i> J<j> K<k>

Ein Koordinatensystem kann in den 3 Raumrichtungen X/Y/Z jeweils unabhängig voneinander gestreckt oder gestaucht werden: Sie können für jede Richtung einen Faktor angegeben. Geben Sie den Skalierungsfaktor für X in I, für Y in J und für Z in K an. Ein Skalierungsfaktor > 1 bewirkt eine Streckung. Ein Skalierungsfaktor < 1 bewirkt eine Stauchung.

10-fache Streckung:

N01 G01 X10
N02 G54 A90 B0 C0 I10 J1 K1
N03 G01 X10 Y20
N04 G01 X5 Y10

Alle Zielpunkte sind in Richtung der gedrehten X-Achse auf das 10-fache gestreckt.

Folgender Code generiert dieselbe Bahn:

N01 G01 X10
N02 G01 X-20 Y100
N03 G01 X-10 Y50.

Sind weder I noch J noch K angegeben, dann bleibt der vorher gesetzte Wert erhalten:

N01 G54 I10 J1 K1
N02 G54 X1
N03 G01 X10

Dieselbe Bahn wird mit folgendem Code bewirkt:

N01 G01 X101

Relativ skalieren

Syntax: G55 I<i> J<j> K<k>

Ein Skalierungsfaktor > 1 bewirkt eine Streckung. Ein Skalierungsfaktor < 1 bewirkt eine Stauchung. Dabei multiplizieren sich die Skalierungsfaktoren.

100-fache Streckung:

N01 G54 I10 J1 K1
N02 G55 I10 J1 K1
N03 G01 X10 Y20
N04 G01 X5 Y10

Folgender Code bewirkt die gleiche Skalierung:

N01 G55 I100 J1 K1

Kreis skalieren

Die Skalierung eines Kreisbogens ist nur gültig, wenn nach der Skalierung das Element noch ein Kreisbogen (keine Ellipse) ist.

. Gültige Bahnen ergeben sich:
  • Wenn alle 3 Skalierungsfaktoren denselben Betrag haben

  • Wenn die Kreisebene eine der Hauptebenen des DCS ist und die entsprechenden 2 Skalierungsfaktoren denselben Betrag haben

Koordinatensystem spiegeln

Eine absolute Skalierung mit negativen Skalierungsfaktoren in I, J oder K bewirken Spiegelungen des aktuellen Koordinatensystems.

Negativer Skalierungsfaktor

G54 A30 B0 C0 I-1 J1 K1