| Issue 82 |
Spring 2010 |
Copyright 2010, CNC Concepts, Inc. |
|
|
|
April 5, 2010
Dear Subscribers,
Welcome to Issue 82 of The Optional Stop
newsletter. This issue places an emphasis on turning centers
that have sub-spindles – both fixed and sliding headstock. I
hope you enjoy it.
We’re also spotlighting our on-line classes in the
product corner. They make a very affordable way to learn about
CNC metal cutting equipment. If you know someone who could
benefit from these classes, we’d appreciate it if you’d pass it
on. Again, enjoy!
Mike Lynch
|
|
|
|
Product Corner:
On-line CNC classes
To date we’ve had over 1,000 people attending our CNC
on-line classes. We’ve received countless positive
reviews, from people who are just wondering what working
with CNC would be like through people that have used our
materials as their only formal training about CNC.
Admittedly, many don’t actually finish the classes. Only
about 600 completion certificates have been awarded. The
price of these courses is low enough to allow people to
get their feet wet with CNC. Obviously, some people
won’t find this field to be their cup of tea. But at
least they’ve been able to determine this without having
spend too much time, money, or effort. And since the
courses are on-going and self-paced, they don’t have to
wait to begin.
We currently have six classes on-line:
Each class is made up of lessons. Students must complete
all lesson activities for one lesson before they can
move on to the next. Activities include downloading,
printing and reading the lesson text, viewing a
PowerPoint presentation, completing polls (in some
lessons), doing assignments, and taking tests. There are
also forums in which students can communicate with other
students. If a student has a question or problem, they
can call or email us.
Grading is done in percentage. Above about 92 percent
would be equivalent to an A, 85 to 91 a B, and 75 to 84
a C. If a student scores less than 70 percent, they are
asked to review the lesson material and retake the test
or redo the assignment. When they do, their score will
be updated. This way, they can’t fail the course –
though they can give up without completing.
A certificate of completion is available for an
additional price.
Read more about
our on-line classes.

Top of page
|
|
Instructor Note:
Developing appropriate test questions
An important part of
any learning environment is evaluation. Instructors
must, of course, be able to fairly and accurately assess
every student's understanding of presented material.
Testing is an important part of the assessment process.
There are several obvious types of questions that can be
included in any test. They include true/false, multiple
choice, fill-in-the-blank/s, and long answer (essay).
Some of these basic types can be categorized yet
further. With a fill-in-the-blank question, for example,
the student may be simply completing a sentence with a
word or phrase – or they may be working out a problem
before providing an answer.
From an instructor’s
viewpoint – at least in my opinion – the easiest type of
answers to grade are those for true/false and multiple
choice questions. Since the student will simply check a
box or draw a circle to answer, it is very easy to
determine whether they’ve answered correctly – and if
the question is developed properly, there should be no
gray area related to whether the answer is correct. An
instructor can grade these answers without having to
think much. Indeed, the instructor is not even required
in order to grade. Anyone can tell if an answer to a
true/false or multiple choice question is correct.
Unfortunately,
true/false and multiple choice questions can’t always
accurately assess a student’s understanding. With a
true/false question, for example, even if the student
doesn’t know the answer – and they guess – there’s a
fifty-fifty chance they’ll get it right. Though
percentages drop with multiple choice questions, the
same principle applies. And students can get pretty good
at sniffing out the correct answer – just by studying
the way a question is worded.
Though they require
more effort from the instructor – and not just anyone
can do the grading – questions that require an actual
answer from the student are better at assessing
understanding. Simply said, there’s no way to guess – at
least not in a way that makes any sense. So important
topics should included at least a few fill in the blanks
or long answer (essay) questions.
Trick questions
In my experience, a
student will consider just about any question they get
wrong to be a trick question. With my online classes,
for example, I’m constantly hearing that this question
or that is poorly worded – or that I’m somehow trying to
trick them into giving the wrong answer. When faced with
these situations, I try to judge on a case-by-case basis
(when time allows). If the student adequately
demonstrates a firm understanding, I’ll often give them
credit for the question. And if a large percentage of
students are getting the question wrong – and especially
when the are students doing very well in the class, I’ll
consider rewording the question.
Real-world versus
theory questions
During my machining
center programming class, one of the tests requires
students to calculate a series of coordinates for a
milling cutter’s tool path. When I created the drawing,
I didn’t draw it to scale. For four circular motion
arcs, the centerlines of the arcs happened to be in line
with the centerlines of four holes, meaning a student
could use the (incorrect) hole center coordinates to
calculate the starting and ending points for the
circular motions.
While this may be
considered somewhat unfair, it is a pretty good
representation of what design engineers do in the real
world (though I freely admit that it was more of a
mistake on my part). When a student made this mistake
for the first time, my first thought was that I should
redo the drawing. But after I thought about it, I
decided to leave it. If students consistently calculated
coordinates using the hole centers (incorrectly), I
don’t subtract much – but I do provide a lengthy
explanation about what they’re in for in the real world.
While a (very) few students have still thought this was
unfair, the vast majority actually thanked me for
providing such a good exercise.
So don’t be afraid to
combine real-world questions with theory-type questions.
Often a real-world question will leave a more lasting
impression on the student than a theory question.
Extension questions
While it may not be
fair to include these questions with those that are
actually graded, I like to include a few questions in
each test that push the student beyond what they’ve
learned from the presented material. That is, I like to
make them think for themselves about the topics being
presented. In many cases, answers to these questions
have not been presented. But based upon a student’s
knowledge of presented material, they should be able to
extrapolate or extend what they know to answer by
applying what they’ve learned to the question.
Here’s a simple
example. It has to do with tool length compensation on a
machining center. With the method I recommend, the
tool’s length is used as the tool length compensation
offset value. The distance from the spindle nose to the
program zero surface is used as the Z axis program zero
assignment value. We discuss how sizing and trial
machining are done – along with other important usage
tips for using this important feature.
One of the extension
questions I ask in the test for this material is “What
do you think will happen if you forget to enter a tool
length compensation value for a given tool – and its
tool length compensation offset register is currently
set to zero?” Again, this is not covered in the
presented material. But by knowing that when an tool
length compensation value is reduced, the tool will
machine deeper into the part (discussed as part of
sizing and trial machining), a student should be able to
figure out that if the offset value is zero, the machine
will think that the tool has a length of zero – and will
bring the spindle nose to the programmed surface. This,
of course, will crash the tool into the workpiece.

