Understanding thethethethe PostPostPostPost Processor
Understanding
Processor
Understanding
Processor
Understanding
Processor
PartPartPartPart I:I:I:I: BasicBasicBasicBasic Introduction
Introduction
Introduction
Introduction
When you run the Post Processor, you select a .ASC file that gives the format of the NC
code for your machine. This article will give a brief overview of what is contained in
these .ASC files and some illustrations of the most common types of modifications that
users want to make to their .ASC files.
A library of .ASC files is included under the post directory in all of the Esprit software
packages. The typical location of the post library for each product is given below:
Esprit/C \Esprit\Post
Esprit/W \Program Files\DP Technology\EspritW\Post
Esprit/X NT \EspritX10.00\Post
Esprit/X Unix /dp/post/library
Within the library the .ASC files are divided up by machining type, such as EDM and Mill.
There is also a file called compiler.lst included in each Esprit product. When creating or
modifying a .ASC file there is a limited dictionary of keywords that can be used. The
compiler.lst file is a valuable reference and gives a list of all of the keywords.
While reading this article, look through the post library and load some of the .ASC files
and scan through them to see some of the items that are discussed here. Some good
general posts to try for many of the topics discussed here are any of the Fanuc posts under
Mill, such as the FM-11M1.ASC. Take one of those posts and rename it. For instance, call
it MyPost.ASC, and then it can be used to make some of the modifications discussed
below.
Examples
Section
Examples
Section
Examples Section
Examples
Section
Scroll down to the bottom of the .ASC file. The last part of the .ASC file is called the
Examples section. The example keywords all start with EX_. This is the heart of the post
because it gives examples of what the NC code format is supposed to look like.
Everything that is programmed in Esprit has a corresponding EX_ keyword in the post.
Some of the examples are related to the graphics in Esprit, such as EX_LINEAR for a feed
move along a segment and EX_CIRCLE for a feed move along an arc. Some examples are
tied to specific settings on the operation page, such as EX_COMPENSATION for Cutter
Comp NC, while some examples like EX_PARK and EX_SETORIGIN are for specific
operations, and still others like EX_CYCLESTART and EX_CYCLEEND are used by
several different operations.
The
examples
EX_FIRSTTOOLCHANGE,
EX_OTHERTOOLCHANGE,
and
EX_LASTTOOLCHANGE are for the tool changes that take place in between operations.
Of course, such examples are only used by machines with tool changes, such as mill, lathe,
and punch press, not by machines such as EDM and Laser.
The
examples
EX_STARTCODE,
EX_MAINSTART,
EX_MAINEND,
and
EX_ENDCODE are used in all machining types near the beginning and end of the NC
code output.
Then for some operations there are certain examples that will be tried first, and if those
examples are not present other examples will be tried. If Cycle Type is set to PECK2 in a
Mill Drill operation, then EX_PECK2START and EX_PECK2BODY are tried first. If
they do not exist then EX_PECKSTART and EX_PECKBODY are used. If those are not
there, then finally the motion is broken up into EX_RAPID and EX_LINEAR moves.
The above are by no means a complete set of example keywords, but it does give a
sampling of the wide variety of example keywords available and how they work in
different ways based on what is programmed in Esprit. For a list of the EX_ example
keywords, see the compiler.lst file and the Post Processor Manual.
The structure used in the Examples section is EX_KEYWORD : NC CODE FORMAT.
Some examples produce a single line of NC code. A typical arc move may look like this:
EX_CIRCLE : N G17 CIRCLEDIRECTION* X Y I* J* F
Other examples may generate several lines of NC code like this tool change example does:
EX_OTHERTOOLCHANGE : N T M06
: TOOLCHANGECOMMENT
The format of the NC code is given to the right of the colon. There are several different
types of codes used to give the NC format. Three of the most important types seen in the
Examples section are symboliccodes, symbolicswitches, and formatablecodes.
Codes UsedUsedUsedUsed inininin thethethethe Examples
Codes
Symbolic
Examples
Symbolic
Codes
Examples
Symbolic Codes
Symbolic
Examples
A symboliccode comes out in the NC file exactly as it is shown in the post .ASC file.
Looking back to the previous samples,
the G17 in EX_CIRCLE and the M06 in
EX_OTHERTOOLCHANGE are symbolic codes. They will come out as G17 and M06 in
the NC program. Here are some other samples that show frequent uses of symbolic codes:
EX_RAPID : N G00 X Y Z
EX_LINEAR : N G01 X Y Z F
EX_TOOLCANCEL : N M05 M09
EX_MAINEND : N M02
The G00, G01, M05, M09, and M02 in the above samples are all symbolic codes.
Suppose a G10 needed to be output somewhere. This G10 could not just be thrown into
the Examples section, because in order to use a symbolic code in the Examples section it
must first be defined in the Symbolic Codes section.
Codes
Symbolic
Section
Symbolic
Codes
Section
Codes Section
Symbolic Codes
Symbolic
Section
Scroll up in the post .ASC file to the section above the examples. This section is called the
Symbolic Codes section. The structure used in this section is KEYWORD:SYMBOL. For
the samples given up until now, the following would be likely to appear in the Symbolic
Codes section:
MOTIONRAPID : G00
MOTIONLINEAR : G01
XYPLANE : G17
ENDPROGRAM : M02
SPINDLEOFF : M05
TOOLCHANGE : M06
COOLANTOFF : M09
So in order to add the G10, a keyword needs to be found that can be used to define it.
Symbolic
Adding
Codes
Adding
Symbolic
Codes
Symbolic Codes
Adding Symbolic
Adding
Codes
In
the
compiler.lst
file
there
are many miscellaneous
keywords,
such
as
MISCSYMBOLICCODE10. In the Symbolic Codes section of the .ASC file, this could be
added:
MISCSYMBOLICCODE10 : G10
Now that the G10 is defined, it can be put in the appropriate example in the Examples
section. For instance, say the G10 is to be output when a Set Origin operation is performed.
Look in the Examples section to see if there already is an EX_SETORIGIN defined.
Maybe the .ASC file has the following:
EX_SETORIGIN : O*
: MEASUREMENTCODE COORDINATECODE
: SETORIGINCOMMENT
If the G10 needed to come after the program number O, it could be modified like so:
EX_SETORIGIN : O*
: G10
: MEASUREMENTCODE COORDINATECODE
: SETORIGINCOMMENT
If the .ASC file did not contain an EX_SETORIGIN, then it could be added anywhere in
the Examples section:
EX_SETORIGIN : G10
Examples
Strings totototo thethethethe Examples
Strings
Adding
Section
Adding
Strings
Examples
Section
Examples Section
Adding Strings
Adding
Section
Using a keyword to define a symbolic code is the preferred method for outputting such
information, but there is a quick alternative. Any string of characters can be output in the
NC code by enclosing the string inside of double quotes. Suppose a P1 was needed after
the G10 in the previous sample. This by itself would do the trick:
EX_SETORIGIN : G10 “P1”
Instead of bothering to add the MISCSYMBOLICCODE10 for the G10, the whole thing
could have been done as:
EX_SETORIGIN : “G10 P1”
Examples
Switches UsedUsedUsedUsed inininin thethethethe Examples
Switches
Symbolic
Section
Symbolic
Switches
Examples
Section
Examples Section
Symbolic Switches
Symbolic
Section
A symbolicswitchis a keyword which switches output to one symbolic code out of several
possible symbolic codes based on certain conditions. Some of the symbolic switches seen
so far
in this
article
are CIRCLEDIRECTION, MEASUREMENTCODE,
and
COORDINATECODE.
From CIRCLEDIRECTION in EX_CIRCLE, the NC code output will be a G02 or G03
depending on the direction of
the arc move. From COORDINATECODE in
EX_SETORIGIN the NC code output will be a G90 or G91 depending on whether the
Coordinate Mode is ABSOLUTE or INCREMENTAL on the Set Origin operation.
As with other symbolic codes, the symbolic codes output as part of a symbolic switch
must be defined in the Symbolic Codes
section. CIRCLEDIRECTION and
COORDINATECODE typically would have the following:
MOTIONCW : G02
MOTIONCCW : G03
ABSOLUTE : G90
INCREMENTAL : G91
Previously when the G10 was added, it did not matter what keyword was used, because
the G10 was directly inserted in the Examples section. In the case of a symbolic switch,
however,
the keyword is very critical. CIRCLEDIRECTION specifically switches
between the symbols assigned to the keywords MOTIONCW and MOTIONCCW.
COORDINATECODE specifically switches between the symbols assigned to the
keywords ABSOLUTE and INCREMENTAL.
From MEASUREMENTCODE in EX_SETORIGIN the NC code output will be a G70 or
G71, or on some machines a G20 or G21, depending on whether Unit for Tape is set to
INCH or METRIC on the Set Origin operation. MEASUREMENTCODE switches
between the symbols assigned to the keywords INCH and METRIC. Depending on what
the NC machine uses, then, one post .ASC file may contain:
INCH : G20
METRIC : G21
Another post .ASC file may have what is shown below.
INCH : G70
METRIC : G71
These three symbolic switches all switched between just two symbolic codes, but there are
many other symbolic switches that switch between three or more symbolic codes.
COMPENSATIONSIDE, often found in EX_COMPENSATION, will switch between
COMPENSATIONOFF, COMPENSATIONLEFT, and COMPENSATIONRIGHT, which
are typically G40, G41, and G42. SPINDLEDIRECTION, often found in the tool change
examples, will switch between SPINDLEOFF, SPINDLECW, and SPINDLECCW, which
are typically M03, M04, and M05.