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.
N10wird so programmiert, dass das PCS (Programmkoordinatensystem) und das MCS (Maschinenkoordinatensystem) gleich sind.N20wird programmiert, nachdem eine45-Grad-Drehung um dieZ-Achse in[0,0,0]auf den Stapel der Transformationen geschoben wurde. Eine weitere Drehung von45Grad wird auf den Transformationsstapel geschoben, so dass sich die Drehungen zu90Grad summieren.- Die MCS-Koordinate (Maschinenkoordinatensystem) des Endes des Segments
N30ist daher[0,30,0].
N10 G01 X30 Y0 F6000
!transRotZ(45);
N20 G01 X30 Y0
!transRotZ(45);
N30 G01 X30 Y0
!transPop();
!transPop();
M02
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.
![]() | Der Vektor |
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
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.
![]() | 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
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.
![]() | Der Faktor muss ungleich Null sein. |
![]() | Ist der Faktor negativ, so wird das Koordinatensystem effektiv an der |
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
Abbildung "BeispielTransScale".
transScaleAxis
transScaleAxis(axisNo := axisIndex, factor := value);
Skaliert die ausgewählte Bahnachse (axisNo) um den Faktor. Die unterstützten Achsen und Indizes sind:
- X: 0
- Y: 1
- Z: 2
Q-Achsen werden nicht unterstützt.
![]() | 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
M02Abbildung "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
M02Abbildung "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
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
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.
![]() | 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
Abbildung "BeispielTransDepthTransRestore".