Top of page
|
|
Manager's Insight:
Why do machines sit idle?
Every time you walk the shop floor,
you should take note of which machines are running and
which ones aren’t. Ideally, you should find only two
reasons why a machine is sitting idle (other than having
no work for it). One: it’s in setup – and the setup
person is actively working to complete the setup. Two:
the operator is loading parts, and will be able to run
the next cycle immediately after doing so.
If you find other reasons why machines sit idle, it
should be taken as a signal that the machine is being
under-utilized. That is, it could producing more. It is
not living up to its full potential.
In the real world, this can be
difficult to achieve. We tend to place personnel
utilization (getting the most from our people) at a
higher priority than machine utilization (getting the
most from our machines). Machines often sit idle because
their waiting on people. It’s as simple as that.
Why are machines waiting for people?
We’ve probably heavily loaded setup people and operators
with many responsibilities. They’ve got so much to do
that they can’t keep up with the machines they run.
Operators, for example, probably have
to load and unload parts, clean and debur parts, measure
them, report to an SPC system, make offset adjustments,
do paperwork, and perform preventive maintenance on the
machine. Oh yeah – then we expect them to run two or
more machines.
Setup people, on the other hand, may
be responsible for several machines, and if two machines
complete a production run at the same time, one of them
– of course – will sit idle waiting for the setup person
to complete the setup on the other.
If and when you’re faced with
improving your company’s output (becoming more
productive), one great – and usually easy – way to get
better is to minimize or eliminate all but the two
reasons just given regarding why machines sit idle.

