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
wird so programmiert, dass das PCS (Programmkoordinatensystem) und das MCS (Maschinenkoordinatensystem) gleich sind.N20
wird programmiert, nachdem eine45
-Grad-Drehung um dieZ
-Achse in[0,0,0]
auf den Stapel der Transformationen geschoben wurde. Eine weitere Drehung von45
Grad wird auf den Transformationsstapel geschoben, so dass sich die Drehungen zu90
Grad summieren.- Die MCS-Koordinate (Maschinenkoordinatensystem) des Endes des Segments
N30
ist 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
M02
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
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
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".