TPA - Manual ISOCNC Listing Specifications

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 23

Project ISOCNC

ISO Listing - Specifications


This document describes the programming language interpreted by ISOCNC.
Version: 1.1.0.34
Update: 27 January 2015

I. ISO Listing. Specifications


I.0 Contents

1. ISO Program. Characters allowed. Uppercase and lowercase characters


2. Format of an ISO line
2.0. Line numbers
2.1. Numeric values
2.2. Words
2.3. Comments
3. Modal and Modeless Gs
3.1 Units of measure for the linear axes (G70, G71)
3.2 Reference Systems: machine reference system, workpiece reference system (G92) and relative
reference system (G24, G27, G28, G29)
3.3 Absolute (G90) and incremental (G91) dimensions
3.4 Motion G (G00, G01, G02, G03)
3.4.1 Quick positioning (G00)
3.4.2 Linear interpolation (G01)
3.4.3.a Circular interpolation (helical), clockwise and counterclockwise (G02, G03), and plan selection (G17, G18,
G19)
3.4.3.b Helical interpolation
3.4.3.c Circular interpolation (helical) with a variation in the dimensions of rotary axes
3.5 Type of interpolation (G48, G49)
3.6 Cutter radius adjustment (G40, G41, G42)
3.7 Feed rate assignment (G93, G94, F)
3.8 Block end stop (G09)
3.9 Application of MDI instructions (G909)
3.10 Wait (G04)
3.11 Parametrics update from cyclics (G990)
3.12 Set machine state - "Pending" at the end of the program (G200)
4. M functions
4.1 Program end (M02)
4.2 Spindle start and stop (M03, M04, M05), speed management (S)
4.3 Tool change (M06)
4.4 Ms defined by the user
5. Registers
6. ISO errors

ISOCNC - ISO Listing (specifications) 1


This specification defines the spelling, syntax and logic rules for the ISO
language interpreted by ISOCNC. Any violation of these rules, at the time of its
discovery, involves the interruption of the execution of the program and the
contextual reporting to the user of the detected error. To every possible type
of error corresponds a code, a short error message and an additional
information message (see I.6).
I.1. ISO Program. Characters allowed. Uppercase and lowercase
characters
The programming language interpreted by ISOCNC is based on text lines
closed by an end character (carriage return or line feed or both). A line that
includes commands and/or data for the numeric control is also called “block”;
there can also be entirely commented lines (see I.2.3) or white lines (i.e.
containing possibly only spaces and/or tab characters): in both cases they are
ignored by the interpreter. Multiple lines of code in sequence (ISO listing) form
a program, which can be stored in a text file. Below is, by way of example, a
simple ISO program which complies with the specifications set forth below1:
G0 X100.00 Y100.00 Z+5.65 ;quick positioning
G28 X100.00 Y100.00 Z0.00 ;workpiece reference system
S5000 ;rpm (spindle rotation speed setting)
M03 ;spindle rotation start (clockwise)
G01 Z-3.00 ;interpolation motion
; a square is plotted:
G91 (step by incremental coordinates) G1 X+10.50 (interpolation)
(a G1 is active) Y+10.50
X-10.50
Y-10.50
M05 ;spindle rotation stop
M02 ;program end
Reading an ISO listing, we must distinguish between sections with
instructions and sections with comments (see I.2.3). The first allow only
uppercase characters2; lowercase characters are allowed only in the
comments. In the loading of an ISO file, lowercase characters outside
commented areas are converted by ISOCNC in the corresponding uppercase
characters; during guided editing only all uppercase characters are allowed.
Only uppercase characters will be displayed in the core listing and they will be
stored as such if the file is saved. Font formatting in comment areas is ignored.
A word composed of a character followed by a number (for example G02,
T503008, S5000, M30, X-150.11)can alternatively give a command or provide an
argument to a command. For example, the sequence of the two words G0 Z-
5.65,, part of a valid line, indicate a command (G0: quick motion, see I.3.4.1)
and an argument of this command (Z-5.65: the value of Z at the end of the
motion must be -5.65). An instruction is defined by a command and any
associated argument.

1
By using the comments (see I.2.3), the actions requested to the compiler are briefly indicated. The instructions in
this short sample listing are shown in detail in the following part of the specification.
2
For the alphabetic characters allowed, see section I.2.2.

ISOCNC - ISO Listing (specifications) 2


The majority of the instructions interpreted by ISOCNC starts with G or with
M. The corresponding words are called "G codes" (G stands for "general") and
"M codes" (M for "miscellaneous").
Spaces and tab characters are allowed anywhere within a line of code and,
within an instruction, do not alter in any way its meaning: writing, for
example, G 0 Z – 5 . 65 is completely equivalent to writing G0Z-5.65.
A program consisting of blocks with their words, grouped in instructions,
must obey rules of structure, syntax and formatting. Any non-explicitly allowed
item included in the instructions of the listing is reported by the ISO interpreter
as an error.
I.2. Format of an ISO line
I.2.0. Line numbers
They are allowed (although not in any way required) and are specified by a
sequence consisting of the character N followed by a non-negative integer
without separators (N20000 is valid; N-20000 and N20,000 are not valid)3.
The sequence that specifies the line number can be in any position within the
block (provided that it does not break the series of arguments of the Gs that
require them; see below), although commonly it is positioned at the beginning
of the same. Subsequent blocks should necessarily have different, increasing
line numbers. However, in this respect, currently no check is performed.
Note that the sequence that specifies the line number is not exactly a word
(see I.2.3), although it shares the format with the latter.
I.2.1. Numeric values
A number recognized by ISOCNC is a sequence of characters possibly started
by a sign (“+” or “-”) and followed by a variable number of digits with an
optional decimal separator. For the format of the decimal numeric values, it is
expected that the integer and the decimal parts are separated by a dot (“.”):
the comma (“,”) is not allowed as decimal separator. For the decimal values
(in module) between 0 and 1, the separator may be or may not be preceded
by zero (both 0.35 and .35 are valid). There is no limit to the number of
significant digits4.
For integers as decimals, any leading or trailing zeros are simply ignored:
writing G001 Z-05.6500 or G1 Z-5.65 is absolutely equivalent.
I.2.2. Words
A word validly interpreted by ISOCNC, is composed of one of the characters
listed in the following table5 followed by a number6. The character is also called
code of the word.

Character Meaning
Axis A (rotating, around X), component of the
A
versor iF with respect to X (G24)

3
If you specify a line number in an invalid format, that is reported as an error [ISO056; see I.6].
4
A number that does not meet the specifications mentioned above generates an error report [ISO006; see I.6].
5
If ISOCNC detects a word that does not begin with one of the listed characters, it reports an error [ISO003; see I.6].
6
If a character is not followed by a number, an error is reported [ISO004; see I.6]; if there is a number that is not
preceded by a character, that is reported as an error [ISO005; see I.6].

ISOCNC - ISO Listing (specifications) 3


