NC Programming
NC Programming
MACHINEMATE
MACHINEMATE
NOTE
Progress is an ongoing commitment at MACHINEMATE INC. We continually strive to offer the
most advanced products in the industry. Therefore, information in this document is subject to
change without notice. The illustrations and specifications in this document are not binding in
detail. MACHINEMATE INC shall not be liable for any technical or editorial omissions occurring
in this document nor for any consequential or incidental damages resulting from the use of
this document.
DO NOT ATTEMPT to use any MACHINEMATE INC product until the use of such product is completely
understood. It is the responsibility of the user to make certain proper operation practices are
understood. MACHINEMATE INC products should be used only by qualified personnel and for the
express purpose for which said products were designed.
MACHINEMATE INC.
Fond du Lac, WI 54937
Phone: 920-907-0001
Fax: 920-907-0181
Email: info@machinemate.com
Table of Contents
TABLE OF FIGURES AND TABLES ............................................................................10
1 BASICS OF NC PROGRAMMING............................................................................15
1.1 Program Layout ................................................................................................15
1.2 Program block...................................................................................................15
1.3 Program Word...................................................................................................16
1.4 Auxiliary functions (BCDs) ................................................................................23
1.5 Programming functional overview .....................................................................24
1.6 Block suppression .............................................................................................25
1.7 Program Repetition ...........................................................................................25
1.8 Subroutines.......................................................................................................26
1.9 Comments in NC programs...............................................................................27
1.10 Program number ...............................................................................................28
1.11 Cycle block layout .............................................................................................28
1.12 Reading from External Data Files .....................................................................28
1.13 Program Safety .................................................................................................31
1.14 Axis designations for machine tool machines ...................................................32
1.15 Gantry Axes ......................................................................................................35
1.16 Resettable Rotational Axis ................................................................................36
2 POSITIONING INSTRUCTIONS ...............................................................................37
2.1 General positioning instructions ........................................................................37
2.1.1 Monitoring the axis travel limits ..............................................................37
2.1.2 G00 linear interpolation in rapid traverse................................................38
2.1.3 G01 linear interpolation in the feed rate .................................................42
2.1.4 G02, G03 circular interpolation with specified center point.....................45
2.1.5 G12, G13 circular interpolation with specified radius..............................49
2.1.6 Helical Interpolation................................................................................51
2.1.7 G74 Programmable homing ...................................................................51
2.1.8 M80 delete remaining path using probe function....................................52
2.2 Positioning instructions .....................................................................................57
2.2.1 G07 Tangential circular interpolation......................................................57
2.2.2 G05, G06 Spline Definition and Spline Interpolation 2D.........................60
2.2.3 G78, G79 Tangential Setting to the 2D Path ..........................................64
3 INFLUENCING THE PROGRAM ..............................................................................73
3.1 M00 program interruption (unconditional stop)..................................................73
3.2 M01 program interruption (conditional stop)......................................................73
3.3 M02, M30 end of program.................................................................................74
3.4 G10, G11 empty/fill dynamic block buffer..........................................................75
3.4.1 G10 Empty dynamic block buffer............................................................75
3.4.2 G11 Fill dynamic block buffer .................................................................75
3.5 G72, G73 interpolation with precision stop OFF or ON .....................................76
3.6 G08, G09 look ahead OFF or ON .....................................................................77
3.7 G186 corner acceleration, contour accuracy.....................................................80
3.7.1 Corner Acceleration................................................................................80
3.7.2 Contour Accuracy:..................................................................................83
3.8 G75, G76 Curvature..........................................................................................84
Part Programming Manual
page 3/352
MACHINEMATE
Figure 5-25: Motion with a full circle as external contour (with G42) ........................... 140
Figure 5-26: Motion with a full circle as external contour (with G44) ........................... 141
Figure 5-27: Motion with a full circle as internal contour (with radius compensation) . 142
Figure 5-28: Full circle as external contour (with radius compensation)........................ 143
Figure 5-29: Processing with external path compensation at corners, internal contour
processing 144
Figure 5-30: Setting work piece zero points ................................................................... 146
Figure 5-31: Programming in metric or imperial format ................................................ 149
Figure 5-32: Dimension input in absolute dimension programming .............................. 150
Figure 5-33: Dimension input in incremental dimension programming ......................... 151
Figure 5-34: Set axis value with G92.............................................................................. 152
Figure 5-35: Definition of a reference point for work piece zero points ........................ 153
Figure 5-36: Polar coordinates ........................................................................................ 155
Table 5-1: Major axis and minor axis .......................................................................... 155
Table 5-2: Angle and radius values in the three predefined planes ............................. 156
Figure 5-37: Polar coordinate programming without pole point information................. 156
Figure 5-38: Polar coordinate programming with pole point information ...................... 158
Figure 5-39: Circular interpolation plane selection......................................................... 161
Table 5-3: Circular interpolation planes (G20)............................................................ 162
Figure 5-40: Work area of a machine tool with the axes X and Y.................................. 163
Figure 5-41: Programmable mirror, effect of the programs P1 to P4 ............................. 166
Figure 5-42: Mirror with prior setting of an axis value using G92 ................................. 167
Figure 5-43: Part rotation in the case of active G90........................................................ 171
Figure 5-44: Part rotation in combination with incremental programming (G91).......... 172
Figure 5-45: Scaling with absolute and relative dimension input ................................... 174
Figure 5-46: Grinding wheel offset definitions............................................................... 175
Figure 5-47: Grinding wheel radius orientation definitions............................................ 176
Figure 5-48: Dresser or tool tip radius orientation definitions........................................ 177
Figure 5-49: Grinding wheel control point and gauge point definitions......................... 178
Figure 5-50: Inside corner definition............................................................................... 179
Table 5-4: Differences between DWRC entry/exit move types A, B, C ..................... 179
Table 5-5: G-codes for DWRC path compensation ..................................................... 180
Table 5-6: Application schemes for DWRC path compensation ................................. 181
Figure 5-51: Dress/wheel radius compensation example................................................ 181
Figure 5-52: Wheel corner radius compensation example .............................................. 182
Table 5-7: Activations of DWRC path compensation ................................................. 183
Figure 5-53: Linear and circular intermediate blocks ..................................................... 184
Figure 5-54: The three compensation entry move types (overview)............................... 185
Figure 5-55: Compensation entry moves type A, linear to linear ................................... 186
Figure 5-56: Compensation entry moves type A, linear to circular ................................ 187
Figure 5-57: Compensation entry moves type A, circular to linear ................................ 187
Figure 5-58: Compensation entry moves type A, circular to circular ............................. 188
Figure 5-59: Compensation entry moves type B, linear to linear ................................... 189
Figure 5-60: Compensation entry moves type B, circular intermediate blocks .............. 190
Figure 5-61: Compensation entry moves type C, linear to linear ................................... 191
Table 6-1: Cycle programming: parameters and instructions...................................... 196
Figure 6-1: Transfer of the NC blocks to the interpolator process................................ 196
Part Programming Manual
page 12/352
MACHINEMATE
Figure 9-24: Work piece with controlled running out (G33) .......................................... 318
Figure 9-25: Stock removal............................................................................................. 322
Figure 9-26: Stock removal: direction of allowance ....................................................... 323
Figure 9-27: Stock removal in facing.............................................................................. 325
Figure 9-28: Stock removal in facing: direction of removal ........................................... 326
Figure 9-29: G274 peck finishing cycle .......................................................................... 329
Figure 9-30: G275 inner/outer diameter turning cycle.................................................... 330
Figure 9-31: G276 multiple pass thread turning cycle .................................................... 332
Figure 9-32: G276 threading cycle and tool tip parameters ............................................ 332
1 Basics of NC Programming
1.1 Program Layout
An NC program (part program) is a sequence of processing steps and is divided
into program blocks. Each program block contains the information that the machine
requires to perform the desired process.
N10 G90
Additional conditions
Block number
The maximum length of a program block is 128 characters (including block end
character and optional checksum). To allow editing of an NC program the program
blocks are numbered sequentially in blocks of ten with rising block numbers. This
provides easy location of program blocks and insertion of additional blocks.
Example:
N10 G90
N20 G1 X50 Y20 F3000 M3 S1000
N30 X15
The program blocks are processed in the sequence in which they were stored. NC
programs entered directly into the CNC are also processed by increasing block
numbers. NC programs that have been externally created and then read into the
CNC may not be processed by increasing block numbers because the program is not
checked for increasing block numbers when loaded. The externally created program
will be processed sequentially as ordered in the file, not by increasing block number.
The address letter designates the type of program word. Each address letter must
only be programmed once per NC block. If the same address letter is programmed
several times in a block during program input, the program block is rejected (error
message 5 appears). If the same address letter appears repeatedly in a block from
an externally created program that is read into the CNC, the last address letter read
becomes effective.
Example:
G1 instead of: G01
There are common uses for many of the letters. These conventions are listed below.
Note that these are not all permanent letter assignments. It is possible for axes to get
Part Programming Manual
page 16/352
MACHINEMATE
Instructions are organized into instruction groups. In any one instruction group all
the instructions are summed up but only one instruction can be in effect at a time.
Table 1-1 on the following pages contains G-Codes available in the CNC. The tables
include notes on group division, effectiveness, whether the respective instruction is
Part Programming Manual
page 17/352
MACHINEMATE
M-Command Meaning
M00 * Unconditional Stop
M01 (*) Conditional Stop
M02 (*) End of Program
M03 * Spindle clockwise
M04 * Spindle counterclockwise
M05 * Spindle Stop
M19 * Spindle orientation
M20 * Oscillation ON, Punching/Nibbling ON
M21 * Oscillation OFF
M22 * Nibbling ON
M25 * Punching with/without dwell time ON
M30 (*) End of program
M40 * Automatic gear selection
M41 * Spindle gear transmission step 1
M42 * Spindle gear transmission step 2
M43 * Spindle gear transmission step 3
M44 * Spindle gear transmission step 4
M45 * Spindle gear transmission step 5
M46 * Spindle gear transmission step 6
M70 * Spline, beginning and end curve 0
M71 * Spline, beginning tangential, end curve 0
M72 * Spline, beginning curve 0, end tangential
M73 * Spline, beginning and end tangential
M80 * Delete rest of distance using probe function
M81 * Drive on application block (resynchronize axis
positions via PLC signal during the block)
M101 Reset Bit 1
... ...
M108 Reset Bit 8
M109 Reset all (8) bits
M111 Set Bit 1
... ...
M118 Set Bit 8
M121 Pulsate Bit 1
... ...
M128 Pulsate Bit 8
M140 * Distance regulation ON (configured by G265)
M141 * Distance regulation OFF
M150 * Delete rest of distance using probe function, for a
probe input (one of 16, M151-M168)
M151 * to Digital input byte 1 bit 1 (to bit 8) is active probe
M158 * input (for M150)
Part Programming Manual
page 21/352
MACHINEMATE
Up to four of these auxiliary functions can be preset in the CNC. The address letters
M, S, U and T are used for auxiliary functions. The corresponding program words are
ignored in the NC program and transferred as BCDs to the PLC Program.
The meaning of the BCDs is determined by the machine manufacturer and should be
explained in the machine documentation. The M-codes that are listed in Table 1-2
however are predefined but can only be used if the relevant function is also available.
Only those M-codes listed in Table 1-2 that are marked by an asterisk (*) are
transferred to the PLC. Some M-Codes (e.g., M02, M30) are only transferred to the
PLC when the corresponding function is actually executed. For example M02 is only
transferred to the PLC when it is at the end of a main program and CONTROL
RESET is initiated. M02 is not transferred to the PLC when it is positioned at the end
of a subroutine because this would cause a jump back to the main program.
Positioning instructions
Technical instructions:
Geometric instructions:
Example:
N10 G0 X0 Y0
/N20 G1 X2000 Y300 Is not executed when ignore block read over is selected.
N30 G1 X4000
Application:
The processing of a family of parts is described in an NC program. All machining
operations that are required for part version A, but are not to be executed for part
version B, can be preceded by a slash (/). After selection of: Alt A: AUTOmatic
F3: Program process 2 F1: (/) Block Read over the blocks marked by a slash
are not considered.
Note: If Alt A: AUTOmatic F3: Program process 2 F1: (/) Block read over is
selected after a suppressed block has already been preprocessed and is
waiting in the dynamic block buffer, the suppressed block is not ignored, even
if this block has not yet been reached in the actual program execution.
Example:
N... L5 M30 The program is repeated 5 times. It is executed 6 times in total.
Repetition calls in the last block of a subroutine are ignored (see 1.8 Subroutines). At
the end of a subroutine, the instructions M02 and M30 cause a jump back to the main
program from which the subroutine was called. At the end of a main program, the
instructions M02 and M30 initiate CONTROL RESET.
1.8 Subroutines
Subroutine calls are programmed by entering Q followed by the program number of
an NC program already available in the CNC. The subroutine call causes the first
block of the selected subroutine to be processed as next NC block. A subroutine is
also called a subprogram because the syntax in a subroutine is identical to that of a
main program (except its very first block cannot be a cycle block). When the main
program calls a subroutine, it is really just calling another program to run.
Program repetition calls in the last block of a subroutine are ignored and have to be
programmed, together with L, in the calling program. They are programmed in the
same line in which Q was entered, followed by the number of subroutine runs.
Example:
N... Q100 L5 The program with the number 100 is called as a subroutine and
executed 6 times in total.
Further subroutines can be called within subroutines. The nesting depth is limited to 4
times. One main program level and four subroutine levels can be programmed
altogether.
The example above uses a main program and its subroutines that are in CNC
memory. The subroutines must be in the same location as the main program. If the
main is in CNC memory then subroutines must be there also. The CNC will search
for the subroutine program number first in the CNC memory. This is useful for
subroutines common to multiple main programs. If the subroutine is not found there
and if the main program is in a disk folder then the subroutine file will be checked in
that same folder. When the main program is in CNC memory and the subroutine
program number is not found (in CNC memory) then error 152 results. When the
main program is in a disk folder and the subroutine program number is not found (in
either CNC or the disk folder) then error 761 results.
When the main program is in a disk folder then the file naming for the subprograms is
important. The default format for the letter Q is six digits. Therefore the CNC will look
for a file having exactly the correct name to match the subprogram call. For example,
a program running from the disk having a block N40Q100 will result in the running of
a file named P000100. from the same disk folder as the main program.
Other commands in the block with the subroutine call will be executed before the
subroutine is called. For example with a block like N300 X10 Q500 the X-axis will
move as directed and after its move is done then the subroutine 500 will be called.
A subroutine call cannot be made from the X and/or Y block that will run a canned
drilling cycle (when one of G81 to G89 is modal). The drilling cycle defines an implied
subroutine that runs automatically for the axis move with a modal drilling cycle so
another subroutine cannot be run as well from the same block.
Example:
...
N20 G1 X0 Y0 Z0 (move to zero point)
...
This comment is included in the NC block and the block display during processing but
is otherwise completely ignored by the CNC. There are two forms of comment that
can be used to output notes in the state line:
... /Text...
can also be used. Here all characters between the slash (/) and the block end are
treated as a comment. There are no parentheses in cycle blocks (before a comment).
The second line in a part program is a % character (followed by the line feed
character, then the optional carriage return character).
The third line in a part program (after the line with the %) is the program number. The
syntax for this line is the letter P followed by the number, as in P0010 for program
number 10.
Note: Any text that is in the part program file before the line with the % will be ignored
by the control. This header can be used for any information that should be in the file
but that will be ignored by the CNC. An error 816 (missing header in file) will occur if
a line with just the % is not found in the file.
A cycle block is used for calculations with the cycle parameters, for conditional
processing (e.g., IF or GO) or for other cycle programming. Further information
about cycle programming can be found in section 6 for general cycle programming.
The first program line must contain the ASCII-code for a line feed (<lf>). Special
characters and spaces (blanks) are not admissible in the first line of the program.
The second program line must begin with the percent character followed by the
ASCII-code for a line feed. Special characters or spaces are not admissible.
The third program line must begin with the program number, consisting of the
address letter P and a number of digits (maximum of 6), and end with the ASCII-code
for a line feed. In this line, a station identifier enclosed in brackets can also be
contained (e.g., PST 01 as shown in the Note following these requirements).
Program lines after the third program line must begin with a block number consisting
of the address letter N and a number of digits (maximum 4 digits) and end with the
respective ASCII-code for a line feed. Spaces (blanks) are admissible in NC blocks;
however, they are deleted upon loading when they are not contained in comments or
cycle blocks.
The last program block must start with a block number, must contain the instruction
M02 or M30 and must end with the ASCII-code for a line feed.
In all program lines, the combination of line feed and carriage return (<lf><cr>) can
also be used instead of line feed (<lf>). Furthermore, the combination (<lf> <cr>) can
also be preset as an admissible block end character.
Any carriage return characters (<cr>) are ignored during loading from files. Only the
line feed character (<lf>) is used internally in the CNC as the block end character.
However, during output to files (depending on default setting), either <lf>, <cr> <lf> or
<lf> <cr> are generated as block end characters.
The maximum block length is 128 characters including the checksum (3 characters)
and the internally exclusively used block end character <lf>. Thus generally only 124
characters in each block are available.
An NC block must not begin with /*N The loading format to be followed can be
shown schematically as follows:
<lf> (<cr>)
% <lf> (<cr>)
P <lf> (<cr>)
N....<lf> (<cr>)
N....<lf> (<cr>)
...
N....M02 (or M30) <lf> (<cr>)
Symbols used:
Dec Hex Code Dec Hex Char Dec Hex Char Dec Hex Char
The feed axes are designated as X,Y, and Z. The X-axis runs parallel to the work
piece table, preferably horizontal. The Z-axis runs parallel to the axis of the work
spindle.
The position of the three feed axes relative to each other can be determined with the
help of the right-hand rule:
Figure 1-3: Orientation of the three basic feed axes using the right-hand rule
With a vertical Z-axis (see Figure 1-5), on single column machines, the positive X-
axis runs towards the right (viewed from the main spindle towards the column).
With a vertical Z-axis, on twin column machines, the positive X-axis runs towards the
right (viewed from the main spindle towards the left column).
The position of the Y-axis results from the position of the Z and X-axis in the three-
axes coordinate system.
Feed axes, which are available in addition to the basic feed axes X, Y and Z, are
usually designated with the letters U, V and W. Their position and direction is to be
taken from Figure 1-6.
The rotary axes are designated by the letters A, B and C. The A-axis is the rotary
axis around the feed axis X, the B-axis is the rotary axis around the feed axis Y and
the C-axis is the rotary axis around feed axis Z.
Figure 1-6: Position and direction of feed rate and rotary axes.
Memory Aid:
All planes are to be considered in the negative direction of the axis positioned
perpendicular on the plane (e.g., when determining the rotation direction in
connection with the instructions G02 and G03). The rotation direction of the rotary
axes is counter clockwise (mathematically positive) when viewed in the negative
direction of the axis.
In principle, a rotational axis can be positioned "into infinity", since its position is
repeated after every revolution of 360. However, since the numerical range for the
representation of the position is limited, the axis also has a finite travel range of axis
limits. A resettable rotational axis also avoids rounding errors that occur with long
travel paths. It also avoids lower resolution of the position representation at the
edges of the travel range.
For many applications, only the relative position of the axis between 0 and 360 is
required. Positions, which vary by complete revolutions, can be considered as having
the same value. A resetting of the position into the range from 0 to 360 can be
undertaken for a rotational axis that is configured as a "resettable rotational axis".
This is done by programming G92 (zero position offset).
Programming:
360 increments are preset for each revolution of the rotational axis. According to the
programming of A730, the rotational axis is moved to the position 730, or 2 complete
revolutions plus 10. After programming G92 A0, the position is set to 0 and the
actual angular position is internally saved.
If G92 does not include any axis information, the position is set to the actual angular
position (10). The information for the two complete revolutions is then lost and the
position of the rotational axis is reduced to the actual angular position (between 0
and 360). At Delete remaining path, no automatic reduction of a position to the
range 0 - 360 is made. A violation of axis limit can be avoided if the position is
reduced in time.
2 Positioning Instructions
2.1 General positioning instructions
These instructions are in this section:
G13 interpolating axis motion in a counter clockwise arc with a defined radius
If the look ahead monitoring function recognizes that the axis travel limits are
exceeded then:
program execution is stopped before the system processes the block that
caused the violation
The error can be corrected by editing the NC block that caused the violation.
An error message is displayed in all cases where a violation of the axis travel limits is
recognized in real-time. However, the further reaction of the system is different and is
described in the following text in relation to operating functions.
Note: The axis travel limits can be reduced using the function Programmable work field
limitation, thus further restricting the work field.
Part Programming Manual
page 37/352
MACHINEMATE
Application:
The rapid traverse instruction is mainly used for positioning tools. During
positioning, the tool should not be in operation.
Example:
Starting position: X = 250, Y = 200, Z = 250 (see Figure 2-3)
N10 G90
N20 G0 X50 Y80 Z100 "Move to the point X50 Y80 Z100
N30 Z20 in rapid traverse and then move
to Z20 in rapid traverse."
Starting point
Destination
Absolute dimension
Destination
Absolute
dimension
Start
point
Abolute dimension
Absolute Dimension
The instruction G01 causes the tool to be positioned in a straight line to the indicated
destination point with the feed rate that was specified as an additional condition or
was already programmed. Feed rate, speed of rotation and cutting speed are all
modally effective. All axes programmed in the block are positioned simultaneously.
The tool motion path can be either an axis parallel or a non-axis parallel straight line.
The coordinates of the destination points can be entered as either absolute or
incremental dimensions. Straight line interpolation for the feed rate is illustrated in
Figure 2-6, 2-7 and 2-8.
Example:
(Starting position: X = 50, Y = 60, Z = 40)
N10 G90
N20 G1 X80 Y80 Z20 F40 S100
Destination point Feed rate Speed of rotation
40mm/min 100 Revs/min
Start point
N20
These instructions are used for the programming of curved work piece contours. The
curve must lie in the plane defined by the instructions G17 to G20.
The additional conditions for the instructions G02 and G03 are as follows:
An arc of a circle of up to 360 can be programmed in each block. An arc must lie in
the plane defined by the instructions G17 to G20.
The coordinates of the circle center are indicated in incremental dimensions relative
to the starting position. The axis addresses I, J and K are to be used with G17, G18
and G19 for the specification of the circle center coordinates. The I, J or K values for
G2 or G3 are not modal, though G2 or G3 will be modal. If one of the circle center
letters (I, J, K) is missing from the block then a value of 0 will be assumed for that
letter.
Axis address:
Distance of the starting position to the circle center:
For a plane selected with G20, the axis addresses with which the plane itself was
selected are to be used for the input of the circle center:
I Major axis
J Minor axis
Example:
(Starting position: X = 0, Y = 50)
...
N30 G2 X60 Y30 I30 J-10 F200
Clockwise Destination Circle center, Feed rate
Incremental dimension relative 200mm/min
to starting position
Center point
of circle
Start
point
Destination
The contour accuracy of the circle and the circle processing velocity are dependent
on the circular interpolation of the K word value programmed in a G186-block (see
3.7 G186 Corner acceleration, contour accuracy). If no K word was programmed, the
value preset by the machine manufacturer is effective.
For G02 and G03, the center coordinates are given using the interpolation
parameters I, J and K. Apart from the end position, only the radius as
interpolation parameter K has to be given for G12 and G13.
In contrast to G02 and G03, no full circle can be programmed with the
instructions G12 and G13.
A circle section that is smaller than 180 is programmed with positive interpolation
parameter K, a circle section that is larger than 180 is programmed with negative
interpolation parameter K.
Example:
...
N40 G1 X15 Y5
N50 X10 Y15
N60 Y45
N70 G2 X30 Y65 I20
N80 G1 X85
N90 G12 X90 Y60 K5 circular arc < 180(K positive)
N100 G1 X95
N110 Y15
N120 G13 X75 Y5 K-14 circular arc > 180(K negative)
N130 G1 X15
...
The following inputs are rejected with the error message 114:
No input of K
Radius too small, i.e., the distance between the starting point and the end
position is larger than twice the radius
The contour accuracy and the circle processing velocity are dependent on the
circular interpolation of the K word value programmed in a G186-block (see 3.7
G186 Corner Acceleration, contour accuracy). If no K word was programmed,
the contour accuracy and circle processing velocity are dependent on the
existing value programmed by the machine manufacturer.
In the x-/y-plane, a complete circle is interpolated. The Z-axis is treated as the helical
axis.
Note: The maximum number of helical axes is 6. The combination with tangential
circle interpolation (G7) and cutter compensation is possible (G41, G42).
The axes programmed in connection with G74 all move simultaneously in the
direction of their home position. When the axes have reached their home position,
the machine zero point is set based on the home position.
Example:
...
N50 G74 X1 Y1
...
Never program two consecutive G74-blocks.
When G74 is called up, set axis values are set to 0 with G92.
Part position offsets programmed with G54-G59 are not influenced by G74.
Note If the instruction M80 has already been allocated to another function in the
control, then the function "delete remaining paths using probe function" may
be assigned to another M-code.
Application:
After the homing process, the machine's coordinate system is clearly laid out. The
exact location of a work piece to be processed in the machine's coordinate system
can be determined by using measuring probes and the function delete remaining
path using probe.
X, Y is original coordinate system. X'', Y'' is coordinate system after part position offset.
Figure 2-14: Delete remaining path using probe function (ignoring the
probe's radius)
The exact location of the work piece in the coordinate system is unknown. The
following program blocks enable a clear location of the work piece in the coordinate
system:
Description:
N10 X0 Y0 F1000 M80 The point at which the measuring probe or tool reaches the work piece
is assigned the coordinates X=0, Y=0.
N20 X-1 Move the measuring probe or tool away from the work piece edge.
N30 Y-5 Position the measuring probe or tool under the work piece
N40 X5
N50 Y0 M80 The point at which the measuring probe or tool reaches the work piece
is assigned the coordinates X05, Y00. The new coordinate origin is
now positioned at the left lower corner of the work piece.
N60... Beginning of the actual NC program for the processing of the work
piece.
...
Explanation of Example 1:
The first program block N10 causes the measuring probe to be moved in a straight
line in the axes X and Y to the machine's zero point. However, as soon as the
measuring probe reaches a tool edge (point P1 in the example), the axis movement
is stopped and the point P1 is assigned the destination point coordinates X`= 0, Y`=
0, which have not actually been reached yet. Thus the offsetting of the X-axis for the
work piece in relation to the machine's coordinates system is performed.
The measuring probe is moved away from the work piece edge by the program block
N20 and then brought to a position underneath the work piece by the program blocks
N30 and N40.
The offsetting of the Y-axis of the work piece is determined in relation to the Y-axis of
the machine's coordinate system by a travel movement in the Y-axis. This happens in
the program block N50.
The measuring probe is driven linearly in the Y-axis in the direction Y'= 0. When the
work piece edge is reached the travel movement is stopped.
The destination point coordinate Y``= 0 is assigned to the point reached P2. The
point P3 X``= 0, Y''= 0 is therefore the origin of the coordinate system in which the
work piece can be clearly positioned. It lies at the lower left-hand corner the work
piece.
Example 2:
The exact location of the work piece in the coordinate system is unknown and is
determined using a measuring probe with the radius 10 mm (see Figure 2-15).
...
N10 X-10 Y0 M80
N20 X-15
N30 Y-50
N40 X50
N50 Y-10 M80
...
X, Y is original coordinate system. X ", Y" is coordinate system after the part position
offset.
Figure 2-15: Delete remaining path using probe function and measuring probe radius
Description:
N10 X-10 Y0 M80 The measuring probe T is positioned in the direction of the point X-10,
The instruction delete remaining paths using probe function may only be
programmed with the codes G01, G02, G03, G07, G12 or G13.
The function delete remaining paths using probe function works similarly to the
instruction G92 axis value settings. In the case of G92, the coordinates values
programmed in connection together with G92 are assigned to the position where the
tool is located when G92 is called up. In the case of M80, the destination point
coordinates programmed in the M80-block are assigned to the point where the
measuring probe or the tool reaches a work piece edge. Thus in both cases a part
position offset occurs. In the further course of the program, the processes are based
on the offset zero point.
With the delete remaining paths using probe function, part position offsets
reached correspond to axis values set with G92. These can be cancelled with N..
G92. These values are retained during CONTROL RESET (see 5.1.5 G92 Set axis
value).
This feature has built-in processing. Upon the detection of the probe contact, the
CNC will react as illustrated below.
n2 probe input detected by NC software. NC sets the current position to the latched
position (with analog axes all 4 axes of one input group will be updated to the latched
position) and the axis remaining path is moved into the G92 offset. In other words,
the difference between the end position and the actual position (also called the axis
remaining path) is added to the G92 part coordinate system offset for this axis; this
difference is the probe offset obtained by this probe contact.
n3 the NC sets the latched position as new end position to the drive.
n4 drive receives the new end position and stops its previously programmed motion,
so the axis has reached its farthest position P2
n5 drive moves immediately to the new position (which is the position at the moment
of probe contact) and stops.
G07 interpolating axis motion in an arc that is joined tangentially with the
previous block
Example 1:
N10 G0 X10 Y10 F1000
N20 G1 X20 Y40
N30 G7 X50
N40 G1 X60 Y10
N50 M30
Example 2:
N10 G0 X10 Y10 F1000
N20 G1 X20 Y40
N30 G7 X50
N40 G1 X90 Y20
N50 M30
Note: In this example the circular arc only joins tangentially to the straight line of the
preceding motion block but not to that of the following block. The two
tangential joints in the example from the figure above only emerge by chance
due to the location of the straight line of the block N40.
Example 3:
N10 G2 X30 Y30 I30
N20 G7 X50 Y50
N30 G1 X70 Y60
N40 M30
If a tangent is geometrically not possible at the starting point of the circular arc to be
produced by the tangential circular interpolation, or, if the radius is larger than
10,000,000 increments, then a straight line is produced by the instruction G07
instead of a circular arc.
Note: In tangential circular interpolation the contour accuracy and the circle
processing speed are dependent on the K word value programmed in a G186-
block (see 3.7 Corner acceleration, contour accuracy). If no K word was
The axes addresses involved in the spline interpolation of the axes are programmed
together with the program word G05. For each programmed axis, a dummy value
must be specified which consists of at least one digit but which has no meaning (see
following example).
M70 Start and end of spline with curve 0 (natural spline), M70 is the default
instruction.
M71 Start of spline with tangential transition and end of spline with curve 0.
M72 Start of spline with curve 0 and end of spline with tangential transition.
Examples:
N10 G5 X1 Y1 M70/M71/M72/M73 (Spline definition)
N20 G1 X10 Y0
N30 X0 Y15
N40 G6 X5 Y30
N50 X20 Y15
N60 X45 Y30
Part Programming Manual
page 60/352
MACHINEMATE
Figure 2-20: M70: Start of spline and end of spline with the curve 0 (natural spline)
Figure 2-21: M71: Start of spline with tangential transition and end with curve 0
Figure 2-22: M72: Start of spline with curve 0 and end of spline with tangential transition
Figure 2-23: M73: Start of spline and end of spline with tangential transitions
Spline interpolation is activated using G06. Using any other G-code of the same
group (e.g., G00, G02, and G13) can deactivate the spline interpolation. The block
preceding a G06 block must always contain positioning information if a tangential
transition is to be achieved.
Example:
...
N30 G5 X1 Z1 M71
N40 G1 X2 Z5
N50 G6 X3 Z10
...
These program blocks have the following effect on a control with the three axes X, Y
and Z.
Spline interpolation is effective for the axes X and Z. The axis Y is interpolated
linearly. The values programmed in the G05 block with the axis addresses X and Z
do not result in axis movements and do not influence future motion of the axes. The
spline starts tangentially from the destination of the last motion block before the call
of the G06-code. M71 makes the curve at the end of the spline is 0.
The spline definition G05 can be programmed in a single block together with the
dummy coordinates of the axes involved in the spline and an M-code for the spline
type (M70-M73) as shown in the example above. If no coordinates are programmed
together with G05, then no axis is involved in the spline. Activation of the spline
interpolation with G06 at a later point in time has the same effect as G01.
definition with G05 as well as the original definition of the spline type (M70-M73) will
remain valid.
If, for a new call-up of the spline interpolation, other axes are to be involved in the
processing of the spline, their axis addresses (each together with a dummy value)
must be programmed in a new G05 block prior to the activation of the spline
interpolation. If a change of the spline type is desired, the M-code for the desired
spline type must be programmed in a block prior to the reactivation of the spline
interpolation or in the block from which the spline type change is to apply.
Additional Notes:
If only axis addresses and no new spline type have been programmed along with
G05, spline type remains the same.
If G05 is programmed while G06 is active, then the error message 108 appears.
If the spline interpolation is active, only blocks with positioning instructions in the
plane in which the spline is processed may be programmed. Blocks without
positioning instructions (e.g., G04, G92) result in error message 257.
A spline that extends over only one block is executed without an error message
as a normal linear interpolation (e.g., G01).
For test purposes, programs that use spline interpolation can be converted to
linear interpolation by replacing G06 with G01 in the corresponding program. The
instructions for the spline definition or the selection of the spline type do not
influence the linear interpolation.
A contour accuracy programmed with a K word together with active Look Ahead
and G186 has no effect on spline interpolation.
Path velocity
Extreme deviations of a spline from the programmed linear motion distance may
result in a higher actual path velocity than that programmed. This is due to the fact
that the programmed path velocity is always related to the linear motion distance.
During processing of a spline, the tool is positioned with the necessary path velocity
so that it reaches the destination at the same point in time as it would have done had
it traveled along the linear path with the programmed path velocity.
Example:
...
N10 G5 X1 Y1 M70
N20 G1 X10 Y10
N30 G6 X30 Y15 or N30 X30 Y15 respectively.
N40 X30 Y25
N50 X10 Y20
...
Part Programming Manual
page 63/352
MACHINEMATE
Figure 2-24: Path velocity with linear interpolation and spline interpolation
Additional Notes:
Note the method of operation of the path compensations for spline interpolation
(see 5.1.1 Path Compensations).
The function G05, G06 spline is optional and not available in all MACHINEMATE
CNCs.
Application examples:
1. Sawing
2. Laser welding
During laser welding, the material feed must be made at a certain angle to the laser
beam. The material must always be conveyed in the direction of processing in front of
the laser ray.
3. Turning
4. Punching/nibbling
Key Terms:
Tangent Vector:
The tangent vector is a unit vector that points in the instantaneous direction of motion
in the active plane at each point on the motion path.
The function tangential setting to the 2D path is deactivated using the command
G79 or by CONTROL RESET. Intermediate blocks (for synchronization) are
generated when this function is switched off.
In servo processor systems, switching off the tangential setting to the 2D path
function also stops the processing or preprocessing in the base processor until the
switch off instruction has been processed.
When the function tangential setting to the 2D path is activated, the rotational axis
takes the shortest route (turn < 180) to the alignment angle at the beginning of the
processing. The function tangential setting to the 2D path is already active when
the G78 block is processed.
The values of the angle offset programmed together with the axis address of the
rotational axis are limited from -360 to +360. If the programmed value lies outside
this range, the error message 54 is displayed.
In G78 blocks no programming of the rotational axis itself is possible. Only the angle
offset for the rotational axis can be specified. With modally effective G78, however,
the rotational axis (together with other axes) can be programmed as usual. The
Leading-in is then deactivated in the block where the rotational axis is programmed
with modally effective G78. If the rotational axis is positioned incrementally with
modally effective G78 (with G91 active), the programmed values correspond to the
adjusted position of the rotational axis.
Example:
See the following table and Figure 2-29.
N10 G1 X0 Y0 C0 F3000
N20 G78 X30 Y30 Angle of alignment 45
N30 G1 X60 Y40 Angle of alignment approx. 16.5
N40 G3 Y80 J-20 Tangential lead-in to circular arc
N50 G1 X0 Angle of alignment 180
N60 G78 X-40 C45 Angle of alignment 225
N70 G3 Y40 J-20 Angle of alignment: 45 + tangent
vector angle
N80 G1 X-20 Angle of alignment 45
N90 G78 Y0 Angle of alignment 270
N100 G1 X-30 Y-30 M30 Angle of alignment: approx. 217
Example:
(See the following table and Figure 2-30.)
Figure 2-30: Behavior of the lead-in during a reversal of the motion direction
If two contradictory motion blocks are programmed, the tool jumps through 180 on
the same path moving backwards. Specifying a limit angle can prevent this. This limit
angle determines the maximum angle through which the rotational axis may jump at
block transitions.
A second method used to prevent rotational axis jumping is to change the angle
offset corresponding to the desired jump in the program.
Example:
...
N10 G78 C45
N20 G1 X0 Y0
N30 X10 Y10
N40 X30
N50 G78 C-45
N60 G1 X10
Part Programming Manual
page 69/352
MACHINEMATE
...
Programming of G92 set axis value together with a value for the rotational axis is not
permitted when G78 is active. Values for the remaining axes can be programmed
together with G92 as usual even when G78 is active.
In addition no axis value for the rotational axis may be set when G78 is called up
together with G92. If necessary, an axis value set for the rotational axis must be reset
to the original position.
When G78 is active, the part position offsets for the rotational axis selected with G54
to G59 is ineffective.
The reaction of the control upon switching the function off can be preset and one of
the two following possibilities can be selected (see the machine tool manufacturer's
documentation to determine operation for your machine):
1) The control internally counts the full rotations that the rotational axis makes when
repeatedly moving along a closed contour in the same direction. The reduction to
within the range of 0 to 360 is disabled after the function tangential setting to the
2D path is switched off. The absolute position of the rotational axis is restored.
However, continued turns in one direction may result in a violation of the axis limits of
the rotational axis, which is recognized in real-time. The error message 211 is
displayed and EMERGENCY STOP is set. In this case the axis limits of the rotational
axis therefore limit the number of full rotations that the rotational axis is able to make
in the same direction. The axis limits can be preset. See the machine tool
manufacturer's documentation for details.
2) The control does not internally count the full rotations of the rotational axis.
Consequently, the absolute position of the rotational axis cannot be restored after the
function tangential setting to the 2D path is switched off. However, this also
prevents the rotational axis limits from being violated.
Note: Continued rotation of the rotational axis in the same direction can cause
problems such as distortion of cables.
To avoid the following axis jumping, the leadingin can be suppressed at small, non-
programmed changes in direction of the leading axis.
The limit angle is programmed using a NC address that can be set (in the following
examples the letter Z is used). The limit angle can be programmed either when the
leading-in is activated or deactivated. In the following text it has been assumed that
the leading axes are designated X and Y and the following axis C.
Example program:
The example program basically describes a rectangle with a rounded corner on the
upper right. In the blocks N10 to N90 a move is made parallel to the X-axis towards
the right, whereby the Y value varies about 0. This means that the tangential
following axis jumps by a value between 2 and 10 at each block transition.
then from block N15 onwards all jumps which are less than 10 are suppressed. This
means that the tangential following axis remains at its start position up to and
including the block N90. Its position only changes at the start of the circle block.
The programmed Z value is always relative to the last rotational axis position
reached. If the value Z - 10 is not programmed until block N30, then a jump is made
through 15.173 degrees upon the transition to the N50 block.
A Z value can be programmed at any position in a program and remains active until a
new value is programmed. At CONTROL RESET and end of the program the Z value
is deleted.
In contrast to M00 the instructions M02 and M30 have the effect that all modal values
are cancelled and the control is again reset in the home position.
M02 or M30 is entered in the last block of an NC program. The axes remain at the
position reached at the end of the program.
If a program repetition was programmed with L in an M02 or M30 block, then M02 or
M30 respectively first becomes active after the last repetition.
In subroutines M02 or M30 only marks the end of the subroutine; not the end of the
main program. M02 or M30 in this case cause only a return to the main program; the
control is not reset to the home position.
Each program must contain M02 or M30 as an end label. If this is not the case, the
error message 32 appears.
Additional Notes:
An offset of the coordinate zero point programmed with G92 is not reset by
M02/M30.
Subroutine calls in a block with M02/M30 are not allowed. No error message
appears; however, the subroutine call is not executed.
M02/M30 can be positioned anywhere in the last block; the instructions which
follow after it in the same block are still processed before M02/M30 becomes
active.
The CNC is equipped with a block buffer for a certain number of NC blocks. The
interpreter process fills this block buffer. From this block buffer, the interpolator
process takes the NC blocks. For certain applications, it is necessary to prevent the
interpolator process from taking blocks from the block buffer. The withdrawal of
blocks from the block buffer can be enabled or disabled using the instruction G10
Empty dynamic block buffer or G11 Fill dynamic block buffer.
Application:
The instruction G10 is necessary, for example, when a program must be stopped at a
certain position using M00. This allows output of messages to the operator with the
help of the interactive cycles.
After processing a G10-block, the interpolators block buffer is only refilled by the
interpreter process after all preceding blocks have left the block buffer.
Example:
Tool change at unload position X=0, Y=0.
...
N100 Y0
N110 X0
N120 M0
N130 G10
N140 X200 Y200
...
The instruction G10 in N130 has the effect that the block N140 is processed only
after the cycle start button is pressed (to resume the program after the M00).
Application:
The instruction G11 is useful when a fairly large number of very short blocks has to
be processed without pauses at the block transitions. Programming of G11 is
recommended before the activation of a spline interpolation or the function Look
Ahead, where an optimum result can only be achieved when a sufficient number of
NC blocks are present in the dynamic block buffer at the time of activation.
If G11 is programmed in a block, then this instruction as well as the following blocks
are only processed in the interpolator process when the block buffer is completely full
or the complete program is contained in the block buffer.
Part Programming Manual
page 75/352
MACHINEMATE
Contouring errors result from inevitable control deviations. The size of the contouring
error depends on the feed rate and the control loop amplification (KV Factor).
Contouring errors can lead to slight rounding of the corners of the work piece, as
shown in Figure 3-1. Depending on the type of processing, contouring errors can also
lead to twisting and deformed corners.
If G73 is programmed, the tool may lose contact with the work piece when stopping.
Marks will occur in the workplace contour because the cutting pressure is suddenly
reduced when the feed is halted.
When Look Ahead is active the CNC recognizes several NC blocks in advance, at
which positions the axes have to be accelerated or braked. The feed rate is
automatically adjusted by acceleration or braking. The adjustment is made in
consideration of the following factors:
The feed rate programmed in the individual NC blocks (see Figure 3-3)
The path curve and the corners, taking the maximum admissible axis
acceleration values into consideration (see Figure 3-5)
G08 must be active when G95 (in/min or mm/min) is active. With the G95 function the
CNC is performing a different type of look ahead than being described here with G09.
G09 is not allowed with G95 active.
To enable a constant feed rate over several blocks in advance, when Look Ahead is
active, the motion does not stop at the programmed block destinations, but continues
with the feed rate reached at the block end (see Figure 3-3).
If the feed rate must be reduced to 0 at the block end, (e.g., because G09 was
deactivated) motion stops exactly at the last block destination before deactivation of
the function Look Ahead.
The CNC allows a large number of NC blocks to be "looked" at in advance with active
G09 function. The number of NC blocks that can be looked at in advance depends on
the available memory space in the dynamic block buffer (at least 4 blocks).
When processing several NC blocks with the Look Ahead function active, the feed
rate is limited so that a reduction of the feed rate to 0 is possible up to the last block
to be processed. Each block has at least one point of interpolation.
If G09 is active and the minimum block execution times are not too short or the
maximum block preparation times not too long, a new block in the geometry
preparation is finished in time and the interpolator process is available for the
processing in time. Programming G11 Fill dynamic block buffer or G04 Dwell time
(e.g., before a critical program section) can ensure this. It is also possible to
accelerate or brake from over several blocks away.
Additional Notes:
Switching from next block mode to the single mode causes all unprocessed G09
blocks to be processed as G08 blocks. If G09 blocks were already interpreted as
G08 blocks, switching from single block mode to next block mode will cause the
blocks to still be processed as G08-blocks. When processing NC blocks in the
single mode the instruction G09 always works like G08.
When Look Ahead is active, the spline interpolation with tangential transitions
should always be used. The other spline interpolation types are also applicable
(in which case one G08 block at the spline start and one at the spline end must
be tolerated).
To achieve optimal method of operation with servo processor systems after the
Look Ahead function is activated, the dynamic block buffer should be filled before
the first motion block is executed. The filling of the dynamic block buffer can be
achieved by using the instruction G11 fill dynamic block buffer or with a dwell
time programmed with G04.
Example:
...
N30 G9 (G09 must already be active before
G04/G11 is programmed)
N40 G4 F500 or N40 G11
N50 G1 X20 Y30
...
N200 M30
Note: The function Look Ahead is optional and not available in all controls. When
Look Ahead is available and active, it may be beneficial to limit the acceleration
Part Programming Manual
page 79/352
MACHINEMATE
Example:
...
N20 G186 E0.9 K0.05
...
The axes of a machine tool have a maximum admissible acceleration. A corner
acceleration can be programmed by the instruction G186 together with an E word.
Depending on the value of the E word, the corner acceleration either causes a short-
term infringement of, or a reduction of, the maximum acceleration of the axes when
G09 Look Ahead is active. The effect of different E word values is to be taken from
the following table:
The E word programmed with G186 controls the sharp decrease in axis speed
between motion blocks as shown in Figure 3-4.
Figure 3-4: Sharp decrease in speed between motion blocks dependent on the
corner acceleration
The size of this sharp decrease in speed depends on the size of the E word value
and the angle between the paths described in successive blocks (see Figure 3-5).
The higher the E word value and the less the deviation of the angle from 180, the
less the decrease in speed. On the basis of the contouring error, the required contour
accuracy at the corner is therefore finally programmed via the E word.
Additional Notes:
If no E word was programmed, the value preset by the machine tool
manufacturer applies. (The default value comes from the Machine Parameter
CornerAccelerationG09.)
The function Look Ahead can be switched off with a very low E-value (e.g.,
0.001), so that the processing is made in the same way as when G08 is active.
Figure 3-6: Circle reduction error when pulling out of a circle from standstill
During circular interpolation with programmed contour accuracy, the path velocity is
lowered so greatly that the programmed maximum circle radius reduction is not
exceeded. If no value is input for the circle accuracy, a high K value can be
programmed. The K value is programmed in the same units as the axis positions.
Additional Notes:
A programmed contour accuracy only influences the circular interpolation (with
G02/G03, G12/G13 and G07), and not the linear and spline interpolation.
Example:
...
N20 G75
...
After a block with G75 the curvature function is active. The function is deactivated
with G8 and/or G9. The curvature function includes Look Ahead so when G75 is
active the Look Ahead function is also active.
The purpose of the function is to adjust continuously the velocity to the path
curvature when running so that the axes do not exceed a given limit of their
acceleration. The function approximates the G1 blocks with polynomials with a given
accuracy.
The polynomials are defined so that the transitions between two blocks will be
tangential. Depending on the curvature, a profile for the velocity is calculated to
ensure the given maximum radial acceleration is not exceeded. The maximum
allowed acceleration limit can be programmed with G76.
Additional Notes:
When the curvature function is active programming the contour accuracy with
G186 has no effect. Curvature cannot be activated during G95.
Example:
...
N20 G76 K70
...
The G76 K value specifies the percentage of the maximum acceleration that is
allowed for the radial acceleration. In the example, the K70 indicates that the
allowed radial acceleration is 70 percent of the maximum axis acceleration.
When G76 is not programmed the default value for the curvature acceleration is
used. (The default value comes from the Machine Parameter
CurvatureAcceleration.)
When the given accuracy limit for the polynomial interpolation is met then the
polynomial is modified so that it is just inside the accuracy limit. This leads to a
corner at the block transition and probably to a velocity at the block transition that is
below the velocity profile from the curvature. (The accuracy limit value comes from
the Machine Parameter CurvatureAccuracy.)
However, another unit of time can also be used, such as milliseconds. If the letter F is
expected to have a number of decimal places, usually 3, then the programmed dwell
time is usually configured to be in seconds (but with the time resolution to
milliseconds with those digits to the right of the decimal point). If the letter F syntax is
expected to have no decimal places then the programmed time is often configured to
be in milliseconds.
The maximum value is 99999. If dwell times longer than this are necessary, G04
blocks must be programmed the required number of times in sequence.
A dwell time has the effect that the next NC block is not executed before expiration of
the dwell time. Note that a feed hold (cycle stop) condition does not suspend a dwell,
only axis motion.
Example:
...
N50 X10
N60 G4 F500
N70 Y20
...
The programmed dwell time in block N60 has the effect that after processing of block
N50 a waiting time is inserted (in this case either 500 seconds or 0.5 seconds,
depending on the definition for the letter F syntax) before the next block (N70) is
processed.
The first G-code is configurable with a machine parameter. Its default value is 200. The
three following G-codes (here G201 to G203) are assigned the numbers following the
first G-code.
Note that this feature works only with corners. In other words when the consecutive
blocks are G1 (linear interpolation) the corner smoothing G-codes (G201- G203) will
check the path. If either block (active block or next block) involves circular
interpolation (G2, G3, G12, G13) then the transition between the two blocks is not
affected by this feature (i.e., the corner is not smoothed or rounded). This feature
will round transitions only between G1 and/or G0 blocks since both of these modal G-
codes move the axes in an interpolated line.
If the corner deviation should be programmed using a different letter, then its
ASCII code has to be entered in a machine parameter. The value specified in a
machine parameter is active after a control reset until a corner deviation has been
programmed.
A machine parameter defines the minimum path length that can be shortened.
The blocks that are shorter than the machine parameter value were halved.
This monitors the accelerations that occur on the corrected path as a result of
feed direction changes. The maximum permitted acceleration is the circular
acceleration defined by two machine parameters.
The path feed-rate is limited for blocks in which the permitted acceleration is
exceeded in such a way that it will just be maintained.
A simple example:
At block transitions that are not tangential, the real-time mill radius correction
causes nominal value jumps. This is shown in the following diagram.
3.10.8 Programming
The function has three different activation mechanisms.
These are specified by G200-G203 where G201, G202, G203 are for the
activation and G200 is for the deactivation. If only the activation code is
programmed then the corners being programmed in the currently work plane
level are rounded. In this case, corners created by movements out of the
current plane will not be rounded. If one wants to round corners oriented
freely in the used area, the three axes forming the spatial co-ordinate system
must be programmed with an arbitrary value in the activation block. The
individual G-codes are explained in the following text.
The "corner smoothing with a defined radius curve" function is activated with
G201. A radius curve can be programmed using R.
This can be changed in the NC program as desired with the first programming
of G201. If no radius is programmed, the value that is specified in a machine
parameter will be used.
A programmable corner deviation is used instead of the radius curve. This can also
be re-programmed in every block. The value specified in a machine parameter is
used as default value. An activation block would appear as follows:
This is very similar to G201. G203 can program a corner error in addition to the
radius. This corner error is then interpreted as a maximum permissible corner
deviation. If smoothing is possible as defined by the programmed (or default)
radius curve without exceeding the programmed (or default) corner tolerance then
smoothing will take place using this radius curve. In the other case smoothing will
take place in such a way that the maximum tolerance is observed. Programming
should take place as follows:
Correction in all three linear axes is generally needed for mill radius correction
of an arbitrary path when moving in three dimensions. It is possible to make the
correction to the right and to the left of the path in the direction of milling.
The tool vector and the path tangents do not have be vertically oriented to each
other in order to obtain an unambiguous correction. The correction always
occurs vertically to the plane which is created by the path tangent and the tool
vector. This unambiguity is then missing if the tool vector and the path tangent
are parallel to each other or if the path tangent is zero.
The first case occurs only if one proceeds in the direction of the tool. In this
case, the old correction value is retained. The second case can arise through
sole movement of the round axes. In this instance, the old path tangent is used
but the new tool orientation is used to calculate the correction.
The activation of the correction function is also permitted without path information:
N10 D7
N20 G152
N30 G90
N40 G181
N50 X22
Entry into the corrected path occurs with a linear accumulation of the correction
value. Leaving the corrected path occurs with a linear removal of the correction
value.
A real-time mill radius correction without the function Corner Smoothing is generally
not usable since corners cannot be machined and speed jumps occur at all
changeover points between blocks causing the path curvature (spline - straight, circle
- straight, circle - circle) to change suddenly.
The primary purpose of the corner smoothing function is to generate bend-free paths
for the real-time radius correction and to ensure that the programmed feed-rate is
maintained on the corrected path. Therefore, the corner smoothing function with
active 5-axis mill radius correction deviates from the standard range of functions in
two ways:
A circle is inserted in internal corners in the plane formed by the corner that
ensures that the corner can be rounded without contour violation. A circle having
exactly a radius of the correction value is inserted resulting in a corner as for the
standard 2D radius correction if the tool is positioned vertically on the corner.
A circle with a negligible radius is inserted at the outer corners. Thus a circle with
the correction value is traversed using the real-time radius correction.
The programming of the real-time radius correction with Corner Smoothing appears, for
example, as follows:
the neighboring blocks are shortened due to the smoothing function causing
large errors in the corner.
smoothing takes place with a radius that is too small and together with real-time
radius correction an error results at the workpiece.
To solve this problem, the corner smoothing function can be preset so that starting
at a certain marginal angle the corners are rounded outside rather than inside. This
is demonstrated in the following diagram.
Figure 3-14: Corner smoothing with corners rounded outside not inside
Furthermore, the path speed differs strongly from the programmed speed in places
where collisions occur.
Together with corner smoothing, this problem cannot occur as long as no splines or
circles are programmed since corner smoothing always inserts circles that do not
cause collisions.
4 Technological instructions
4.1 Influencing the feedrate
These instructions are in this section:
G63 override the feed rate override input with a defined percentage
G66 disable the temporary override and use the operator override input
When G94 is active, the F code is interpreted as inches (millimeters) per minute
feedrate.
G94 is cancelled by G95.
When changing feedrate modes, a new feedrate is required with either the G94 or
G95. The old F value cannot be used in the new feedrate mode.
When G95 is active, the F code is interpreted as inches (millimeters) per revolution
feedrate.
It is recommended that a G95 be programmed on the same line as the F code to
avoid confusion as to the active feedrate mode.
When changing feedrate modes, a new feedrate is required with either the G94 or
G95. The old F value cannot be used in the new feedrate mode. Before an axis will
move at the feedrate specified with the G95 the spindle must be turning (i.e., M3/M4)
because with the spindle stopped (i.e., M05) the effective feed rate in G95 is 0.0.
G08 must be active before G95 becomes active because G95 requires its own type
of look ahead processing as the feed rate follows the spindle rotation.
Example:
F2000 means: Feed rate 2000 mm/min (when G94 and G71 are active)
A feed rate not equal to 0 must be programmed for all types of interpolation
unless positioning in rapid traverse (G00), programmable homing (G74) or thread
cutting (G33, G34). At G00, the pre-defined rapid traverse velocity becomes
active.
A programmed feed rate is modal. It is valid until a new feed rate is programmed
or until the feedrate mode is changed (G94/G95).
A programmed feed rate and the rapid traverse velocity can be changed by the
feed override (see 4.1.1.2 Feed override).
Additional Notes:
During control reset, F is set to 0. An F word must be programmed in the first motion
block of a program (or in a preceding block). This is not valid however for programs
which are to be processed as subroutines only. In subroutines, the fact that the F
word is missing offers a certain protection against the subroutine being started as a
main program. If the F word is missing, the error message 199 appears and the
program is not executed.
A dwell time is programmed through F in connection with the instruction G04 (see 3.8
G04 Dwell time).
A manually adjusted feed override (on the machine tool, usually a rotary switch)
In the operating modes MANUAL and AUTOMATIC, the programmed feed rate (SET
value), the override in %, the momentarily actual effective feed rate and the
interpolation velocity of the CNC (ACTUAL value) are displayed in the FEED window.
A feed rate influenced by an override can therefore be read directly from the monitor
for program optimization.
Important: Feed override and spindle override cannot be adjusted with the user interface,
but only with this part program technique or an external override switch.
A feed override programmed with G63 can be deactivated by the instruction G66.
G66 simultaneously activates the feed override, which is set at the feed rate override
switch on the machine tool.
If no feed override was programmed with G63, the feed override adjusted on the
machine tool is active.
If no F word is programmed in a G63 block, the axes are positioned with the feed rate
programmed in the NC program. If a feed override has already been programmed in
a preceding G63 block using an F word and this has since been deactivated, this
previously programmed feed override becomes effective again.
Example:
N10 G66 The feed override adjusted at the machine tool is activated.
...
N50 G63 The feed override adjusted at the machine tool is deactivated. The axes
are positioned with the feed rate programmed in the NC Program.
...
N100 G63 F55 The feed override is set to 55%; i.e., the axes are positioned at 55% of
the programmed feed rate.
...
N200 G66 The programmed feed override is rendered ineffective; the feed override
adjusted at the machine tool is activated.
...
N300 G63 Same effect as N100.
Additional Notes:
Feed overrides are effective both on the programmed feed rate as well as on the
rapid traverse velocity. During execution of G00 rapid traverse, the feed override
is limited to 100% max.
Application:
A reduction of the preset maximum acceleration is sometimes necessary (e.g., if the
load on certain components such as laser optics has to be limited).
Programming:
The acceleration is programmed with the axis address B and a value (as a %)
between 1 and 100 without decimal places.
Example:
The preset maximum admissible acceleration is reduced to 25% of its value and the
acceleration time or braking time is quadrupled.
...
N20 B25
N30 G1 X10 Y15
...
The programmed value affects all axes.
Additional Notes:
When inputting values larger than 100 or values that would result in an
acceleration time of more than 32 seconds, the error messages 212 or 110,
respectively, appear.
If Look ahead is active, the acceleration can be limited using the instruction
programmable acceleration. This instruction causes a leveling of the
accelerations when Look Ahead is active.
G63 override the spindle speed rate override input with a defined percentage
G66 disable the temporary override and use the operator override input
4.2.1 S Word
The spindle speed in revs/min is programmed with an S word.
A spindle override can be programmed with an S word together with the instruction
G63 (see 4.2.4 G63, G66 Spindle override). A limitation of the spindle speed can be
programmed with G92 (see 4.2.5 G92 Spindle speed limitation). The direction of
rotation of the spindle is determined by M-codes (see 4.2.2 M03, M04 Spindle ON,
clockwise or counter-clockwise).
The S is also used for the orientation with M19 (as the number of degrees). This S in
an M19 block does not change the modal spindle speed, so an M03 S before an M19
followed by just an M03 in a later block will return to the previously modal spindle
speed.
clockwise and counter-clockwise are as viewed looking away from the spindle
towards the working area.
the manually adjusted spindle override (on the machine tool, usually a rotary
switch)
In the operating modes MANUAL and AUTOMATIC, the programmed spindle speed
(SET value), the override in % and the momentarily actual effective speed rate
(ACTUAL value) are displayed in the window SPINDLE. A spindle speed influenced
by an override can therefore be read directly from the monitor for program
optimization.
Important: Feed rate override and spindle override cannot be adjusted with the user
interface, but only with this part program technique or an external override
switch.
If no spindle override was programmed with G63, the spindle override adjusted
on the machine tool is active.
If no S word is programmed in a G63 block, the spindle is rotated with the speed
programmed in the NC program. However, if a spindle override has already been
programmed in a preceding G63 block using an S word and this has since been
deactivated, then the previously programmed spindle override becomes effective
again.
Example:
N10 G66 The spindle override adjusted at the machine tool is activated.
...
N50 G63 The spindle override adjusted at the machine tool is deactivated. The
spindle rotates with the speed programmed in the NC program.
...
N100 G63 S60 The spindle override is set to 60%. The spindle rotates at 60% of the
programmed spindle speed.
...
N200 G66 The programmed spindle override becomes ineffective, the spindle
override which was set at the machine tool is activated
...
N300 G63 Same effect as N100.
Note: Spindle overrides have no effect on G74 blocks (programmable homing) and
G33 or G34 blocks (thread cutting).
Application:
A speed limitation can sometimes be necessary:
When using a chuck without compensation for the centrifugal force. The speed
should then be limited for safety reasons to a value at which a sufficient tension
is still guaranteed.
When G96 is used, a maximum RPM constant should be entered in the program prior
to the first G96; (G92 Sxxxx) if not, the maximum RPM for the machine is used.
When moving X in toward the center of the spindle, the RPM will only be updated
until either the machines maximum RPM is reached, or the maximum RPM
constraint (G92 Sxxxx) is reached. For correct CSS operation, X0.0 must be the
center of the spindle.
When either limit is reached, the spindle operation will be straight RPM.
SFM/SMM operation will again function once the tool position causes the control to
calculate an RPM less than either of the limits.
Do not position the X-axis at high feedrates in the G01 mode during G96 operation.
The spindle drive may not be able to react fast enough and may cause a fault.
Note that a spindle gear change cannot be performed during the G96 mode. The
correct spindle gear range must be defined before the G96 block. If the axis motion
requires the spindle speed to exceed a limit of the current range then the speed (and
so the feedrate) is clamped there, at that limit in the range (minimum or maximum). If
the machine has more than one spindle gear range and if the G96 is programmed
without an explicit gear range declaration (i.e., M41 to M46) then error 871 results.
The gear range must be explicitly declared prior to the G96, if a gear selection is
possible, because the G96 will not change spindle gear ranges based on the varying
spindle speed as it maintains the CSS. If there are no spindle gear ranges then this
M-code requirement does not apply.
Depending on the position when reaching "spindle stop rpm", a reversal of the
rotation can result. It is possible for spindles with only one direction to be set-up so
that a reversal of the rotation is not allowed. In this case, the spindle rotates after
reaching the "stop rpm" in the present direction to the position so the programmed
position might not be reached using the shortest distance.
The two types of compensation values are assigned their own compensation value
memories in the control. The size of this memory and therefore the number of
compensation values that can be stored are preset. The corresponding values can
be taken from the documentation of the machine tool manufacturer.
There are three ways in which values of the tool tip radius compensation memory can
be set Manually, By Allocation in a Cycle Block, and By Loading a File Which
Contains the Required Values, as follows:
Manually:
These inputs are now stored in the compensation value memory of the
MACHINEMATE and are displayed on the monitor in the upper window by 1)
allocation in a cycle block (see Chapter 6, General Cycle Programming), or 2) loading
a file which contains the required values. Here a certain file format must be
observed, which is similar to the file format for part programs:
<lf>
% <lf>
DTABXX <lf> Correction value table number
D001=+00000.000 <lf>
.
.
.
<ETX> File end character
Notes:
<cr> <lf> can also be used instead of <lf>.
The file end character (in the above display <ETX> =03H) can be preset.
Tool radius compensation values are selected with the axis address D and the
number of the desired compensation value memory.
Example:
...
N30 G1 X5 Y0 D4
...
Here, in the block N30, the content of the fourth radius compensation value memory
is selected. This value is used for the function path compensation.
Programming D0
Notes:
Manually:
Select the memory location whose value is to be changed. (The memory location
now appears in the input window. Here the old value can be deleted with the
BACKSPACE key and a new value entered.)
These inputs are now stored in the compensation value memory of the
MACHINEMATE and are displayed on the monitor in the upper window by 1)
allocation in a cycle block (see Chapter 6, General Cycle Programming), or 2) loading
a file which contains the required values. Here a certain file format must be
observed, which is similar to the file format for part programs:
<lf>
% <lf>
HTABXX <lf> Compensation value table number
H001X=+00000.000 Y=+00000.000 <lf>
.
.
.
<ETX> File end character
Notes:
<cr> <lf> can also be used instead of <lf>.
The axis addresses of the axes that are preset for length corrections must also
be entered. If only one axis is preset for length corrections, then only one value
per line can be entered and this must also be accompanied by the axis address.
Tool length compensation values are selected with the axis address H and the
number of the desired compensation value memory.
Example:
...
Part Programming Manual
page 107/352
MACHINEMATE
N30 X2 Y1 H2
...
Here, in the block N30, the content of the second length compensation value memory
is called up and is consequently taken into account when positioning the axes
(maximum of 2) which have preset length compensation.
Programming H0
Notes:
Tool length compensations should be deactivated at the end of the program with
H0.
Active tool length compensations are shown on the axis display during the
execution of the program (operating mode "AUTOMATIC" and "MANUAL" and in
the window compensations in the operating mode "INFORMATION").
The syntax for either (tool number or turret position) is simply a T followed by the
number.
For a lathe, the T-code defines the next turret position. The block with the T-code
expects the turret to be rotated to that turret position.
The block identifying the new turret position will often include its accompanying
tool compensation codes, as required, as in:
N150 T5 D5 H5
Alternately, the D and H codes will be in the part program as needed. The D-code
is not required until a G41 to G44. The H-code is required before or with the next
axis motion that requires the tool length compensation (usually both X and Z
axes).
For a milling machine, the T-code defines the next tool number. There are many
different approaches to tool management in milling applications. The most
common:
A block after the new tool is in the spindle will include its accompanying tool
compensation codes, as required, as in:
N150 T5 M6
N160 G0 X10 Y10 Z20 D5 H5
Alternately, the D and H codes will be in the part program as needed. The D-code
is not required until a G41 to G44. The H-code is required before or with the next
axis motion that requires the tool length compensation (usually the Z-axis).
With fixed location tooling, each tool is assigned a particular location (or pocket) in
the tool storage, often called the tool magazine. Each time a new tool is selected,
the previous tool is returned to its original pocket and then the new tool is moved
from its pocket to the spindle.
The M-code M06 will accompany the T-code in the same block to indicate to the
PLC that a tool change is required.
Example:
N10 T1 M6 get tool T1 from pocket 1
...
N120 T5 M6 return T1 to its pocket 1,
get tool T5 from pocket 5
...
N540 T3 M6 return T5 to its pocket 5,
get tool T3 from pocket 3
The special T-code of T0, with the M6, is sometimes used to indicate to the PLC
that the tool in the spindle should be returned to its location in the tool magazine
but another tool is not selected to replace it in the spindle.
With variable location tooling, each tool is assigned a particular number and it is
loaded into an appropriate location or pocket in the tool magazine. The operator
will update the CNC tool table with the correct tool numbers and pocket numbers.
Each time a new tool is selected, the previous tool is returned to the pocket for
this new tool while this new tool is moving from that pocket to the spindle.
Essentially, at each tool change, the new tool is swapped with the previous tool.
Over time (and after tool changes) the various tools will migrate among positions
within the tool magazine.
With this tool management scheme, the M-code M06 indicate to the PLC that a
tool change is required. A previous block would have identified the T-code for
which tool should go into the spindle. This coding is sometimes called the tool
preselect, because the tool is identified for its eventual movement into the spindle
but it is not moved to the spindle at that time.
The tool preselect is done in the program so that the tool is picked up by the PLC
prior to the actual tool exchange. This approach decreases the time when the part
program is not cutting because the interruption to the part program is just the time
for the tool exchange. With the first variation above (fixed location tooling) each
tool change (M06) requires several mechanical motions, including one or two
moves of the tool magazine. For this approach, the tool change sequence is
different:
1) Swap the tools move the tool that is waiting into the spindle at the same
time that the tool in the spindle is coming out.
2) Move the tool just taken from the spindle into the current pocket of the tool
magazine.
Since the tool is in the spindle after the completion of step 1, the part program can
resume execution with the next block at its conclusion. The program does not
have to wait for the completion of step 2. This approach minimizes the chip to
chip time of the spindle but it also requires a mechanical tool change
configuration that allows this swap of two tools. The mechanical tool change
configuration is typically simpler for fixed location tooling than it is for variable
location tooling.
Example:
N10 T1 move the magazine to the pocket with T1,
move it from the pocket into the tool change
mechanism
...
N120 M6 put T1 into the spindle,
get the tool that was in the spindle
put that tool into the pocket that had T1
...
N140 T3 move the magazine to the pocket with T3,
move it from the pocket into the tool change
mechanism
...
N640 M6 put T3 into the spindle,
get the tool that was in the spindle
put that tool into the pocket that had T3
The special T-code of T0, with the M6, is sometimes used to indicate to the PLC
that the tool in the spindle should be returned to a location in the tool magazine
but another tool is not selected to replace it in the spindle. With this approach, the
pocket to receive this tool is not predictable. The only requirement is that the CNC
find an empty pocket for the tool. If the operator is running with the maximum
number of tools (i.e., one more than the tool magazine capacity, so that every tool
change is a swap and there are no spare locations) then the T0 will not be
possible.
With manual tooling (usually in a milling application; unusual for turning), the T-
code, if any, identifies the tool number for any tool change.
Example:
N10 M0 (MSG,T1) operator manually puts T1 into spindle
...
N120 M0 (MSG,T5) operator manually puts T5 into spindle
...
N540 M0 (MSG,T3) operator manually puts T3 into spindle
The M0, the operator stop M-code, stops the part program. An operator message
can be provided with the M0 in the block, using (MSG, . . . ) to identify the
message to be displayed when this M0 becomes active.
With manual tool management, there is usually no need to even use the T-code in
the part program because the operator is managing the tooling, rather than the
CNC picking the desired tool from a tool magazine.
The procedure for the programming of ART is described in the MachineMate Start Up
Manual section 15. The ART programming is in that manual, not in this NC
Programming manual, because ART is part of the control start up activities. There
are three optimizations that are run during the process of ART: optimizing the axis
velocities, optimizing the axis accelerations and optimizing the changing in
accelerations. Each optimization consists of running a part program that exercises
the machine, enabling the CNC to monitor the axis performance under defined
circumstances. The respective part programs are also described in the Start Up
Manual. None of these ART programming sequences will be applied within a normal
part program.
5 Geometric instructions
5.1 General geometric instructions
These instructions are in this section:
G43 path compensation is on, to the left of the programmed path, with an
altered approach
G44 path compensation is on, to the right of the programmed path, with an
altered approach
G54 to G59 activate that part zero offset (there are six sets)
Most NC programs are written for tool travel movements. The travel movements can
be programmed relative to:
The milling cutter center path for a "standard tool (a tool with specified
dimensions).
If the dimensions of the tools are not considered during program execution, the tool
travel movements can have different effects on the work piece contour depending on
the tool actually used. This is illustrated in the following figure:
Figure 5-1: Effect of different tool radii on the work piece contour.
When using a milling cutter with relatively small radius (A) less material is
removed from the work piece than when using a milling cutter with relatively large
radius (B) when executing the same NC program with identical milling cutter
center path.
Such a dependence of the finished contour of the work piece on the tool
dimensions is undesirable. To avoid this dependence, G-codes are available for
so-called path compensations. If these G-codes are activated during execution,
the tool will move on a path that has a constant distance to the programmed
contour, according to size and dimensions.
The path on which the tool moves and which always has a constant distance to
the work piece contour is called an equidistant.
To be able to determine the equidistant on which the tool must be positioned, the
control requires, among other things, the data of the used tool and input as to
whether the equidistant must lie in motion direction left or right of the work piece
contour (see Figure 5-2).
Figure 5-2: Equidistant left and right of the work piece contour
The active plane (selected with G17-G20) is always the decisive factor. The path
compensation always takes place in the active plane. To determine whether the path
compensation should be made in motion direction left or right of the work piece
contour, look in the negative direction of the axis that is perpendicular to the active
plane. The control takes the tool data from the tool tip radius compensation memory.
It is either entered into the CNC control during set-up using the set-up sheet or read
in. If the program is written based on the work piece contour, the path compensation
value is the radius of the tool.
If the program is written based on a standard tool, the path compensation value is the
deviation of the radius of the tool actually used from the standard tool radius.
Part Programming Manual
page 115/352
MACHINEMATE
Assume the work piece contour is programmed and path compensation is active
during block processing. The positioning is then made on an equidistant to the
programmed contour. At block transitions, the intersection point of the extended
equidistant paths of the block currently being processed and the next block is moved
to and stopped at. If no intersection is obtained, linear intermediate blocks are
produced. See Figure 5-3, 5.1-4 and 5.1-5 for examples of the intersection position.
Figure 5-3: Path compensation at the block transition Straight line/Straight line
Figure 5-4: Path compensation at the block transition Straight line/Circular arc
Figure 5-5: Path compensation at the block transition circular arc/circular arc
Path compensations are activated with the instructions G41 to G44 as follows:
If equidistant is in tool motion direction left of the work piece contour, the path
compensation is programmed with the instructions G41 or G43 (see Figure 5-2).
If the equidistant is in tool motion direction right of the work piece contour the
path compensation is programmed with the instructions G42 or G44 (see Figure
5-2).
The control requires the exact dimensions of the current tool for the
determination of the equidistant path. These dimensions are stored in the tool tip
radius compensation memory. These compensation values are activated with the
address character D together with the number of the desired compensation value
memory.
The call up of the compensation values and the activation of the path
compensation can be programmed in different NC blocks (example A) or in the
same NC block (example B).
The instructions G41 and G43 and the instructions G42 and G44 each differ when
applied to approach behavior of the axes (see following topic titled Approach and
retreat behavior of the axes).
Example A:
N10 D7 Call up the 7th tool tip radius compensation
value from the compensation value memory
N20 G41 Activation of the path compensation (equidistant
left of the work piece contour)
Example B:
N10 G41 D2 Call up the 2nd tool tip radius compensation
value from the compensation value memory and
activation of the path compensation (equidistant
left of the work piece contour)
The positioning block after the activation of a path compensation is called the
approach block. If a path compensation is programmed along with a positioning
instruction in the same block, this block is designated as an approach block.
If a path compensation is activated with G41 or G42, a move is first made to the
intersection of the equidistant of the approach block and the next block. If the
approach block is one with linear positioning instructions, the intersection is moved to
in a linear path. If the approach block is one with circular positioning instructions, the
intersection is moved to on a spiral path.
N10 G1 X1 Y1 F1000
...
N40 Y2
N50 G41 D1
N60 G2 X2.5 Y3.5 I1.5
N70 G1 X5
...
An altered approach of the equidistant path is enabled with the instructions G43 or
G44. After programming G43 or G44 the starting position of the equidistant path of
the next block is moved to. This starting position is offset perpendicular to the
programmed tool path.
It is important that the instructions G43 and G44 are programmed in a single
positioning block. If this is not done these instructions have the same effect as G41 or
G42.
Additional Notes:
The instructions G43 and G44 differ only in the approach behavior from G41 and
G42. There is no difference when moving away.
The first NC block with a positioning instruction after the deactivation of a path
compensation with the instruction G40 is called a retreat block. If G40 is
programmed along with a positioning instruction in the same block, this block is
designated as a retreat block.
The equidistant path is quit either linearly or on a spiral path at the intersection of
the equidistant of the last block with path compensation and the equidistant of
the retreat block.
After deactivation of the path compensation with the instruction G40 the tool can be
led back again to the previous equidistant path by reprogramming G41 and G43 or
G42 and G44 without changing the compensation value.
If the intersection of two equidistants lies very far away from the programmed point, a
disproportionately long motion path would have to be traveled to reach this
intersection.
In such cases where the angle included by the two equidistants is less than a preset
value, the tool motion path is shortened. Instead of moving to the intersection of the
equidistants, the positioning is carried out according to a linear intermediate block.
Two different types of path compensations are possible with spline interpolation, end
point radius compensation and real-time radius compensation. The number of the D-
compensation dictates which of the two possibilities is used.
The compensated points in this case are formed by the intersection point between
the straight connecting lines and the preceding, or following, contour element
(straight line or circle). This means that in these two cases the distance of the
compensated point from the programmed end point is larger than the compensation
value.
The compensated end points form the spline construction points for the calculation of
the compensated path. Therefore, the compensated path between the block end
points does not run exactly equidistant to the original path.
With real-time radius compensation the average distance between the compensated
and the uncompensated path is equal to D. There is no increase at the block ends as
can be the case with end point radius compensation. However, processing of narrow
internal contours with real-time radius compensation can lead to insufficient material
being removed (see Figure 5-17).
When path compensation is active, deviations of the path velocities resulting from the
program can occur during program execution. Deviations can occur because the
programmed path velocities relate to the programmed path (without path
compensation) or the tool cutting point (with active path compensation). However,
path compensations have the effect of not allowing the center of the milling cutter to
move along this path, but rather along an equidistant. Therefore, the center of the
milling cutter must be positioned depending on the contour on either a longer path
(e.g., during outside circle processing), or on a shorter path (e.g., during inside circle
processing).
The programmed feed rates always relate to the tool center path and there are no
deviations from the programmed velocity for linear interpolation and spline
interpolation with end position radius compensation. The programmed feed
rates relate to the corrected path for circular interpolation as well as for spline
interpolation with real-time radius compensation. The conduct of the control in
reference to the axis velocity deviations resulting out of this can be preset as follows:
Speed increase with external contours, speed reduction with internal contours.
This is the default preset.
Additional Notes:
Path compensation is not possible for:
Axis value settings with G92 during path compensation. The error message 121
Path correction, No G92 possible appears.
Programmable homing with G74 during path compensation. The error message
209 Path correction, G code is not permitted appears.
Any of the G271 to G276 turning cycles. There is no error message; however no
path compensation is executed.
...
N20 G41 or G42 D1
N30 G1 X6 Y10
N40 X12
N50 ... (Block without positioning
information in the active plane)
N60 X14 Y5
N70 X18
N80 ...
Figure 5-18: Motion with blocks without positioning information in the active plane
Important: A plane change may only be programmed when path compensation (G40) is
switched off).
... G1 ...
N40 G41 X3 Y7 D1
N50 X10
N60 G42 X12 Y3 (Change of the compensation direction)
N70 X16
...
... G1 ...
N40 G41 X3 Y7 D1 D1 = 2
N50 X10 D2 = -2
N60 X12 Y3 D2 (Sign change of the compensation value)
N70 X16
...
Special case 4: Change of the size of the compensation value but with
no sign change
G1
N30 G41 X7 Y7 D1 D1 = 2.2
N40 X14 D2 = 1.1 D1 > D2
N50 X20 Y2 D2 Change of the size of the
compensation value but with no sign
change
...
Figure 5-21: Motion with change of compensation value but no sign change, example 1
Figure 5-22: Motion with change of compensation value but no sign change, example 2
Figure 5-23: Motion with a tool radius that is too large for an inside corner
The tool radius is too large for the programmed internal contour. This results in a
reversal of the motion direction. In such cases the error message 207 appears.
Problem case 2: Radius of the circle < compensation value (R < D).
Figure 5-25: Motion with a full circle as external contour (with G42)
The same contour error also occurs when G41 is programmed in the block N20 and
G02 in block N40. This type of contour error can also occur when using G42 or G44,
however, fewer material is left unprocessed, since a move is made to the vertically
displaced circle starting position (Q) and not to the intersection of the equidistant (P)
(see Figure 5-26).
Figure 5-26: Motion with a full circle as external contour (with G44)
Figure 5-27: Motion with a full circle as internal contour (with radius
compensation)
The control reacts similarly, when G03 is programmed in the above-mentioned
program after G41.
The full circle as internal contour displayed in Figure 5-27 can be achieved by
programming two semicircles instead of a full circle. The above-mentioned program
example would have to be altered as follows:
... G1 ...
N20 G42 X9 Y4 D1
N30 Y6
N40 G2 Y18 J6
N50 Y6 J-6
N60 G1 Y4
...
Contour errors can be avoided through skillful programming and, if necessary, by
inserting NC blocks without positioning information. The following program example
shows a possible method of programming an external contour of a full circle with path
compensation, which results in a full circle without contour errors:
...
N20 G1 X7 Y0
N30 G44 Y10 D1
N40 G3 J3
N50 G4 (Dummy block)
N60 G1 Y0 D0
...
The dummy block N50 has the effect that a move is made to the offset point of the
destination point of the preceding block (N40). In block N60 the path compensation is
disabled (retreat block).
Clamped in the chuck in Figure 5-30 are two identical work pieces that are to obtain
the same finished contour. To avoid the necessity of programming two program parts
with different coordinates for the two work pieces, part position offsets are carried out
in the NC program.
The zero point G54 is positioned at the lower left corner of work piece 1. Zero point
G55 is positioned at the lower left corner of work piece 2.
The relationship of the coordinates of work piece 1 to the zero point G54 is now
exactly the same as the relationship of the coordinates of work piece 2 to zero point
G55. This way the positioning instructions for the first work piece can then also be
used for the second work piece.
The programmer enters the location of the work piece zero points, which he used
when writing the NC program, into the set up sheet.
The control is informed of the location of the pallet zero point in relation to the zero
point G53 when arranging the machine. This is done by programming G92. The
location of the zero points specified by the programmer (G54 to G59 maximum) in
relation to the pallet zero point is read in into the control or entered manually.
If the work pieces are processed on a pallet with the same set-up on several machine
tools, the location of the work piece zero points in relation to the pallet zero point
remains the same respectively. Only the location of the pallet zero point in relation to
the respective machine zero point needs to be determined and input to the control.
5.1.2.3 Programming
At CONTROL RESET the zero point G53 is active. Programming of G53 disables
part position offsets (G54-G59).
Six different part position offsets can be programmed in a NC program with the
instructions G54 to G59. If one of the instructions G54 to G59 is programmed, the
corresponding part position offset is only prepared and no axes are positioned. The
offset values entered in the operating mode DATA when arranging the machine tool,
only become active when coordinates are programmed after the programming of a
part position offset with G54 to G59.
When programming circles, and if a part position offset is to control both axes, the
destination point must be programmed by giving both coordinates values.
If a further part position offset (e.g., G55) is programmed in the NC program after a
part position offset (e.g., G54), the offset values entered for this second part position
offset G55 again relate to the zero point specified with G92 or to zero point G53, and
not to the first part position offset G54.
Example:
N10 G1 X0 Y0 Z0 F1000 Move to the starting point, G53 active
N20 G54 Setting the work piece zero point G54
(In the following text, it is assumed
that for G54 the offset values X10,
Y20, Z15 with reference to G53 were
entered in the operating mode "DATA".)
N30 X10 Y10 The offset values for the X and the Y-
axis become active; i.e., a move is
made to the position X20, Y30 in
reference to G53 or G92.
N40 Z10 The offset value for the Z-axis
becomes active; i.e., it will be moved
to the position Z25.
N50 G53 G54 is disabled, G53 is reselected, no
axis travel movement
N60 M30 Program end
The part position offsets can be called up with G54 to G59. The offset values can be
assigned manually, by allocation in a cycle block, or by loading a file containing the
required values, as follows:
Manually
1. In the operating mode "DATA", select F1:Data selection F5:Zero offset G.
3. Click onto the line of the part position offset to which you would like to assign
values. (The line now appears in the input window where you can delete previous
values with the BACKSPACE key and enter new values.)
4. Click onto the OK field. Press the OK key or the RETURN key.
Using this method your values for the part position offset are transferred into the zero
point compensation value memory of the MACHINEMATE and displayed in the upper
window on the monitor.
<lf>
% <lf>
GTABXX <lf> Number of the part position offset table
G54X=+00000.000 Y=+00000.000 ...
...
G59X=+00000.000 Y=+00000.000 ...
<ETX>
< cr > < lf > can also be used instead of < lf >.
The file end character (< ETX > =03H in the above mentioned example) can be
preset.
A format change within a NC program is possible with these G-codes. After the
format change, programmed length statements, positions and speeds are interpreted
as values in the format that was selected. The values that are active when the format
change is called up are converted into the new format.
To cancel this shifting of coordinates, program the instruction G92 without coordinate
values.
Example:
N10 G1 X50 Y50
N20 G92 X0 Y10
A starting point can be defined for the processing of the work piece using the
instruction G92 (e.g., the pallet zero point for the work piece zero points G54 and
G55 in the example from Figure 5-35).
Figure 5-35: Definition of a reference point for work piece zero points
Like the instructions G54 to G59, the instruction G92 causes no axis travel
movements; it only causes a part coordinate shift. The values programmed with G92
only become active when coordinates are programmed after programming of G92.
Additional Notes:
The instructions M02 and M30 do not reset axis values specified with G92.
The instruction G92 has another meaning when programmed together with an S
word. In this case it is used for programming the maximum rotational speed of
the spindle. Spindle speeds programmed afterwards are limited to this value.
(See 4.1.2.5 Spindle speed limitation.)
With the instructions G14 and G15, a changeover can be made to programming the
destination point coordinate values in the form of polar coordinates. After
programming G14, the polar coordinates are interpreted as absolute values
(analogous to G90); after programming of G15 they are interpreted as relative values
(analogous to G91).
The coordinate values indicated after activation of polar coordinate programming are
interpreted as follows:
The angle is programmed in degrees with the address character of the main axis
of the active plane.
The radius is specified with the address character of the minor axis of the active
plane.
The polar coordinate programming is deactivated with the instructions G90 or G91
(see 5.1 Absolute/incremental dimension programming).
The following table outlines which coordinate value on the three planes is interpreted
as angle and which one as radius:
The pole point of the polar coordinate system can be determined at any position
where required by using the instruction G16, if it is not to be identical with the zero
point of the Cartesian coordinate system.
The coordinates of the desired pole point are programmed together with the
instruction G16. If polar coordinate programming with G14 or G15 was activated
before programming G16, then the pole point coordinates programmed together with
G16 are interpreted as polar coordinates in absolute dimensions (according to G14)
or in incremental dimensions (according to G15). If no change was made to polar
coordinate programming before the call of G16, the pole point coordinates
programmed together with G16 are interpreted as Cartesian coordinates.
Important Notes
Simultaneous use of G16 and G92 is not allowed.
With the instruction G16, only a new pole point for polar coordinate programming
is specified but no new coordinate zero point.
In the case of a plane change with G17 to G20 a pole point programmed with
G16 is reset to the zero point.
G20 definition of the working plane, with I as major axis and J as the minor axis
G24 definition of the work field (the safe zone) lower limits
G25 definition of the work field (the safe zone) upper limits
See Figure 5-39. The planes displayed are selected with the instructions G17, G18
and G19. In addition, the instruction G20 is available for the selection of a freely
definable plane.
The active plane each time is relevant for the following functions:
G02, G03 Circular interpolation with specified center point in the clockwise or
counter-clockwise direction.
G50 Scaling.
Note that in a lathe, with just axes X and Z, it is not uncommon to have all three
planes and G-codes configured for the Z/X plane (since the machine has only one
plane for two axes).
G20 together with the address characters I and J are programmed to freely define
and select a plane. The number of the major axis must be given as the value of the
I word, the number of the minor axis must be given as the value of the J word.
These are the axes from which the freely defined plane is to be formed.
Major and Minor axis can be determined with the help of the right-hand-rule. If the
thumb points in the positive direction of the major axis and the index finger points in
the positive direction of the minor axis, then the middle finger must point in the
positive direction of the third axis.
Note: The error message 204 will appear if unavailable axes, the value 0, or two equal
numbers are programmed in G20-blocks together with I and J numbers.
Example:
N10 G20 I4 J2 The plane G20 is formed by the axes with the
numbers 4 (major axis) and 2 (minor axis).
N20 G2 I1 J0.5 Full circle in the plane G20, I controls the
4th axis, J controls the 2nd axis
N30 G18 Call of the plane G18 (Z/X plane)
N40 G3 I0.5 K1 Full circle in the plane G18 (Z/X plane)
N50 ...
If the X-axis was assigned the number 1, the Y-axis the number 2 and the Z-axis the
number 3, then the following analogies are produced:
The destination point coordinates are programmed in G20-blocks using the address
characters of the axes that form the plane G20.
A plane change is always made when the major and/or the minor axis/axes change.
A plane change deactivates G16 Pole of the coordinate system and resets the pole
point to the coordinate zero point.
G27 Turn on
G26 Turn off
The work area of a machine tool is determined by the motion limits of the individual
axes. The motion limits prevent the axes from being positioned outside of their
maximum and minimum position (see 2.1 General positioning instructions).
It is possible to reduce the work area of a machine tool using instructions G24 to G27
in three steps as follows:
Define the lower limit values for the axis travel movements with the instruction G24.
Define the upper limit values for the axis travel movements with the instruction G25.
Turn on the work field limitation using the modally effective instruction G27. A
programmed work field limitation is turned off using the instruction G26 that is also
modally effective.
Upper motion Y
limit Y axis Programmed work
8000
area limit
6000
4000
Upper motion
limit X axis
2000
2000
-8000
-6000
-4000
4000
6000
8000
-2000
-2000
-4000
In block N20 the X-axis may not be positioned outside the position X7000 in the
positive direction and the Y-axis may not be positioned outside the position Y5000
in the negative direction as long as the work field limitation is turned on. In this way,
the X-axis may only be moved to positions within the area of X4000 to X7000 and the
Y-axis only to positions within the area of Y3000 to Y5000.
Depending on whether G70 or G71 is active, the limit values are interpreted as inch
or metric measurements (see 5.1G70, G71 Programming in the metric format/inch
format).
If the programmed limit values are exceeded when processing a motion block when
the programmable work field limitation is active, this causes the same reaction as if
the preset axis motion limits were exceeded.
Additional Notes:
When the work field limitation is turned off, the axis motion limits (software limit
switch) determined by the machine manufacturer are valid.
Example:
Programming:
The function mirror is activated with the modally effective instruction G38 together
with the address characters of the axes whose programmed motion paths are to be
mirrored. In each case an arbitrary value must follow the address characters of the
axes. This value has no effect on the program. Two examples follow:
N60 X5 M30
Program 4 (P4); mirror the motion paths of the X- and the Y-axis:
N10 X0 Y0 F1000
N20 X5 Y1
N30 G38 X1 Y1
N40 X7
N50 Y2
N60 X5 M30
Additional Notes:
The mirror function is turned off by programming the instruction G39 or by
programming G38 without coordinate specification.
If the function mirror is turned off at another position to the one at which it was
turned on, then a part position offset via G92 becomes automatically active for
the difference in the route.
Figure 5-42: Mirror with prior setting of an axis value using G92
When the G39 turns off axis mirroring and the axes have not returned to their initial
mirror positions, there is a shift in the part coordinate system that is saved in the G92
offsets. At the time of the G39, the zero of the new part coordinate system (via G92)
will be such that the current axis position is maintained. The CNC will display this part
zero shift to the operator by maintaining its presentation in the Position display of the
axis data. The End point display will continue to be the axis position in the part
coordinate system as it always is. This difference in values could be confusing but it
is important for the operator to be aware that when the G39 is not done in the same
position as the G38 the part coordinate system will be shifted by that amount. Several
examples below illustrate this CNC behavior.
This is how the CNC will display the X axis positions during these blocks (with a
different number of trailing zeroes depending on G70 or G71 context).
In N30, the part coordinate system is rotating about X0 because the G38 was at
X0.0.
In N40, X is moving in the opposite direction due to the mirroring. The command is
X+1 but it was at X0 so it moves to X-1. The End point value indicates its position in
the current part coordinate system while the Position value indicates its position in
the shifted coordinate system. The axis really is at the Position value. The End
point value always represents the end point for the current block in the current part
coordinate system.
In N50, mirroring is being turned off. The block End point remains the same so X is at
the same, unchanged position within the current part coordinate system. Because the
X position when turning off mirroring was not at its original position in the part
coordinate system, there is now a 2.0 offset in X. There is no change to the display
of axis positions because nothing has changed in either context. The position in the
current part coordinate system is unchanged (End point) and the position where it
really is in the part coordinate system is also unchanged (Position).
In N60, X is moving to a new position. The End point shows its location in this
(shifted) part coordinate system while the Position shows its real position.
In N80, G92 cancels the offsets and the X End Point now matches its Position
because the offset has been removed and the Position was indicating where it really
was in the unshifted part coordinate system.
The following is another example this handling of the displayed shift in the part
coordinate system due to mirroring.
In N30, the part coordinate system is rotating about X1 because the G38 was at
X1.0.
In N40, X is moving in the opposite direction due to the mirroring. The command is to
X0 but it was at X+1 so it moves to X+2. The End point value indicates its position in
the current part coordinate system while the Position value indicates its position in
the shifted coordinate system. The axis really is at the Position value. The End
point value always represents the end point for the current block in the current part
coordinate system.
In N50, mirroring is being turned off. Because the X position when turning off
mirroring was not at its original position in the part coordinate system, there is now a
+2.0 offset in X. The position in the current part coordinate system is unchanged
(End point) and the position where it really is in the part coordinate system is also
unchanged (Position).
In N60, X is commanded to its same position in the part coordinate system so it does
not move.
In N70, X is moving to a new position. The End point shows its location in the
(shifted) part coordinate system while the Position shows its real position
In N80, G92 cancels the offsets and the End Point now matches its Position because
the offset has been removed and the Position was indicating where it really was in
the unshifted part coordinate system.
The rotation is always performed within the plane that is defined by G17-G20. The
center of rotation is defined in a G51 or G52 block by means of the address of the
corresponding axes, defining the plane.
The part rotation is deactivated by control reset, end of the program, a change of the
plane by a programmed G17-G20 or by means of G92 without axis information.
Subprogram P2:
N10 G90
N20 G1 X2 Y-1
N30 G3 X3 Y0 I1
N40 G1 X2
N50 Y-1
N60 X0 Y0
N70 G91
N80 G51 R90
N90 M30
Programming:
The function scaling is programmed with the instruction G50 together with a scale
factor R. The scale factor must be >0. A scale factor <0 is rejected with the error
message 18.
Scale factors affect all subsequently programmed motion path and radii but only in
the active plane. A scale factor of 0.5, for example, has the effect that all motion path
and radii programmed subsequently are halved, and a scale factor of 2 has the affect
that all motion paths and radii subsequently programmed are doubled.
Note: The scale factor programmed with the address R is incremental when G91
(relative programming) is active. MACHINEMATE assumes a scale factor of 1 if
no scale factor has been input.
Example 1 (Scaling):
....
N50 G90
...
N80 G50 R0.5
....
N100 G91
.....
N120 G50 R0.25 -> effective scale factor = 0.75
Example 2 (Scaling):
....
N50 G90
...
N80 G91
.....
N100 G50 R0.25 -> effective scale factor = 1.25
Example 3 (Scaling):
The work piece contour K1 in Figure 5-45 has been produced using the program P1
with G90 active. The contour K2 has been produced using the program P2. This
program is identical to program P1 except for the scale factor of 0.5 in the N20 block.
Program P1 Program P2
N10 G90 F1000 N10 G90 F1000
N20 X20 Y20 N20 X20 R0.5 Y20 G50
N30 X40 N30 X40
N40 Y40 N40 Y40
N50 X20 N50 X20
N60 Y20 N60 Y20
N70 M30 N70 M30
Part Programming Manual
page 173/352
MACHINEMATE
Note: The instruction G50 has no effect on part position offsets programmed with
instructions on tool tip radius, tool length compensations, rotational axes or
work field limits programmed with instructions from G24 to G27.
X length offset
Z
Length
offset This point is Z This point is
selected by the Length selected by the
length offsets as offset length offsets as
control point control point
In a grinding application, the wheel length offsets are entered in the H-compensation
data. The H-table entries from 1 to 64 can be used for DWRC. Each table entry
consists of two axis values, Z and X.
Part Programming Manual
page 175/352
MACHINEMATE
In a turning application, the turret offsets are entered in the same table.
The dresser, wheel or tool tip radius offsets are entered in the D-compensation data.
The D-compensation entries from 1 to 128 can be used for DWRC. The D-
compensation values contain the extra information for the DWRC feature, the
orientation direction for this compensation value. The values for the orientation are
from 0 to 9. The correlation between orientation and orientation value is displayed in
the figure below, for a wheel or a dresser/lathe. The figures are drawn for a machine
with a wheel/turret moved by X and Z axes and with a stationary part or dresser (so
orientation 1 is used when the grinding wheel is moving into the part in the X+ and Z+
direction; the same interpretation applies for the dresser or tool tip orientation 1 for
X+,Z+). If the machine has a part or dresser that moves by an axis then the relative
movement between the two partners must be taken into account. The axis moving a
part or dresser is the same as an imaginary axis moving the wheel in the opposite
direction.
The orientation is entered in a row with the D-Correction value. When this D-table
data is in a file, the orientation value (0 to 9) is distinguished from the D-correction(s)
value with the character R. For example, these lines in a file are possible:
The figure below demonstrates the values which have to be set in the D- and H-
tables to allow the correct compensation for the corner radius of a wheel.
Wheel gauge
point
R S H X
x
S
z
P
H (control point)
Z
Figure 5-49: Grinding wheel control point and gauge point definitions
The wheel corner radius (Rs) and its orientation value (4 in the case) have to be set in
D-compensation table. Tool offset values of X (Hx) and Z (Hz) axes have to be set in
the H-table. In the figure Hx value is positive and Hz value is negative (i.e., the H-
offset is an offset from the control point to the wheel gauge point). The corner radius
center of a wheel (S) can be set as a control point of a dresser/wheel. In the case the
corner orientation value 0 or 9 has to be set in the D-compensation table.
5.3.2.1 Definitions
Grinding wheels or dressers can have rounded edges which means there is a
difference between the machining edge and the control point. This causes a
difference between the programmed contour and the actual final contour of the part
or the dressed wheel. The DWRC is able to compensate this difference.
There are three types of DWRC entry and exit moves with this compensation. The
table below gives an overview of the main differences between the three
compensation move types.
The following G-Codes are used for programming DWRC. They are the same G-
codes for path compensation described in section 5.1.1. These G-codes will apply
DWRC rather than the conventional tool radius path compensation when a radius
orientation is defined by the modal D-code.
Part Programming Manual
page 179/352
MACHINEMATE
To activate the DWRC the orientation value in the D-correction table has to be a
value in the range from 1 to 8. The values 0 or 9 disable this DWRC compensation
and result in a normal length and path correction according to the usual rules.
Ddd Hhh
were the number of digits for H and D depend on the number of correction table
entries. Normally the ranges are 128 D-values and 64 H-values.
All the application schemes mentioned above use the same tables to store values.
The first three schemes are commonly for grinders while the fourth is for lathes.
Note: The active plane has to be correctly programmed for these application
schemes. Usually the Z-X plane (G18) is used for the dresser radius, corner radius
and tool tip radius compensations while the X-Y plane (G17) is used for the entire
wheel radius compensation.
With this scheme, the CNC can compensate dressing errors from the radius of the
dresser tip. The radius of the dresser tip is entered in the Dresser / Wheel radius
offset table (D-Compensation).
motion. If the dresser is mounted to independently moving axes then the inversion of
motion as just described is not done.
The errors resulting from the rounded corners of the grinding wheel can be
compensated. The corner radius must be selected from the D-table for the correct
point of control. The programmer is responsible that the correct combination is
selected and in this way one, two or more corners can be programmed for one wheel.
The CNC can also compensate errors resulting from the entire radius of the grinding
wheel. The radius of the grinding wheel is to be entered in the radius table. (There is
no need to enter an orientation because orientation values are not used in this
scheme.) No X-length offset has to be entered. For compensation only Z-length offset
and the radius value is needed.
The CNC can also compensate errors resulting from the tool tip radius of the lathe
cutting tool. The tool tip radius and its orientation are entered in the D-table. The H-
table X and Z-length offsets are associated with the turret position (nothing to do with
the tool radius). An illustration of this type of compensation is shown above (Figure 5-
51) but in this case the diamond dresser tip example in the upper right corner of the
figure represents the tool tip used in turning and the grinding wheel in the lower left of
the figure represents the part being turned.
Note that the tool tip radius compensation is not possible during any of the G271 to
G276 turning cycles (see 9.17).
Start Point
Start Point
Start Point
It is important to repeat that the path during compensation will be equal for all three
move types. The path will maintain the tool one tool radius to the left or right from the
programmed path, depending on the active DWRC G-code (G41 to G44).
The type A Compensation is characterized by entry and exit moves which start or
end at the offset points. The paths during compensation are not different from the
type B or type C compensations. Two machine parameters define which entry or exit
move type is used when activating DWRC by one of the four G-codes (41 to 44).
The following pictures show different entry moves. The path ends at the offset point,
which is at a right angle on the left or right side of the next programmed move in the
active plane. Type A compensation entry moves do not generate any intermediate
blocks.
Type B entry moves guarantee that the tool is kept off at minimum one radius from
the start point of the first compensated block. The following picture gives some
examples.
The type C Compensation is characterized by entry and exit moves which start or
end at the intersection point of the equidistant lines of the entry move and the first
compensated block.
In the following some examples for type C entry moves are shown, where the end or
start moves are at the intersection points of the equidistant lines.
In the following the behavior of the control is described when changing the
compensation direction (i.e., switching between G41 and G42) within a program.
Changing compensation direction can result in the tool crossing over the
programmed path as compensation changes from left to right or vice versa.
When this feature is active, a change in the compensation direction result that the
block in which the change is programmed will be treated as an entry block.
radius.
Point 2: Dresser / wheel position for the start of the first block using
the new compensation direction. The point is at right angle
to the start point of the motion block that changes the
compensation direction and is offset by one dresser /
wheel radius.
Non-motion blocks are the blocks without movement information for the axes in the
active plane. Such blocks can make it difficult for the control to calculate the
compensation path correctly. If the next block is a non-motion block then the
compensated path of the current block ends at the offset point of that block.
The NC programmer should avoid usage of non-motion blocks during active DWRC.
Note: Cycle blocks (i.e., blocks that start with * before the N, to identify a special
syntax; this syntax is defined in section 6) are not considered non-motion blocks in
this situation and can be used during active DWRC with no problem.
Note: Some non-motion blocks cannot change the compensated path if they are
programmed between two tangential blocks.
Two examples:
Above all, technology-adapted operator controls and data inputs can be realized and
canned cycles for standard processes such as, cutting, drilling etc. can be provided.
It is also possible to generate NC programs with cycle blocks (e.g., with a calculated
path).
P-parameters P1-P1000
Example:
N30 G1 X...
N40 G2 X...
*N50 P1=...
*N60 IF P2=...
N70 G1...
Thus normal program blocks and cycle blocks can be mixed at will. The
MACHINEMATE recognizes a cycle block by the preceding asterisk.
During the processing of cycle blocks, the cycle interpreter in the implemented cycle
level is activated. If cycle instructions, which do not belong to the implemented cycle
level, are used, the error message 259 appears. This must be acknowledged by
CONTROL RESET, whereby the program is aborted.
Parameters can also be programmed in the form "=Pxxx" in the NC program, with
nearly all types of program words instead of the digit string:
*N100 P20=85000
N110 G0 X=P20
instead of
N110 G0 X85
This assumes that the parameters used at the relevant point in time have the correct
value (P20=85000 based on a presetting of 3 decimal places for the X-axis).
Note: The allocation of values to parameters can be made either while setting up in
the operating mode DATA (function F4: Modify F2: Cycle Parameters) or by
using cycle blocks in the NC program.
6.2.3 Comments
Cycle blocks can be explained by attaching comments. This is especially important
for long-term program documentation. The cycle interpreter recognizes comments by
the character /. Everything positioned to the right of this character in the relevant
cycle block is not interpreted for the program processing.
Example:
*N50... /this is a comment
Note that the parentheses characters (i.e., ( and )) are not used for a comment in a
cycle block (unlike a normal NC block; see 1.9) nor can they be used to define a
specific order of calculations in a cycle block. Any calculations in a cycle block are
always done in a straight left to right order (see 6.2.7) with no priority of certain
operations over others.
Special instructions
NC Blocks
4 G10
Cycle
Interpreter
1 Preceding
blocks
Dynamic block
buffer
Axis Control
3 G1...
Error messages that may appear during the processing of cycle programs can be
found in this chapter under "Possible errors".
A NC block first passes through two block buffers in the interpreter process. The first
block buffer activates the cycle interpreter as soon as a cycle block is recognized.
The interpreters block look ahead fills the dynamic block buffer (steps 1 and 2 in the
figure above) with non-cycle blocks. The NC blocks arrive in the dynamic block buffer
of the interpolator. The interpolators execution and removal of blocks (step 3 in the
figure above) is separate from the interpreters block look ahead.
If a G10 code is programmed, it is recognized in the first block buffer (step 4 in the
figure above). The transition of this G10 block to the dynamic block buffer is inhibited,
halting the block look ahead on this block. The interpreters block look ahead is again
enabled only when there are no more blocks in the dynamic block buffer (from the
interpreter process to the interpolator process) .
Example:
N120 G1 X100 F100
N130 G10
*N140 P1 = MVX
Explanation:
A G10 block is necessary so block N140 is not processed (which references the
current X position) until all NC blocks before it (including N130) are finished.
Floating point numbers with a maximum of eight positions before and after the
decimal point, whereby only the first seven of the positions entered are
significant.
Leading zeros may be written with numbers. If there are no digits after the decimal
point, omit the decimal point.
Variables can be used in the form of free and fixed parameters. Free parameters are
the P-parameters (P1, P2, etc.). These can be used to store any numbers and to
form calculation formulae. Fixed parameters are the CNC parameters (H, D, G, etc.),
with which control-specific and machine-specific data can be accessed.
Part Programming Manual
page 197/352
MACHINEMATE
Numbers and variables can be combined with calculation operations but the
individual number formats used must be compatible.
Example:
*N50 P1=50000, P2=1000, P3=100
N60 G1 X=P1 Y=P2 F=P3
The N60 block above has the same effect as N60 G1 X50 Y1 F100, when 3 decimal
places are preset for the axis values and 0 decimal places for the feed rates.
Example:
*N100 A1=65, A2=66, A3=67
The addresses A, B, and C are allocated as ASCII values to the ASCII parameters
A1, A2 and A3.
Example:
*N100 A1=65, P1=2
*N110 A2=A1+P1
A1 takes the ASCII value of the address A; P1 takes the numerical value 2. A2 takes
the ASCII value of A1 that has been increased by 2 (the ASCII value of the address
C).
Example:
*N200 IF A1=A2 DO P30=0
If the ASCII values of A1 and A2 are the same, then set parameter P30 to 0.
The parameters Px, Py and Pz represent arbitrary constants and variables when
they stand to the right of the = sign.
The angle data for SIN, COS, ATN is given in radians. With an expression with
several calculation operations the processing is done from left to right, whereby
Part Programming Manual
page 198/352
MACHINEMATE
any preceding negative signs are always associated with the concerned number
or variable and are not seen as calculation operations.
Example:
*N10 P1=4
*N20 P1=SQT P1
In N10 the value 4 is assigned to the parameter P1. In N20 the square root of 4 is
calculated, and P1=2.
Example:
*N10 P1=3.141593
*N20 P1=COS P1
In N10 the value 3.141593 is assigned to the parameter P1. In N20 the cosine of P1
is calculated and P1= -1.
Example:
*N10 P1=90
*N20 P2=RAD P1
*N30 P2=SIN P2
The value 90 is assigned to the parameter P1 in N10 and in N20 is converted into
radians so that N30 supplies the result P2=1.
Part Programming Manual
page 199/352
MACHINEMATE
Example:
*N10 P1=1
*N20 P2=ATN P1
*N30 P2=DGR P2
In N20, P2 has the value 0.7853982 (Radians). In N30 this value is converted to
degrees. The result is that P2=45.
Example:
*N10 P1=60
*N20 P1=RAD P1
*N30 P1=SIN P1: COS P1
*N40 P1=ATN P1
*N50 P1=DGR P1
In N10, a value is assigned to P1. This value is converted in N20 to radians. In N30
the tangent (sine/cosine) is calculated. In N40 the arc tangent of this is calculated. In
N50 this result is converted to degrees, so that P1 receives the value 60 again.
Example:
*N10 P1=-12.9
*N20 P1=ABS P1
In N10 the value -12.9 is assigned to P1. In N20 the absolute value is formed from
this value, i.e., P1=12.9
Example:
*N10 P1=1.495, P2=3.55, P3=-3.5
*N20 P1=INT P1, P2=INT P2, P3=INT P3
In N10 the value 1.495 is assigned to P1, the value 3.55 to P2 and the value -3.5 to
P3. In N20, P1 has the value 1, P2 has the value 3 and P3 have the value -3. The
operation INT converts a floating point number to an integer by rounding down.
Example:
*N10 P1=13
*N20 P2=5
*N30 P3=P1 MOD P2
The result is 3, since P1:P2 = 13:5 = 2 remainder 3.
Example:
*N10 P1=-13
*N20 P2=5
*N30 P3=P1 MOD P2
MOD calculates the positive remainder to the next smallest whole multiple of P2 and
the result is 2.
Example:
*N10 P1=5
*N20 P2=7
*N30 P3=3
Part Programming Manual
page 200/352
MACHINEMATE
When calculating operations, attention must be paid to the sequence of the individual
operations. Operations are processed from left to right. The following examples help
to explain the rules for calculating operations.
All the following examples use P1=30, P2=100, P3=RAD P1, P4=2, P5=4, P6=3.
Example:
*N20 P10=P1 *-P2
In usual notation:
Example:
*N30 P10=-P1 *-SIN P3+-12
In usual notation:
Example:
*N40 P10=P1+P2+SIN P3
In usual notation:
Example:
*N50 P10=SIN P3
In usual notation:
Example:
*N60 P10=12+P1
In usual notation:
P10 = 12 + 30 = 42
Example:
*N70 P10=P1+P2 * SIN P3-18.3
In usual notation:
Example:
*N80 P10=P1+P2 * P4+SQT P5 * P6
In usual notation:
Division by zero
Root of a negative number
Overflow: Number > 99999999
Spelling errors (e.g., P1=SON P1)
Index too large (e.g., P1=6000, PP1=3 and only 1000 parameters set-up)
Example:
The resolution for linear movement is one thousandth of a millimeter (3 decimal
places).
With a machine parameter change in the control configuration, it is also possible for
the parameters to take their intended values, so there is no decimal point shifting
required, so N70 could be P12=50.5,P13=1.0 and N80 would result in the same
execution except that F=P13 would be F1. This manual assumes the default setting
for cycle parameters which means this no decimal point programming is active.
If a rotary axis position is used for a calculation in a cycle block then this no decimal
point programming assumption must be recognized in that calculation. The
DGR/RAD operations use the expected interpretations for their values, like an input
of 90.0 to RAD represents 90.0 degrees and an output of 45.0 from DGR represents
45.0 degrees. The DGR/RAD operations are relevant since all of the trigonometric
operations (ATN, COS, SIN) use radians, not degrees (see 6.2.7). If the current
rotary axis position is 45.0 degrees and the rotary axis position is shown with 3
decimal places then those decimal places will appear in the cycle parameter value
representing its position (e.g., *N1 P3=B when B is at 45.0 degrees will result in P3
having a value of 45000; see 6.2.9.6). When in this no decimal point programming
context and with the rotary axis resolution to 3 decimal places, a cycle parameter
value representing its position would be divided by 1000 prior to its input to the RAD
operation for the correct conversion.
The indexed parameter is recognized by the notation double-P. PPx designates the
parameter whose number is positioned in Px.
Example:
*N10 P1=5, PP1=7
Note: When using indexed parameters it must be ensured that the index parameter
(e.g., P1 with PP1) contains a meaningful value; otherwise the error message
262 is output. A parameter used as an index may not be indexed itself (because
indexing of indexes is not possible).
The first 200 parameters can be used to easily communicate to the PLC. Therefore,
we recommend that the first 200 parameters be reserved for that purpose.
Important: For reasons of safety, the 50 reserved parameters should not be used for other
purposes. Since the default start of this block is parameter 10, practically the
first 60 cycle parameters are not available for user applications (with the first
10 being used for the canned drilling cycles). The following list contains the
assignment of some reserved parameters to the corresponding special
functions; the remaining reserved parameters are intended for more specific
purposes or for future expansions. (For each, the value of x is the number of
the first reserved parameter, whose assignment is carried out by setup data).
Parameters Assignment/meaning
P (x+0) reserved
P (x+1) reserved
P (x+2) Contains start parameter number for SEL:80
for the set of 15 active G-codes
P (x+3) to Reserved
P (x+7)
P (x+8) 0, if CONTROL RESET was triggered
P (x+9) 0, if operating mode memory or DATA chosen
P (x+10) 0, if CONTROL RESET was triggered manually
P (x+11) to Analog value read in with SEL:61 - SEL:68
P (x+18) for A/D channel 1 to channel 8
P (x+19) to Reserved
P (x+20)
P (x+21) to Analog value output with SEL:71 - SEL:73
P (x+23) for D/A channel 1 to channel 3
P (x+24) to User cycle parameters (one for each letter
P (x+49) in the work cycle block)
Table 6-3: Reserved cycle parameters
The user cycle parameters (at the end of the table above) allow the programmer to
access the NC statement fields within a work cycle, where the value with each letter
in the block is passed to its corresponding cycle parameter.
For example, if the code G920 is assigned to be the first work cycle and its work
cycle subprogram is assigned to be 900001, then this subprogram can interpret the
values provided with the work cycle G-code. A statement of N1G920 (assuming the
default assignment for the reserved parameters is starting at P10, so x in the table is
10) results in P47 having a value of 1 (since N is the 14th letter of the alphabet and
with an A value going to P34 so the N value goes to P47) and P40 having a value of
920 (since G is the 7th letter). The work cycle must recognize that the number of
decimal places for the particular parameter affects the user cycle parameter values.
A statement of N1G920Z5.5 where Z has 4 decimal places results in P59 having a
value of 55000 in the work cycle. However this does not prevent the work cycle from
directly passing on axis commands since a subsequent statement in the work cycle
of N20Z=P59 would move Z to 5.5 as expected (if G90 is modal), as described in
section 6.2.2.
A letter that is not present in the work cycle block will be given an invalid value,
approximate 1 x 10^308. Typically, the work cycle subprogram monitors for letters
that are not present by checking for a large number, like this
Where the work cycle will jump ahead to block N200 if the letter A (whose value goes
to P34) is missing with the work cycle G-code.
The allocation of values to these CNC parameters (e.g., *N200 H1X=12) causes a
table entry to be updated in the length compensation 1 for the X-axis. Thus an
already existing entry, which could have come from the tool presetter, is overwritten
(the above value corresponds to 0.012 mm for example with G71 modal). Numerical
values within the CNC parameters can also be replaced by P-parameters (without
indexing).
Example:
*N300 P1=5
*N310 HP1X=22
HP1X is equivalent here to H5X.
Up to 128 H-compensations can be set or read with the parameters Hxa. If only one
compensation axis is available, then the parameters are H1, H2, ... H128. If there are
two compensation axes, the parameters are H1X, H2X and H1Y, H2Y etc.,
depending on which axes are set up. The wear compensation values are also
available to read or write. If only one compensation axis is available then the wear
parameters are HW1, HW2, HW128. If there are two compensation axes, the
parameters are H1X, H2X and H1Y, H2Y etc., up to 64 sets, with the axis letters
depending on which axes are set up (with the accompanying wear offset parameters
as HW1X, etc.).
Example:
*N10 H1=P1
Entry of an H-compensation is possible like this when the H-table is configured for
only one axis. The H-table compensation 1 takes the value of P1.
Example:
*N10 H1Y=P1
Entry of the H-compensation for the Y-axis if H-compensation is defined for 2 axes.
Example:
*N10 P2=1
*N20 HP2X=12
Up to 128 D-compensations (D1, ..., D128) can be set or read with the parameters
Dx. The wear compensation values are also available to read or write with the
parameters DW1 to DW128.
Example:
*N10 P1=D12
*N20 D120=P20
Storage of the compensation value D12 in the parameter P1 (N10) and assignment
of the compensation value D120 with the content of the parameter P20 (N20).
Example:
*N30 P1=5
*N40 DP1=18400
The result of the indexing in N40 is D5 = 18 400. The compensation value stored in
D5 is 18.4 mm when G71 is model (would be 1.84 inches with G70 modal). The code
DR is used to reference the dresser wheel orientation in the D-table.
Six part position offsets (G54-G59) are available per axis. The axis address (e.g., X,
Y, and Z) must always be indicated here. The compensation number can also be
given here via the P-parameter.
Part Programming Manual
page 207/352
MACHINEMATE
Example:
*N100 G54Z=53000, G54X=0, G54Y=0, P1=54
N110 G=P1
For the programming of parameter cycles a standard interface of 2 sets of 8 bits are
available for the communication with the machine PLC. The following notation is
used:
IB1-IB8 stands for: read PLC interface input bit 1-8, IN_CYCB_01
OB1-OB8 stands for: write PLC interface output bit 1-8, ON_CYCB01.
The bit number can also be given via parameters (e.g., IBPX). Upon execution, a
test is made on the value stored in the parameter. For values smaller than 1 or
larger than 8, the error message 262 appears.
IBx is only admissible in expressions after IF (e.g., IF IB1=1 GO 50); direct allocation
to parameters (e.g., P1=IB1) is not possible. In the latter case the error message 261
appears.
The output bits 1-8 are set to 0 at CONTROL RESET. It can however be set that the
output bits retain their values at CONTROL RESET in the PLC.
Example:
*N30 OB3=1
Example:
*N30 IF IB2=0 DO...
Example:
*N30 P5=P2 MOD 8+1, OBP5=0
Example:
The following cycle block causes the execution to wait until the bit 3 in the PLC
interface is set to 0 by the PLC:
Input bits and output bits can only have the values 0 or 1. Values not equal to 1 are
treated as 0 during the allocation. Reading and describing the PLC interface is
meaningful for some applications, for example:
The current set positions of the axes can be directly assigned to parameters.
These values are in actual G92 coordinates not programmed coordinates. If an axis
position is offset by a part zero offset (one of G54 to G59) and/or by a tool length
offset (one of H1 to H128) the axis position will reflect that offset in its position. For
example if an axis is programmed to be at +1.000 but the active G54 offset for the
axis is +1.000 and the active H1 offset for the axis is +0.500 then the axis position
obtained by the axis letter parameter would be 2500 (in G71 with the no decimal
point format described in 6.2.8.1), which comes from the programmed position plus
any active offsets for the axis. Note that if there is an active G92 offset for this axis
that G92 offset value will not be included in this axis position value. An active G92
offset for the above example would not affect the axis position. Therefore this axis
position is not really machine coordinates because this G92 offset (G92 is a zero shift
from machine coordinates) is not included.
An example:
G56 Z is +1.0000. These positions are in G70/inch. The Z axis has an observed LAG
of about -0.0008 at standstill due to an analog offset in the drive.
The sequence:
The values provided by these three cycle block parameters after each step:
Z AVZ MVZ
1) 0 0 -8
2) 10000 10000 9992
3) 0 0 -8
4) 20000 20000 19992
5) 30000 30000 29992
6) 30000 30000 29992
If there is no G92 offset active then these values of these reserved names are in
machine coordinates. If there is an active G92 offset then these values reflect that
zero shift.
Note that these values do not change if the axis is affected by diameter programming
(G190/G191). For example if G190 is active (radius programming) and X is moved to
1.0 (1.0 inch from center line) then AVX will be 10000. If G191 is active (diameter
programming) and X is moved to 1.0 then AVX will be 10000. This matches the
programmed position even though X is really at a physical location of 0.5 when at a
programmed diameter of 1.0 since the X feedback/position scaling is in the radius
context, or the distance from center line). Therefore the NC programmer should not
have to check for the G190/G191 condition when using any of these reserved names
for axis data.
The axis letter can be used to obtain the current programmed position for the axis.
The symbol AVx, where x is the letter of the axis, will also get the current
programmed position. The symbol MVx, where x is the letter of the axis, will get the
current axis position (its commanded position with any following error that is present).
Example:
*N250 P1= AVx, P2= AVy
*N260 P3= X
The current set position of the X-axis (without following error of the position control) is
stored in the parameter P1, the current set position of the Y-axis is stored in
parameter P2 and the current set position of the X-axis is stored in parameter P3.
If G56 and H5 were both active then the following cycle block calculation will result in
the P1 having the current Z axis position in the part coordinate system (when the H-
table has been configured for 2-axes, X and Z):
*N270 P1=AVZ-G56Z-H5Z-HW5Z
AVZ is the effective Z axis position in the part coordinate system because its value
includes both any part zero offset (G5x) and any tool length offset (Hx and its wear
offset HWx). Note that either Z or AVZ (i.e., just the axis letter alone or the 3-letter
combination of AV with the axis letter) will always be equivalent in a cycle block. This
calculation would be valid regardless of a G92 shift in the part zero.
A subsequent block like the one below following the above block would result in no
motion of Z because P1 is the current Z axis position in part coordinates after the
N270 calculation when G56 and H5 were active:
6.2.10.1 IF Question
Example:
It is desired to execute the calculation P2=P1 * 2 if P1=5:
If the condition is not satisfied, all instructions located between "DO" and the end
of the block are jumped over.
= : equal to
> : greater than
< : less than
An action can be made up of a jump instruction (GO) or an End symbol (DO) followed
by one or more cycle instructions, where DO only has an effect on the current block.
6.2.10.2 Jumps
The jump instruction GO block number causes the program to jump to the NC
block with the corresponding block number. It operates as a conditional instruction
(with IF) and as an unconditional instruction (without IF). If the NC block which is
Example:
*N10 GO 200
Example:
*N10 IF P1=30 GO P1
This is a conditional instruction. If the parameter P1 has the value 30, a jump is
executed to N30.The block number can be given either as an absolute number or via
parameters.
Example:
*N10 GO 200
or
*N10 P1=200
*N20 GO P1
or
*N10 P1=200
*N20 P2=1
*N30 GO PP2
All three previous examples result in a jump being made to block N200. For this
function it is important that block numbering in ascending order is kept or is
guaranteed by the editor. It is possible to jump to either a higher or a lower block.
Note: With MDI (manual data input), no jump instructions may be used.
6.2.10.3 Loops
Loops can be programmed using the IF instruction together with GO. The number of
loop passes can be determined by a P-parameter.
Example:
*N50 P1=10
N60
N70...
N80...
N90...
...
*N140...
*N150 P1=P1-1, IF P1 > 0 GO 60
...
Explanation:
Example:
All parameters from P1 to P800 are to be set to zero.
*N100 P1=800
*N110 PP1=0, P1=P1-1, IF P1 > 0 GO 110
*N120 P1=0
...
P1 is used as an index. The line N110 is repeated 799 times.
Error Recognition:
After editing a block
By running
Possible causes of error:
Non-admissible operator or start of key word
Error recognition:
After editing a block
By running
Possible causes of error:
The composition of key words does not produce a cycle block.
Error removal:
Correct the cycle block.
Example:
N20 P1=IB1 instead of *N20 IF IB1=P1 DO...
Error recognition:
By execution when using a parameter as index
Error removal:
Index as number (not as parameter): check syntax
Error recognition:
By execution
Integer underflow
Error removal:
Examine parameter value
Correct program
6.2.12 Instructions
Function:
Conditional instruction
Description:
If the comparison is satisfied, the programmed action is executed. In the question two
operands (parameters, input bits or constants) are combined with a comparison
operator. Possible comparison operators:
= is equal to
> is greater than
< is less than
Table 6-5: IF comparison operators
Description:
An IF instruction will always be followed by one of these two instructions:
Example:
*N10 IF P1 > P2 GO 100
If the parameter P1 contains a value larger than P2, jump to block N100.
Example:
*N20 IF P1=P2 DO P1=10
Explanation:
If the parameter P1 contains the same value as P2, set P1=10.
Function:
Jump to the block number
Description:
The processing of the NC program is to be continued at the block number indicated.
Use together with IF instruction as a conditional jump or without IF as an
unconditional jump.
Example:
*N50 GO 210
Function:
Execute!
Description:
The relevant instruction is to be executed. DO is used only with an IF instruction.
Example:
*N60 IF P1=0 DO P1=10, P2=1
Explanation:
If the parameter P1 contains the value 0, set it to the new value 10. Parameter P2 is
then set (independently) to 1.
Function:
Select a function
Description:
The selected function is to be executed.
Parameters:
nn identifies the special function to select
Example:
SEL: 80
*N110 P192=10
*N120 SEL: 80
...
It is assumed for this example that the reserved parameter area starts at parameter
190. In block 120 the active G-codes of the 15 groups are written in the parameter
table starting from the parameter number determined by the setting of P192 (x+2,
where x is the start of the special reserved block of 50 parameters), written in block
110. In this case, the parameters P10 to P24 are used because the value of 10 is
used in the (x+2) parameter.
To enable the part program for A/D or D/A access (i.e., SEL:nn is 61 to 73), there is a
machine parameter in the control configuration that must be properly set up defining
which cycle parameter is used for the input from the A/D or for the output for the D/A
(see 6.2.8.3 for information about this block of cycle parameters).
Parameters from A to Z can be passed from these cycles where the values are
stored in the Reserved Parameter area from P34 to P59 (by default; this area can be
assigned to a different set of cycle parameters). These user cycle parameters are
described in section 6.2.8.3.
These work cycles are G-codes that invoke specific subprograms. The work cycles
are not drilling cycles, which have a modal behavior (i.e., within a drilling cycle each
axis move block results in another drilling cycle until the G80 cancels the cycle). The
work cycles run only once, when invoked by its G-code in an NC statement.
6.3.2 Example
If the first work cycle G-code is defined to be 920 and the first work cycle subprogram
is defined to be P900001, then a part program statement like N10G920X1.1Z3.3 will
immediately call the subprogram P900001, with the parameters within that NC
statement.
Within the subprogram P900001, the cycle parameters can be checked for values
and then processed. If the letter is not present in the statement, then the cycle
parameter is given a very large (nearly infinite value) value of about +1.2345E+308.
This behavior allows the work cycle to react to the presence or omission of any
letters within the NC statement. For example, if the letter A is assumed to have 3
decimal places then a field of A4 with the G920 results in P34 having a value of
4000.
7 Drilling Cycles
7.1 Introduction
The programming of drilling processes can be simplified using the drilling cycles. The
available selection of drilling cycles covers the most important standard cases. The
programmer only has to define a few parameters in order to adapt the drilling cycles
to a particular application.
The cycle programming of the cycle level 1 must used for the drilling cycle
parameters.
The machine tool manufacturer can change the program sequence in the individual
drilling cycles if required. Refer to the control manufacturer's documentation to
determine if this is the case.
Call and set-up of the drilling cycles are modeled according to DIN 66025.
One of G81 to G89 sets that drilling cycle as modal, with subsequent axis blocks
causing that cycle to run at that new axis position after their move.
Note: G-Codes and program numbers for work cycles can be preset and thus could
have been changed by the machine tool manufacturer. For details about this,
please refer to the machine tool manufacturer's documentation. This
description of the drilling cycles however is based on the default values for G-
codes (G80-G89) and program numbers (P999981-P999989).
Automatically call up and execute the selected drilling cycle after reaching the
drilling position
If not all parameters are allocated with values, no error message is output. Within
the drilling cycle all parameters which are necessary are used unchecked. Error
messages due to incorrect or non-allocated parameters can first appear during
the execution.
The reference plane lies at the safety clearance above the work piece surface.
Above this plane it is possible to move vertically in the rapid traverse. Below this
plane, rapid traverse is only possible in the Z+ direction (or away from the work
piece). The feed movements start from the reference plane. See Figure 7-1.
The retract plane is the plane to which the spindle moves at the end of the
drilling cycle. The spindle is then at the position to move between holes. See
Figure 7-1.
The final hole depth is obtained from the measuring point of the tool. For
example, this is the drill tip for a twist drill or an arbitrary point on the top surface
for a machine reamer. See Figure 7-1.
The cycle parameters are assigned values based on no decimal points. The
cycle parameter value must consider the number of decimal places for the
particular parameter.
If a cycle parameter is given a dimension in inches (usually 4 digits after the decimal
point), then the dimension is multiplied by 10,000. For example, a final hole depth of
1.25 inches would be defined with a cycle parameter value of 12500.
If a cycle parameter is given a value for time in milliseconds but the F word provides
time in seconds (usually 3 digits after the decimal point), then the value as seconds is
multiplied by 1000. For example, a dwell time of 0.25 seconds would be defined with
a cycle parameter value of 250.
Retract Plane
Reference Plane
Figure 7-1: Reference plane, retract plane and final hole depth
Each drilling cycle description includes an example of NC blocks, a figure illustrating
the steps of the cycle and a description of the sequence. Each figure shows where
the Z-axis zero-plane is (at the left of the part), to help identify the respective
parameters values in the sequence.
Note: After termination of the drilling cycle with G80, the G00-code (linear
interpolation in the rapid traverse) is always active. If destination point
coordinates are programmed in a following NC block without a G-code, then a
move to these points is made in the rapid traverse.
No drilling cycle is performed on the block with the G81 to G89 unless the
block also contains an X or Y coordinate. If X or Y is in the G8x block then that
axis motion will occur before the actual drilling cycle at that X/Y position. With
no X or Y in the block the first execution of the drilling cycle occurs on the next
block having an X or Y command (see the example below).
G02 Circular or helical interpolation with specified center point in the clockwise
direction
G03 Circular and helical interpolation with specified center point in the counter-
clockwise direction
Note: Drilling cycles cannot be used during modally effective G06 (spline
interpolation).
Example:
N30 G1 F1000 S500
*N40 P2=500000, P3=420000
*N50 P10=600000, P4=1000
N60 G82
N70 X20 Y20
N80 X40 Y70
N90 G80
N100...
The definitions of the parameters are created in the program blocks N40 and N50.
These definitions are used in the subsequent cycle (NC subroutine). In N60 the
drilling cycle G82 is activated (spot facing with dwell time). The drilling cycle is first
processed after the position programmed in N70 is reached. G00 (rapid traverse) is
effective after the termination of the drilling cycle. The following NC block causes a
further processing of the drilling cycle at a new X/Y position. The cycle is deactivated
again with the instruction G80.
The above program was running in G70 (inch mode). In that context, N40 assigned
the reference plane (P2) to 50.0 inches and the final hole depth (P3) to 42.0 inches.
N50 assigned the retract plane (P10) to 60.0 inches and the dwell (P4) to 1 second
(or 1000 milliseconds). N70 performed the cycle at X of 20.0 inches and Y of 20.0
inches. N80 performed the cycle at X of 40.0 inches and Y of 70.0 inches.
If the above program was run in G71 (metric mode), then N40 assigned the reference
plane (P2) to 500.0 mm and the final hole depth (P3) to 420.0 mm. N50 assigned the
retract plane (P10) to 600.0 mm and the dwell (P4) to 1 second (or 1000
milliseconds). N70 performed the cycle at X of 20.0 mm and Y of 20.0 mm. N80
performed the cycle at X of 40.0 mm and Y of 70.0 mm.
A subroutine call cannot be made from the X and/or Y block to run a drilling cycle.
The drilling cycle is an implied subroutine that runs automatically for this block so
another subroutine cannot be run as well from the same block. The subroutine will be
ignored. The N70 below is an example of this invalid syntax:
N60 G81
N70 X4 Q345 (A SUBROUTINE CALL IS NOT VALID HERE)
N80 Y7
N90 G80
Note: No motion occurs during the G80 block unless it also contains an axis
coordinate. If the G80 block contains an X or Y coordinate the G80 occurs first
(canceling the drilling cycle). If an axis command is in the G80 block then that
axis motion will occur after the drilling cycle is cancelled. That axis motion with
the G80 is never part of the previous drilling cycle.
When using the G-codes G80-G89 to call up drilling cycles, the following
overlapping with other functions exist:
5-axis transformation
If one or more of these functions are available in your control configuration, then
other G-codes must have been assigned by the machine tool manufacturer either to
these functions or to the call up of drilling cycles. For further information about this,
please refer to the control manufacturer's documentation.
The function drilling cycles is deselected with the program word G80. Positioning
instructions following G80 therefore cause no more cycle call up for that drilling cycle.
Example:
...
*N40 P2=25000, P3=10000
*N50 P10=30000
N60 G81
N70 X10 Y15
N80 G80
N90 ...
The above program was running in G70 (inch mode). In that context, N40 assigned
the reference plane (P2) to 2.5 inches and the final hole depth (P3) to 1.0 inches.
N50 assigned the retract plane (P10) to 3.0 inches. N70 performed the cycle at X of
10.0 inches and Y of 15.0 inches.
2. Drill to the final hole depth (P3) using the current feed rate.
Example:
N30 ...
*N40 P2=25000, P3=10000
*N50 P4=1000, P10=30000
N60 G82
N70 X10 Y15
N80 G80
N90 ...
The above program was running in G70 (inch mode). In that context, N40 assigned
the reference plane (P2) to 2.5 inches and the final hole depth (P3) to 1.0 inches.
N50 assigned the dwell (P4) to 1 second (or 1000 milliseconds) and the retract plane
(P10) to 3.0 inches. N70 performed the cycle at X of 10.0 inches and Y of 15.0
inches.
2. Drill to the final hole depth (P3) using the current feed rate.
3. Wait for the dwell time (P4) to elapse before breaking contact with work piece.
The above program was running in G70 (inch mode). In that context, N40 assigned
the first delivery plane (P1) to 1.25 inches and the reference plane (P2) to 2.5 inches.
N45 assigned the final hole depth (P3) to 0.25 inches and the dwell (P4) to 1 second
(or 1000 milliseconds). In that context, N50 assigned the further feed increment (P5)
to 0.5 inches and the safety clearance increment (P6) to 0.25 inches. N55 assigned
the retract plane (P10) to 3.0 inches. N70 performed the cycle at X of 10.0 inches
and Y of 15.0 inches.
Note that the parameter P14 is used during this canned cycle for the calculation of
the intermediate Z depth. P14 is treated as a temporary variable and its value is
never maintained from before to after the drilling cycle.
2. Drill using the current feed rate with the first feed-in value (P1) to depth 1.
4. To allow the drill bit to cool, the Z-axis remains on the reference plane (P2) during
the dwell time (P4).
5. Move in rapid traverse to P1-P6 (first feed-in minus safety clearance) in the hole.
6. Drill to the depth 2: P6+P5 (safety clearance plus feed-in) using the current feed
rate.
8. To allow the drill bit to cool, the Z-axis remains on the reference plane (P2) during
the dwell time (P4).
9. Move in rapid traverse to P1+P5-P6 (first feed-in plus further feed-in minus safety
clearance) in the hole.
10. Drill using the current feed rate to the next depth of P6+P5 (safety clearance plus
feed-in). Drill using the current feed-in plus n times the further feed-in) exceeds the
final hole depth (P3).
P4 Dwell time in ms
P10 Retract plane, absolute Z coordinate
Example:
N30 ...
*N40 P2=25000, P3=10000
*N50 P4=1000, P10=30000
N60 G84
N70 X10 Y15
N80 G80
N90 ...
The above program was running in G70 (inch mode). In that context, N40 assigned
the reference plane (P2) to 2.5 inches and the final hole depth (P3) to 1.0 inches.
N50 assigned the dwell (P4) to 1 second (or 1000 milliseconds) and the retract plane
(P10) to 3.0 inches. N70 performed the cycle at X of 10.0 inches and Y of 15.0
inches.
2. Drill using the current feed rate and clockwise rotating spindle (M03) to the final
hole depth (P3).
3. Reverse spindle (the direction of rotation changes). A pause is made for the dwell
time (P4).
4. Pull out using the current feed rate to the reference plane (P2). Reverse spindle.
The spindles direction of rotation is again clockwise.
The program word G85 selects the drilling cycle reaming. The feed values and
rotational speeds defined in the NC program are taken over in the drilling cycle. Four
parameters must be defined before calling up this cycle:
Example:
N30 ...
*N40 P2=25000, P3=10000
*N50 P4=1000, P10=30000
N60 G85
N70 X10 Y15
N80 G80
N90 ...
The above program was running in G70 (inch mode). In that context, N40 assigned
the reference plane (P2) to 2.5 inches and the final hole depth (P3) to 1.0 inches.
N50 assigned the dwell (P4) to 1 second (or 1000 milliseconds) and the retract plane
(P10) to 3.0 inches. N70 performed the cycle at X of 10.0 inches and Y of 15.0
inches.
2. Drill using the current feed rate to the final hole depth (P3).
4. Pull out using the current feed rate to the reference plane (P2).
Example:
...
*N40 P2=25000, P3=10000
*N50 P4=1000, P8=1000
*N55 P9=1000, P10=30000
N60 G86
N70 X10 Y15
N80 G80
N90 ...
The above program was running in G70 (inch mode). In that context, N40 assigned
the reference plane (P2) to 2.5 inches and the final hole depth (P3) to 1.0 inches.
N50 assigned the dwell (P4) to 1 second (or 1000 milliseconds) and the X lift
distance (P8) to 0.1 inch. N55 assigned the Y lift distance (P9) to 0.1 inch and the
retract plane (P10) to 3.0 inches. N70 performed the cycle at X of 10.0 inches and Y
of 15.0 inches.
2. Bore to the final hole depth (P3) using the current feed rate.
6. The lift distance (P8 and/or P9) moves spindle in the X and/or Y-axis.
Example:
N30 ...
*N40 P2=25000, P3=10000
*N45 P4=1000, P10=30000
*N50 P11=6000, P12=4000
*N55 P13=17500
N60 G87
N70 X10 Y15
N80 G80
N90 ...
The above program was running in G70 (inch mode). In that context, N40 assigned
the reference plane (P2) to 2.5 inches and the final hole depth (P3) to 1.0 inches.
N50 assigned the dwell (P4) to 1 seconds (1000 msec) and the retract plane (P10) to
3.0 inches. N50 assigned the processing feed rate (P11) to 6.0 IPM and retract feed
rate (P12) to 4.0 IPM. N55 assigned the first reamed depth (P13) to 1.75 inches. N70
performed the cycle at X of 10.0 inches and Y of 15.0 inches.
2. Ream with the processing feed rate (P11) to the first reamed depth (P13).
3. Pull out to the retract plane (P10) with the retract feed rate (P12).
4. Halt feed rate to allow measuring of the hole. Press START to continue with the
processing.
6. Ream with the processing feed rate (P11) to the final hole depth (P3).
8. Pull out with the retract feed rate (P12) to the reference plane (P2).
Important: After leaving the drilling cycle, G87 the retract feed rate is active.
Example:
N30 ...
*N40 P2=25000, P3=10000
*N50 P4=1500, P10=30000
N60 G88
N70 X10 Y15
N80 G80
N90 ...
The above program was running in G70 (inch mode). In that context, N40 assigned
the reference plane (P2) to 2.5 inches and the final hole depth (P3) to 1.0 inches.
N50 assigned the dwell (P4) to 1.5 second (or 1500 milliseconds) and the retract
plane (P10) to 3.0 inches. N70 performed the cycle at X of 10.0 inches and Y of 15.0
inches.
2. Bore to the final hole depth (P3) using the current feed rate.
5. Pull out to the retract plane (P10) in rapid traverse with stopped spindle.
Example:
N30 ...
*N40 P2=25000, P3=10000
*N50 P4=1000, P10=30000
*N55 P13=17500, P15=12500
N60 G89
N70 X10 Y15
N80 G80
N90 ...
The above program was running in G70 (inch mode). In that context, N40 assigned
the reference plane (P2) to 2.5 inches and the final hole depth (P3) to 1.0 inches.
N50 assigned the dwell (P4) to 1 second (or 1000 milliseconds) and the retract plane
(P10) to 3.0 inches. N55 assigned the first drilling depth (P13) to 1.75 inches and the
second drilling plane (P15) to 1.25 inches. N70 performed the cycle at X of 10.0
inches and Y of 15.0 inches.
2. Bore to the final hole depth (P13) using the current feed rate.
4. Bore to the final hole depth (P3) using the current feed rate.
The following is used to program the four threaded holes in the base plate:
Drill to the final hole depth (P3) using the current feed rate.
Move to the coordinate X40 Y10 in rapid traverse and repeat steps 2 to 4.
Move to the coordinate X40 Y30 in rapid traverse and repeat steps 2 to 4.
Move to the coordinate X10 Y30 in rapid traverse and repeat the steps 2 to 4.
Interrupt program (unconditional halt) and halt spindle for tool change; continue the
program by pressing the START button.
Move to the coordinate X10 Y10 in rapid traverse and rapid traverse to the reference
plane (P2) in the Z direction.
Drill using the current feed rate and clockwise rotating spindle (M03) to the new final
hole depth (P3).
Reverse spindle. The direction of rotation changes and a pause for the dwell time
(P4) is made.
Pull out to the reference plane (P2) using the current feed rate.
8 Program Optimization
8.1 Hints for rational program creation
8.1.1 Subroutines
If the same contour element frequently appears in a contour, then it should be
programmed in a subroutine. The subroutine can then be called up at each position
of the main program at which the contour element is required.
*N... P1=1000
*N... P2= 500
N... ...
N... ... F=P1
N... ...
N... ... F=P2
N... ...
Avoid programming any PLC codes (i.e., usually the M, S and T codes) in blocks with
short axis motion because the CNC must hold that block long enough for the PLC to
get its code(s) from the block. This delay for the PLC will affect the path performance
for blocks with very short axis motion when the time for the blocks axis motion is less
than the time for the PLC code(s).
The function programmable acceleration can be used with active "Look Ahead" to
obtain a leveling of the axis accelerations. This puts the machine tool under less
stress and increases processing accuracy.
Specific functions (e.g., Look Ahead) can be quickly and easily activated in
standard programs using a subroutine call up.
After aborting a program (e.g., due to tool breakage), all the necessary modal
values for the program continuation may still be active. The main program is then
only reprocessed up to the conditional halt in the subroutine. The main program
is then interrupted and, using a manual block selection, continued at the desired
position.
The control always checks at circular interpolation that the distance from the circle
start point to the circle center point corresponds exactly to the distance from the circle
end point to the circle center point. The control outputs an error message if this is not
the case. Since the post processor rounds values up or down, these distances may
not exactly correspond to each other. Such problems can be avoided by using the
instructions G12/G13 (circular interpolation with specified radius) instead of the
instructions G02/G03 (circular interpolation with specified center point).
Example:
... ...
N50 X70 Y80 instead of: N50 X70 Y80
N60 Y90 Q100 instead of: N60 Y90
... instead of: N70 Q100
Example:
Main program:
...
N20 G9
N30 G90
N40 G1 X. . Y. . Position over work piece
N50 G91 Z-10 Q17 L9 Feed-in to work piece-upper edge,
call up subroutine, 9 repetitions
N60 Z30
...
Subroutine P17:
N1 G2 I5 Z-2 M30
If the M30 in the subroutine was programmed in a separate block the helix would not
be processed continuously and M30 would be interpreted as a dummy-block. This
would result in a standstill after each revolution of the helix.
Example:
Acceptable:
...
N90 G1 X0 Y0 F1000
N100 Y10
N110 G43 D1 Activate the path compensation
(dummy-block)
N120 G2 X10 I5 Block, which should be processed with
path compensation
N130 G40 Deactivation of the path compensation
(dummy-block)
N140 G1 Y0
Better:
...
N90 G1 X0 Y0 F1000
N100 Y10 G43 D0 Activate the path compensation with
compensation value 0
N120 G2 X10 I5 D1 Activate compensation value the
compensation value memories 1
N120 G1 Y0 D0 Activate compensation value 0
Instruction G221 is a modal one and once being programmed it allows us to use
standard instructions for axes movements: G0 or G1 for linear interpolation, G2 or G3
for circle interpolation. Polar-/barrel cam transformation (instructions G100 - G108,
G14, G15) is not possible with G221 Angled-Wheel transformation active.
G220 deactivates the angled wheel transformation. It means all given axes
coordinates are machine coordinates for corresponding axes. The transformation is
not performed so the programming is done in the machine coordinates.
Two step motion Angled-Wheel transformation (activated with G222 or G223) means
that each programmed motion block is separated in two steps. Depending on active
angled-wheel G-code and programmed first angled-wheel axis (usually X) direction
all first angled-wheel axis (usually X) movement can take place in the first step
(G222) or in the second step (G223). Corresponding all others axes motion take
place in second (G222) or in the first step (G223). In two step motion mode axes are
programmed in virtual orthogonal Cartesian coordinates. The CNC generates the
intermediate blocks to realise two step axes motion.
Y (physical)
Y (virtual)
30 N30 N40
20 N50
N60
N20
X (physical)
10
= 60o
= 30o
N5, N10
X (virtual)
10 20 30
Figure 9-1: Relationship between two linear axes with Angled Wheel Transformation
The same axes movements can be programmed by switching off the Angled-Wheel
transformation (G220 instruction active).
N5 G0 X0 Y0
N10 G220
N20 G0 X11.547 Y14.2265
N30 G1 Y24.2265 F100
N40 X23.094 Y18.453
N50 Y8.453
N60 X11.547 Y14.2265 M30
This simple example shows the same programming without G221 instruction is
possible (however not so simply). But for more complicated cases (e.g., circular
interpolation, etc.) it can be much more complex task and so using Angled-Wheel
transformation is preferable.
Y (physical)
G-211 movement
Y (virtual)
G-212 movement
30
First step
Second step
N20
20
N30, N40
X (physical)
Second step
10
= 60o
= 30o
First step
N5, N10
X (virtual)
10 20 30
Figure 9-2: Example for G222, two step move for Angled Wheel Transformation
The figure above shows the difference between a two-step move (G222) and the
interpolated move (G221).
N20 movements to commanded positions in two step (dashed line in the fig. 2 );
angled axis is moved in the first step, other axis is moved in the second step. PA
CNC generates intermediate block for the second step.
The same axes movements can be programmed by switching off the Angled-Wheel
transformation (G220 instruction active).
N5 G0 X0 Y0
N10 G220
N20 G0 X11.547
N25 X14.226
N30 X34.641
N35 Y2.679 M30
The same movement can be programmed by without the angled-wheel
transformation but the program is more complicated even in this simple example.
Even with angled-wheel transformation active, G92 axes offset can be active. By
transformation between current machine coordinates (G220) and Cartesian
coordinates (G221), G92 offset values remain the same. Switching between normal
motion mode (G221) and two step motion mode (G222) is also possible.
Note: by calculating whether X axis is programmed away from the part spindle center
line (assumed to be X 0.0) the CNC takes programmed values. No G92 offset is
taken into account. If such behaviour is not right in some NC program places than
earlier programmed two step motion G-code can be changed to it opposite (G222 to
G223).
9.1.3 Mirroring
Angled-wheel axes can be mirroring by active angled-wheel transformation. Mirroring
works in normal motion mode as well in two step motion mode.
Note: normally mirroring should be switching off in the position in which it has been
switching on. If it is not the case, after switching off the mirroring with G38 or G39 an
extra G92 without any parameters has to be programmed to remove all G92 related
axis offsets.
9.2.1 General
The programming of the spindle gear step (or range or stage) switching for
different spindle speeds is achieved using M-codes:
Note
The function Automatic Gear Step Selection is only possible for the main spindle. The
first spindle in the system is termed the Main spindle.
The defined maximum speed is compared with the programmed spindle speed. The first
stage is valid where: the programmed spindle speed is smaller than or equal to the
maximum speed for the range. A speed stage with the applicable minimum speed = 0
will be treated as not specified. If the programmed spindle speed is greater than the
largest applicable maximum spindle speed, the speed will be automatically limited to the
maximum allowable value. G92 and the spindle override have no influence on the
selected speed stage.
Note:
The first temporary block decelerates the spindle to the gear change speed (which
can be different for each gear range). A delay is also calculated, based on the speed
change (with a full delay for a change from top speed in the range).
The second temporary block provides the programmed gear range as an M-Code to
the PLC (with the programmed S-code). The NC block transfer is blocked as long as
it takes to obtain feedback from the gearbox (via the PLC) that it is in the selected
speed range.
The third and fourth temporary blocks are G10 blocks to suppress the block look
Part Programming Manual
page 257/352
MACHINEMATE
The fifth temporary block accelerates the spindle to the programmed speed. A delay
is also calculated, based on the speed change (with a full delay for a change to top
speed in the new range). After this delay, normal NC block processing continues.
Notes:
The waiting time is only considered during speed stage changes but not during other
speed change operations.
Switching to counter-clockwise and clockwise turning can be achieved if the PLC signal
IN_REV (in IN_SPINDLE) is continuously reversed by the PLC.
NC ADDRESS M WRONG!
One of M40 to M46 can be programmed into the G96 switch-on block. The S-word,
however, has no function if M40 is active.
The speed stage can be changed (only via the M-code, not via the S-code) while M05 is
active if the spindle that has been programmed using M05 was stopped. The actual
change is carried out if the spindle is switched on via M03/M04.
In case of G96 Mxx S200 in one block (where xx = 41 to 46), the spindle first accelerates
to the speed that was programmed last (i.e., before the speed stage change). Only then
S200 is taken into consideration.
The PLC signal IN_NULLV always provides for a spindle stop; also in case of M40-M46.
9.3.1 General
Using the instructions G102 and G106 the barrel cam transformation is activated.
Following the instruction G102 the specified coordinates are interpreted as Cartesian
coordinates and following the instruction G106 as polar coordinates or cylinder
coordinates.
The barrel cam transformation also offers the possibility of switching between absolute
dimension input (G90) and incremental dimension input (G91).
If other axis addresses were specified for the polar transformation as substitutes for X
and Y, then they also have to be used with active G106. When G102 is active, however,
the axis addresses X and Y are used, as with G101. If no other axis addresses were
specified as substitutes for X and Y, then the instruction G106 with the axis addresses X
and Y is available.
Example:
A groove is to be milled into the curved surface of a cylinder. During the milling process
the cylinder must rotate about its center axis. Simultaneously linear axes must be
moved. In order to achieve the desired groove, the movements of the rotational axis and
the linear axes must be exactly in coordination with each other, which is relatively
complicated. The barrel cam transformation is a simplification for the programming of
such processes.
The curved surface of the cylinder is unwrapped or developed to form a plane that
serves as an interpolation plane for compensations and the feed rate during barrel cam
transformation.
Example:
G102 R80.05
Part Programming Manual
page 259/352
MACHINEMATE
In this NC block a reference cylinder with a radius of 80.05 is specified for the following
processing steps.
When G102 is active the values programmed together with the axis addresses X and Y
are to be interpreted as follows:
The value programmed together with the axis address Y indicates the position in the
direction of the cylinder axis. The value programmed together with the axis address X
indicates the position in the direction of the cylinder's curve.
X
Y
N 60 N 70
X N 30
N 50
40 N 40
R 80,5 20
0 Y
-20
-40 20
0
-20
Figure 9-4: Barrel cam transformation
The X-values result in rotations of the rotational axis, the Y-values in linear travel movements
in the positive or the negative direction of the Y-axis, i.e., in the axial direction of the curved
cylinder surface.
The program shown above results in the travel movements displayed as arrows in the
figure above.
To enable this the instruction G106 is to be programmed instead of G102. When G106 is
active, the same axis addresses must be used as for active G105 (see above).
For the following example, it is assumed that for the rotational axis the axis address C
was specified and for the linear axis the axis address V. When G106 is active, the values
programmed together with the axis address C are then interpreted as angles and the
values programmed together with the axis address V are interpreted as the positions, in
the axial direction of the cylinder curved surface, to which the linear axis is to be moved.
To find out which axis addresses are specified for the axes in your particular control,
please see the documentation provided by the machine tool manufacturer. The following
example can be easily adjusted to suit your individual configuration simply by replacing
the axis addresses used in the example by those specified in your control.
N 60 N 70
C N 30
28,47 N 50
14,235 N 40
R 80,5
0
V
20
0
-20
Figure 9-5: Meaning of the C and V values when G106 is active
This program leads exactly to the same result like the program example for G102.
X
Y
The function is activated analogously to G102, G103 and G106 with the G-codes G107.
After a block such as:
the usual barrel cam transformation G102 is activated first of all. The process deviates
from G102 only when path compensation is then activated.
Example:
N10 X0 Y0 F500
N15 G20 I1 J2
N20 G103 R80
N30 X30
N40 Y20
N45 D1=5000
N50 G41 Y40 D1
N70 G12 X50 Y60 K20
N80 G1 X50 Y60 K20
N85 G1 X80
N90 G12 X100 Y40 K20
N100 G1 Y30
N110 G1 Y30
N110 G40 Y20
N120 G100
N130 X0 Y0 M30
The path programmed in this example is sketched in the following figure. The X/Y plane
here is the developed cylinder pattern.
D1
DX
60
DY K 20 K 20
40
20
20 50 80 100 X 360
The compensated path is indicated by dashes. It should be noted that the indicated paths
DX are traveled by the U-axis. In contrast to conventional path compensation, the
uncompensated path is interpolated. The compensation components DX and DY are first
calculated during interpolation, whereby every interpolated point is displaced vertically by
the compensation value.
Limitations:
1. While real time compensation is active, no blocks without travel information may
be programmed in the active plane.
2. In order to avoid jumps in the U-axis or Y-axis, it is imperative to program
tangential transitions between the travel blocks.
3. When processing curved contours, the velocity differs from the programmed
velocity.
4. The U-axis may not be programmed once G103 or G107 are programmed. Error
message 145 is output if this does occur.
5. Similarly to polar transformation, the axis limits of the U-axis and V-axis are
monitored in real time for real time radius compensation. If the axis limits are
violated, an error message is output and the interpolation is stopped.
In addition to the compensation components for the X-axis, the U-axis travels for an
additional value that is obtained from the following equation using the movement of the
cylinder longitudinal axis.
Um = A + K2 - (Y-B)2 | A < 0
(1) Um = A - K2 - (Y-B)2 | A > 0
A: axis distance
B: lever distance
K: lever radius
The meaning of the individual parameters is explained in the following sketch that
includes these parameters.
C
V
Z
A
K
B R
Since the roller is moved in the U-Y plane, it is important that the projection of the guide
groove in the U-Y plane has the correct width, i.e., the compensations must be relative to
this plane. From this it is also clear that an equidistant path in the U-Y plane is not
equidistant on the cylinder surface.
Limitations:
The limitations are the same as for G103/107. In addition it is monitored whether a
meaningful centerline deviation is possible according to the equation (1). If in this
equation the term under the root is negative, then the error message Axis limit U is
output. This is always the case when the guide groove is extended so far in the Y
direction that a roller fixed onto a lever with length K can no longer reach this point.
It is not possible to change over directly to the barrel cam transformation from the polar
transformation. G100 must always be programmed before changing the transformation
type. If an attempt is made to program an axis position in a block with a switching G-
code, error message 145 is displayed.
9.4.1.1 Syntax
G191 Activate the diameter programming and display the point of contact referring to
diameter dimension.
G192 Only display the point of contact referring to diameter dimension; programmed
values are in radius dimension.
G193 Only display the point of contact in radius dimension; programmed values are
in radius dimension.
G190 Deactivate the diameter programming (display shows the tool reference point
in radius, programmed values are in radius).
The G-codes appertain to a group (only one code of the group is in effect at a time) and
they are modal effective.
In the examples, it is always assumed that the axis with address letter X is the diameter
programmable axis.
The behavior of the function in the case of negative radius is applied by the machine
parameter DiameterAppl.
DiameterAppl Bit 1 = 0
With DiameterAppl Bit 1 = 0 the orientation of the diameter programmable axis to the
tool spindle is determined by the axis position achieved before. If this position is negative
then the diameter corresponding to the negative axis position is computed.
Note:
Only the end positions of programmed paths are checked whether the zero point is
crossed when DiameterAppl Bit 1 = 0. Certain motions might possibly cross the zero
point of the axis.
Example:
Programming a circle with start and end point in the positive range and a radius which is
smaller than the distance of the center point from the zero point of the axis will lead to a
motion through the zero point:
N10 G191 Activate diameter programming
N20 G1 X20 Y100 Move to the start position at X20 / Y100
N30 G3 X20 Y20 I0 J-80 Circular interpolation (counter
clockwise) to the end point at X20 /
Y20. Axis moves through the zero point.
With DiameterAppl Bit 1 = 1 positive and negative values of the diameter will be
allowed.
In this case it is possible to start from negative position and move through the zero-
positions or program negative positions.
The G38 "Mirroring" and G101-G106 "Polar/Cylinder transformation" commands are not
permissible for diameter programmable axis. Error message 241 is output.
Error message 241 is also output if one of the diameter programmable axes is one axis
on the active G17-G20 "Plane selection" plane and G14-G16 "Polar programming" or
G51 "Part rotation" is active.
Error message 435 is output if during active diameter programming a negative value is
programmed for a diameter programmable axis.
Positive values always increment the diameter, negative values always decrement the
diameter.
Example:
DiameterAppl Bit 1 = 1
Positive values lead to a motion of the axis in positive direction and negative values lead
to a motion in negative direction. In this mode, the position of the axis is incremented.
Example:
When part position offsets (G53 to G59; see chapter 5.1.2) are used, the machine
parameter DiameterCorr value determines whether the G corrections are considered at
the determination of the contact point or not.
DiameterCorr = 0
The G corrections are not considered at the determination of the contact point. The
display shows the value relative to the origin.
DiameterCorr 0
The G corrections are considered at the determination of the contact point. The display
shows the value relative to the part position offset.
Item Notes
X axis command specified with a diameter value
Incremental command (G91) specified with a diameter value
Cycle parameters in X axis command (X=P12) specified with a diameter value
Set X axis value (G92) specified with a diameter value
X Part position offset (G54-G59) specified with a diameter value
Circular parameters (I, J, and K) specified with a radius value exception: G2 or
G3
For these commands it depends on the setting
of bit 2 in the machine parameter
DiameterAppl.
Bit 2 = 0 radius value
Bit 2 = 1 diameter value
This is valid if the axis to which the parameter
belongs is diameter programmable. For
example I to X, J to Y, etc.
Feed rate along X (F word) specified in radius/min
specified in radius/rev
X axis position display displayed in diameter dimension
Tool radius compensation (D) specified in radius dimension
Tool length compensation (H) specified in diameter dimension
Table 9-3: Diameter programming conditions
The axes to be distance regulated and their direction vectors can be preset. A new axis
selection can additionally be programmed with the code G265.
The values programmed with the address letters of the axes determine the new direction
vector. These values are standardized internally.
Example:
...
Nxx G265 X0.5 Y0.5
...
The new axis selection is valid from Nxx with the standardized direction vector (0.71,
0.71, 0).
Note:
If more than three axes are programmed, this is indicated by error message 433.
A new axis selection may only be programmed with inactive distance regulation,
otherwise error message 432 is output. The activation code may be located in the same
block as G265 and all other information in this NC block is ignored.
The axis selection programmed by G265 ... is reset to the presetting at deactivation of
distance regulation and at Control Reset.
Distance regulation is activated by the code M140. The effect is that the distance
between tool tip and work piece is regulated to a constant value when a programmed
path is traveled. This enables compensation of deviations in the actual work piece
geometry from the programmed work piece geometry. An NC block with M140 may
contain path information.
With 5-axis machines when transformation is active regulation is performed in the work
piece direction when all transformed linear axes have been distance-regulated. If an axis
in the current selection is not affected by transformation (e.g., a 3-axis machine), this is
not further regulated with active transformation. The offset built up by this time is
maintained. If not all axes involved in transformation are distance regulated then the
regulation is in the direction of the current direction vector.
Example:
N10 X0 Y0 Z0 F1000
N20 G81
N30 M140 X20
NC block N20 activates 5-axis transformation and N30 activates distance regulation.
Regulation is in the work piece direction if the first three axes of the machine are preset.
M141 deactivates distance regulation again. The NC block may not contain any further
codes or path information. When distance regulation is deactivated, there is no
compensating movement to the programmed position. The position resulting from
distance regulation is used for the next NC block as the starting position, by means of a
synchronization process. This prevents damage to the tool tip and the work piece.
Note:
With active distance regulation, if the Feed enable or Drive ON signal is removed for one
of the axes to be regulated, the offset built up by then is retained. The voltage value
continues to be read in, but regulation no longer takes place. Regulation is only
continued when the Feed enable or Drive ON signal is re-applied.
However this feature can be applied to any output signal with critical timing. The
CNC handles the output being turned on or off at the CNC interpolation timing, not
dependent on the PLC scan time. Some of the examples use laser terminology;
these are just examples, not the only application of these M-codes.
Shutter opens at the beginning of the block dwell time cycle feedrate
The M-code that resets a fast output is modal and is active at the beginning of the
block. For example, the M101 resets the output bit that is set by M111.
The following conditions also reset the output bit signal (e.g., M101) and close the
laser shutter:
EMERGENCY STOP
CONTROL RESET
M02 or M30
With the function, the output of the fast M-codes (M101-M118) will be controlled so
that the output is affected by a defined position.
Example:
In the following example, a position is defined for the fast outputs at the points X10
and X20 is desired. After the position X10 is reached, the fast output bit 1 (M111) is
set; at the position X20 the fast output bit 1 (M101) will be reset. The function is
active at the beginning of the block so the axis reaching its start point (or the end
point of the last block) results in the fast output (set or reset).
N30
N20
N10
t
retarded output
Bit = 1
9.7.1 General
There are 16 rapid inputs (2 bytes) available and there are three ways of influencing the
feedrate. The probe input bit among the possible two bytes is indicated in the part
program using an M-code for each bit.
No stop occurs in the axis feed movement. The rapid input signal just causes a block
transfer. Thus a change in the feedrate is possible through the application of external
digital signals.
The feed movement is stopped immediately without any slope in the axial speed curve (a
hard stop). In the case that a return movement has been programmed, this occurs
afterwards. The change of program line occurs after this.
In this instance the feed movement is not stopped immediately (a soft stop), but is
stopped by inserting a new nominal value.
9.7.2 Programming
With a G170, G171 or G172 (applicable) the following options can be activated in
advance. The choice of one given option excludes the use of the other.
Syntax:
G170 (without axis information) no return motion,
block transfer with an instantaneous hard
stop
G170 X0.1 Y0.01 (with axis information) instantaneous hard
stop and then return motion in the X-axis by
about 0.1, in Y-axis by about 0.01
G171 Block transfer without Stop
G172 (without axis information) block transfer with
a soft stop without return motion
G172 X0.1 Y0.01 (with axis information) block transfer with a
soft stop and return motion in X-axis by
about 0.1, in Y-axis by about 0.01
Example:
N10 G170 Define no return motion.
N20 G1 X100 F100 M151 Proceed in the direction of X100 and
upon recognition of input 1, perform a
block transfer and initiate an
instantaneous hard stop of the axes,
display X100.
N20 G170 Y0.2 Define a return movement of Y = 0.2 mm.
N30 Y100 M152 Proceed in the direction of Y100 and
upon recognition of Input 2 initiate a
return motion of the axes and a block
transfer, display Y100.
N40 G171 Definition without stop.
N50 X0 M153 Proceed in the direction of XO and upon
recognition of Input 3 initiate block
transfer, display X0.
N60 G172 Define a Stop.
N70 Y0 M154 Proceed in the direction Y0 and upon
recognition of Input 4 a soft stop of
the axes is initiated, display Y0.
N99 M30
Since the movement on the return path occurs without a slope, monitoring of the
maximum permitted stroke per axis occurs. This path is computed as follows from
several machine parameters:
Note:
The enabling of the probing logic (G170 to G172 and also M170, M171) must be done
when G01 is modal and when the modal feedrate is greater than 0. If both of these
conditions are not met then error message 196 will result.
Note:
M159 indicates that the PLC cannot define the bit mask for the probe signals; M159 is
active after a control reset.
M160 indicates that the PLC can define the bit mask for the probe signals.
Example:
N10 G1 F500
N20 G4 F5000 M161 When input 9 (byte 2 bit 1) is recognized,
program line N20 is stopped and a block
transfer to program line N30 occurs.
N30 X100 M162
N99 M30
M170 do not stop the pre-processing of program lines a subsequent G92 in a block alone
will not remove the G92 offset introduced by the probe contact
M171 the pre-processing of program lines is stopped this is needed if the program or
subroutine will perform a G92 to extract the axis offset from a probe contact
Note:
Example:
Example:
Feed interpolation is setup using the NC address E.
NC program:
Note:
When traversing with acc/dec slopes, the target speeds are not accomplished to a 100
percent since the deceleration is activated before reaching the end of block.
The CNC does not verify whether the acceleration limits of individual axes are exceeded
by this function.
The function can also be programmed together with the rotational speed interpolation
(the electronic gear).
9.9.2 Programming
M200, M201-M208, M209, M210, M211
Syntax:
M200
The following M-code functions, with the axis selection via the NC-block
(M201-M211) or via the PLC-interface signals, can only be activated after
the M200 is activated:
Upon the M211, all eight of the cycle parameters will be written with the
current offsets from the handwheel activity. The start of this block of 8
parameters is configurable.
If the M211 block also has a distance programmed then the error message
434 is displayed.
Example:
A transfer of the handwheel offsets to a block of cycle parameters will not occur during
these events (like done with M211).
Example:
N10 G1 F1000
N20 X100
N30 M201 Handwheel with X.
N40 M00 M00 results in a programmed stop. The selected
axis (X) can still be moved with the handwheel.
With a subsequent "cycle start" the block
processing will continue with the next block
(with handwheel offset in X, if any).
N90 M30
9.10.1 General
The function Infinitely rotating round axis handles the endless moving of an axis in one
direction. In this scenario, the position of the axis is reduced automatically to the range of
0 to 360 for the round axis, without any influence on the axis motion. In particular, this
reduction has no effect on the moving of other axes (including linear axes) of the control.
Altogether, there are three different variants of the infinitely rotating round axis:
Round axis drives always on the shortest way to the programmed position (such as
a tool magazine axis).
In the following paragraphs, the features and the NC programming of all three variants
are described.
Altogether eight round axes are possible, but the number of modulo round axes is
restricted to three.
9.10.2 Programming
The programming of a round axis follows mainly in analogy to that of linear axes. How
certain movements of round axes must be programmed is different on the three variants
of round axis.
Like for a linear axis, the NC programming is done with the address letter of the axis. For
the modulo round axis the number of revolutions can be programmed additionally by
means of a fixed address letter.
For a round axis it is characteristic that after a complete revolution of the axis the same
machine position is reached. Therefore, any position of a round axis is uniquely
determined by a value, which is in the interval 0 to 360.
Note:
Depending on default values the travel range corresponding to one revolution of round
axes can be different. Nevertheless, in the following it is assumed that one revolution of
the axis corresponds to 360.
N.. A90
to the position A = 90 with positive rotation direction. Alternately, if one is programming
N.. A-90
the position A = 90 is reached with negative rotation direction (see figure below).
Active range A
G90 -360 < = A < = 360
G91 any value
Table 9-4: Programmable values for a round axis
For example the A axis has the position A = 90, then it is driving after programming of
to the absolute position A = 90 + 370 = 460 100 with positive rotation. (That
corresponds to the movement of 1 rotation plus 10.) On reaching the position A = 360
the axis value is reduced to 0. This is also visible in the axis display of MMI.
If one is programming
Example:
In the following program example it is assumed, that X and Y are linear axes of the
machine and A is a round axis.
In the block N10 all axes move to the position 0. After that the linear axes drive to X = 10
mm, Y = 20 mm and the round axis to A = 90. In the next block N30 the axes drive to X
= 20 mm, Y = 30 mm and the round axis to A = 315. On that movement the A axis
rotates in negative direction. In the block N40 relative coordinate programming is
activated. The linear axes drive 50 mm and reach the positions X = 70 mm, Y = 80 mm.
The round axis makes one rotation in positive direction. The movements of the axes are
presented in the figure below.
Active Range A
G90 0 < = A < = 360
G91 -360 < = A < = 360
Table 9-5: Programmable values for a tool magazine axis
If other values are programmed in a NC program an error message is generated.
How a programmed position is approached depends on the actual position of the round
axis. For example, the position A = 90 is reached with positive rotation after
programming of
if the previous position was A = 0. If the previous position was A = 180, the position A =
90 is reached with negative rotation direction.
On active relative coordinate programming the round axis drives the programmed angle
relative to the previous position. If the programmed angle is greater than a half rotation
of 180, the rotating direction is reversed. For example after programming of
the axis is not rotating from 0 to 315 with positive direction if the previous
position was A = 0, but it rotates with an angle of 45 in negative direction (see
figure below).
It is not possible to program in a NC block only the rotation number of a modulo axis, but
it has to be programmed simultaneously a value for the position (normal address letter of
the axes). For example, the position of the axis is A = 45 (I = 0) and two complete
rotations are required so this statement is required:
N.. A45 I2
On active relative coordinate programming (G91) the programmed axis position as well
as the programmed rotation number is evaluated incrementally. That means after
programming of
In the axis display on the MMI the programmed rotation number of the end point as well
as the actual rotation number are shown in addition to the position. The rotation numbers
(or the number of revolutions) that are displayed on the MMI are limited to the range -
999 to 999. However, this limitation has no effect on the travel range of modulo axes,
but only for rotation numbers that are outside the interval the corresponding maximum
values are displayed. Moreover, the actual rotation numbers are simultaneously
available in cycle parameters. It depends on default values which cycle parameters are
used. These cycle parameters can be accessed in a NC program in order to influence
the program execution depending on the actual rotation numbers of modulo axes.
The rotation counters of modulo axes are reset to zero on control reset and on program
end.
The traveling rotation numbers of modulo axes is principally unlimited (see the following
remark). In contrary to that the value that is programmed with the normal axis letter
cannot be arbitrary. The possible values are listed in the table below.
Active Range A
G90 0 < = A < 360
G91 any value
Table 9-6: Programmable values for a modulo axis
Note:
The maximal rotation number that can be traveled in one NC block is limited. The
limitation depends on the resolution of the round axis and from units that correspond to
one revolution of the axis. For example the maximal rotation number is R = 41 for a
round axis with a resolution of three digits after the point (m resolution) and a rotary
number of 360. For higher resolutions of the axis the maximal rotation number is
reduced correspondingly. If a rotation number outside the maximal range is
programmed, a corresponding error message is generated. This limitation is only valid
for the rotation number that can be traveled in one NC block. However, the total traveling
rotation number is not limited.
The cycle parameters, which are used for the storage of rotation counters, should not be
used for other purposes. That means, if the rotation counters are requested in the NC
program, these cycle parameters must not be used elsewhere, otherwise an incorrect
execution of the NC program results.
9.11.1 General
The first spindle in the system is termed Main spindle. The additional spindles, up to a
maximum of five, are called Minor spindles. The function Automatic gear shifting is
only possible for the main spindle. The minor spindles feature all other spindle functions
apart from this, i.e., feedback, spindle orientation, feed rate in mm/rev, constant cutting
speed, constant circumferential speed, thread cutting and spindle/rotational axis switchover.
For the main spindle (first spindle) the previous M codes are used.
The M-Codes for the other spindles are usually found in the 200 range (but the first M-code
for each spindle is configurable).
The S-value does not have to be reprogrammed after each spindle change. If no S-value is
specified after a spindle change, the last S-value programmed for this spindle is valid.
Example:
N10 M213 S4000 spindle 2, clockwise, S = 4000 rpm
N20 S2000 spindle 2, clockwise, S = 2000 rpm
N30 M03 S800 spindle 1, clockwise, S = 800 rpm
N40 M214 spindle 2, counter clockwise S = 2000 rpm
N99 M30
The function Thread cutting is activated with G33 and G34 for the selected spindle.
The function remains active for the spindle after it is deselected; i.e., the spindles actual
rotational speed is used for calculating the feed rate. Thread cutting is only ever active
for one spindle at a time. Activation for another spindle is made after reprogramming
G33 or G34. The spindle does not have to be reselected for deactivation, i.e., to alter the
interpolation type (e.g., G01).
Note:
The function Thread cutting can only be activated for spindles with feedback.
Example:
N10 M213 S8000
N20 M03 S400
N30 G33 X10 I1 thread cutting with spindle 1
N40 X20 I2 following thread
N50 M213 S800 continue thread cutting with spindle 1
N60 X30 I1 no following thread
N70 G33 X40 I1 thread cutting with spindle 2
N..
N9999 M30
The function G63 Spindle rotary switch off and G66 Spindle rotary switch on are also
directly effective for all spindles. The spindle percentage value programmed at G63 with
S becomes effective for all spindles immediately.
By means of special machine parameters, the spindle rotary switch can be adjusted so
that it does not affect individual spindles; i.e., the spindle rotary switch has no influence
on the rotational speed of spindles, which are appropriately set up. The percentage
value programmed with G63 also has no influence on the rotational speed.
Example:
N10 M03 S1000 spindle 1 rotates with S=1000 rpm
N20 G92 S500 spindle 1 is restricted to S=500 rpm
Part Programming Manual
page 294/352
MACHINEMATE
N...
N9999 M30
The spindle restriction programmed with G92 still remains effective after CONTROL
RESET and end of program. The restriction can only be lifted by programming G92 or by
restarting the CNC.
Example:
N10 M03 S1000
N20 G92 S1500 gives a spindle restriction for the first
spindle to S=1500 rpm. The rotational
speed is not changed.
N..
N99 M30
Note:
Any part position offsets programmed with G92 are also reset.
Reprogramming G95 can become active for another spindle. The spindle does not have
to be reselected for deactivation with G94.
Note:
The code G95 can only be applied for spindles with feedback.
Example:
N10 M03 S100
N20 G95 F1 X10 Rotational speed of spindle 1 is used
N30 M213 S300 X20 spindle 2 is the active spindle,
rpm of spindle 1 is still used
N40 G95 F2 rpm of spindle 2 is used
N50 X30
N60 G94 G95 is deactivated
N..
N99 M30
These functions are all mutually exclusive. After CONTROL RESET, the state that was
set up is active.
Note:
Programming of one of the three G-Codes automatically deactivates the previously
active function.
The function Constant cutting speed can be simultaneously active for several spindles.
For the calculation of the cutting speed the position of the setup transverse axis for each
spindle is used.
For the active spindle, the function Constant cutting speed can be activated with G96.
The function remains active for the spindle after it is deselected. This spindle must be
reselected to deactivate the function using G97 or G93 and for re-programming the
cutting speed (S-value).
An additional activation for the function Constant cutting speed is possible for another
spindle after the activation of the spindle using G96.
As long as no S-value has been programmed with G97, the current spindle speed is
retained.
Example:
N10 M03
N20 G96 S100 F10 X20 speed of spindle 1 is at cutting speed
of S = 100 rpm
N30 M213 X10 spindle 2 is the active spindle, speed
of spindle 1 is at cutting speed of S
=100 rpm
N40 G96 S30 F20 speed of spindle 2 is at cutting speed
of S = 30 rpm. Speed of spindle 1 is
still at cutting speed of S=100 rpm
N50 X5
N60 G97 G96 is deactivated for spindle 2. Speed
of spindle 1 is still at cutting speed
of S =100 rpm.
N99 M30
This function is activated using G93 for the current spindle and deactivated using G96 or
G97. The circumferential speed of the grinding wheel is programmed using an S-value
and the grinding wheel diameter is programmed with K.
K is only recognized as grinding wheel diameter using G93. If G93 is not programmed in
the same block, K is taken as circular interpolation.
By programming the tool number (e.g., T11) the active spindle can be assigned a
grinding wheel and also a grinding wheel diameter. This assignment using tool numbers
has priority over a programmed K-value.
The function remains active for the spindle even after it is deselected. To deactivate or to
reprogram the circumferential speed (S-value) or that of the grinding wheel (K-word), this
spindle must be reselected.
The function Constant circumferential speed can only be activated additionally for
another spindle after activating that spindle.
programmed S-value
S=
2 Radius *
Example:
N10 M03
N20 G93 S100 F10 rotational speed of spindle 1 is adapted
S100 K20 to circumferential speed from S =100 rpm
and the radius 10 mm
N30 M213 X10 spindle 2 is the active spindle, rpm of
spindle 1 is continued with
circumferential speed (S =100 rpm)
N40 G93 S30 F20 T4 rpm of spindle 2 is adapted to
circumferential speed from S =30 rpm and
the radius of grinding wheel 4, rpm of
spindle 1 is continued with
circumferential speed from S =100 rpm
N50 X5
Note:
Spindle orientation is possible for all spindles and for several spindles at once.
Example:
N20 M03
N30 M19 S90 Spindle stop at marker position + 90 degrees
N40 M19 S270 Spindle stop at marker position +270 degrees
N99 M30
9.12.1 Syntax
G21 Activate parallel axes
G22 Deactivate parallel axes
The activation of the parallel axes function is done by programming G21. The parallel
axes defined with machine parameters (see machine parameter CharacterApplTab) are
driven by the respective leading axis. Depending on the mirroring of the leading axis the
parallel axes drives contrary parallel or parallel to the leading axis. The parallel axes
function works relative to the power-on position; that means the parallel axes only runs
the difference to the power-on position parallel or contrary parallel to the leading axis. If it
is desired to run the parallel axis parallel to the mirrored leading axis this has to be
programmed explicitly with G38. The current position of the parallel axis is not shown on
the display. After deactivation of the parallel axes function via G22 the parallel axis is
normally moved out of power-on position. The distance the parallel axis is moved out of
power-on position internally has the same effect as the programming of G92 for a new
zero adjustment. Therefore it is recommended to program G92 without axes information
after deactivation of the parallel axes function to set the machine back to its original
coordinates. Up to three axis letters can be configured to associate with the same
master axis in this parallel arrangement.
Note:
With G21 active a programming of the parallel axes results in an error message. In
connection with G38 the parallel axes may be programmed. An axis is supposed to be
programmed even it is within an active level and a circle interpolation type (G02, G03,
G12, G13, G07) is active.
In manual mode the parallel axes always are autonomous axes. Therefore it is not
possible to move them simultaneously with the respective leading axes.
When programming a parallel axis with G74 (programmable reference point drive on)
G22 must be programmed in advance.
In contrary to the gantry-axes function the parallel axes function generally does not result
in a parallel movement of the machine axes, if the leading axis is a transformed axis.
9.12.2.1 Example 1
9.12.2.2 Example 2
Assumption:
Four axes control with the axes X, Y, U and V. On activation of the parallel axes U is
parallel to X and V is parallel to Y.
9.12.2.3 Example 3
9.13.1 Introduction
Positioning axes are NC axes that are interpolated individually and with independent
feed. The interpolation of a positioning axis is performed asynchronously to the
interpolation and to block changes of other positioning or path axes. Positioning axes
can be moved in three ways:
in the 'Manual' and 'Reference point' NC operating modes in the same way
as path axes;
Note:
Positioning axes are defined by machine parameters and can never be interpolated in
the path operating mode.
With path axes also available, the processing (programming, implementation) of the
positioning axes is partially different.
9.13.2 Programming
Positioning axes can be programmed in the same way as path axes, e.g., using the NC
block format. Within a NC program, both axis types can be programmed individually or
commonly; i.e., a NC program can consist of a positioning section and/or a interpolating
path section. The positioning section must always be at the beginning of the NC
program. The positioning section can also be concluded by M2/M30, by G188, and in
case of additional path axes by programming a path axis character. Within the
positioning section, the positioning axes must be programmed separately; i.e., the
positioning section embodies exactly one positioning section per programmed
positioning axis. The positioning sections must keep the applied axis order of the
positioning axes. A positioning section is concluded by programming another positioning
axis character or by beginning the interpolated axes section. The following has to be
noted while programming the positioning axes:
only the following G-codes are possible: G00, G01, G04, G53 - G59, G63,
G66, G70, G71, G90, G91, G98;
all modally effective G-codes, all feed values and H-correction numbers are
not automatically reset at the end of a positioning section or start of
interpolating path section; an F-word must be programmed in the first block
containing G01;
at a certain axis position, a signal can be output to the PLC using G98. The
length of the signal is programmed in F in milliseconds and also acts as a
dwell time. Together with G98, traversing information is ignored;
From the PLC program, the start of the positioning blocks occurs via an interface signal
to the CNC (IN_POS_01 to IN_POS_05) and it is only processed in the 'Automatic' NC
operating mode.
If the H- and G-correction value memory are changed in the CNC between 2 executions,
the positioning memory are not automatically changed too but must be refilled by a
renewed processing of the positioning program.
If additional path axes are available then the execution of the movement and dwell time
blocks of the individual positioning axes stored in the positioning memory must be
enabled via G188 in an NC program in the 'Automatic' NC operating mode. After G188
has been activated, every positioning axis can be individually activated via an input
signal at any times. The activated positioning axes are independently interpolated of
each other and of the path axes with their programmed feed. The program end of the
active program can be reached only if all of the movements and dwell time blocks stored
in the positioning memory have been processed; i.e., all programmed positioning axes
must have been activated.
After the positioning axes have executed their programmed blocks, an end of program
(M2/M30) must be active before issuing the next enable using G188 or homing must
have been activated, i.e., G188 may only be activated once in an NC program.
If no additional path axes are available, the axes can be activated as soon as the
programming and/or the filling of positioning memories occurred.
9.13.2.4 Examples
Definitions:
P1: Positioning axis program
P2: Path axis program
X, Y Path axes
U, V Positioning axes
P1
(Positioning part to positioning axis U)
N10 G54
N20 G0 U0
N30 G1 U-25 F400
N40 G4 F100
N50 G0 U0
N60 U-25
N70 G1 U-40
N80 G98 F200
N90 G0 U100
(Positioning part to positioning axis V)
N100 G0 V0
N110 G1 V-100 F280
N120 G98 F200
N130 G0 V100
N140 M30
In P1, the positioning axes are only programmed and the positioning memory filled. The
blocks N10-N90 generate the positioning section for U, the blocks N100-N130 the
positioning section for V. The blocks N80 and N120 signal the processing end of the
individual positioning axes to the PLC program.
P2
N10 G0 X0 Y0
N20 G1 X200
N30 G188 Mxx
N40 G2 X200 I150
N200 M30
In P2 in block N30, the positioning memory is released for processing by G188. Using
Mxx, the release is communicated to the PLC that activates the positioning axes now via
the individual input signals. Mxx is an M-code arbitrarily to be defined that is here
interpreted as an enable signal for the positioning axes by the PLC program. G188
and/or a path part could also be positioned following N130 in P1.
Example:
The deviation length must be at least 2 increments in size. Otherwise, error message
274 will be issued.
Example:
N10 G35 X+5 E4 Fl X-axis four oscillation deviations
N20 G35 Y-10 E2 F1 Y-axis two oscillation deviations
Part Programming Manual
page 305/352
MACHINEMATE
9.14.5 Frequency
The frequency of oscillation is defined by the F word. The standard unit of measure for
the frequency is deviations/minute. A scaling factor can be specified that the F word can
be multiplied by in order to also program small frequencies (see the application data
description). If the two axes are to have different frequencies, these must be
programmed in two separate G35 program blocks.
Example:
N10 G35 X+5 F2 X-axis 2 deviations/min
N20 G35 Y-10 F1 Y-axis 1 deviations/min.
At least four servo loops must be available per deviation. In this way the frequency is
limited at the upper end.
15000
maximum frequency =
servo time
The G35 block will be rejected with error message 274 if no frequency is programmed.
If the axes are to have different dwell times, these must be separately programmed in
two separated G35 program blocks.
Example:
N10 G35 X+5 I1000 J1000 F1 X-axis 1 second dwell at starting
point and at the amplitude point,
N20 G35 Y-10 J2000 F1 Y-axis 2 seconds dwell time only at
the amplitude point.
Example:
N10 G35 X+5 Y-10 E4 I1000 J1000 Fl M20
M20 is the specified start M-code. The oscillation data have already been prepared
before the oscillation is started.
Note:
Even when the axes carry out no further oscillatory movements since the programmed
number of deviations has been attained, the oscillation can only be considered as
completed when the End M-code has been recognized.
Upon recognizing the End M-code, the oscillation is discontinued and synchronized to
the current nominal position. In this case, there is assurance that a Start M-code
programmed into the next NC block will be carried out since there are no further
oscillations active (see the application data description). With a synchronized deviation
abort it should be noted that the starting point for further oscillations has been changed
(due to the synchronization). In applications where this effect is undesirable, the block
preparation before a new Start M-code should be stopped using M00 programming or by
using signals output by the PLC until a previously activated oscillation is actually
finished.
Example:
N10 G35 X+5 Y 10 E4 I1000 J1000 Fl M20
N20 M21
N30 M0
N40 M20
N..
M20 or M21 are the specified Start or End M-codes (see the application data
description). At M0, no deviation abort with synchronization and no oscillation stop are
applied. In this way, the M0 start can be delayed until the first oscillation is finished and
the second oscillation in N40 does not get lost. An M0 start can be avoided by
programming a sufficiently long dwell time into N30.
Example:
One can omit block N30 and under some circumstances obtain a more dynamic time
behavior by removing the transfer enable via the PLC during the period from the
recognition of the Start M-code to the end of the active oscillation in N10.
Note:
In the NC program one must ensure that the oscillation does not negatively affect the
axial dynamics since the software does not monitor these effects. Should an axis violate
its software limits during the oscillation, the axis will be held at its axis limit and its
oscillation value will be erased.
This error image is shown when there is no oscillation axis programmed in the
G35 block.
9.15.1 General
The function Switchover spindle/rotary axis enables a programmable switchover
between the spindle and rotary axis functions of a rotational axis within an NC
program. Any rotational axis present in a CNC station can be defined via machine
parameters as a switchover axis.
In this application, one axis and one spindle (or spindle group) share an output
channel (i.e., the analog D/A voltage with encoder feedback).
9.15.2 Programming
The switchover between spindle and rotary axis is programmed using
specific M-codes. The M-codes M280 and M290 are used as default (but
they can be changed via machine parameters).
Example 1:
In this example, C is the switchover axis.
Example 2:
In this example, C and A are the switchover axes, where spindle 1 uses the channel
of the C-axis, while spindles 2 and 3 use the channel of the A-axis.
Note:
The spindle cannot be programmed during the rotational axis operation (i.e., M3, M4,
M5 and M19 are not allowed when the servo is the rotary axis). If spindle functions
are programmed the error message 377 is output.
Conversely, the rotational axis cannot be programmed with spindle functions; if that
is programmed, the error message 376 is output.
9.15.3.1 General
While the spindle is running, the rotational axis measuring system is suppressed.
The axis position of the rotary axis is not counted in the display while in the spindle
function. The last interpolated axis position is displayed.
The following is executed when a switch back to axis operation is made. The actual
switchover block (M280, M281, etc.) is passed onto the active plane without any
reaction from the CNC. This can be used for a PLC reaction.
Following this, an intermediate block with spindle stop and set-up delay is generated.
This should guarantee a spindle standstill. When G95 (feed in mm/rev.) is active, a
switch back to G94 is made automatically.
The actual switchover block is then generated. This block switches over to the rotary
axis operation, i.e., the axis is controlled again and the instantaneous axis position
(actual position) is displayed. With the appropriate setting up, a further reduction of the
axis position to 0 to 360 degrees can be achieved (see machine parameter
descriptions for the switchover feature).
If a measuring system or gate-array error has occurred, then, with the appropriate
setting up, a reference cycle is executed or the starting position is moved as well. If
no automatic homing (move to reference point) has been set up for the axis, the
error message 444 is output. With a mandatory homing axis, homing is forced. With
a non-mandatory homing axis, the above warning is output but the NC processing is
not stopped.
When the switchover axis is a rotary axis, the behavior, programming, functional extent
and display correspond to that expected of a standard axis.
At power on, the switchover axis is treated as a rotary axis. This is necessary so that
homing is possible for the rotary axis. The selected operating mode (rotary axis or
spindle) is retained after control reset and end of program. The operating mode of
the switchover axis can only be changed by NC programming or by a PLC interface
signal in MANual operation.
In MANual operation, the switchover axis can only be moved in rotary axis operation. No
positioning of the switchover axis is made while the spindle is running. The error
message 376 is output.
9.16.1 General
During thread cutting the feed velocity is calculated depending on the spindle rotary
speed. The programmed F-word has no effect. Feed under F becomes effective again
when G01, G02, G03 or G07 are programmed.
To ensure that the tool begins cutting at the same place for several cuts, the thread
begins always at the Spindle-position 0 (the marker pulse from its encoder).
For several continuous thread blocks, the thread cutting command is placed only in the
first block since the G-code is modal.
The spindle speed is synchronous to the thread axes; i.e., it stops at the end of the block
as well.
If G09 is active at thread cutting at the end of the thread block only at changing of the
direction of the linear axes or the spindle it will be decelerated.
Right-hand or left-hand threads are determined by the rotation direction of the spindle
(programming with M03 or M04 respectively).
Plain thread
Cylindrical thread
Conical thread
Cylindrical thread
Conical thread
Thread G X Z I K J
Note that the plain thread in X requires a special axis configuration. Threading is
normally done in Z (i.e., cylindrical and conical threads). If the plain thread is possible in
the machine (i.e., to thread in X) then that machine will not thread in Z.
They are mutually exclusive features (plain threading or not). The threading in X is
shown in the table above in case such a special machine requires this application.
O defines (as an option) the spindle orientation at the start of each threading pass. The
default, with no letter O in the block, is each pass starts with the marker pulse on the
spindle. The letter O allows the programmer to define an orientation for each pass,
specified in the number of degrees (from 0 to 359). (The letter O was added as an option
for G33 with CNC version 2.2 and was not available on earlier versions. The letter O is
programmable in a machine parameter if a different letter is desirable.)
If the function Lag free thread cutting is properly set up, thread cutting blocks will be
moved lag free using G33/G34.
Before the first activation the zero-lag function has to learn the characteristics of the
involved axes. The learning function has to be switched on with G133. For example with
following NC program:
N10 G1 X0 Z0 F300
N20 G133
N30 X10
N40 Z10
N50 G134
N60 M30
With G133 basic factors for the zero-lag function in the interpolator-loop will be
calculated and the learning function switched on. The basic factors of the axes for thread
cutting will be optimized automatically at the following blocks. In the display the lag for
the corresponding axes should oscillate around zero (LAG-display active). The KV-
display will be adjusted during the movement of the axes to the value 100.
If the KV-values (activate LAG-display as display function) of both axes are getting
stable near the value 100.0 the learning process can be terminated with G134.
During an active learning function, no thread cutting blocks can be programmed with
G33/G34 and no new feed can be programmed as well.
Note:
If the learning function is activated later again with G133, the previous learned
and stored zero-lag factors will be overwritten with the basic factors. This
means, that the learning function must be repeated once again completely.
Example:
N100 G08
N110 G01 F5000 X100 Z100 M03 S500
N120 G33 Z120 K1
N130 G1 X ..
N140 ..
9.17.1 General
The stock removal cycles provide an easy way of roughly turning. The CNC
programmer only has to program the desired shape. The CNC then creates a
multiple repetitive cycle for stock removal and roughly turning of the shape.
The programmed tool path can also be used for the finishing cut with the help of the
finishing cycle G270.
Note that some controls refer to type I and type II turning cycles. With this
terminology, a type I turning cycle allows neither axis in the cycle to change direction
along its defined profile. A type II turning cycle allows only one axis in the cycle to
change its direction. The programming convention for the type I cycle has a single
axis in the first block after the G27x statement with the P and Q values while the type
II cycle has two axes in the first block after the G27x statement. The MachineMate
CNC supports only the type I turning cycles regardless of the number of axes in the
first block after the G27x. Neither axis can change its direction during the profile.
From the first position to the last position in the profile, each axis can be either
increasing or decreasing in position but not both. Typically a type II profile can be
cut using a sequence of type I profiles.
Note that neither the path compensation (see 5.1.1) nor tool tip radius compensation
(see 5.3.3.4) are possible during any of the G271 to G276 turning cycles.
9.17.2.1 Syntax
The U value gives the depth of cut for stock removal. The direction of cut is indicated by
the sign of the W value in the activating block.
The R value gives the escaping amount. Both U and R values have to be programmed
without a sign and their values are taken as a programmed radius.
Both values are modal and if one of them or the whole preparing block is omitted, the
values in the machine parameters TurningDepthOfCut and TurningEscapeAmount are
taken for the turning cycle.
The P value gives the number of the first block for the finishing shape.
The Q value gives the number of the last block for the finishing shape. The blocks in
between are replaced by the multiple repetitive cycle.
The U value gives the finishing allowance in radial direction (X). The sign of this value
gives the direction of the allowance relative to the shape. The sign also designates the
direction in which the levels of stock removal are changed. In the case of diameter
programming the value is to be specified in diameter dimension.
The W value gives size and direction of finishing allowance in longitudinal direction (Z).
If a finishing allowance of zero is desired for U or W (or both), the sign has to be
programmed together with the zero (for example: W+0 or W-0) in order to define the
direction in which the levels of stock removal are changed. If a zero is programmed
without sign, it is assumed as positive.
The modal feedrate (F), spindle speed (S) and spindle direction (M3/M4) are provided
either before these G271 blocks or in the second of the two G271 blocks. They are not
specified in any of the blocks within the cycle.
9.17.2.2 Example
N50 G0 X45 Z0
N60 G271 U10 R5
N61 G271 P100 Q200 U.5 W1 S1200 F.8 M4
N100 G1 X10
N110 Z-30
N120 X30 Z-50
N130 X40
N140 Z-80
N200 X45 Z-80
w (G0)
d
(G1)
Program e
command
d: depth of cut Z
e: escape amount
u: radial finishing
w: longitudinal finishing
For this roughly cutting shape three stock removal cycles on the X-levels 35.5, 25.5 and
15.5 are computed. First the tool moves to the start position X45.5 Z1.
The three cycles for stock removal are processed and then the shape for roughly cutting
is processed with the positions X10.5 Z1; X10.5 Z-29; X30.5 Z-49; X40.5 Z-49; X40.5 Z-
79; X45.5 Z-79.
The cycle ends at the starting position, i.e., the position before the block N100.
When G271 is active, only the programmed radial (X) and longitudinal (Z) position and
the interpolation types G00, G01, G02, G03, G12 and G13 are taken into account.
All other programmed values, such as feed- or spindle speed values and all programmed
G-codes are ineffective in stock removal.
Feed and spindle speed are constant with the first cycle block active rate.
If a finishing cycle is turned with the same blocks, no other G-codes than the ones for
the interpolation type should be activated between the first cycle block and the finishing
cycle G270. Otherwise the shape could be destroyed.
In the blocks of the stock removal cycle, cycle programming (*N...) and subprograms (or
subroutines) are forbidden.
9.17.3.1 Syntax
The cycle for stock removal in facing is prepared by the optional Block
The W value gives the depth of cut for stock removal. The direction of cut is designated
by the sign of the U value in the activating block.
The R value gives the escaping amount. Both values have to be programmed without
sign and values are taken as radius programmed.
Both values are modal and if one of them or the whole preparing block is omitted, the
values in the machine parameters FacingDepthOfCut and FacingEscapeAmount are
taken for the turning cycle.
The P value gives the number of the first block for the finishing shape.
The Q value gives the number of the last block for the finishing shape. The blocks in
between are replaced by the multiple repetitive cycles.
The U value gives the finishing allowance in radial direction (X). The sign of this value
gives the direction of the allowance relative to the shape. The sign also designates the
direction in which the levels of stock removal are changed. In the case of diameter
programming the value is specified in diameter dimension.
The W value gives size and direction of finishing allowance in longitudinal direction (Z).
If a finishing allowance of zero is desired for U or W (or both), the sign has to be
programmed together with the zero (for example: W+0 or W-0) in order to define the
direction in which the levels of stock removal are changed. If a zero is programmed
without sign, it is assumed as positive.
When G272 is active only the programmed radial (X) and longitudinal (Z) position and
the interpolation types are taken into account. All other programmed values, such as
feed- or spindle speed values are ineffective.
The modal feedrate (F), spindle speed (S) and spindle direction (M3/M4) are provided
either before this G272 or in the G272 block. They are not specified in any of the blocks
within the cycle.
9.17.3.2 Example
...
N50 G0 X0 Z45
N60 G272 P100 Q200 U-.8 W1.3 S1100 F1 M3
N100 G1 Z10
N110 X30
N120 X50 Z20
N200 X50 Z45
u
Program
command w
X
e d
d: depth of cut
e: escape amount
u: radial finishing
w: longitudinal finishing
When G271 is active, only the programmed radial (X) and longitudinal (Z) position and
the interpolation types G00, G01, G02, G03, G12 and G13 are taken into account.
All other programmed values, such as feed- or spindle speed values and all programmed
G-codes are ineffective in stock removal. Feed and spindle speed are constant with the
first cycle block active rate.
If a finishing cycle is turned with the same blocks, no other G-codes than the ones for the
interpolation type should be activated between the first cycle block and the finishing
cycle G270. Otherwise the shape could be destroyed.
In the blocks of the stock removal cycle, cycle programming (*N...) and subprograms (or
subroutines) are forbidden. Such statements must precede the cycle.
9.17.5.1 Syntax
The Q value gives the last block for the finishing cut.
For an exact finishing cut after a stock removal cycle, the numbers of first and last block
in G270 and G271/G272 must be identical. The start position of the finishing block must
be identical to the position before the first block in stock removal. This can be achieved
by programming G270 directly after the last block of stock removal.
All G-codes and other instructions in the finishing cycle blocks are effective.
9.17.5.2 Example
...
N50 G0 X45 Z0
N61 G271 P100 Q200 U.5 W1 S1200 F.8 M4
N100 G1 X10
N110 Z-30 F1
N120 X30 Z-50 F1.5
N130 X40
N140 Z-80
N200 X45 Z-80
N210 G270 P100 Q200
N220...
...
After the stock removal cycle G271, the exact finishing shape is turned, i.e., the CNC
moves from the start point (X45 Z0) to the positions in the blocks N100 to N200. Then it
returns to the start point of the cycle (X45 Z0) and then continues with the next block
(N220).
9.17.6.1 Syntax
G274 R...
G274 X... Z... U... V... R ...
The turning cycle for peck finishing is prepared by the first block above (block G274
R...) and the actual cycle is initiated by the second block above.
The initial R-value defines the return amount for the cycle. This R-value is modal
and if this block is omitted, the preset value in the machine parameter
TurningReturnAmount is applied.
The cycle is activated by the second block above (with the X, Z, U, V, R, F).
The U value defines the movement amount in radial direction (X). No sign is allowed
for this parameter.
The V value defines the movement amount in the longitudinal direction (Z).
The R value defines the escaping amount. This value is normally given by the relief
amount of the tool at the bottom of the cut. The sign is given by the direction of the
movement to X. However, if X and P are omitted, then the relief direction can be
specified by the desired sign.
Note While both the escaping amount and the return amount are programmed by code R,
the meanings of them are determined by the presence of address X
Note The cycle is initiated by the G274 statement with the X specification.
The following picture shows how the programmed values result in the machining
procedure for the cycle.
R (return amount)
Z: programmed Endpoint X
Startpoint
R
R1
X : programmed Endp
V1 V Z
0 < V1 <= V
0 < R1 <= R
When G274 is active, only the programmed radial position (X) and longitudinal (Z)
position are taken into account.
Feed and spindle speed are constant with the values that are modal before the first
cycle block.
9.17.7.1 Syntax
The G275 turning cycle operates as shown in the figure below. This cycle is
equivalent to G274 except that X is replaced by Z. Chip breaking is possible in this
cycle, and grooving in X axis and peck drilling in X axis (in this case Z and Q are
omitted) are also possible.
G275 R...
G275 X... Z... U... V... R...
R1
V1 V
Z
0 < V1 <= V
0 < R1 <= R
When G275 is active, only the programmed radial position (X) and longitudinal
(Z) position are taken into account.
Feed and spindle speed are constant with the values that are modal before the
first cycle block.
9.17.8.1 Syntax
The V value defines the minimum cutting depth. When the cutting depth of one cycle
operation becomes smaller than this limit, the cutting depth is clamped at this value.
This designation is modal and is not changed until another value is programmed.
When no value is programmed, the machine parameter
TurningMinimumCuttingDepth is applied.
R defines the finishing allowance. This value is modal and is not changed until
another value is programmed. When no value is programmed, the machine
parameter TurningFinishingAllowance is applied.
O defines (as an option) the spindle orientation at the start of each threading pass.
The default, with no letter O in the block, is each pass starts with the marker pulse
on the spindle. The letter O allows the programmer to define an orientation for each
pass, specified in the number of degrees (from 0 to 359). (The letter O was added
as an option for G276 with CNC version 2.2 and was not available on earlier
versions.)
The absolute difference in X from the beginning to the end of the thread is given by
X = I * with = Z / K.
U defines the height of thread. This value is the radius value in X-axis direction.
J defines the chamfering amount. This value is modal and is not changed until the
other value is programmed. Note that J must be non-zero if included. J0 results
in error 144.
Note The meaning of the data specified by address U, V and R will be determined by the
presence of X and Z.
The G276 cycle uses the same spindle behavior as the G33 threading code so the
spindle marker is used for synchronizing the spindle orientation with the axis motion
at the start of each pass.
By using this cycle, one edge cutting is performed and the load on the tool tip is
reduced. Making the cutting depth d for the first path and d*sqrt(n) for the n-th path,
the cutting amount per one cycle is held constant.
I*k J
U (thread height
How the different cuts occur depends on the parameter values as shown in the
following picture:
Tool tip
V height of f
1st
2nd V * sqrt(n) = P
3rd
nth
Line 1: This line shows the block that has caused the actual turning cycle.
Line 2: The second line shows the block that defines the contour element that is
actually processed.
Line 3: This line shows the element or block that is to be processed after the actual
contour element.
At entering turning cycles, the block with G271 (or G272) is displayed a second time. At
this time the CNC moves to the start point with additional finishing allowance.
At the end of turning cycles (G271 or G272) the block with G271 (or G272) is displayed
again. With this block active, the CNC moves back to the start point.
When finishing is active (G270) the block with G270 appears a second time at the end of
the finishing cycle. With this block active the CNC moves to the point from which turning
cycles were started.
Blocks that define contour-elements parallel to the tool moving axes are not displayed.
These are all special features and are not available on all controls. They would be
part of the original purchase of the control, part of the original CNC software
configuration.
The purpose of this feature is to convert a T-code into a new T-code for just the turret
position with the correct D and H-codes as well. With this feature, the NC
programmer will follow the same rule as for some other controls, where the T-code
identifies all three codes rather than using the three letters on this control.
Several examples,
or
If the number of digits in the T-code is not more than the number of digits provided for
the offset (e.g., T1), then the T-code is assumed to be just the turret selection with no
offset selection.
Note:
No D or H value is expected to be present on the line with the T value since
the T value will call out the appropriate D and H values (based on the rule
above). Those values from the T value will override any other D or H that is
present on the line. This is change to the programming technique described
in 4.3.3.
This feature has the configurable option for the number of digits in the offset
selection (either 1 or 2; 2 is the default setting). All programs will be expected
to use one or the other T-code format.
The default behavior for the CNC when in G71 (metric) is that the linear axes
move in millimeters and the rotary axes move in degrees. One millimeter is 1000
microns and one degree is considered equivalent to 1000 microns. Therefore an
interpolated move with a linear axis moving 1 mm and a rotary axis moving 1
degree will have both axes moving at the same rate, where the combined path of
both results in the correct feedrate, in mm/min.
The default behavior for the CNC when in G70 (inch) is that the linear axes move
in inches and the rotary axes move in degrees. One inch is 25400 microns and
one degree is considered equivalent to 1000 microns. Therefore an interpolated
move with a linear axis moving 1 inch and a rotary axis moving 25.4 degrees will
have both axes moving at the same rate, where the combined path of both results
in the correct feedrate, in in/min.
The end result of this default behavior is that the rotary axis will move 25.4 times
faster than would be expected if the feedrate value had been considered to be
degrees/minute.
will result in the rotary A-axis moving to a position of 90 degrees at the rate of 10
degrees/minute. Without this feature enabled, the same block of G1F10A90 with
G70 modal (so F10 means 10 inches/minute) would result in a rotary feedrate of
254 degrees/minute. The modal feedrate value is not affected by this block or this
special feature, so if the next block was N110 X10 then X would move at 10
inches/minute.
The default behavior for the CNC moving a rotary axis is described in the above
section (10.2). Basically a degree is considered 1000 microns and the number of
degrees in the rotary motion is considered relative to any linear motion (in mm or
inches) in the same block when interpolating them together or alone.
This G93 feature allows the path feedrate to be programmed in a block with G93
and the feedrate value is interpreted as a time. This feature is often called inverse
time programming, as the units for the G93 F-value are 1/minute. The
programmed F value comes from a calculation (see below) by the programmer.
The F value is the result of the desired feedrate (in inches/minute for G70 or in
mm/minute for G71) divided by the actual distance moved in the block (in inches
for G70 or in mm for G71).
The common usage for G93 is an NC block having both a linear and a rotary axis
motion. This G93 defines the feedrate to be in the units of 1/minute, so the
programmer is specifying the time for a block, not the path velocity for the block
(as in G94). The part programmer can account for the diameter of the part in the
feedrate calculation so that the actual path velocity at the part surface (i.e., the
angular velocity in conjunction with the part diameter) is taken into account by the
part program.
For example (with G70 modal for inch dimensions and G91 modal for incremental
programming):
the X move of 5 inches and the B move of 90 degrees will require 0.2 minutes or
12 seconds (from the 1/5 minute, since F is programmed in units of 1/minute). If
the part had a diameter of 18 inches then the programmed path velocity at the
part surface for this motion will be about 75 inches/minute. Other G93F examples
would be F1 for 1 minute or F0.333 for 3 minutes.
The G94 programming (i.e., feedrate as in/min or mm/min) defines the path
velocity for the linear/rotary combination from just the combination of linear (in or
mm) and rotary (degrees) units.
The calculation of the G93 feedrate value comes from the formula:
where:
D = diameter_of_part
A = angular_move
L = linear_move
Pi = the constant pi (3.14159)
D and L are in the same units (inches or mm). The Desired_feed_rate is in the
similar units (inches/min or mm/min). A is in degrees.
The NC programmer is making this calculation so that the CNC provides the
desired path feedrate with the correct angular velocity (i.e., by taking into account
the cutters distance from the center of rotation).
Since the formula for the G93 F-value has the time in the denominator, the G93
feature is often called inverse time feedrate programming.
The CNC will take the programmed F-value, determine the distance moved in the
block and then display both the actual and programmed feedrates in the correct
G94 units (either mm/minute or inches/minute).
Note that this G93 applies only to the NC block it is in. This G93 is not modal. The
NC programmer should provide a G94F block prior to the next G1 block to make
sure the correct feedrate (in the correct units of distance/time, not 1/time) is
applied after this special interpolation block.
With this programming feature, the NC programmer configures the G8x canned
cycle on the G8x line itself, rather than in the preceding NC statement(s) with the
cycle parameter values. This syntax is very similar to that used in many other
controls.
Note that Z, R and K are common to all of the canned cycles and W is used for all
canned cycles except G81 (which has no dwell time).
Many other CNC vendors canned cycles allow just Z and R to be defined so K
(the reference plane between the retract plane and the part) is optional in all the
canned cycles. Since a dwell is not always required for a particular cycle, W (the
dwell time) is also optional in all cycles that allow it.
Several other letters (F, I, J, U and V) are used for the different canned cycles but
the meaning of the individual letter depends on the associated canned cycle.
To program the G81 cycle for the same results with this feature, this syntax would
be used:
Part Programming Manual
page 339/352
MACHINEMATE
There is also an example for programming a G83 cycle (section 7.6 in the
manual). To program the G83 cycle for the same results as the example with this
feature, this syntax would be used:
Note:
None of these letters for canned cycle parameters are modal. For example,
an R parameter for a G81 will not apply to a subsequent G82. Each G81-G89
statement must define that specific canned cycles required parameters with
its letters.
None of these canned cycle parameters can be changed with just that letter
during the individual steps before the G80. To change any of the cycle
parameters, another complete G8x line is required. For example, a line after
the G81 and before the G80 could not specify just an R (e.g., N75 R5.3) to
redefine the retract plane for the subsequent G81 holes. To change a cycle
parameter value (like R) for the canned cycles, either a cycle block (e.g.,
*N75 P2=25000) or another complete G8x statement (with the Z, R,
(optional) K and any other required letters) is required.
This feature continually tracks two collinear axes, W and Z. The absolute
programming of either axis results in the programming of the collinear axes
distance rather than either individual axis. This feature is similar to that found on
other CNC controls.
This feature assumes there is a primary tracking axis. The primary axis
determines the motion when both axes are programmed in the same NC block in
absolute dimensions. The default tracking axis is W. To change this behavior,
G700 directs tracking on W while G701 directs tracking on Z.
When either axis is programmed in absolute dimension mode (G90), the axis is
moved such that at the end of the move the collinear distance is equal to the
programmed position. For example, with an NC statement of
Z will be moved to a location such that the W/Z collinear distance is 10.0 inches.
With this feature enabled, the programmer must recognized a new way to
program these two collinear axis (new being different than all the other axes in
the machine). See the G92 comments below. There is a new simple rule for any
W or Z block in G90:
The W or Z value is the new distance from the tool to the part. The W or Z
value is NOT the new axis position.
When both axes are programmed in G90, the actual motion depends on the
tracking axis. If the control is tracking on W, then Z will move as directed while W
is moved such that its final position results in the W/Z collinear distance being
equal to the W programmed position. If the control is tracking on Z, then the
opposite occurs.
When either axis (or both) is programmed in incremental dimension mode (G91),
each axis is moved as directed and the collinear distance is adjusted accordingly.
The Collinear Axes Tracking Feature's axis position display overlay (with the
current Collinear Distance shown in Position column) will be present whenever the
CNC screen is in either the MANUAL or AUTOMATIC display modes. This
behavior is controlled from the PLC application.
The offset data shown in the axis position display overlay is the tool length
compensation value (from the active H parameter value). The tool length
compensation value affects only the collinear axes distance. It does not affect the
position of either W or Z axis.
M12
G92
The interpretation of the G92 statement depends on the tracking axis. The default
tracking axis is W so in that case a G92 W results in the W value becoming the
new collinear distance (affected by the Z position) and the W G92 offset is given
the appropriate value (for the new W position). A G92 Z results in that change to
the Z G92 offset and the collinear distance is calculated for the current Z and W
positions. The opposite interpretations of W and Z for G92 occur when the default
tracking axis is Z. When both axes are in the same G92 statement, the non-
tracking axis has its position updated first for the specified G92 offset and then the
tracking axis has its position and G92 offset updated for the specified new
collinear distance.
The common use of G92 in combination with this feature is the G92 will define the
distance from the end of the tool to the part surface. By doing either a G92Z0 or
G92W0 when the tool tip is just touching the part surface, the collinear axis
position is defined to be 0 at part surface (and a G92 offset is applied to that axis
so that its new position in G92 part coordinates is 0.0). If a subsequent block is
either Z1 or W1 (in G90) then the tool tip would be moved one inch from the
surface (with the axis letter defining which axis is moving the tool tip to that target
position). If a subsequent block is either Z-1 or W-1 then the tool tip would be
moved one inch into the part.
The standard part offsets are available in the part program by the G54 to G59
codes; G53 cancels the active set. The CNC has a built-in table editor to enable
the configuration of these six sets of part offsets.
With this special feature, the part program can access a larger range of offsets
than six. The part program syntax for this additional set of part zero offsets is
similar to that used in other controls for their similar feature, like
N1230 G54 P1
The above P1 with the G54 specifies the index to one of the additional sets of
these part zero offsets. This feature can be configured with its range for this set.
Each additional set of G54Px offsets will support four axes. Typically this range for
Px will be from 1 up to either 48 to 300 (so the NC syntax is from G54 P1 all the
way up to either G54 P48 to G54 P300). G54P0 will be treated the same as just
G54.
Error 145 results if the G54 P-value is too large for the configuration. The system
integrator will define what is the range of acceptable Px values for G54.
For example:
. . .
N1220 G10
N1230 G54 P1 (G54 EXTENDED SET 1)
N1240 Z15 G0
. . .
N1380 G10
N1390 G54 P7 (G54 EXTENDED SET 7)
N1400 Z14 G0
. . .
N1700 G10
N1710 G58
N1720 Z14 G0
. . .
N1940 G53
N1950 M30
Note that there is a G10 in the block immediately before the G54 (with or without
an accompanying P-value) and there is another G10 in the block immediately
before the next G-code in the range of G53 to G59. This G10 is only required for
the G54, not G53 or G55 to G59. This rule results in the requirement for the G10's
in N1220 and N1380 for the G54 in N1230 and G10's in N1380 and N1700 for the
G54 in N1390. No G10 is needed for the G58 in N1710 or the G53 in N1940.
This G10 is required in the part program because the CNC, upon the G54Px
block, will be updating the G54 set of part offsets (the real G54 set is saved to
several cycle parameters while the new set of G54 offsets is retrieved from its
storage in cycle parameters). If the G10 is not included in the part program then
those changes being done during the block look ahead could affect preceding
blocks under certain circumstances (like an MDI in the middle of the program
execution).
This use of G10 is required only when there is at least one block with G54Px in
the part program. If a part program remains within the standard six sets of part
zero offsets (i.e., G54 to G59) then there is no requirement for the G10 to be
associated with G54 (before and after).
When a particular G54Px is active or modal, using the Data Modify Zero Offsets
to change the G54 axis offsets will change the offsets for that G54Px set. Upon a
control reset or a change in the modal G53-G59, the set of offsets for the modal
G54Px will be saved to the appropriate memory (in the cycle parameters).
Therefore these additional sets of part offsets can be managed by the operator in
two ways:
Note:
If no part offset is active and if the G54 values are edited using option 1, upon a
subsequent use of G54Px those values from the table are saved to the storage
locations. The usual procedure for editing G54 offsets (or G54P0) is assumed to
be with the Zero Offsets table editor. Option 1 takes precedence over option 2.
If a G54Px part offset is active and if the G54 values are edited using option 1,
upon a change in the active part zero offset (G53 to G59 or another G54Px) then
those values from the table are saved to the storage locations. The usual
procedure for editing G54 offsets is assumed to be with the Zero Offsets table
editor.
If the second option (editing cycle parameters) is used while that particular G54Px
part zero offset is active, then upon its deactivation those changes will be lost
because the first option will always copy the currently active offset values into the
storage locations for the active offset. Remember that option 1 takes precedence
over option 2. If the second option is used when the particular offset is not active
(Px, where X is not 0) then no conflict exists. The potential conflict between
operator options 1 and 2 exists only while a particular G54Px is active.
The same conditions apply to the PLC writing either the active part offsets values
or the cycle parameters. Just as the operator can manage these offsets in two
ways, the PLC can write them in either manner via its CNC interface signals.
While any of the G54 to G59 offsets will include all configured axes, these
additional sets include offsets for only the first four axes. That is a significant
limitation of this feature, though other controls have similarly offered up to four
axes per part zero offset. If the offsets are changed for the fifth or higher axes
when the G54Px is active, those changes will be lost (when saved to the storage
locations). They will be active only as long as the G53-G59 is not changed (either
in an NC block with G53-G59 or with a control reset). If offsets are required for the
fifth axis (or higher) then those axis offsets must be managed manually since they
will never be saved to the storage locations. This feature for more part zero
offsets is not intended to be used on machines requiring more than four axes per
each part offset.
If the operator or programmer wishes to save the extended set of part zero offsets
to a data file then the complete set of cycle parameters must be saved to a file.
The extended set of offsets are stored in a block of cycle parameters. The file for
the part zero offsets table will always consist of only the G54 to G59 offsets, the
standard set of six rows in the CNC table.
Index
S.. ...... 99, 100, 101, 102, 153, 257, 258, Curvature bend angle ............................. 89
293, 295, 296, 297, 298 Curvature radius..................................... 86
T.. ..................................... 108, 297, 334 Cycle block .................................... 28, 193
U........ 34, 264, 265, 300, 304, 321, 324, Cycle parameter ................... 202, 205, 218
328, 331, 337 Cycle programming 28, 205, 218, 323, 326
V......... 34, 261, 300, 304, 328, 331, 337 D-code.................................. 193, 195, 207
W........................ 34, 321, 324, 337, 340 DGR ..................................................... 199
X..32, 162, 253, 300, 313, 321, 324, 328 Diameter Programming........................ 267
Y................................. 32, 162, 253, 300 Distance regulation .............................. 273
Z.. 32, 72, 162, 253, 313, 321, 324, 328, Activate/deactivate........................... 273
337, 340 Axis selection................................... 273
Circle center ........................................... 46 DO................................ 196, 211, 215, 216
Circular interpolation ....................... 45, 49 Drilling cycles
Clockwise......................................... 45, 49 Bore out............................................ 235
Comment........................................ 27, 196 Bore out with intermediate halt........ 241
Compensation Bore out with spindle halt ................ 239
End point radius ............................... 129 Cycle parameter values .................... 220
Path .................... 64, 105, 114, 207, 249 Deep hole drilling ............................ 229
Path during spline interpolation ....... 129 Deselecting....................................... 224
Path velocity..................................... 131 Drill to depth .................................... 225
Real-time radius ................. 88, 129, 262 Final hole depth................................ 220
Real-time radius with 5-axes ............. 92 Introduction...................................... 219
Tool data .......................................... 104 Reaming ........................................... 233
Tool length ....................... 106, 107, 206 Reaming with measuring stop.......... 237
Tool radius ....................................... 104 Reference plane................................ 220
Tool tip radius .................................. 105 Retract plane .................................... 220
Conditional instruction......................... 211 Spot facing with dwell ..................... 227
Constant circumferential speed............ 297 Termination...................................... 222
Constant cutting speed ......................... 296 Thread cutting or tapping................. 231
Constant surface speed......................... 102 DTAB................................................... 105
Contour accuracy ........................... 83, 250 Dummy block....... 143, 167, 197, 248, 249
Contour error.......................................... 76 Dummy coordinate................................. 62
Control reset 18, 21, 23, 25, 66, 72, 96, 98, Dwell.............................. 85, 86, 88, 90, 93
146, 149, 154, 164, 170, 174, 194, 208, DWRC
270, 273, 291, 295, 296, 311 Activation......................................... 183
Corner acceleration ................................ 80 Application schemes ........................ 180
Corner deviation..................................... 86 Dresser, wheel, tool tip radius
Corner smoothing ................................ 86 compensation ............................... 175
Corner smoothing with radius Entry/exit move types ...................... 179
compensation ..................................... 89 G-codes ............................................ 179
Correction table number .............. 105, 107 Orientations...................................... 176
COS...................................................... 199 Tables for compensation .................. 175
Counter-clockwise ........................... 45, 49 Dynamic block buffer ...................... 64, 75
CSS ...................................................... 102 End of program .......................... See M002
Curvature accleration ............................. 85 Error
Curvature accuracy ................................ 85 108.............................................. 63, 262
Curvature activation............................... 84 114...................................................... 50
Part Programming Manual
page 346/352
MACHINEMATE
G025..................................................... 163 G090. 39, 40, 150, 164, 170, 287, 302, 341
G026..................................................... 163 G091 41, 67, 150, 164, 170, 173, 287, 290,
G027..................................................... 163 302
G033 96, 98, 101, 131, 222, 252, 258, 294, G092.... 36, 51, 55, 56, 63, 70, 74, 99, 101,
312 102, 131, 145, 152, 157, 167, 170, 248,
G034..................................... 222, 294, 313 255, 258, 262, 266, 280, 281, 294, 299,
G035..................................................... 305 341
G038............................. 165, 256, 269, 299 G093............................................. 296, 335
G039..................................................... 166 G094............................... 95, 295, 310, 336
G04094, 104, 118, 122, 124, 133, 160, 249 G095........................... 77, 85, 95, 295, 310
G041...... 51, 108, 118, 119, 121, 133, 140, G096..................................... 102, 258, 296
142, 249, 252 G097............................................. 102, 296
G042....... 51, 118, 119, 121, 133, 139, 140 G098..................................................... 302
G043............................................. 118, 121 G100 ............................................ 251, 266
G044..................................... 118, 121, 140 G102..................................................... 259
G045..................................................... 184 G103..................................................... 262
G046............................................. 184, 189 G104..................................................... 264
G050............................................. 160, 173 G105..................................................... 261
G051..................................... 160, 170, 269 G106..................................................... 261
G052............................................. 160, 170 G107..................................................... 262
G053..................... 145, 146, 270, 302, 342 G108..................................................... 264
G054......... 51, 70, 145, 147, 153, 193, 207 G133..................................................... 318
G054P ................................................. 342 G134..................................................... 319
G055............................................. 145, 147 G150 ...................................................... 92
G059..................................................... 302 G151 ...................................................... 92
G063......................... 96, 99, 100, 294, 302 G152 ...................................................... 92
G066............................... 96, 100, 294, 302 G160..................................................... 112
G070............... 96, 149, 164, 302, 335, 336 G170..................................................... 279
G071....................... 96, 149, 164, 302, 336 G171..................................................... 279
G072....................................................... 76 G172..................................................... 279
G073................................................. 76, 77 G181....................................................... 89
G074.... 51, 77, 96, 98, 101, 131, 262, 274, G182....................................................... 89
299 G186........... 48, 51, 59, 63, 80, 83, 85, 250
G075....................................................... 84 G188..................................... 301, 302, 303
G076....................................................... 85 G190 .................................................... 267
G078..................................... 64, 66, 67, 70 G191 ............................................ 267, 271
G079................................................. 64, 66 G192 .................................................... 267
G080............................................. 224, 225 G193 .................................................... 267
G081............................. 219, 225, 248, 337 G200 ...................................................... 86
G082............................................. 227, 337 G201 ................................................ 86, 90
G083............................................. 229, 338 G202 ................................................ 86, 91
G084............................................. 231, 338 G203 ................................................ 86, 91
G085............................................. 233, 338 G220 .................................................... 251
G086............................................. 235, 338 G221 .................................................... 251
G087............................................. 237, 338 G222 .................................................... 251
G088............................................. 239, 339 G223 .................................................... 251
G089............................................. 241, 339 G265..................................................... 273
Part Programming Manual
page 348/352
MACHINEMATE
G270..................................... 323, 326, 327 M000 .......................... 73, 74, 75, 111, 307
G271............................. 321, 323, 326, 327 M001 .............................................. 73, 247
G272............................................. 324, 327 M00223, 25, 26, 29, 31, 74, 153, 170, 249,
G274..................................................... 328 302, 303
G275..................................................... 329 M003 .................................... 100, 293, 312
G276..................................................... 331 M004 .................................... 100, 293, 312
G700 .................................................... 340 M005 ............................................ 100, 293
G701 .................................................... 340 M006............................................ 109, 110
G-code............................................ 21, 218 M012.................................................... 341
GO ............................... 196, 211, 212, 215 M019 .................................... 100, 103, 298
GTAB................................................... 147 M020 .................................................... 307
Handwheel in automatic mode............. 284 M021 .................................................... 307
H-code.................................. 193, 195, 206 M030 .......................................... See M002
Helical interpolation............................... 51 M040 .................................................... 256
HTAB................................................... 107 M041 .................................................... 256
IB 195, 208 M046 .................................................... 256
IF comparisons..................................... 215 M070 ................................................ 60, 61
IF.. ........................................ 196, 211, 215 M071 ................................................ 60, 61
Ignore block ........................................... 25 M072 ................................................ 60, 61
Imperial ......................................... See Inch M073 ................................................ 60, 62
IN_CYCLB_01 .................................... 208 M080 .............................................. 52, 278
IN_GEAR01 ........................................ 257 M081...................................................... 21
IN_POS_01 .......................................... 303 M101 .................................................... 275
Inch ...................................................... 149 M102 .................................................... 275
Incremental dimension................... 41, 150 M103 .................................................... 275
Input bit from PLC............................... 208 M104 .................................................... 275
Instruction ........................................ 15, 17 M105 .................................................... 275
INT....................................................... 199 M106 .................................................... 275
Integer range ........................................ 197 M107 .................................................... 275
Intermediate block ....................... 125, 184 M108 .................................................... 275
Interpolation M109 .................................................... 275
Circular .......... 45, 49, 84, 131, 248, 250 M111 .................................................... 275
Linear ............................. 38, 42, 84, 131 M112 .................................................... 275
Precision stop ..................................... 76 M113 .................................................... 275
Spline ..................... 60, 62, 84, 129, 131 M114 .................................................... 275
Tangential circular ............................. 57 M115 .................................................... 275
Interpolation parameter.......................... 49 M116 .................................................... 275
Jump instruction................................... 212 M117 .................................................... 275
KV display ........................................... 318 M118 .................................................... 275
KV factor ............................................... 76 M140 .................................................... 273
Laser shutter control ............................ 275 M141 .................................................... 273
L-code .............................................. 25, 74 M151............................................ 278, 279
Letter .................................... See Character M152............................................ 278, 279
Line feed .......................... See Character, lf M153............................................ 278, 279
Linear interpolation..................... See G001 M154............................................ 278, 279
Look ahead................. 75, 77, 98, 247, 250 M155.................................................... 278
Loop ....................................................... 25 M156.................................................... 278
Part Programming Manual
page 349/352
MACHINEMATE
M157.................................................... 278 P03 ...... 225, 227, 229, 231, 233, 235, 237,
M158.................................................... 278 239, 241
M159 .................................................... 280 P04 227, 229, 231, 233, 235, 237, 239, 241
M160 .................................................... 280 P05 ....................................................... 229
M161............................................ 278, 281 P06 ....................................................... 229
M162............................................ 278, 281 P08 ....................................................... 235
M163.................................................... 278 P09 ....................................................... 235
M164.................................................... 278 P10 ...... 225, 227, 229, 231, 233, 235, 237,
M165.................................................... 278 239, 241
M166.................................................... 278 P11 ....................................................... 237
M167.................................................... 278 P12 ....................................................... 237
M168.................................................... 278 P13 ............................................... 237, 241
M170.................................................... 281 P14 ....................................................... 229
M171 ............................................ 280, 281 P15 ....................................................... 241
M200 .................................................... 284 P34 ....................................................... 205
M201.................................................... 284 P59 ....................................................... 205
M209.................................................... 284 P900001 ............................................... 218
M210.................................................... 284 P999981 ............................................... 219
M211.................................................... 284 Parallel axes ......................................... 299
M213.................................................... 293 Part position offset .................... 195, 207
M214.................................................... 293 Part position offset table number ......... 147
M215.................................................... 293 Part reference ....................................... 152
M223.................................................... 293 Part rotation.......................................... 170
M224.................................................... 293 Polar coordinate ................................... 154
M225.................................................... 293 Pole point ..................................... 157, 162
M280 .................................................... 309 Positioning axis.................................... 301
M290 .................................................... 309 PP ......................................................... 204
Major axis ............................................ 161 Probe ...................................................... 52
M-code ................................................... 22 Contact processing ............................. 55
Metric................................................... 149 Program
Minor axis ............................................ 161 BCD functions ................................... 23
Mirror................................................... 165 Block .................................................. 15
MOD .................................................... 199 Conditional stop ................................. 73
Modal ..................................................... 17 End ..................................................... 74
MSG............................................... 27, 111 Interruption ........................................ 73
Multiple spindles.................................. 293 Repeat ................................................ 25
MV................................................ 195, 210 Unconditional stop ............................. 73
NC block ...................... See Program block Word .................................................. 16
Non-modal ............................................. 17 Program number............................... 28, 29
OB ................................................ 195, 208 Programmable Acceleration.................. See
ON_CYCB01....................................... 208 Acceleration,Programmable
Operation sequence.............................. 201 Programmable homing........................... 51
Optional halt........................................... 73 Programmable oscillation .................... 305
Output bit to PLC................................. 208 Programming
P01 ....................................................... 229 Absolute dimensions........................ 150
P02 ...... 225, 227, 229, 231, 233, 235, 237, Additional part offsets ................... 342
239, 241 Angled wheel transformation ....... 251
Part Programming Manual
page 350/352
MACHINEMATE
Round axis Stock removal cycles ... 320, 322, 323, 325
Modulo............................................. 286 Subprogram........................ See Subroutine
Normal ............................................. 286 Subroutine 25, 26, 246, 248, 249, 323, 326
Resettable rotational........................... 36 File name............................................ 27
Shortest way..................................... 286 Levels................................................. 26
Safe zone Subroutine levels.................................. 224
Lower limits ..................................... 163 Switchover spindle and rotary axis ...... 309
Upper limits ..................................... 163 T0 ................................................. 109, 111
Scaling.................................................. 173 Tangent
SEL ...................................................... 196 Angle offset........................................ 67
SEL functions....................................... 217 Lead-in ............................................... 66
Set axis coordinate ............................... 152 Vector................................................. 66
SIN ....................................................... 199 Vector angle ....................................... 66
Slash code .............................................. 15 Tangential circular interpolation............ 57
Speed.......................................... 42, 46, 57 Tangential setting................................... 64
Spindle T-code ......................................... 108, 334
Clockwise......................................... 100 Temporary NC block ........................... 257
Counter-clockwise ........................... 100 Thread cutting
Gear range selection ............ 251, 256 Conical ............................................ 317
OFF .................................................. 100 Cylindrical ....................................... 314
ON.................................................... 100 General............................................. 312
Orientation ....................... 100, 103, 298 Lag free thread ................................. 318
Override ........................................... 100 Length of thread............................... 313
Reversal............................................ 103 Pitch ................................................. 313
RPM ................................................. 102 Run out............................................. 313
Speed limitation ............................... 101 Spindle control ......................... 312, 314
Spindle speed ............................. See Speed Tool compensation............................... 104
Spline Tool management ............................. 109
Deactivate .......................................... 62 Traverse instruction .................... See G000
Definition ........................................... 60 Turning cycles.............. 320, 322, 323, 325
Interpolation....................................... 60 Wear offset ......................................... 195
Path velocity....................................... 63 Whole number range............................ 197
Tangential transition .......................... 60 Work cycle ................................... 205, 218
Type ............................................. 60, 62 Work field limits .................. See Safe zone
SQT ...................................................... 199