| Issue 85 |
Winter 2010 |
Copyright 2010, CNC Concepts, Inc. |
|
|
|
December 21, 2010
Dear Subscribers,
Welcome to Issue 85!
Our biggest news this issue is the updating of our
on-line CNC classes - and their placement on a new hosting
web-site - eLearningZoom.com.
As of February 1, 2010, I will no longer be allowed
to conduct my classes at UniversalClass.com as they are
discontinuing their third party instructor program. I've
been assured that any students that are enrolled in a class at
UC.com as of February 1st will be allowed to finish in the
normal manner.
Since the classes had to be moved, I decided it was
a good time to update most of them as well. See the
Product Corner article to learn more.
As always, enjoy this issue!
Mike Lynch
|
|
|
|
Product Corner:
We've updated our on-line CNC classes!
I have been conducting on-line CNC classes since 2005.
Until now, UniveralClass.com has been the hosting
website. But as of February 1, 2011, they will no longer
be allowing “third party” instructors (like me) to use
their system. This means I had to find another website
to host my classes. The selected site is
eLearningZoom.com.
Four of the on-line classes have been dramatically
updated, including:
Along with an increase in number of lessons, the course
materials have been improved and expanded. Lesson text
and PowerPoint presentations have been upgraded.
We’ve also maintained the pricing structure – the setup
and operation classes are just $89.00 including (upon
successful completion) a certificate and letter of
recommendation. The programming classes are $109.00 –
again – including certificate and letter of
recommendation.
We have also moved the
Advanced Techniques With Basic CNC Features and the
Parametric Programming
For CNC Machine Tools classes to the new training
platform.

Top of page
|
|
Instructor Note:
Prepare students for hiring interviews
As educators,
we spend most of our allotted training time making sure
students understand presented material. We want them, of
course, to pass their courses and/or get their degree or
certificate. Among many other teaching responsibilities,
we make presentations, we assign homework, we help with
lab exercises, and we go over assignments if mistakes
have been made.
One topic that
goes largely overlooked, however, is related to what
students will do once they complete our courses and get
their degrees. In order to get a job, students must be
able to relate what they have learned in your school to
the people doing the hiring. Unfortunately, many – even
older – students tend to struggle in this regard.
If you doubt
this, take a moment in class and ask a student what they
have learned from you. If they hesitate and/or have to
think much about it, it should be taken as a signal that
they need to get more prepared in order to interview for
a CNC-related position. And you can help.
Be sure
students can communicate intelligently about their
accomplishments. While there is no need to brag – or
sound arrogant – students should be able to show a quiet
confidence in their new-found abilities. As an
assignment, have them make an outline of bullet-points
that summarize what they feel are the most important
goals they have achieved – and see if you agree.
If you come
from a manufacturing background (as many CNC instructors
do), you should know the ins-and-outs of manufacturing
companies. You know that there are some pretty
tough-minded people in this industry – maybe as in any
industry – that won’t have much patience for or interest
in people who cannot concisely explain what they will be
able to do for the company.
To me,
motivation is a key component. People that are
self-motivated and eager to do whatever it takes to get
a job done are highly valued, even over more experienced
people that are less interested. So make sure your
students know how to show their enthusiasm for what
they’ve learned – and help them show perspective
employers that they are motivated.
Relate your own
success and failure stories. If you’ve gleaned an
insight into what it takes to impress an employer, by
all means relate it to your students. You can even
conduct practice interviews. Take the role of an
employer and have students interview for a job.