Axis B (rotating, around Y), component of the
B
versor iF with respect to Y (G24)
Axis C (rotating, around Z), component of the
C
versor iF with respect to Z (G24)
F Feed rate
G General function (see I.3)
Coordinate X of the centre of an arc (G02/G03),
I component of the versor jF with respect to X
(G24,G28)
Coordinate Y of the centre of an arc (G02/G03),
J component of the versor jF with respect to Y
(G24,G28)
Coordinate Z of the centre of an arc (G02/G03),
K component of the versor jF with respect to Z
(G24,G28)
M Miscellaneous function (see I.4)
Component of the versor kF with respect to X
P (G24,G28),
Waiting time in seconds (G04)
Component of the versor kF with respect to Y
Q
(G24,G28)
Radius of an arc of a circle (G02/G03),
R component of the versor kF with respect to Z
(G24,G28)
S Spindle speed
T Tool selection
Axis X (linear),
X coordinate X of the origin of the plane (G24),
component of the versor iF with respect to X (G28)
Axis Y (linear),
Y coordinate Y of the origin of the plane (G24),
component of the versor iF with respect to Y (G28)
Axis Z (linear),
Z coordinate Z of the origin of the plane (G24),
component of the versor iF with respect to Z (G28)
Table 1. Alphabetic characters interpreted by ISOCNC as valid beginning of
a word

The character G (see I.3) can only be followed by an integer having a


maximum of three digits7; the character M (see I.4) can be followed only by an
integer having a maximum of three digits8. The character T (see I.4.3) can
only be followed by an integer having exactly six digits9. All the other
characters can follow both integers and decimals numbers without any
limitations as to length.
I.2.3. Comments
Comments are allowed in two forms:

7
Otherwise, an error is reported [ISO007; see I.6].
8
Otherwise, an error is reported [ISO008; see I.6].
9
Otherwise, an error is reported [ISO009; see I.6].

ISOCNC - ISO Listing (specifications) 4


a) between round brackets: everything that is between the round opening
bracket, included, and the round closing bracket, included, is ignored by
the compiler. An example of valid line containing a comment in this form
is shown below:
G1 X82.5393 (comment) Y87.9137 (other comment) Z0
The round opening bracket ("(") must match the round closing bracket
(")") within the end of the same line and vice versa10.
b) After the semicolon (“;”): everything that follows in the line is considered
commented:
X82.4165 Y88.0227 Z0 ;C48.4241 B87.742
I.3. Modal and Modeless Gs
The G functions can be differentiated between Modal and Modeless.
Modal Gs
The G functions of modal type define a persistent operational setting: they
remain "active" until they are replaced with the "activation" of certain other
Gs. Typically, there are groups of alternative and mutually exclusive Gs (modal
groups or families). For example, G70 and G71 (see I.3.1) define how to
interpret the values of the dimensions, alternatively as either Anglo-Saxon or
SI unit of measure and therefore constitute a modal group.
For almost all the families of modal Gs there is a default G which is implicitly
active starting from the beginning of the program (except the motion group,
see I.3.4): in the case of G70 and G71, for example, G71(SI units) is active by
default.
Reiterating the concept with other words, we can say that the modal Gs are
organized logically in modal groups: for each of these groups, at a given time,
only one member can be "active" (in other words, for two members of a modal
group, it is logically impossible to be active at the same time). The groups are
shown in the following table (where present, the default G code is shown in
bold type).

Group G Code Meaning

G00 Quick positioning


G01 Linear interpolation
Motion11
G02 Clockwise circular (helical) interpolation
G03 Anticlockwise circular (helical) interpolation
Selection of G17 Plane XY (default)
circular G18 Plane ZX
interpolation
plane
G19 Plane YZ
Face reference General orientation of the axes with origin
G24
system defined by the instruction
acquisition G27 Coinciding with that of the workpiece (default)

10
Otherwise, an error is reported [ISO001, ISO002; see I.6].
11
It has no default.

ISOCNC - ISO Listing (specifications) 5


General orientation of the axes with origin in
G28
the current position
G29 Rototranslation of the reference system
Profile G38 Inactive (default)
reduction G39 Active
G40 No adjustment (default)
Cutter radius
G41 To the left of the profile
adjustment
G42 To the right of the profile
Type of G48 3 axes (default)
interpolation G49 5 axes
Unit of G70 Anglo-Saxons: in, in/min
measurement G71 SI: mm, mm/min (default)
G90 Absolute (default)
Dimensions
G91 Incremental
Workpiece
By default G92 X0 Y0 Z0 is active (the workpiece
reference
G92 reference system coincides with the machine
system
reference system, see I.3.2)
acquisition
G93 Inverse of the execution time
Feed rate
G94 Unit of measurement/min (default)
Table 2. Groups of modal Gs interpreted by ISOCNC

G92 requires specific attention: the group to which it belongs, as shown in


table 2, is apparently composed of a single element. Actually, this group,
taking into account the possibility to specify arguments for G92 (as shown in
§I.3.2) consists of an infinite number of elements.
Modeless Gs
Other G functions indicated as modeless are active only in the block within
which they are programmed.
The following table summarizes the modeless Gs interpreted by ISOCNC12.

G Code Meaning

G04 Wait
G09 Stop at block end
Table 3. Modeless Gs interpreted by ISOCNC

Order of the arguments


It should be noted that, for the G instructions that require or allow two or
more arguments (G00 [see I.3.4.1], G01 [see I.3.4.2], G02, G03 [see I.3.4.3],
G28, G29 and G92 [see I.3.2]), said arguments may be specified in any order.
For example, writing
G00 X3.57 Y-8.99 C45.7 B-18.9
or

12
G04 and G09 are discussed after the modal Gs (see respectively I.3.9 and I.3.8).

ISOCNC - ISO Listing (specifications) 6


