|
The rotation angle in 4-axis machines is calculated as follows:
Rotation angle = ATAN (*_ORIGIN / Z_ORIGIN)
where * is I or J.
To obtain the appropriate result, it is recommended to:
use FORTRAN ATAN2 function (in external process) and not the ATAN function in the EXF file.
define I,J,K_ORIGIN with a precision of 7 decimal places.
The external program may be written as follows:
SUBROUTINE UGPSUB (NAME, L)
CHARACTER*6 NAME
INTEGER L
IF (NAME(1:L) .EQ. 'ATANG2') THEN
CALL ATANG2
ELSEIF . . . .
.
.
.
ENDIF
RETURN
END
C------------------------------------------------
SUBROUTINE ATANG2
C
C H-horizontal value
C V-vertical value
C A-angle result
REAL H,V,A
C
CALL GTEPGP ('H',H)
CALL GTEPGP ('V',V)
C
A = ATAN2 (V,H)
C
C Convert the angle from radians to degrees
C
A = A*180.0/3.1415926
C
C The conversion may vary between machines, according to the machine type.
C (Some machines may use angles 0-360 or +/-180 . . .)
C
CALL STEPGP('A',A)
RETURN
END
C------------------------------------------------
External programs like the one displayed above may be called from the EXF file by using the CALL command:
V = I_ORIGIN; H = K_ORIGIN;
CALL "ATANG2" INPAR H V ; OUTPAR A;
YROTATION = A;
Rotation angles in 5-axis machines (rotated table) may be calculated as follows:
1st rotation angle = ATAN ( *_ORIGIN / *_ORIGIN )
2nd rotation angle = ATAN ( *_ORIGIN / (*_ORIGIN * COS [1st rotation angle]))
where * is I, J, or K according to the machine geometry, and ATAN is used as described for 4-axis machines.
The rotation of the first axis affects the *_ORIGIN of the two other axes. This rotation and the first axis to be rotated vary between the machine types.
ROT_MAT1 . . . ROT_MAT9
As explained in this manual, ROT_MAT1. . .ROT_MAT9 are values of MATRIX (3,3). All coordinates are multiplied by that matrix before "sending" to the post.
The UNIT matrix may be initialized at BEGINNING OF TAPE:
ROT_MAT1=1; |
ROT_MAT2=0; |
ROT_MAT3=0; |
ROT_MAT4=0; |
ROT_MAT5=1; |
ROT_MAT6=0; |
ROT_MAT7=0; |
ROT_MAT8=0; |
ROT_MAT9=1; |
TRANS_MATX=0; |
TRANS_MATY=0; |
TRANS_MATZ=0; |
After finding the rotation angle (A), ROT_MAT* values should be updated as follows:
Rotation around X axis:
ROT_MAT1=1; |
ROT_MAT2=0; |
ROT_MAT3=0; |
ROT_MAT4=0; |
ROT_MAT5=COS(A); |
ROT_MAT6=-SIN(A); |
ROT_MAT7=0; |
ROT_MAT8=SIN(A); |
ROT_MAT9=COS(A); |
Rotation around Y axis:
ROT_MAT1=COS(A); |
ROT_MAT2=0; |
ROT_MAT3=-SIN(A); |
ROT_MAT4=0; |
ROT_MAT5=1; |
ROT_MAT6=0; |
ROT_MAT7=SIN(A); |
ROT_MAT8=0; |
ROT_MAT9=COS(A); |
Rotation around Z axis:
ROT_MAT1=COS(A); |
ROT_MAT2=SIN(A); |
ROT_MAT3=0; |
ROT_MAT4=-SIN(A); |
ROT_MAT5=COS(A); |
ROT_MAT6=0; |
ROT_MAT7=0; |
ROT_MAT8=0; |
ROT_MAT9=1; |
The rotation causes the tool end point to move from its original location. Therefore, a translation must be performed to cancel this error.
The translation values are calculated as follows:
Find the physical distance (X, Y and Z) between the origin and the rotation axis, as it will be on the machine.
Rotate those values using the rotation matrix (ROT_MAT1 . . ROT_MAT9).
If the part rotates (rotating table), the physical distance between the origin and rotation axis may be calculated using the following parameters:
distance between a fixed point on the machine table and the rotation axis (a fixed value depending on the machine geometry)
distance between the MACSYS (MODEL) and the fixed point. Use the POST interaction ENTER MACH.ZERO, and the GPP parameters X_MACH, Y_MACH and Z_MACH.
distance between the MACSYS (MODEL) and the origin, GPP parameters X_ORIGIN, Y_ORIGIN and Z_ORIGIN.
If the tool rotates (rotating head), the physical distance between the origin and the rotation axis may be calculated using the following parameters:
distance between the face of the spindle and the rotation axis (a fixed value depending on the machine geometry).
distance between the tool end point and the face of the spindle.
Use the parameter GAUGE LENGTH in the tool definition and the GPP parameter GAUGE_LEN. As the GAUGE_LEN parameter changes with the tool change, the translation parameters TRANS_MATX . . . TRANS_MATZ must be updated every tool change.
When TRANS_MAT values are 0, the coordinates are expressed in the current origin coordinate system. To express the coordinates in another origin coordinate system (i.e., the first one), update TRANS_MAT values as follows:
Save the X,Y,Z_ORIGIN of the first origin (i.e., first X,Y,Z).
Calculate the TRANS_MAT values:
TRANS_MATX = X_ORIGIN - FIRSTX
TRANS_MATY = Y_ORIGIN - FIRSTY
TRANS_MATZ = Z_ORIGIN - FIRSTZ
|