Top of page
|
|
G Code Primer:
Running multiple parts from a bar with a sub-spindle
machine
Suggested by
Troy Hubert of Cox Manufacturing
In past issues of this newsletter, we
have addressed this topic for chucker-type CNC turning
centers. With very short workpieces (like washers), it
is often advantageous to run several parts from a slug.
That is, after loading the raw material long enough to
run, say, five workpieces, the machine will run one
workpiece and then cut it off. It will repeat this four
more times.
Programming this kind of operation is
pretty simple using the work shift function. A main
program (which is the controlling program), simply sets
the work shift value in Z to zero, then calls a
subprogram with five repeats. The subprogram completely
machines a part and then incrementally modifies the Z
axis work shift by an amount equal to the workpiece
length plus facing stock plus cutoff tool width. The
main program will look like this:
O0001 (Main)
N005 G10 P0 Z0 (Set work shift Z to zero)
N010 M98 P1000 L5 (Run five parts)
N015 M30
At the end of the sub-program, this command will modify
the work shift:
N205 G10 P0 W-0.285 (Modify work shift)
N210 M99 (End of sub-program)
W-0.285 incrementally changes the work shift Z value.
Note that with some machines, this may have to be a
positive value.
Again, this is pretty simple to do when the machine has
only one spindle. But it gets much more complicated when
the machine has a sub-spindle, and when there are
operations to be performed on the sub-spindle side.
Consider these main programs for a Miyano fixed
headstock machine (they machine ten workpieces per
pull-out):
O0700( MAIN SPINDLE MAIN PROGRAM )
M900
G28U0
G30W0
M902
N101 G10P0Z0(WORK SHIFT CANCEL)
N1
T1111M8(OD FORM TOOL)
G0G99Z-1.229M28
X2.5M108
M904(WAIT FOR FEEDOUT)
M91(MAIN SPINDLE ENCODER ON)
G97M3S800
X.765
G1X.665F.003
G0X.685
X.67
G1X.645F.003
X.65
X.6406F.002
G0X.642
G4X.2
G1X.6406F.0015
G4X.02
G0X2.5
Z2.0
T0
N2
T0101M91(DRILL)
G97G99S4000M3
G0Z0.5
X-2.753(SPOT)
Z.02
G1Z-.075F.002
G0Z.1
X0(DRILL)
Z0.
G1Z-.875F.004
G0Z.1
Z-.855
G1Z-1.25F0.004
G0Z.5
T0
M906
M908(1ST PART)
M910
M98P1000
M912
N102 G10P0W.1229(2ND PART)
M914
M98P1000
M916
N103 G10P0W.1229(3RD PART)
M918
M98P1000
M920
N104 G10P0W.1229(4TH PART)
M922
M98P1000
M924
N105 G10P0W.1229(5TH PART)
M926
M98P1000
M928
N106 G10P0W.1229(6TH PART)
M930
M98P1000
M932
N107 G10P0W.1229(7TH PART)
M934
M98P1000
M936
N108 G10P0W.1229(8TH PART)
M938
M98P1000
M940
N109 G10P0W.1229(9TH PART)
M942
M98P1000
M944
N110 G10P0W.1229(10TH PART)
M946
M98P1000
N111 G10P0Z0(WORK SHIFT CANCEL)
G97S100
M25
M948
T1100
/M98P9001
M999
M30
O0700( SUBSPINDLE
MAIN PROGRAM )
M900
G28U0B0
G28W0
G0B-2.5
M902
N101 G10P0Z0(WORK SHIFT CANCEL)
N1
T0101M91(FEEDOUT)
G97M3S100
G0G99Z.2
X0
Z0.
M17(COLLET OPEN)
G4X.5
M18(COLLET CLOSE)
G4X.5
Z.1
G28U0.0
T0
M904
T0900
M906
M908(1ST PART)
M910
M98P2000
M230
W-.1229
M231
M912
N102 G10P0W.2458(2ND PART)
M914
M98P2000
M230
W-.1229
M231
M916
N103 G10P0W.1229(3RD PART)
M918
M98P2000
M230
W-.1229
M231
M920
N104 G10P0W.1229(4TH PART)
M922
M98P2000
M230
W-.1229
M231
M924
N105 G10P0W.1229(5TH PART)
M926
M98P2000
M230
W-.1229
M231
M928
N106 G10P0W.1229(6TH PART)
M930
M98P2000
M230
W-.1229
M231
M932
N107 G10P0W.1229(7TH PART)
M934
M98P2000
M230
W-.1229
M231
M936
N108 G10P0W.1229(8TH PART)
M938
M98P2000
M230
W-.1229
M231
M940
N109 G10P0W.1229(9TH PART)
M942
M98P2000
M230
W-.1229
M231
M944
N110 G10P0W.1229(10TH PART)
M946
M98P2000
N111 G10P0Z0(WORK SHIFT CANCEL)
T1010(EMPTY PART CATCHER)
G28U0.
G0Z-1.0
M9(COOLANT OFF)
M29(HPC OFF)
M35(ROTATE TURRET TO DROP PART)
M115(ROTATE TURRET CLOCKWISE ONLY)
G4X1.0
G28W0.0
G28B0.
M8
M28
T0100M105
M948
/M98P9001
M999
M30
In both main programs, N101 sets the Z axis work shift
value to zero. Lines N101, N102, and so on, increment
the work shift value by the workpiece length plus the
cutoff tool width plus the facing stock for each
successive part. Now let’s look at the sub-programs.
O1000
( HEAD 1 SUB PROGRAM )
T2121M191(BACK DEBUR DRILL)
G97S3000M103
G0G99Z-.5
X0
Z0.
G1Z.042F.003
G4X.2
G0Z-.5S1000
G28U0.
T0
T1212(INDEX CUTOFF)
G0Z-.1229
M901(WAIT FOR EJECT AND FACE)
M902(EJECT AND FACE COMPLETE)
M91
G97M3S3000
M903
M904(WAIT FOR PICKOFF-HEAD 2)
G0X.707
G1G99X-.04F.003
M905
M906
G28U0.
G28W0.
T0
M99
O2000
( HEAD 2 SUB PROGRAM )
T0909M91(FACE/BORE)
G97M3S4000
G0G99Z.2
X.12
G4X.5
Z.02
G1Z-.0467F.008
X.122
Z-.0315F.001
X.1895Z.0074F.0005
G4X.2
X.159F.01
Z-.0035
X.72Z0F.0025
G0Z2.0
G4X.2
M3S2000
T0
M901(READY FOR EJECT)
N3
T1010M191(PART CATCHER)
M104S100G0G99Z0
X0.
M230
W-5.46
M231
M117(EJECT PART)
G4X.5
M230
W5.46
M231
G28U0
G28W0
T0
M902(EJECT COMPLETE)
M903(WAIT FOR CUTOFF-HEAD 1)
M191
M104S3000
M117
G4X.2
M230
G0W-12.03
G1G98W-.045F99.(PICKOFF LOCATION)
G4X.2
M118
G4X.2
M904(START CUTOFF)
M905
G0W.075
M906
W12.0
M231
T0
M99
Notice that neither sub-program does any work shifting
for the Z axis. This is completely done by the main
programs. While this technique is much more complicated
to use with sub-spindle machines, at least it is
possible.