G00 B-18.9 C45.7 X3.57 Y-8.99
is absolutely equivalent, even if it is recommended that, once an order has
been established, to follow it constantly (also for facilitating the identification
of the omitted dimensions).
The following section deals with the individual groups of Gs, presented in a
logical order.
I.3.1 Units of measure for the linear axes (G70, G71)
It is possible to specify the type of unit of measure for the dimensions
associated with the linear axes (words X, Y, Z, I, J, K, P, Q and R) or with the
linear speeds (word F, see I.3.7) using the instructions G70 (Anglo-Saxon:
measures in inches, inches per minute and G71 (SI: measures in millimeters,
millimeters per minute)13. As indicated in table 2, the SI units are used by
default (G71 active); the use of Anglo-Saxon units must be explicitly specified
using G70.
G70 and G71 can be found on any line, but if on the latter there is any G which
may have linear dimensions as arguments, it must necessarily precede it14.
That is, it is allowed for example to write
G71 G00 X2.27 Y30.99 (correct) yet not
G00 X2.27 Y30.99 G71 (wrong)
In the first case, the coordinates X and Y will be interpreted in inches.
If either G70 or G71 is repeated while it is already active, a warning is
reported.
I.3.2 Reference systems: machine reference system, workpiece reference
system (G92) and relative reference system (G24, G27, G28, G29)
Machine reference system and workpiece reference system
On startup, the control assumes that the coordinates specified by the user
are relative to the machine reference system (origin ΩM, coinciding with the
setpoint, and orthogonal Cartesian axes XM, Y M and ZM to form a right
orthogonal Cartesian triad).
Since, however, it may be convenient to employ a specific reference system
for the workpiece which from time to time must be processed (program), G92
allows to specify the orthogonal Cartesian coordinate of the origin Ω P (x ΩP, yΩP
and zΩP), specified in the machine reference system, of a workpiece reference
system (or of the program), simply translated with respect to the first one.
Downstream the line15
G92 XxΩP YyΩP ZzΩP
the execution, for example, of a G00 X0 Y0 Z0 will bring the tool tip to the
position (xΩP, yΩP, zΩP) relatively to the machine reference system;
subsequently, and symmetrically, a G00 X-xΩP Y-yΩP Z-zΩP will bring the tool tip
to coincide with the zero of the machine (ΩM).

13
For the angles the dimensions remain expressed in degrees.
14
If this is not the case, an error is reported [ISO010; see I.6].
15
With the italics, here and for all the remaining, it is symbolically indicated a numeric value (for a coordinate or
other).

ISOCNC - ISO Listing (specifications) 7


On a line, the instruction G92 must be the only one present16. In other words,
on a line in which a G92 is programmed, no other words are allowed, except
those that define the arguments. It is required at least one of the latter
(possibly null)17; those omitted are considered null18.
As already mentioned, the axes of the workpiece reference system (X P, YP,
and ZP) remain neatly parallel to the corresponding machine reference system
(XM, YM, ZM). Also note that the arguments of G92 are always absolute
coordinates (non-incremental), regardless of whether G90 or G91 are active (see
I.3.3)19.
To return to the use of the coordinates referred to the machine reference
system, just write20
G92 X0 Y0 Z0
By default the workpiece reference system coincides with the machine
reference system (in other words, at the start a G92 X0 Y0 Z0 is active, as
detailed in Table 2).
Note that to switch from a workpiece reference system to another it is not
necessary to "remove" the active system (that is different for the face
reference system, as shown below). It is therefore possible that two G92 follow
each other without passing through a G92 X0 Y0 Z0:
;activation of a workpiece reference system
;with origin at the point (15.33, -8.9, 25.00)
; [coordinates relative machine reference system]:
G92 X15.33 Y-8.9 Z25.00
[execution of motion instructions with dimensions relative to the active
system]
;activation of a workpiece reference system
;with origin at the point (-29.82, 0.77, -11.3)
; [coordinates relative machine reference system]:
G92 X-29.82 Y0.77 Z-11.3
[execution of motion instructions with dimensions relative to the newly
active system]
Face reference systems
Once a workpiece reference system is set, it may be convenient (to facilitate
the writing and the intelligibility of the instructions) to adopt from time to time
reference systems specific to the faces to be machined on the workpiece. To do
this there are three modes, corresponding to G24, G28 and G29.

16
Otherwise, an error is reported [ISO018; see I.6].
17
In case of omission, an error is reported [ISO025; see I.6].
18
For this instruction, but even more for those that require a number of arguments, although it is possible to give
them in any order, it is recommended to provide them in a single sequence.
19
The presence of a G91 (or G90), which would offer the possibility of misinterpretation, in a line that specifies a
change of reference system is however not allowed, in accordance with the general rule that requires the uniqueness
on a line of any instruction which determines a change of the reference system.
20
We reiterate that the arguments of G92 are always absolute and referred to the machine reference system, not to
the one currently being used.

ISOCNC - ISO Listing (specifications) 8


Face reference system: G24
The first mode (G24) is used to set a reference system having its origin at the
point of coordinates X, Y, Z and axes XF, YF and ZF generically oriented with
respect to those of the orthogonal Cartesian system of reference of the
workpiece. Having indicated respectively with (iXF, iYF, iZF), (jXF, jYF, jZF) and
(kXF, kYF, kZF) the ordinate triads of the components of the three versors iF, jF e
kF, respectively according to the three axes XP, YP and ZP of the workpiece
reference system, with the following line
G24 X Y Z AiXF BiYF CiZF IjXF JjYF KjZF PkXF QkYF RkZF
said reference system is set, taking as origin (ΩF), the position defined by the
coordinates X, Y, Z.
Note that the arguments of G24 always express absolute coordinates (non-
incremental), regardless of whether G90 or G91 are active (see. I.3.3) and that
these coordinates are referred to the workpiece reference system.
On a line in which a G24 is programmed, no words other than those that
define the arguments are allowed21. It is required at least one of the latter for
each versor (not null)22; those omitted are null. For the definition of a valid
reference system, it is necessary that the three versors iF, jF and kF have non-
null module23 and are not coplanar24. With respect to the coordinates of the
point of application of the reference plane, if omitted it is considered the null
value.
Face reference system: G28
The second mode (G28) allows to set a reference system having origin at the
point where currently the tool tip is located and axes X F, YF and ZF generically
oriented with respect to those of the orthogonal Cartesian system of reference
of the workpiece. Having indicated respectively with (iXF, iYF, iZF), (jXF, jYF, jZF)
and (kXF, kYF, kZF) the ordinate triads of the components of the three versors iF,
jF e kF, respectively according to the three axes XP, YP and ZP of the workpiece
reference system, with the following line
G28 XiXF YiYF ZiZF IjXF JjYF KjZF PkXF QkYF RkZF
said reference system is set, taking as origin (ΩF) the current position.
On a line in which a G28 is programmed, no words other than those that
define the arguments are allowed25. It is required at least one of the latter for
each versor (not null)26; those omitted are null. For the definition of a valid
reference system, it is necessary that the three versors iF, jF and kF have non-
null module27 and are not coplanar28.

21
Otherwise, an error is reported [ISO018; see I.6].
22
In case of complete omission of the components of a versor, the corresponding error is reported [ISO019, ISO020
and ISO021; see I.6].
23
An unitary module, however, is not strictly required. If the module proves practically null, an error is reported
[ISO022; see. I.6].
24
Otherwise, it would not obviously be possible to define a spatial reference system and an error would be reported
[ISO023; see. I.6].
25
Otherwise, an error is reported [ISO018; see I.6].
26
In case of complete omission of the components of a versor, the corresponding error is reported [ISO019, ISO020
and ISO021; see I.6].
27
An unitary module, however, is not strictly required. If the module proves practically null, an error is reported
[ISO022; see. I.6].

ISOCNC - ISO Listing (specifications) 9


Face reference system: G29
The third mode to assign a face reference system allows to specify both the
origin (xΩF, yΩF and zΩF) with respect to the workpiece reference system, and
the attitude of the plane of the face (specifying with the angles C and B the
orientation of the normal to the plane itself):
G29 XxΩF YyΩF ZzΩF CcF BbF
The allowed values for the Cs are comprised between -180° and + 180°, for
B between -90° and + 90°29.
On a line in which a G29 is programmed, no words other than those that
define the arguments are allowed30.
Finally, note that the arguments of G29 always express absolute coordinates
(non-incremental), regardless of whether G90 or G91 are active (see. I.3.3) and
that these coordinates are referred to the workpiece reference system.
Switching from a reference system to another
It should be noted that for G24, and G28 and for G29, unlike what happens
with G92, it is not possible to specify a face reference system while another is
already active: it is necessary previously to explicitly "remove" the current
one, returning to the workpiece reference system via G2731. As for G28 and G29,
also for G27 it is required that it is alone on a line32.
As shown in Table 2, the face reference system as default coincides with the
workpiece reference system (G27 active). For the above, the following listing is
valid:
;activation of a face reference system
G28 X1.0 Y1.0 I-1.0 J1.0 R1.0
[execution of motion instructions with dimensions relative to the active
system]
;deactivation of the active system:
G27
;activation of another one:
G29 X10 Y10 Z10 C-90.0 B+45.0
[execution of motion instructions with dimensions relative to the active
system]
Likewise, it is required that a non trivial face reference system (not coincident
with that of the workpiece) is removed before changing the workpiece
reference system33. The following listing is valid:
;activation of a workpiece reference system:
G92 X100 Y50
;activation of a face reference system
G28 X1.0 Y1.0 I-1.0 J1.0 R1.0

28
Otherwise, it would not obviously be possible to define a spatial reference system and an error would be reported
[ISO023; see. I.6].
29
The indication of values outside this range is reported as error [ISO060; see. I.6].
30
Otherwise, an error is reported [ISO018; see I.6].
31
If this is not the case, an error is reported [ISO024; see I.6].
32
Otherwise, an error is reported [ISO018; see I.6].
33
If this is not the case, an error is reported [ISO055; see I.6].

ISOCNC - ISO Listing (specifications) 10


[execution of motion instructions with dimensions relative to the active
system]
;removal of the active face reference system:
G27
;activation of a new workpiece reference system:
G92 X200 Y50
[...]
In this case, for the above, G27 is required34.
Normally G27 is used to "remove" a face reference system activated with a G24,
G28 or G29. If the ISO listing includes a G27 not preceded by any G24 (or G28, or
G29), it is ignored for computational purposes: the condition is still reported by
a warning to the user.
I.3.3 Absolute (G90) and incremental (G91) dimensions
Using the instructions G90 and G91 it is possible to set the mode of
interpretation of the dimensions specified for the coordinates. As indicated in
Table 2, absolute values are used by default (G90), that is referred to the
reference system that is currently active. Through G91, it is possible to express
the values of the coordinates as algebraic increments from the current
location. For example, the following listing
G90 G0 X0.00 Y0.00 ;motion to (0,0)
G1 X5.00 Y0.00 ;linear motion to (5,0)
G1 X5.00 Y5.00 ;linear motion to (5,5)
G1 X0.00 Y5.00 ;linear motion to (0,5)
G1 X0.00 Y0.00 ;linear motion to (0,0)
is equivalent, in the results, to the next
G90 G0 X0.00 Y0.00 ;motion to (0,0)
G91 G1 X5.00 Y0.00; linear motion with +5 on X, Y unchanged
G1 X0.00 Y + 5.00; linear motion with X unchanged, +5 on Y
G1 X-5.00 Y0.00 ;linear motion with -5 on X, Y unchanged
G1 X0.00 Y-5.00 ;linear motion with X unchanged, -5 on Y
The instructions G90 and G91 can be located on any line: if in the same line
there is a G which allows dimensions as arguments, it must necessarily
precede it (as in the above examples)35.
I.3.4 Motion G (G00, G01, G02, G03)
The G motion functions are a modal group that, because of their peculiarities
with respect to others, does not have a default. This means that while it is
possible, having specified on a line a G belonging to the group, to omit it on
the subsequent lines, it is not possible to start an ISO listing with the
specification of the dimensions, as if it some G were active36.
For each of the motion Gs, the omission of the explicit indication of a
coordinate is equivalent to require its constancy37.

34
The omission would have resulted in the reporting of an error [ISO055; see. I.6].
35
If this constraint is not respected, an error is reported [ISO061; see. I.6].
36
In that case, an error is reported [ISO011; see I.6].
37
Strictly speaking: if a G90 is active, it means that the value of an omitted coordinate is confirmed (that is, it is as if
the coordinate is repeated with the same value), if a G91 is active, the omission is equivalent to specify its null
increase.

ISOCNC - ISO Listing (specifications) 11


I.3.4.1 Quick positioning (G00)
With G00 it is specified a quick motion leading the tool tip from the current
location to the location specified by the arguments relating to the currently
active reference system. G00 may be preceded, even on the same line, by a
G90 or a G91 that indicate how to interpret (in absolute or incremental mode,
respectively) the values (see I.3.3).
The arguments of G00 are the coordinates of the target point (X, Y, Z, B and
C). It is necessary to specify at least one dimension 38: those omitted are
considered coincident with the corresponding initial value (withG90active) or
null (with G91 active).
As already noted, this function is modal, so it is possible to write for example
(assuming G90 active)
G00 X0 Y0 Z0 (quick from the current position to [0,0,0])
G00 X10 (quick to the position [10,0,0])
Y10 (quick from [10,0,0] to [10,10,0])
Z10 (quick from [10,10,0] to [10,10,10])
G00 remaining active until it is cancelled by a function of the same group (G01,
G02 or G03).
I.3.4.2 Linear interpolation (G01)
With G01 it is specified an interpolation motion bringing the tool tip from the
current location to the location specified by the arguments, with reference to
the currently active reference system and to the specified speed (feed rate,
see I.3.7). G01 may be preceded, even on the same line, by a G90 or by a G91
that indicate how to interpret (in absolute or incremental mode, respectively)
the values (see I.3.3).
The arguments of G01 are the coordinates of the target point (X, Y, Z, B and
C): it is necessary to specify at least one dimension 39. In particular, if you are
in 3-axis mode (I.3.5), you must specify at least one linear dimension (X, Y or
Z)40.
If a change of the dimension of the rotating axes is required, the five-axis
interpolation mode must be enabled (see. I.3.5).
As already noted, this function is modal, so it is possible to write for example
G00 X0 Y0 Z0 (quick from the current position to [0,0,0])
G01 X0.01 (interpolation to the position [0.01,0,0])
Y0.02 (interp. From [0.01,0,0] to [0.01,0.02,0])
Y0.04 Z-0.01 (interp. From [0.01,0.02,0] to [0.01,0.04,-0.01])
G01 remaining active until it is cancelled by a function of the same group (G00,
G02 o G03).
I.3.4.3.a Circular interpolation (helical), clockwise and counterclockwise (G02,
G03), and plan selection (G17, G18, G19)
The execution of an arc of a circle in a plane parallel to a coordinated plan is
required by means of G02 (arc travelled clockwise) or G03 (counterclockwise).
38
Otherwise, an error is reported [ISO026; see. I.6].
39
Otherwise, an error is reported [ISO026; see. I.6].
40
Otherwise, an error is reported [ISO047; see. I.6].

ISOCNC - ISO Listing (specifications) 12


The axis around which it is evaluated the clockwise or counterclockwise nature
of the travel over the arc, is thus orthogonal to one of the coordinated planes:
a) plane XY if G17 is active (which, as specified in Table 2, is the default);
b) plane YZ if G19 is active;
c) plane ZX if G18 is active;
If either G17, G18 or G19 is repeated while it is already active, a warning is
reported.
For the execution of a G02 or G03 it is required that the axes of the circular
interpolation plane are orthogonal41. There is no constraint for the third axis. A
potential related problem arises, of course, only if G17 is active. For example, if
G17 is active, having indicated with iF e jF the versors of the axes XF and YF
shall be orthogonal, while no specific requirement applies to the versor kF in
case of execution of either G02 or G03. With G19 and G18 active, the
orthogonality requirement applies to jF and kF, and for kF and iF respectively.
To define the arc of a circle, which has as start point the end point of the
previous motion instruction, first of all it is necessary to specify its end point:
a) with G17 active, by means of the coordinates X and Y;
b) with G19 active, by means of the coordinates Y and Z;
c) with G18 active, by means of the coordinates X and Z;
It is obviously necessary to specify at least one of the two coordinates 42:
the one omitted is implicitly considered coincident with the corresponding
initial value (with G90 active) or null (with G91 active).
In the case of five-axis interpolation, G02 and G03 are split in an orderly
sequence of G01 (microlinear sections in interpolation) in line with the
maximum permissible chordal error.
Once start point and end point are known, the full specification of the circle to
which the arc belongs allows two alternative formulations43:
a) providing the value of the radius;
b) providing the coordinates of the centre.
It is necessary to provide the data for at least one of the two formulations 44.
Below the two modes are discussed separately.
Assignment of the circle specifying the radius
For the first formulation, consider the following example. Assuming that a G17
is active, the line
G02 Xx1 Yy1 RrC,
assumed that, at the beginning of the block, the tool is located at point P 0 with
coordinates (x0,y0), it is required the execution of an arc of a circle with radius
rC, clockwise around an axis orthogonal to the plane XY and oriented according
to the vector product iF  jF, and ending at point P1 with coordinates (x1,y1) [x1
= x1 and y1 = y1, in mode G90; x1 = x0 + x1 e y1 = y0 + y1, in mode G91], such
that the angle width of the arc described is less than or equal to 180°. An arc