Top of page
|
|
Manager's Insight:
What is included in your setup documentation?
In most companies, the programmer/s
will provide – for every job – a setup sheet that tells
the setup person how to make the setup for the job. But
programmers vary with regard to just how much
documentation they provide.
Admittedly, the amount and quality of
setup documentation that is required is dependent upon
the skill level of your setup people. If you have highly
qualified and experienced people, your programmers don’t
need to provide much. Indeed, a highly skilled setup
person may be able to make some setups without any
documentation at all. But as skill levels drop –
possibly due to hiring new people – good setup
documentation becomes more critical.
One easy way to judge the quality of
your company’s setup documentation involves walking the
shop floor when setups are being made. Look for times
when machines sit idle because the setup person is
unsure how to proceed. Maybe they have contacted a
programmer or another engineer to help. Or maybe they’re
spending excessive time studying – or asking other setup
people what to do.
Some items that should be documented
are pretty obvious. The location and description of
cutting tool components, fixtures, and other needed
components should be spelled out. Placement on/in the
machine (tool station numbers and workholding device
placement) should be documented. Again, the physical
items used to make setups are pretty easy to spot.
But again, look for things that your
programmer has missed that can cause wasted time during
setup:
What offsets are used for
each tool or workpiece attribute? In many
cases offset selection is pretty basic. The offset
number is usually tied to the tool station number in
some way. But when secondary offsets are used, it can be
difficult for setup people to determine which offsets
are related to a given tool.
Are there any valves to
set? With turning centers, for example,
the chuck pressure may be changed from setup to setup.
The documentation for every setup should spell out the
chuck pressure to be used.
Is it necessary to change
any control parameters? With major change-overs
– like placing a rotary axis on a vertical machining
center or changing a chuck on a turning center – there
may be some parameters that must be changed. Be sure
they’re spelled out in the setup documentation.

Top of page
|
|
G Code Primer:
Help for manual programmers
Computer aided manufacturing (CAM)
systems are extremely helpful (if not mandatory) for
generating complex programs. With a CAM system, you can
import geometry that has been drawn in a computer aided
design (CAD) system and create the entire program
(including tool paths) for machining the shape/s of your
workpiece.
But CAM systems can be expensive –
and difficult to initially set up. With simple work, a
good manual programmer can often outperform even a good
CAM system programmer. For these reasons, there are
still many CNC programmers who elect to create their
programs manually – at G code level – at least for some
of the jobs they program.
The most difficult part of manual
programming is calculating coordinates needed in the
program. Again, for simple work, these coordinates are
often specified right on the drawing. If machining a
series of holes on a machining center, for example, hole
locations are usually specified right on the print.
It becomes more complicated for
manual programmers when coordinates needed in the
program are difficult to calculate. Possibly a contour
must be milled or turned that requires right angle
trigonometry to be used in order to come up with program
coordinates.
If a manual programmer has access to
the CAD system drawing file (often a .dxf file), it is
possible to create G code without having to buy an
expensive CAM system. There are many inexpensive dxf-to-G-code
software programs available to do just that. Some are
even available as free-ware programs. A search in Google
for “dxf to G code” will expose many of them. By the
way, the tool path plotting program we sell (
NCPlot ) also has this
ability.
A dxf-to-G-code converter will
automatically create the tool path (in G code of course)
needed to program even the most complicated two axis
contour. This portion of the program can be copied and
pasted into the actual program that will be used to
machine the workpiece. This is not, of course, a CAM
system. Only the tool path (typically for only one of
the tools) is generated. The manual programmer must
still write the commands needed for other tools.
If the programmer does not have
access to the CAD drawing file (or the .dxf file), there
is still inexpensive help available to minimize the
effort needed to program tool path for complicated
contours. There are many inexpensive CAD software
programs available.
Delta CAD (www.deltacad.com), for example, sells for
only $39.00 (at the time of this publishing) and will
allow a manual programmer to easily draw the complicated
shape in need of machining. Many others are out there –
as a search in Google will quickly confirm.
Once drawn in the CAD system, the
shape can be exported to a .dxf file – or the programmer
can use the CAD system’s dimensioning capabilities to
determine the coordinates needed within the G code level
program. Either way, this eliminates the need to
manually calculate any coordinates.

