Transformationen

transRotX/Y/Z

transRotX(angle := LREAL)

transRotY(angle := LREAL)

transRotZ(angle := LREAL)

Drehung um die jeweilige Achse um den angegebenen Winkel in der benutzerdefinierten Winkeleinheit. Die Drehung wird auf den Stapel der Transformationen geschoben. Der Winkelwert wird in der aktuellen Winkeleinheit interpretiert. Siehe Abschnitt Transformationen für weitere Informationen.

Beispiel:

Die resultierende Bahn des folgenden Beispiels ist in der Abbildung "BeispielTransRotZ" dargestellt.

N10 G01 X30 Y0 F6000
!transRotZ(45);
N20 G01 X30 Y0
!transRotZ(45);
N30 G01 X30 Y0
!transPop();
!transPop();
M02
Transformationen 1:

Abbildung "BeispielTransRotZ".

transRotA

transRotA(x:=LReal, y:=LReal, z:=LReal, angle:=LReal)

Drehen um den Vektor [x,y,z] mit dem angegebenen angle. Die Drehung wird auf den Stapel der Transformationen geschoben. Der Winkelwert wird in der aktuellen Winkeleinheit interpretiert. Siehe Abschnitt Transformationen für weitere Informationen.

Transformationen 2:

Der Vektor [x,y,z] darf nicht der Null-Vektor sein.

Beispiel:

Die resultierende Bahn des folgenden Beispiels ist in der Abbildung "BeispielTransRotA" dargestellt. Der erste Aufruf von transRotA dreht das PCS (Programm-Koordinatensystem) um die positive Z-Achse (Rechte-Hand-Regel) um 45 Grad. Der zweite Aufruf dreht sich um die negative Z-Achse um den gleichen Winkel, also in die entgegengesetzte Richtung. Die Kombination der beiden Drehungen ist die Identitätstransformation.

!transRotA(0,0,1,45);
N10 G01 X30 Y0 F6000
!transRotA(0,0,-1,45);
N20 G01 X30 Y0
!transPop();
!transPop();
M02
Transformationen 3:

Abbildung "BeispielTransRotA".

transMirrorX/Y/Z

transMirrorX()

transMirrorY()

transMirrorZ()

Spiegeln in Bezug auf die X-Richtung, Y-Richtung oder Z-Richtung relativ zum Ursprung des aktuellen PCS (Programmkoordinatensystem). Die Transformation wird auf den Stapel der Transformationen geschoben.

Transformationen 4:

Der Aufruf einer Spiegelfunktion schaltet die Ausrichtung des Koordinatensystems von rechtsdrehend nach linksdrehend oder umgekehrt um. Vor allem schaltet dieses Verhalten die Drehrichtung von Kreisen und die Kompensationsrichtung der Werkzeugradiuskorrektur um. Standardmäßig ist das Koordinatensystem rechtsdrehend.

Beispiel:

Die resultierende Bahn des folgenden Beispiels ist in der Abbildung "BeispielTransMirrorX" dargestellt. Das PCS (Programmkoordinatensystem) wird an der X-Dimension gespiegelt. Dadurch wird das Koordinatensystem zu einem linksdrehenden System, in dem die Drehrichtung von G2 (absichtlich) vertauscht ist.

N10 G02 X20 Y20 U20 F6000
!transMirrorX();
N20 G02 X-40 Y0 U20
!transPop();
M02
Transformationen 5:

Abbildung "BeispielTransMirrorX".

transScale

transScale(factor:= LReal)

Skaliert das Koordinatensystem um den factor in der X-, Y- und Z-Dimension. Die Transformation wird auf den Stapel der Transformationen geschoben.

Transformationen 6:

Der Faktor muss ungleich Null sein.

Transformationen 7:

Ist der Faktor negativ, so wird das Koordinatensystem effektiv an der X-, Y- und Z-Dimension gespiegelt. Dadurch wird die Ausrichtung des Koordinatensystems vertauscht.

Beispiel:

Die sich ergebende Bahn des folgenden Beispiels ist in der Abbildung "BeispielTransScale" dargestellt. Nach einer Skalierung um den Faktor 2 wird der Endpunkt des Segments N20 auf [60,20,0] abgebildet.

N10 G01 X30 Y10 F6000
!transScale(2);
N20 G01 X30 Y10
!transPop();
M02
Transformationen 8:

Abbildung "BeispielTransScale".

transScaleAxis

transScaleAxis(axisNo := axisIndex, factor := value);

Skaliert die ausgewählte Bahnachse (axisNo) um den Faktor. Die unterstützten Achsen und Indizes sind:

Q-Achsen werden nicht unterstützt.

Transformationen 9:

Eine unterschiedliche Achsenskalierung ist nur für lineare Bewegungen zulässig, nicht für Kreisbewegungen.

Beispiel 1