41
Otherwise, when processing G02/G03 an error is reported [ISO068; see I.6].
42
Otherwise, an error is reported [ISO026; see I.6]. Moreover, if the coordinates required by G02 (/G03) based on the
active G17/G18/G19 are not specified, that is reported as an error [ISO027; see I.6].
43
Although unusual, it is allowed that the data are provided for both descriptions, provided that they are consistent
(otherwise, an error is reported [ISO029; see. I.6]).
44
If data is not provided, an error is reported [ISO028; see I.6].

ISOCNC - ISO Listing (specifications) 13


greater than 180° can be programmed only specifying its centre, as shown just
below. For consistency, it is obviously necessary that ((x1–x0)2 + (y1–y0)2)1/2 <
2rC45.
Assignment of the circle specifying the centre
Always assuming that a G17 is active, for the second formulation, the line
G02 Xx1 Yy1 IiC JjC,
assumed that, at the beginning of the block, the tool tip is located at point P0
with coordinates (x0,y0), it is required the execution of an arc of a circle,
clockwise around Z, whose centre is the point C with coordinates (x C,yC) [xC =
iC and yC = jC, in mode G90; xC = x0 + iC and yC = y0 + jC, in mode G91] and
ending at point P1 with coordinates (x1,y1) [x1 = x1 e y1 = y1, in mode G90; x1
= x0 + x1 and y1 = y0 + y1, in mode G91]. Obviously in this case, it would
make no sense to specify a value for the Z of the centre: the presence of a KkC
in the previous line would be a mistake.
Always referring to the example presented in the previous ISO line, note
that46:
a) if x1 differs from x0, in order to specify the centre it is sufficient the
coordinate Y of the centre (that is jC): the presence of IiC is unnecessary
(since xC can b e calculated starting from P0, P1 and yC) and can
therefore be omitted;
b) if y1 differs from y0, in order to specify the centre it is sufficient the
coordinate X of the centre (that is iC): the presence of JjC is unnecessary
(since yC can be calculated starting from P0, P1 e xC) and can therefore
be omitted.
If also the superfluous coordinate is given, that is however considered to verify
its correctness, checking that the point (xC,yC) specified in that way, is located
on the axis of the segment which joins P0 with P147.
If G18 is active, it is necessary to make similar considerations about
G02 Xx1 Zz1 IiC KkC 48
while, with G19 active, on
G02 Yx1 Zz1 JiC KkC 49.