Top of page
|
|
Macro Maven:
Rounding or truncating to a specific number of decimal
places
Suggested by
Keith Recker of GMT Corporation
There are times when a custom macro
programmer needs to round a calculated value to a given
number of decimal places. Say for example, a given
variable is going to represent something that only
requires (or allows) a two decimal place format. Having
more decimal places will interfere with the
functionality or use-ability of the variable.
This was Keith Recker’s problem.
He required a two place decimal format: “We bore a
hole and then probe it’s depth. The depth dimension of
the bore depth is 42.30 +/-.15mm. All I want to engrave
is 42.XX (note again the two place format). Since the
probe checks the depth, there’s normally a reading of
more than two places, like 42.3053 or 42.3073, The bore
depth is not that critical so we do not need to go out 3
or 4 decimal places and engrave an extra number/s. Once
this part gets assembled, the line operator will look at
the engraved dimension (say 42.36), then they’ll grab
the desired shim pack needed, lay it at the bottom of
the bore, then install a bearing.”
With the DPRNT command (used to send
data through the communications port), it is possible to
specify the number of decimal places before and after
the decimal point. However, the actual value of the
variable being transmitted will remain the same. So the
DPRNT command will not help with this problem.
Some computer programming languages have functions that
allow the easy manipulation of decimal places for
variables, but custom macro B has no such “easy”
function. With custom macro B, much more ingenuity is
required.
There are, of course, two custom macro B functions that
provide truncation (FIX) and rounding (ROUND). But these
functions force the result to be a whole (integer)
number. While these functions will be used in our
algorithm for truncating and rounding decimal places, by
themselves they do not achieve the intended goal.
Here is an example calling command
that we’ll use to get the results we want. It is pretty
flexible, allowing you to specify the value to be
manipulated, whether you want the value truncated or
rounded, the number of decimal places (after the decimal
point), and the common variable number in which the
calculated value will be stored.
S: The value to be
manipulated. It is a variable that has been attained by
a prior calculation – and could have any number of
decimal places after the decimal point.
M: This specifies
how the value will be manipulated. If set to 0 (M0.0),
the value will be truncated. If set to 1.0 (M1.0), the
value will be rounded.
D: This is the
number of decimal places we desire in the resulting
value.
V: The variable
number in which the result will be stored. In our
example, the result will be stored in common variable
#100.
The calling command in line N050 is
our “wouldn’t it be nice if…” command. It lets us set
some goals for the custom macro. With the current
settings, we’re saying “Wouldn’t it be nice if our
custom macro would take the value of #121 (we’ll say it
is currently 44.1783) and round it (not truncate it) to
two decimal places after the decimal point and store
result in variable #100?” With #121 set to 44.1783, the
value being stored in #100 will be 44.18. Note that if M
is set to zero in the calling command, the value will be
truncated to two decimal places, meaning the resulting
value in #100 will be 44.17.
A note about returning a value from
the custom macro - Even if you don’t have a need to
manipulate decimal places, the technique we use to
return a calculated value will be helpful whenever you
need your custom macros to calculate a value needed back
in the main program. It lets the user specify which
common variable will be used. And since common variables
will be retained from custom macro to custom macro, the
calculated value will be available for use in the
calling program (after line N050 in our example).
Now comes the hard part. We have to come up with a way
to round or truncate to the specified number of decimal
places.
While you may be able to come up with
a better/shorter method, here is one method that works.
Note that we begin by obtaining the whole number value
for the value. We then start working on the decimal
portion, multiplying it time 1, or 10, or 100, and so on
to attain the appropriate number of decimal places as a
whole number value. We then round or truncate again to
get just the whole number value for this amount. We
divide this result by the same value as we multiplied by
before to get back to the decimal portion. And finally,
we add the decimal portion to the whole number portion.
Again, you may be able to come up with a better
algorithm.
Here is the custom macro. The notes
in the macro follow along with what happens form
our example calling command, with 44.1783 as the value
to round to two decimal places. Local
variable representations for letter address arguments
are S: #19, M: #13, D: #7, V: #22.
-
O1000 (Custom macro to manipulate
decimal places)
-
#1 = FIX[#19] (Attain whole
number portion: #1 is 44)
-
#2 = #19 - #1 (Get decimal
portion: #2 is 0.1783)
-
#11 = 1 (Begin loop to determine
number to multiply: it will be #10)
-
#10 = 1
-
N1 IF [#11 GT #7] GOTO 5
-
#10 = #10 * 10
-
#11 = #11+1
-
GOTO 1
-
N5 #3 = #2 * #10 (Get decimal
places value as whole number portion: #3 is 17.83)
-
IF [#13 EQ 0] GOTO 6
-
GOTO 10
-
N6 #4 = FIX[#3] (Truncate to
decimal places: #4 is 17)
-
GOTO 30
-
N10 IF [#13 EQ 1.0] GOTO 20
-
GOTO
25
-
N20 #4 = ROUND [#3] (Round to
decimal places: #4 is 18)
-
GOTO 30
-
N25 #3000 = 100 (M MUST BE 0 or
1)
-
N30 #5 = #4 /#10 (Get back to
decimal format: #5 is 0.17 or 0.18)
-
#[#22] = #1 + #5 (This is the
format you want: #100 is 44.17 or 44.18)
-
M99 (End of custom macro)

Top of page
|
|
Parameter
Preference: Limiting a wear offset adjustment for
turning centers
When making sizing adjustments, turning
center operators often use the +INPUT soft key to enter
the adjustment amount. This, of course will modify the
selected offset register value by the amount of the
entry. If the currently selected register value is 0.004
when the operator enters -0.0001 and presses the +INPUT
soft key, the new register value will be 0.0039. Again,
this is the preferred method for sizing adjustments. The
machine does the calculation, keeping the operator from
having to do so.
One potential mistake an operator can still
make has to do with the size of the value they enter. If
the operator mistakenly enters 0.1 instead of 0.001, the
machine will simply make the adjustment – and if the
operator doesn’t notice their mistake, the results can
be disastrous.
There is a parameter that controls the
maximum amount of incremental (+INPUT) offset entry. For
a 16T Fanuc control, it happens to be parameter number
5014. If not set (set to zero) there is no limit. But
should you want to limit the maximum incremental
adjustment to – say – 0.02 inch, you can set parameter
5014 to 0200 (note the fixed format – 0200 is 0.0200
inch.
Once set, the control will ignore any
entries over the maximum amount. Note that if larger
adjustments are required, the operator can make
consecutive 0.02 entries until the desired value is
reached.
Top
of page
|
|
Safety First:
Watch out for block delete applications
As you know, block delete can be used to
give the operator a choice between two conditions. The
operator is told to turn the block delete switch on for
one of the conditions or off for the other.
With many block delete applications, there
are no safety implications. If the switch is set in the
wrong position, the machine may not behave in the
desired manner, but there is no change in safety.
Consider, for example, using block delete to control
whether coolant comes on in the program or not. Maybe a
given workpiece can be made from two different materials
– one requiring coolant and the other not. If the switch
is in the wrong position, coolant may come on when it is
not required – or it may stay off when it is required.
But again, the operator is not placed in any immediate
danger.
Now consider a more questionable
application. Maybe a turning center programmer has been
told that raw material is varying in length. It is
supposed to have 0.1 inch of facing stock – and some raw
material parts do have this amount of stock. But others
have much more – say up to 0.5 inch facing stock.
The programmer may elect to program a series of
additional facing cuts to remove the excess material
with block delete codes. The operator is then told to
turn on the block delete switch if there is 0.1 inch
facing stock on a given workpiece. They are told to turn
it off if there is more than 0.1 inch facing stock.
Consider what will happen now if the
operator has the block delete switch in the wrong
position. There will be no safety issue if the switch is
turned off when a workpiece having 0.1 inch facing stock
is run. The machine will simply make more passes than
necessary. But if the operator has the block delete
switch turned on when they run a workpiece having 0.5
inch facing stock, the machine will try to machine all
of the facing stock in one pass.
At best, this may stall the spindle. Worse,
it’s likely that the workpiece will be pushed out of the
chuck – causing damage to the machine and possibly
injuring the operator.
So again, before you decide to use the
block delete function, always ask the question: “What is
the worst thing that can happen if the operator has the
switch in the wrong position?” If safety will be
compromised in the least, don’t use block delete.

Top of page
|
|
|
|
|
|
The Optional Stop newsletter
is published quarterly by CNC Concepts, Inc. and is distributed
free of charge to people subscribing to our (email) distribution
list and to those downloading it from our website (www.cncci.com).
Information is aimed at CNC users and instructors teaching live
CNC classes. All techniques given in this newsletter are
intended to help CNC people. However, CNC Concepts, Inc. can
accept no responsibility for the use or misuse of the techniques
given.
To subscribe:
Simply email us (newsletter@cncci.com) and let us know
you'd like to be added to our distribution list.
To
unsubscribe: Respond to this email, typing REMOVE in
the subject. Please accept our apologies if we have
disturbed you.
|
|
|
|