N10 G01 X30 Y10 F6000
!transScaleAxis(axisNo:= 0, factor:=2.0);
!transScaleAxis(axisNo:= 1, factor:=2.0);
!transScaleAxis(axisNo:= 2, factor:=3.0);
N20 G01 X30 Y10
N30 G03 X40 Y10 I5 J0
M02
Transformationen 10:

Abbildung "Beispiel 1 TransScaleAxis".

Beispiel 2

N10 G01 X20 Y5 F6000
!transScaleAxis(axisNo:= 0, factor:=2.0);
!transScaleAxis(axisNo:= 1, factor:=2.0);
!transScaleAxis(axisNo:= 2, factor:=3.0);
N20 G01 X20 Y5
!transScaleAxis(axisNo:= 0, factor:=2.0);
!transScaleAxis(axisNo:= 1, factor:=3.0);
N30 G01 X20 Y5
M02
Transformationen 11:

Abbildung "Beispiel 2 TransScaleAxis".

Requirements

Development Environment

Target System

TwinCAT V3.1.4024.20

PC or CX (x86 or x64)

transTranslate

transTranslate(x:=LReal, y:=LReal, z:=LReal)

Verschieben um Vektor [x,y,z]. Die Translation wird auf den Stapel der Transformationen geschoben.

Beispiel:

Die resultierende Bahn des folgenden Beispiels ist in der Abbildung "BeispielTransTranslate" dargestellt. Nach der Translation um [40,20,0] wird der Endpunkt des Segments N20 auf [80,20,0] abgebildet.

N10 G01 X20 Y0 F6000
!transTranslate(40,20,0);
N20 G01 X40 Y0
!transPop();
M02
Transformationen 12:

Abbildung "BeispielTransTranslate".

transPop

transPop()

Entnimmt eine Transformation aus dem Stapel der Transformationen.

Beispiel:

Die sich ergebende Bahn des folgenden Beispiels ist in der Abbildung "BeispielTransPop" dargestellt. In diesem Beispiel wird die Translation [0,20,0] auf den Stapel geschoben, gefolgt von der Translation [0,10,0]. Die effektive Translation für N30 ist dann [0,30,0]. Mit dem Aufruf von transPop wird die Translation [0,10,0] vom Stapel entfernt. Der Endpunkt des Segments N40 wird also um [0,20,0] verschoben. Nach dem Entfernen der letzten Translation vom Stapel wird der Endpunkt des Segments N50 überhaupt nicht verschoben.

N10 G01 X10 Y0 F6000
!transTranslate(0,20,0);
N20 G01 X30 Y0
!transTranslate(0,10,0);
N30 G01 X50 Y0
!transPop();
N40 G01 X70 Y0
!transPop();
N50 G01 X90 Y0
M02
Transformationen 13:

Abbildung "BeispielTransPop".

transDepth

transDepth(): UInt

Ergibt die Tiefe des Transformationsstapels, d. h. die Anzahl der aktiven Transformationen. Siehe transRestore(...), Kapitel Transformationen, für weitere Einzelheiten.

transRestore

transRestore(depth:= UInt)

Reduziert den Stapel der Transformationen auf die angegebene Tiefe. Dieser Befehl wird normalerweise in Verbindung mit transDepth() verwendet, um einen früheren Zustand des Stapels wiederherzustellen.

Transformationen 14:

Die aktuelle Tiefe des Stapels darf nicht kleiner als die angegebene Tiefe sein.

Beispiel:

Die resultierende Bahn des folgenden Beispiels ist in der Abbildung "BeispielTransDepthTransRestore" dargestellt. Eine Translation nach [40,10,0] wird zunächst auf den Transformationsstapel geschoben. Die resultierende Tiefe wird in der Variablen savedDepth gespeichert. Der folgende Code führt wiederholt eine lineare Bewegung zu X20 Y0 und eine Drehung um 45 Grad durch. Dieser resultierende Pfad ist eine Hälfte eines Achtecks, bestehend aus den Segmenten N10 bis N50. Wenn N50 verarbeitet wird, enthält der Transformationsstapel die anfängliche Translation und 4 Drehungen um 45 Grad. Der Aufruf von transRestore(savedDepth) stellt die Stapeltiefe von 1 wieder her, indem er alle Rotationen entfernt. Daher wird nur die Translation auf N60 angewendet.

!VAR savedDepth : UINT; END_VAR
!transTranslate(40,10,0);
!savedDepth := transDepth();

N10 G01 X20 Y0 F6000
!transRotZ(45);
N20 G01 X20 Y0
!transRotZ(45);
N30 G01 X20 Y0
!transRotZ(45);
N40 G01 X20 Y0
!transRotZ(45);
N50 G01 X20 Y0
!transRestore(savedDepth);
N60 G01 X10 Y0
M02
Transformationen 15:

Abbildung "BeispielTransDepthTransRestore".