In summary, considering all three cases:

45
If such condition, with an obvious geometric interpretation, is not satisfied, an error is reported [ISO030; see. I.6].
46
This statement is discussed in depth in Appendix A.
47
If an inconsistency is detected, that is reported as an error [ISO031; see I.6].
48 In this case if x1 differs from x0, in order to specify the centre it is sufficient the coordinate Z of the centre (that is
kC): the presence of XiC is superfluous (since xC can be calculated starting from P0, P1 and zC) and can therefore be
omitted; if z1 differs from z0, to specify the centre it is sufficient the coordinate X of the centre (therefore iC): the
presence of KkC is superfluous (since C can be calculated starting from P0, P1 and xC) and can therefore be omitted. If
also the superfluous coordinate is given, that is however considered to verify its correctness, checking that the point
(xC,zC) specified in that way, is located on the axis of the segment which joins P 0 with P1 [ISO031; see I.6].
49
In this case if y1 differs from y0, in order to specify the centre it is sufficient the coordinate Z of the centre (that is
kC): the presence of YjC is superfluous (since yC can be calculated starting from P0, P1 and zC) and can therefore be
omitted; if z1 differs from z0, to specify the centre it is sufficient the coordinate Y of the centre (that is jC): the
presence of KkC is superfluous (since zC can be calculated starting from P0, P1 and yC) and can therefore be omitted. If
also the superfluous coordinate is given, that is however considered to verify its correctness, checking that the point
(yC,zC) specified in that way, is located on the axis of the segment which joins P 0 with P1 [ISO031; see I.6].

ISOCNC - ISO Listing (specifications) 14


a) if G17 is active, it is possible to provide I and J (it is sufficient just IiC if
y1 differs from y0; just JjC if x1 differs from x0. If you specify both, a
correctness check is made), never K;
b) if G18 is active, it is possible to provide just I and K (it is sufficient just
IiC if z1 differs from z0; just KkC if x1 differs from x0. If you specify both, a
correctness check is made), never J;
c) if G19 is active, it is possible to provide just J and K (it is sufficient just
JjC if z1 differs from z0; just KkC if y1 differs from y0. If you specify both, a
correctness check is made), never I50.
Note that, conversely,
a) if G17 is active: if I but not J is provided, it is necessary that y1 differs
from y051; if J, but not I is provided, it is necessary that x1 differs from
x052;
b) if G18 is active: if I but not K is provided, it is necessary that z1 differs
from z053; if K, but not I is provided, it is necessary that x1 differs from
x054;
c) if G19 is active: if J but not K is provided, it is necessary that z1 differs
from z055; if K, but not J is provided, it is necessary that y1 differs from
y056;
I.3.4.3.b Helical interpolation
As a superset of the circular interpolations, it is then possible to consider
interpolations by helical arches:
a) around axis Z (G17, which is the default, active). With
G02 Xx1 Yy1 Zz1 RrC o
G02 Xx1 Yy1 Zz1 IiC JjC
a coordinate z1 is specified for the end point of the arc [z 1 = z1 in mode
G90; z1 = z0 + z1 in mode G91]. The overall change of dimension (z 1 -
Z0) is cumulated linearly along the arc length parameter of the arc.
b) around the axis X (G19 active). With
G02 Xx1 Yy1 Zz1 RrC o
G02 Xx1 Yy1 Zz1 JjC KkC
a coordinate x1 is specified for the end point of the arc [x1 = x1 in mode
G90; x1 = x0 + x1 in mode G91]. The overall change of dimension (x1 –
x0) is cumulated linearly along the arc length parameter of the arc.
c) around the axis Y (G18 active). With
G02 Xx1 Yy1 Zz1 RrC o
G02 Xx1 Yy1 Zz1 IiC KkC
a coordinate y1 is specified for the end point of the arc [y1 = y1 in mode
G90; y1 = y0 + y1 in mode G91]. The overall change of dimension (y1 –
y0) is cumulated linearly along the arc length parameter of the arc.