Top of page
|
|
Macro Maven:
A custom macro A program to safely check and position a
cutoff tool
by George
Bahn
About 10 years ago we purchased a
couple of Tsugami’s SX20 sliding-headstock machines.
These machines require 2 programs to produce one part
(one for the main, one for the sub). The beginning of
the programs are simple and relies on the setup person
to make sure the cut off is in the correct location for
machining. The first operation is for the headstock to
open the collet, drop back the proper amount that will
allow enough material for machining and the close the
collet. If the cut off is not in front of the stock, the
material will shoot right out of the guide bushing when
the collet open up. After recovering from several
crashes because of this, I decided to write my first
macro program. I call it up in the main program as a
subprogram. It checks the position of the cutoff and
will place it in the right position in a safe manor.
Main program:
O1354(Main program number)
B2354 (sub program)
M98P9001 (macro program call)
N10( program START UP)
.
.
.
M30
Custom macro (version A format):
O9001 ( CHECK FOR CUTOFF POSITION)
(H01 = DEFINITION OF VARIABLE)
(H80 = GOTO )
(H82 = DOES NOT EQUAL )
(H83 = PERFORMS GREATER THEN OPERATION )
(P# = VARIABLE WHICH HOLDS RESULT OF FUNCTION )
(Q# = FIRST VARIABLE THAT HAS INFORMATION STORED IN OR A
CONSTENT NUMBER)
(R# = SECOND VARIABLE THAT HAS INFORMATION STORED IN OR
CONSTENT NUMBER)
(VARIABLES CAN NOT HAVE DECIMAL POINTS)
(EXAMPLE 1 = .00001 SO 10000 = .10000)
G65 H82 P998 Q#4120 R1414 (4120 = CURRENT T CODE)
( IF CURRENT TOOL DOES NOT EQUAL CUTOFF THEN GOTO N998)
G65 H01 P#500 Q#5041 (#500 = 5041 (CURRENT X POSITION)
G65 H01 P#501 Q-5000 (#501= END CUTOFF POS (-.050)
G65 H83 P998 Q#500 R#501 (IF #500>#501 GOTO N998)
G65 H80 P999 (GOTO N999)
N998 (IF NOT IN POSITION, C/O THEN RETURN TO MAIN)
T0 (CANCEL TOOL OFFSETS)
G28 U0
G50 X2.2834 (TOOL HOME )
M10
M51 (CANCEL C AXIS)
T1414 (CUT OFF TOOL)
M13 S1500 (SPINDLE/COOLANT ON)
G50 U0 W-0.711 (CUT OFF OFFSET)
G0 X0.9 (RAPID INTO Safe POSITON )
G99 G1 X-0.05 F0.0015 (CUT OFF )
G50 U0 W0.711 (CANCEL OFFSET )
N999
M99 (RETURN TO MAIN)
The above program shows how I create
a custom macro with all the explanations included. I
thought if someone would ever want to know what was
going on all they needed to do was read.
Editor’s note: Most programmers will easily
agree that custom macro B is much more powerful and
helpful than custom macro A. Indeed, many have given up
on custom macro A since it is so limited. But as this
application shows, custom macro A can be very helpful –
if you take the time to learn it. Thanks to George Bahn
for this helpful program.

Top of page
|
|
Parameter
Preference: More on parameters that can be set by G10
commands
Admittedly, we’ve
addressed this topic before. As you know, there are many
program-related parameters that can be modified by a G10
command in a program. Indeed, any time you wish to
change a program-related parameter from within a
program, you can do so with G10. Here is the format:
G10 L50
Nxxxx Rxxxx
Nxxxx Rxxxx
G11
G10 L50 places the machine in the parameter entry mode.
The N word in each line specifies the parameter number
and the R words in each line specifies its value. You
can modify as many parameters as you wish by simply
listing more commands with N and R words. When finished
setting parameters, the G11 cancels the parameter entry
mode.
What you may not know
(and the reason we’re revisiting this topic) is that
some machine tool builders use a series of parameters
for special offset applications. With a Tsugami sliding
headstock turning center, for example, Tsugami uses a
series of parameters in the 9200 series to specify the
program zero point for the A axis. (The A axis for this
machine is like the Y axis for other live tooling
lathes. It provides the ability to machine in a
direction that is perpendicular to the XZ plane.) These
parameters work exactly like geometry offsets. That is,
they specify the distance from the A axis zero return
position to the centerline of a live tool.
To
set these “offsets” by a programmed command, you must
use the parameter entry function of G10. If you with to
set live tool number one’s geometry offset to -2.1652
(from a program), these commands will do so.
G10 L50
N9201 R-2.1652
G11
Note that some parameters do not
allow a decimal point for the R word, meaning you’ll
have to use the fixed format if they does not:
G10 L50
N9201 R-21652 (Fixed format for -2.1652 inches)
G11I
Top
of page
|
|
Safety First: Make
all sizing adjustments with offsets
One of my cardinal rules is that
all sizing adjustments should be done with offsets.
However, I do – from time to time – see operators making
sizing adjustments by changing programs.
I’m normally speaking from an
efficiency standpoint; sizing adjustments with offsets
can be done while the machine is in cycle. Modifying a
program requires the machine to be stopped. But there
can be a safety issue here too. Modifying programs
requires more skill – and if mistakes are made – the
results could be disastrous.
While mistakes can be made when
modifying offsets, the danger is not nearly as great.
Operators change offsets for the purpose of sizing on a
very regular basis – and they get good at it.
Applications for which operators elect to modify
programs are pretty scarce. Possibly tool pressure is
causing a turned diameter to be a given diameter at one
end and another diameter at the other (taper is being
induced). This is an application that can be easily
handled with offsets that some operators elect to handle
with program modifications. And again, since it isn’t
something they do on a regular basis, some of your
operators may not be very good at it.

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.
|
|
|
|