50
The specification of a coordinate not provided for the centre is obviously a mistake, and as such is reported
[ISO038, ISO039 and ISO040; see I.6].
51
If y1 = y0 an error is reported [ISO048; see I.6].
52
If x1 = x0 an error is reported [ISO049; see I.6].
53
If z1 = z0 an error is reported [ISO050; see I.6].
54
If x1 = x0 an error is reported [ISO051; see I.6].
55
If z1 = z0 an error is reported [ISO052; see I.6].
56
If y1 = y0 an error is reported [ISO053; see I.6].

ISOCNC - ISO Listing (specifications) 15


Implicitly all interpolations with G02 and G03 are helical: the omission of the
dimension parallel to the axis of rotation is equivalent to confirm it as
unchanged.
In the case of five-axis interpolation, G02 and G03 are split in an orderly
sequence of G01 in line with the maximum permissible chordal error.
I.3.4.3.c Circular interpolation (helical) with a variation in the dimensions of
rotary axes
A further complication to the cases presented above is when it is indicated a
change in the dimension of one or both rotary axes (which is possible only in
the case of five-axis interpolation) such as, for example, in
G02 Xx1 Yy1 Zz1 IiC JjC Bb1 Cc1
In this case G02 (G03) is split in an orderly sequence of G01 consistent with the
maximum allowable chordal error57. The overall changes of dimension on C (c1
– c0) and on B (b1 – b0) are linearly cumulated along the arc length parameter
of the arc.
I.3.5 Type of interpolation (G48, G49)
By default ISOCNC manages three-axis interpolations, that is, it does not
allow to change the dimensions of the rotary axes being interpolated (no
constraint instead in quick positioning). To activate five-axis interpolation, it is
necessary to explicitly request it using G49. To return to an interpolation with
just three axes, it is used G48 (which is active by default)58.
It is required that G48 and G49 are on a separate line59.
If either G48 or G49 is repeated while it is already active, a warning is
reported.
I.3.6 Cutter radius adjustment (G40, G41, G42) and reduction of the profile (G38,
G39)
The capacity of cutter radius adjustment of the ISO interpreter allows to
specify that the cutter should move to the left (G41) or right (G42) of an open
or closed contour; as shown in table 2, the adjustment is disabled by default
(G40 active). G41 and G42 may be on a separate line or be before a motion G60.
To disable the adjustment (returning to the default setting) it is used G40. G40
may be on a separate line or be after the last motion G for which adjustment is
provided for (arguments included)61.
If either G40, G41 or G42 is repeated while it is already active, a warning is
reported.
I.3.7 Feed rate assignment (G93, G94, F)
For interpolation motions, it is possible or required (depending on the case,
see below) to specify a value for the feed rate62. This is done by means of the
word F.

57
Being a five-axis interpolation, it is necessary that the five-axis interpolation mode is enabled (see. I.3.5).
58
Any instruction which involves an interpolation motion (G01 or G02/G03 with variation in the dimension of a rotary
axis) that requires five axes, if this feature is not enabled (G49) generates an error [ISO032; see I.6].
59
If this is not the case, an error is reported [ISO033; see I.6].
60
If this is not the case, an error is reported [ISO034; see I.6].
61
If this is not the case, an error is reported [ISO035; see I.6].
62
It is not provided the possibility to specify a feed rate for quick motions, since it is not applicable to them.

ISOCNC - ISO Listing (specifications) 16


ISOCNC supports two modes to set the feed rate: units per minute (G94,
active by default, as indicated in table 2) and inverse of the time (G93).
If either G93 or G94 is repeated while it is already active, a warning is
reported.
In the first mode (units per minute), the numeric value associated with a
word F states that the tool tip should move at the indicated number of inches
per minute (if G70 is active), millimeters per minute (if G71 is active) or degrees
per minute (regardless of G70 or G71) depending on which axes are moving.
In the second mode (inverse of time), the numerical value associated with a
word F states that the requested motion should be completed in a time equal
to its reciprocal (in minutes). For example, writing
G93 F4 G01 Xx1 Yy1 Zz1 Cc1 Bb1
G01 should be completed in a time equal to ¼ of a minute (provided that the
speed limits for the axes involved do not require a longer one).
When the feed rate mode 'inverse of time' is enabled (G93 active) it is
necessary to specify a value for the F at each line in which there is a G01, G02
or G0363; a F on a line that does not contain any of these is simply ignored
[warning: F non required, ignored].
Upstream of the first instruction of interpolated motion, or at most in the
same, it is necessary that a value is specified for the F64.
In both cases the values for the F must be positive65.
The value F for a G00 makes no sense: if specified, it is ignored.
On each line it is not allowed to specify more than once the value of F66.
I.3.8 Block end stop (G09)
To specify a stop of the axes at the end of an interpolation block, after that
block add a G09. Note that the G09 must immediately follow, on the same line
or on the next one, the arguments of the motion instruction. The effect of G09
is different in systems with 3 axes (G48 active) compared to 5-axis
interpolation (G49 active): if you are interpolating 3 axes, at the time of the
stop the interpolation channel is cleared and it is necessary to wait for its filling
before resuming the motion; in 5 axes, the effect is that of a stop of the
motion, but the interpolation channel is not emptied of all downstream
motions, that means that the resumption of the motion is immediate on the
achievement of the stop dimension.
I.3.9 Application of MDI instructions (G909)
G909 is used at the end of a block of instructions in MDI mode to ensure its
proper execution.
If the MDI instructions block contains only M functions or motion instructions
G (G00, G01, G02, G03) it can be omitted; however, its presence in these
cases does not result in an error.

63
If this is not the case, an error is reported [ISO041; see I.6].
64
If this is not the case, an error is reported [ISO066; see I.6].
65
The attempt to specify a negative value for the feed rate is reported as error [ISO042; see I.6].
66
In case of multiple values of F, an error would be reported [ISO065; see. I.6].

ISOCNC - ISO Listing (specifications) 17


I.3.10 Wait (G04)
To specify that the program remains waiting for a certain time it is used G04
followed by the character P and the desired value in seconds67. Obviously, this
value must be positive68. The line including G04 must not include other
words69.
I.3.11 Technological parametrics update from cyclics (G990)
G990 is used to force an update of the technological parametrics from
cyclics, stopping listing compilation and execution of the ISO program up to
the end of the parametrics update.
I.3.12 Set machine state - "Pending" at the end of the program (G200)
[Functionality managed only from remote clients] In order to instruct the
cycle to immediately start the next ISO program, or to wait for the inclusion of
a new program in the list, add the instruction G200 before the instruction M2of
the program currently being executed. In this way the cycle is not interrupted
and, if in the list there is a subsequent program, it will be automatically
launched. Otherwise, the dashboard will wait for a new (soft) start by the
remote client.

I.4. M functions
The following table lists the M functions interpreted directly by ISOCNC. The
meaning of these Ms cannot be redefined by the user.

M Code Meaning

M02 End program


M03 Start spindle rotation (clockwise)
M04 Start spindle rotation (anticlockwise)
M05 Stop spindle rotation
M06 Change tool
Table 4. M functions interpreted by ISOCNC

Here the functions listed above are discussed in detail.


I.4.1 Program end (M02)
Program end is indicated with M02 on a separate line70: the presence of M02 is
necessary for any program71. Everything that may follow M02 is ignored.

67
An indication of the value of the wait time, using the word "P" is mandatory: otherwise, an error is reported
[ISO064; see I.6].
68
Specifying a negative value is reported as an error [ISO036; see I.6].
69
If this is not the case, an error is reported [ISO037; see I.6].
70
If this is not the case, an error is reported [ISO043; see I.6].
71
If a listing ends without M02, an error is reported [ISO045; see I.6].

ISOCNC - ISO Listing (specifications) 18


I.4.2 Spindle start and stop (M03, M04, M05), speed management (S)
To set the rotation speed of the spindle (rounds per minute) it is used the
character S followed by the desired value: a positive value is mandatory72.
The word S can be specified on any line, except for those which contain
instructions that explicitly require to stand alone. The position can be any, with
the following exception: if the line includes a G with arguments, the word S
must be upstream of the declaration of G, that is downstream of the arguments
of the same. For example, the following ISO lines are valid:
G1 X+1.01 Y-2.0 Z+5.65 S500 ;S declared after the arguments of G
S500 (S before G) G1 X+1.01 Y-2.0 Z+5.65
G17 S500 (S before G) G02 X100.0 Y100.0 R300
The following are incorrect:
G1 S500 (before the arguments of G) X+1.01 Y-2.0 Z+5.65
G1 X+1.01 Y-2.0 S500 (in the middle of the arguments of G) Z+5.65
G17 G02 X100.0 Y100.0 S500 (as above) R300
In the first case it would be reported the lack of arguments for G1, in the
second, the presence of a dimension (Z+5.65 not referable to a G that may
require it; in essence Y-2.0 would be interpreted as the last argument
correctly indicated of G1) and analogously in the third.
If a line contains a S and a G of motion, setting the value of spindle rotation
takes place before the execution of the G of motion, regardless of whether theS
is before or after the G.
A single S73 is allowed on a line.
The instruction to set the spindle rotation speed just updates the value of a
GPL variable (SValue As Double), whose presence is required in the custom.
To control rotation start it is used M03 (clockwise rotation) or M04 (counter-
clockwise rotation); to control spindle rotation it is used M05.
I.4.3 Tool change (M06)
Tool change is indicated by M06 followed immediately by the word T whose
value specifies the number of the head, of the toolholder and of the tool 74: T
must be followed by a six digit numeric code75: the first specifies the identifier
of the head (9 possibilities: 1 to 9), the two successive the identifier of the
toolholder (99 possibilities: 1 to 99), the three remaining the identifier of the
tool (999 possibilities: 1 to 999). Considering the information above (see I.
1), it is possible, for clearer reading, to leave spaces between the groups of
digits, for example, writing T 1 30 207 (which is much more readable than
T130207, equally usable however). Null values are reserved to indicate a
situation of lack of tooling: for this reason, non null toolholder identifiers are
not allowed downstream a non selected head, 76or non null tool identifiers
downstream a non selected toolholder77.

72
This value cannot be negative or zero. If this is the case, an error is reported [ISO015; see I.6].
73
If a line contains more than one S, an error is reported [ISO046; see I.6].
74
In case of absence of T, which must necessarily follow M06, an error is reported [ISO014; see I.6]. An error [ISO054;
see I.6] is reported as well in case of a T not preceded by a M06.
75
As already stated (see I.1.2.2 ), if this constraint is not respected, an error is reported.
76
Example: T 0 30 207. A similar case is reported as error [ISO012; see I.6].
77
Example: T 1 00 207. A similar case is reported as error [ISO013; see I.6].

ISOCNC - ISO Listing (specifications) 19


The pair M06 T[indexes] constitutes an instruction.
The tool change instruction simply updates a GPL variable of array type
(TValues[3] As Integer) whose elements correspond neatly to the indexes
of head, toolholder and tool. The management is left to the GPL. However, it is
necessary to specify indexes corresponding to a head, a tool holder and a tool
actually configured in parametrics78.
Upstream of the first motion instruction in the ISO listing, it is required the
presence of a M06that specifies the initial tooling.79
I.4.4 Ms defined by the user

I.5. Registers
ISOCNC provides to the user 30 registers of decimal type, numbered from 1
to 30. To set the value of a register the user is provided with the instruction V:
writing V followed by the number of the register80, by the sign “=” and by a
value (usually decimal)81, it is possible to assign to the register the required
value82. For instance, V25 = 78.99 assigns to the 25th register the value 78.99.
I.6. ISO errors
Below is the list of errors which can be reported in an ISO file.

Code Meaning
Comment closure missing.
ISO001 There is a comment opening bracket (“(”) not followed by the corresponding closing
bracket (“)”).
Comment opening missing.
ISO002 There is a comment closing bracket (“)”) not preceded by the corresponding opening
bracket (“(”).

ISO003 Unrecognized word.


The line includes a word that begins with a character not provided for by the specification.
Word without number.
ISO004 The line includes a character (it would seem the beginning of a word) not followed by a
number.

ISO005 Word without code.


The line includes a number that is not preceded by a character.
Wrong number format.
ISO006 The line includes a number (i.e., a sequence of characters included between the initial
characters of two subsequent words) that has an incorrect format.

ISO007 Invalid number associated with a G.


The character G can only be followed by an integer having a maximum of three digits.

ISO008 Invalid number associated with a M.


The character M can only be followed by an integer having a maximum of three digits.
ISO009 Invalid numerical sequence associated to a T.

78
In case of indication of non configured tooling items, an error is reported [ISO067; see I.6].
79
The failure to specify an initial tooling, when a motion G is met, is reported as error [ISO044; see I.6].
80
It is necessary to specify a valid register number: it must be a non-negative integer (if the format is incorrect, that
is reported as an error [ISO057; see I.6]), secondly the number must be between 1 and 30 (otherwise an error is
reported [ISO059; see I.6]).
81
The valid indication of a register must always be followed by the assignment: otherwise, an error is reported
[ISO063; see I.6].
82
The presence in listing of a sign “=” not preceded by V is reported as error [ISO058; see I.6].

ISOCNC - ISO Listing (specifications) 20


A T is followed by a number or non-integer or, although integer, with a number of digits
not equal to the 6 required.
Wrong positioning of G70/G71.
ISO010 In a line which includes Gs that allow as arguments linear dimensions, the G70/G71 must
necessarily precede them.
Dimension or component not referable to any command.
ISO011 A line includes a dimension (or a component) without any active G that may require it as
an argument.

ISO012 Head not selected.


Non-null toolholder identifiers are not allowed downstream of an unselected head.

ISO013 Toolhead not selected.


Non-null tool identifiers are not allowed downstream of an unselected toolholder.

ISO014 No tooling is specified.


An M06 is not followed by the T (which is its argument).

ISO015 Negative or null spindle rotation speed value.


A negative or null value is indicated for an argument that requires a positive value.
Repeated argument
ISO016 Among the arguments of the instruction the same dimension (or speed) is specified
several times.

ISO017 Lack of arguments.


A G or a M is not followed by any of the required arguments.
Reference system specification not alone.
ISO018 In a line which contains an instruction which specifies the use of a reference system (G27,
G28, G29, G92), this instruction should be the only one present.
Lack of components of the versor i F.
ISO019 A G28 must be followed by the indication of at least one non-null component of the versor
i F.
Lack of components of the versor j F .
ISO020 A G28 must be followed by the indication of at least one non-null component of the versor
j F.
Lack of components of the versor k F.
ISO021 A G28 must be followed by the indication of at least one non-null component of the versor
k F.

ISO022 Versor with null module.


You have tried to assign a versor by means of a virtually null vector.
Triad of coplanar vectors.
ISO023 You have tried to specify a spatial reference system with a triad of versors that are
virtually coplanar.

ISO024 Face reference system already active.


You have tried to specify a face reference system without disabling the previous one.
Origin coordinates missing.
ISO025 You have tried to specify a part reference system without providing any coordinate for the
origin (at leat one is required).

ISO026 No dimension specified.


For a motion G it is necessary to specify at least one dimension.
Inconsistency on the coordinates specified for the end point of the arc
ISO027 (G02/G03).
You have specified coordinates for the end of an arc not belonging to the plane of
interpolation set.
Lack of coordinates of the circle (G02/G03).
ISO028 It is not specified the radius nor the centre of the circle to which the trajectory of
interpolation of a G02/G03 belongs.
Redundant inconsistent description (G02/G03).
ISO029 The coordinates of the centre and of the radius are provided for the definition of a circle,
but the two descriptions are inconsistent.
Insufficient radius of the circle (G02/G03).
ISO030 A radius has been specified which defines a circle which is too small; the initial and final
points cannot belong to it.

ISOCNC - ISO Listing (specifications) 21


Inconsistency on the two coordinates specified for the centre of the circle
(G02/G03).
ISO031 Two coordinates are given for the centre of the circle, but the distance between the start
point and the centre specified in this way differs from the distance between it and the end
point (in other words, the end point and the initial point cannot stay both on an arc
belonging to the circle having as its centre the specified point).
5-axis interpolation not enabled.
ISO032 A motion that would require 5 axes has been programmed, but the use of the latter is not
enabled.

ISO033 G48/G49 is not on a separate line.


It is required that G48/G49 appear on a line without other instructions.

ISO034 Incorrect positioning of a G41/G42.


G41 and G42 can only be on a separate line or before a motion G.
Incorrect positioning of a G40.
ISO035 A G40 must be on a separate line or be after the last motion G for which adjustment is
provided for (arguments included).

ISO036 Negative waiting time.


It is specified a negative value for a wait time (it does not make sense).

ISO037 Incorrect positioning of a G04.


The line including G04 must not include other words.

ISO038 Coordinate not provided for the centre.


G17 is active: only I and J can be provided, not K.

ISO039 Coordinate not provided for the centre.


G18 is active: only I and K can be provided, not J.

ISO040 Coordinate not provided for the centre.


G19 is active: only J and K can be provided, not I.
The required F has not been specified (feed rate in inverse of the time).
ISO041 When the inverse of the time mode of feed rate is active (G93 active), it is necessary to
specify a value for F on every line in which there is a G01, G02 or G03.

ISO042 Null negative value for the feed rate.


A positive value is always required for the feed rate.

ISO043 M02 in wrong position.


M02 must be on a separate line.
No initial tooling is specified.
ISO044 It is essential that the first motion G is preceded by M06 that specifies the indexes of the
head, of the toolholder and of the active tool.

ISO045 Lack of M02.


Each listing must contain a M02 that ends the processed part.

ISO046 Repeated S declaration.


On the line there are two or more S words: only one is allowed.

ISO047 Failure to specify a linear dimension.


In 3-axis interpolation mode, it is required to specify at least a linear dimension for a G01.
The position of the initial and final points is such that it does not allow the
ISO048 identification of the centre as a function of the supplied coordinate.
If, with G17 active, I is provided, but not J, it is necessary that y1 differs from y0 .
The position of the initial and final points is such that it does not allow the
ISO049 identification of the centre as a function of the supplied coordinate.
If, with G17 active, J is provided, but not I, it is necessary that x1 differs from x0 .
The position of the initial and final points is such that it does not allow the
ISO050 identification of the centre as a function of the supplied coordinate.
If, with G18 active, I is provided, but not K, it is necessary that z1 differs from z0 .
The position of the initial and final points is such that it does not allow the
ISO051 identification of the centre as a function of the supplied coordinate.
If, with G18 active, K is provided, but not I, it is necessary that x1 differs from x0 .
The position of the initial and final points is such that it does not allow the
ISO052 identification of the centre as a function of the supplied coordinate.
If, with G19 active, J is provided, but not K, it is necessary that z1 differs from z0 .

ISOCNC - ISO Listing (specifications) 22


The position of the initial and final points is such that it does not allow the
ISO053 identification of the centre as a function of the supplied coordinate.
If, with G19 active, K is provided, but not J, it is necessary that y1 differs from y0 .

ISO054 T without M06.


A T word is not preceded by M06 of which it is the argument.
Unable to switch to a new workpiece reference system: face reference
ISO055 system active.
The transition to a new workpiece reference system has been requested, without having
previously removed the active face reference system.
The line format number is invalid.
ISO056 You have tried to specify a line number (N "word") providing the number in an invalid
format.
Invalid format for a register number.
ISO057 You have tried to specify a register number (word "V") providing the number in an invalid
format.
Alleged assignment without indication of the register.
ISO058 There is a sign of equality that, in order to be correctly interpreted, should be preceded by
the indication of a register ("V" word) that is missing.
Invalid register number.
ISO059 A null register number or a register number greater than the number of available registers
has been specified.
Invalid angular values for G29.
ISO060 For the angles which specify the attitude of the XY plane of the rototranslated reference
system, you have attempted to specify values outside the allowed ranges.
Wrong positioning of G90/G91.
ISO061 On a line which includes Gs that allow dimensions as arguments, the G90/G91 must
necessarily precede them.

ISO062 More than one motion G.


A line allows no more than one motion G.
Failure to assign a value to a register.
ISO063 There is a valid indication of a register not followed by the assignment of value to the
same.

ISO064 No indication of the waiting time.


There is a G04 not followed by its argument.

ISO065 Value of F specified more than once.


On each line it is not allowed to specify more than once the value of F.
Failure to specify the F.
ISO066 Upstream of the first instruction of interpolated motion, or at most in the same, it is
necessary that a value is specified for the F.
Tooling indexes not manageable.
ISO067 You have specified tooling indexes corresponding to a head or a toolholder or a tool not
configured in parametrics.
Circular interpolation request in a non-orthogonal plane.
ISO068 The axes of the plane parallel to which it is requested the circular interpolation associated
with the execution of an arc of a circle (or, more generally, of ellipse) must be orthogonal.
Table 5. ISO errors

ISOCNC - ISO Listing (specifications) 23

You might also like