0% found this document useful (0 votes)
181 views

MTB Tech Blog

THANK YOU

Uploaded by

이종훈
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
181 views

MTB Tech Blog

THANK YOU

Uploaded by

이종훈
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 41

2016.12.5.

MTBTechBlog

HOME | SEARCH | REGISTERRSS | MYACCOUNT | EMBEDRSS | SUPERRSS | ContactUs |

TBTechBlog

http://www.mtbtech.net/blog/rss.xml

Areyouthepublisher?Claimor
contactusaboutthischannel

BrowsingtheLatest
Snapshot

Embedthis
contentinyour
HTML

BrowseAllArticles(24
Articles)

Live
Browser

ChannelDescription:

MTBTechBlog

Search
Reportadultcontent:

clicktorate

09/08/1414:12:5Axis
MachiningDemystifiedPartFour

Account:(login)

MoreChannels

Showcase
RSSChannelShowcase8565473
RSSChannelShowcase1505617
RSSChannelShowcase2497775
RSSChannelShowcase1739077

ChannelCatalog
SubsectionCatalog

ArticlesonthisPage
(showingarticles1to10of

In our last segment we dealt more specifically with the


machine kinematics and calculating the X,Y,Z coordinates for
5Axis Profiling Head CNC Machining Center. We also learned
how to calculate the Inverse Time Feedrates for continuous 5
Axis motion. We are now ready to learn about calculating the
X,Y,Z coordinates for an entirely different kinematic
configuration A Table/Table or DualRotary Table CNC
Machining Center.

With aDualRotary Table Machine, the rotary axes move to


position the workpiece so as to align a defined tool vector to
the spindle axis. This type of machine has a fixed spindle that
is always parallel to the ZAxis and perpendicular to (normal
to) the XY Plane.

The most common type of DualRotary Table Machine is one


that uses a DualRotary Trunnion configuration. Depending
upon the size of the trunnion, it may be possible to align the
Primary Mechanical Rotary Axis with either the XAxis or YAxis
of the Machine Tool. For our examples we will be using a Dual
Rotary Trunnion that has the Primary Mechanical Rotary Axis
aligned with the XAxis of the Machine Tool.

10)

09/08/1414:12:_5Axis
MachiningDe...
07/20/1510:41:_SIEMENSVector
prog...
07/20/1510:45:_FYItoPost
Process...
10/09/1506:40:_SIEMENSCIP
Arcs...
http://salzhauer27.rssing.com/chan14598779/latest.php

1/41

2016.12.5.

MTBTechBlog

01/19/1606:41:_FANUCG68.2
5Axi...
01/28/1607:51:_CreatingFANUC
Cust...
02/07/1618:21:_SIEMENS
CYCLE800...
02/09/1617:19:_SIEMENS
ManualVe...
06/07/1600:39:_CAMSoftware

The Primary Mechanical Axis of Rotation for a DualRotary


Table Configuration is SECONDARY Mathematically. This means
that the SECONDARY MECHANICAL Angle is actually calculated
FIRST. The Secondary Mechanical Axis of Rotation for a Dual
Rotary Table Configuration is PRIMARY Mathematically. This
means that the PRIMARY MECHANICAL Angle is calculated
AFTER the SECONDARY MECHANICAL Angle. This inverse
mathematical relationship differs from a Profiling Head
calculation because a DualRotary Table Configuration rotates
the WORKPIECE and not the Tool Spindle Axis.

Vendor...
10/06/1613:45:_FANUCG43.5
RTCPTy...
(showingarticles1to10of
10)

DualRotary Configurations

A DualRotary Trunnion has an advantage not available to


Profiling Head configurations. A DualRotary Trunnion can be
setup to use two different Home Reference Positions. In our
case, the Primary Mechanical Rotary Axis is aligned with the X
Axis of the Machine. That is, the centerline of its rotation is
parallel to the XAxis. The Primary Mechanical Rotary Axis will
use the letter address 'A' for the rotary angle of this axis. The
letter address for the Secondary Mechanical Rotary Axis will
depend on the Home Reference Position we use. For our
examples we will illustrate the calculations for both.
In an A/B DualRotary Trunnion, the Secondary Mechanical
Rotary Axis is aligned with the YAxis. That is, the centerline
of its rotation is parallel to the YAxis. This configuration will
use the letter address 'B' for the rotary angle of this axis.

In an A/C DualRotary Trunnion, the Secondary Mechanical


Rotary Axis is aligned with the ZAxis. That is, the centerline
of its rotation is parallel to the ZAxis. This configuration will
use the letter address 'C' for the rotary angle of this axis.

http://salzhauer27.rssing.com/chan14598779/latest.php

2/41

2016.12.5.

MTBTechBlog

The A/C configuration is the more natural configuration for a


DualRotary Trunnion as the limits for the AAxis are generally
symmetrical. The A/B configuration is most often used to
accommodate part sizes within a limited machine envelope.
We will start with the A/B Configuration.
ISO Standard Rotation Directions
Aaxis rotates in the plus direction CCW about the Xaxis.
Baxis rotates in the plus direction CCW about the Yaxis.
Caxis rotates in the plus direction CCW about the Zaxis.

A/B DualRotary Trunnion Configuration Calculations

For the sake of simplicity, we will be performing the


calculations necessary to perform a canned drilling cycle at the
proper X,Y,Z location and rotary axis positions.

CalculateRotaryAnglesfromVectorComponents
(AMechanicalPrimary/BMechanicalSecondary)
TheAAxisrotatesabout(parallelto)theXaxis.
TheBAxisrotatesabout(parallelto)theYaxis.
VectorComponentI=0.48038447
VectorComponentJ=0.83205029
VectorComponentK=0.27735010

IFVectorK>0.0Then
'VectorKisabovehorizonofXYPlane

http://salzhauer27.rssing.com/chan14598779/latest.php

3/41

2016.12.5.

MTBTechBlog

AngleB=ATN(VectorI/VectorK)*(1)
AngleB=ATN(0.48038447/0.27735010)*(1)
AngleB=ATN(1.73205082)*(1)
AngleB=60.000*(1)
AngleB=60.000(Roundedto3places)

AngleA=ATN((VectorJ/VectorK)*COS(Angle
B))
AngleA=ATN((0.83205029/0.27735010)*
COS(60.000))
AngleA=ATN(2.99999996*0.5)
AngleA=ATN((2.99999996)*COS(60.000))
AngleA=ATN(1.49999998)
AngleA=56.310(Roundedto3places)

ELSEIFVectorK=0.0Then
'VectorKisathorizonofXYPlane

'PreventDivisionbyZeroErrorby
'Assigningthesmallestnonzerodouble
precisionvalue
VectorK=0.0000000000000001
AngleB=ATN(VectorI/VectorK)*(1)
AngleA=ATN((VectorJ/VectorK)*
COS(AngleB))

ELSE
'VectorKisbelowhorizonofXYPlane

'+180.0adjustmentindicatesVectorK
belowhorizonofXYPlane
AngleB=ATN(VectorI/Vector
K)+180.0)*(1)
AngleA=ATN((VectorJ/VectorK)*
COS(AngleB))

ENDIF

CalculateIntermediateLocationPoint

We now have the Rotary Axis Angles needed for performing our
Drilling Cycle. Our next set of calculations will be calculating
the X,Y,Z location of the hole to be drilled. We start with the
initial X,Y,Z location in our Cutter Location Data generated by
our CAM System. This data is PRIOR to any rotation. Keep in
mind that all our X,Y,Z locations are referencing the Center of
Rotation The intersection point of the rotary axis center
lines.

HoleLocationinCLData
http://salzhauer27.rssing.com/chan14598779/latest.php

4/41

2016.12.5.

MTBTechBlog

X=1.93730251
Y=6.23427374
Z=1.67372321

Since our A/B Rotary Axis Configuration requires that we first


calculate our BAxis Angle, we need to first calculate the X,Y,Z
location of the intermediate point that results from the BAxis
rotation. Because we are rotating only the BAxis at this point,
only the X,Z Coordinates will change. Therefore, we can limit
our calculations to the XZ Plane (G18).
Our first calculation required is to establish the distance from
the center of rotation to our initial CL point. This distance is
the hypotenuse of the triangle in the XZ Plane. We calculate
this distance via the Pythagorean Theorem. That is we can
solve our triangle by the following formula.

Hypotenuse=SQRT(X+Z)
Hypotenuse=2.5601739
Our next calculation is the included angle of our triangle.

IncludedAngle=ATN(Z/X)
IncludedAngle=
ATN(1.67372321/1.93730251)
IncludedAngle=ATN(0.86394520)
IncludedAngle=40.825(Rounded
to3Places)

We can now calculate the X,Y,Z location of the intermediate


point that results from the BAxis rotation.
NOTE:CalculationsfromFrontViewofXZPlane

IntermediateX=Hypotenuse*COS(Included
Angle+ABS(AngleB))
IntermediateX=2.5601739*COS(40.825+60.0)
IntermediateX=2.5601739*COS(100.825)
IntermediateX=2.5601739*0.18781363
IntermediateX=0.48083556

IntermediateY=YCLPoint
IntermediateY=6.23427374

IntermediateZ=Hypotenuse*SIN(Included
Angle+ABS(AngleB))
IntermediateZ=2.5601739*SIN(40.825+60.0)
IntermediateZ=2.5601739*SIN(100.825)
IntermediateZ=2.5601739*0.98220539
IntermediateZ=2.51461662

http://salzhauer27.rssing.com/chan14598779/latest.php

5/41

2016.12.5.

MTBTechBlog

IntermediatePoint
X0.48083556,Y6.23427374,Z2.51461662

CalculateFinalLocationPoint

We are now ready to calculate the final X,Y,Z locationof the


hole to be drilled. Since we have already accounted for the B
Axis rotation, we will now apply the AAxis rotation. Because
we are rotating only the AAxis this time, only the Y,Z
Coordinates will change. Therefore, we can limit our
calculations to the YZ Plane (G19).

Our first calculation required is to establish the distance from


the center of rotation to our intermediate point. This distance
is the hypotenuse of the triangle in the YZ Plane. We calculate
this distance via the Pythagorean Theorem. That is we can
solve our triangle by the following formula.

Hypotenuse=SQRT(Y+Z)
Hypotenuse=6.72231104

Our next calculation is the included angle of our triangle.

IncludedAngle=ATN(Z/Y)
IncludedAngle=
ATN(2.51461662/6.23427374)
IncludedAngle=ATN(0.40335357)
IncludedAngle=21.967(Roundedto3
Places)

We can now calculate the Final X,Y,Z location of the hole to be


drilled.
NOTE:CalculationsfromRightViewofYZPlane

FinalX=IntermediateXPoint
FinalX=0.48083556

FinalY=Hypotenuse*COS(IncludedAngle+
AngleA)
FinalY=6.72231104*(COS(21.96756.310)*1)
FinalY=6.72231104*(COS(78.277)*1)
FinalY=6.72231104*0.20318036
FinalY=1.36584157

http://salzhauer27.rssing.com/chan14598779/latest.php

6/41

2016.12.5.

MTBTechBlog

FinalZ=Hypotenuse*SIN(IncludedAngle+
AngleA)
FinalZ=6.72231104*(SIN(21.96756.310)*1)
FinalZ=6.72231104*(SIN(78.277)*1)
FinalZ=6.72231104*0.97914132
FinalZ=6.58209250

FinalHoleLocationPoint
X0.48083556,Y1.36584157,Z6.58209250

NCCodeforDrillCycle

(X,Y,A,BRAPIDPOSITIONING)
G00G90X0.4808Y1.3658A56.310B60.0
(RAPIDTO2.0ABOVEHOLELOCATION)
Z8.5821
(DRILL2.0DEEPHOLE/RPLANE=0.1ABOVETOPOFHOLE)
G81G98X0.4808Y1.3658Z4.5821R6.6821F10.0

We are now ready to perform the calculations for the second


configuration. The A/C configuration is the more natural
configuration for a DualRotary Trunnion as the limits for the
AAxis are generally symmetrical. The A/B configuration is
most often used to accommodate part sizes within a limited
machine envelope.

A/C DualRotary Trunnion Configuration Calculations

http://salzhauer27.rssing.com/chan14598779/latest.php

7/41

2016.12.5.

MTBTechBlog

CalculateRotaryAnglesfromVectorComponents
(AMechanicalPrimary/CMechanicalSecondary)
TheAAxisrotatesabout(parallelto)theXaxis.
TheCAxisrotatesabout(parallelto)theZaxis.
VectorComponentI=0.48038447
VectorComponentJ=0.27735010
VectorComponentK=0.83205029

IFVectorK>0.0Then
'VectorKisabovehorizonofXYPlane

'PreventDivisionbyZeroErrorby
'Assigningthesmallestnonzerodoubleprecision
value
IFVectorJ=0.0Then
VectorJ=0.0000000000000001
ENDIF

AngleC=ATN(VectorI/VectorJ)
AngleC=ATN(0.48038447/0.27735010)
AngleC=ATN(1.73205082)
AngleC=60.000
AngleC=60.000(Roundedto3places)

AngleA=ATN((VectorJ/VectorK)/COS(Angle
C))
AngleA=ATN((
0.27735010/
0.83205029)/COS(60.000))
AngleA=ATN((0.33333333)/COS(60.000))
AngleA=ATN(0.33333333/0.5)
AngleA=ATN(0.66666666)
AngleA=33.690(Roundedto3places)

ELSEIFVectorK=0.0Then
'VectorKisathorizonofXYPlane

'PreventDivisionbyZeroErrorby
'Assigningthesmallestnonzerodouble
precisionvalue
http://salzhauer27.rssing.com/chan14598779/latest.php

8/41

2016.12.5.

MTBTechBlog

VectorK=0.0000000000000001

IFVectorJ=0.0Then
VectorJ=0.0000000000000001
ENDIF

AngleC=ATN(VectorI/VectorJ)
AngleA=ATN((VectorJ/VectorK)/
COS(AngleC))

ELSE
'VectorKisbelowhorizonofXYPlane

IFVectorJ=0.0Then
VectorJ=0.0000000000000001
ENDIF
'+180.0adjustmentindicatesVectorK
belowhorizonofXYPlane
AngleC=ATN(VectorI/VectorJ)
AngleA=ATN((VectorJ/VectorK)/
COS(AngleC+180))

ENDIF

CalculateIntermediateLocationPoint

We now have the Rotary Axis Angles needed for performing our
Drilling Cycle. Our next set of calculations will be calculating
the X,Y,Z location of the hole to be drilled. We start with the
initial X,Y,Z location in our Cutter Location Data generated by
our CAM System. This data is PRIOR to any rotation. Keep in
mind that all our X,Y,Z locations are referencing the Center of
Rotation The intersection point of the rotary axis center
lines.
HoleLocationinCLData
X=1.93730251
Y=1.67372321
Z=6.23427374

Since our A/C Rotary Axis Configuration requires that we first


calculate our CAxis Angle, we need to first calculate the X,Y,Z
location of the intermediate point that results from the CAxis
rotation. Because we are rotating only the CAxis at this point,
only the X,Y Coordinates will change. Therefore, we can limit
our calculations to the XY Plane (G17).

http://salzhauer27.rssing.com/chan14598779/latest.php

9/41

2016.12.5.

MTBTechBlog

Our first calculation required is to establish the distance from


the center of rotation to our initial CL point. This distance is
the hypotenuse of the triangle in the XY Plane. We calculate
this distance via the Pythagorean Theorem. That is we can
solve our triangle by the following formula.
Hypotenuse=SQRT(X+Y)
Hypotenuse=2.5601739

Our next calculation is the included angle of our triangle.


IncludedAngle=ATN(Y/X)
IncludedAngle=
ATN(1.67372321/1.93730251)
IncludedAngle=ATN(0.86394520)
IncludedAngle=40.825(Rounded
to3Places)

We can now calculate the X,Y,Z location of the intermediate


point that results from the CAxis rotation.

NOTE:CalculationsfromTopViewofXYPlane
IntermediateX=Hypotenuse*COS(Included
Angle+AngleC)
IntermediateX=2.5601739*COS(40.825+60.0)
IntermediateX=2.5601739*COS(100.825)
IntermediateX=2.5601739*0.18781363
IntermediateX=0.48083556

IntermediateY=Hypotenuse*SIN(Included
Angle+AngleC)
IntermediateY=2.5601739*SIN(40.825+60.0)
IntermediateY=2.5601739*SIN(100.825)
IntermediateY=2.5601739*0.98220539
IntermediateY=2.51461662

IntermediateZ=ZCLPoint
IntermediateZ=6.23427374

IntermediatePoint
X0.48083556,Y2.51461662,Z6.23427374

CalculateFinalLocationPoint

http://salzhauer27.rssing.com/chan14598779/latest.php

10/41

2016.12.5.

MTBTechBlog

We are now ready to calculate the final X,Y,Z location of the


hole to be drilled. Since we have already accounted for the C
Axis rotation, we will now apply the AAxis rotation. Because
we are rotating only the AAxis this time, only the Y,Z
Coordinates will change. Therefore, we can limit our
calculations to the YZ Plane (G19).
Our first calculation required is to establish the distance from
the center of rotation to our intermediate point. This distance
is the hypotenuse of the triangle in the YZ Plane. We calculate
this distance via the Pythagorean Theorem. That is we can
solve our triangle by the following formula.
Hypotenuse=SQRT(Y+Z)
Hypotenuse=6.72231104

Our next calculation is the included angle of our triangle.


IncludedAngle=ATN(Z/Y)
IncludedAngle=
ATN(6.23427374/2.51461662)
IncludedAngle=ATN(2.47921440)
IncludedAngle=68.033(Roundedto3
Places)

We can now calculate the Final X,Y,Z location of the hole to be


drilled.

NOTE:CalculationsfromRightViewofYZPlane
FinalX=IntermediateXPoint
FinalX=0.48083556

FinalY=Hypotenuse*COS(IncludedAngle+
AngleA)
FinalY=6.72231104*COS(68.033+33.690)
FinalY=6.72231104*COS(101.723)
FinalY=6.72231104*0.20318036
FinalY=1.36584157

FinalZ=Hypotenuse*SIN(IncludedAngle+
AngleA)
FinalZ=6.72231104*SIN(68.033+33.690)
FinalZ=6.72231104*SIN(101.723)
FinalZ=6.72231104*0.97914132
FinalZ=6.58209250

FinalHoleLocationPoint
X0.48083556,Y1.36584157,Z6.58209250

http://salzhauer27.rssing.com/chan14598779/latest.php

11/41

2016.12.5.

MTBTechBlog

NCCodeforDrillCycle

(X,Y,A,CRAPIDPOSITIONING)
G00G90X0.4808Y1.3658A33.69C60.0
(RAPIDTO2.0ABOVEHOLELOCATION)
Z8.5821
(DRILL2.0DEEPHOLE/RPLANE=0.1ABOVETOPOFHOLE)
G81G98X0.4808Y1.3658Z4.5821R6.6821F10.0

We now have the final X,Y,Z location for our hole to be drilled.
We have used the same part, mounted to our rotary table the
same way but in two different rotary axis configurations with
two different home reference positions. The one common
element is the center of rotation. The net effect of this is that
the hole location is calculated to be at the exact same X,Y,Z
position, regardless of the method used.

If the part to be machine was NOT mounted to our rotary table


the same way for both configurations, then the final X,Y,Z
position would NOT be the same.

The last important point to make note of is that each rotary


configuration will require its own separate CAM PostProcessor.
This will ensure that all rotary angles and coordinates in NC
code will be correct for the given machine and dualrotary
kinematics.

In future segments we will deal with rotary configurations that


combine both a nutating head and a rotary table.

http://salzhauer27.rssing.com/chan14598779/latest.php

07/20/1510:41:SIEMENSVector

12/41

2016.12.5.

MTBTechBlog

07/20/1510:41:SIEMENSVector
programmingfor5Axis

5Axis machining has become more prevalent with the advent


of newer machine tool technology and the increased power of
CAM systems for programming. When programming a 5Axis
CNC Machine Tool, the issue always boils down to getting the
postprocessor of a given CAM system to properly support the
kinematics of the machine tool.
The CAM system must be able to provide the necessary angular
values for the rotary axes. This issue can become complex
when dealing with the issues of analyzing and choosing the
proper rotary solution for a given toolpath.
For example, a C/A Gantry Head has two solutions for every
position other than A0. C0.0. Meaning, for the same position
and orientation, two sets of axis data can be evaluated. That
is, C=45, A=30 is the same orientation as C= 135 , A= 30.
Many CAM systems do not have the inherent 'intelligence' in
their postprocessors to make this choice. This can become a
problem if the intended CNC Control is not capable of being set
to bias for the solution with the smallest actual motion. CAM
systems will also have issues the closer any given rotary axis
comes to a singularity.
For the purposes of CNC Machining, a singularity occurs when
there is an infinite number of solutions for a given tool vector
orientation. For example, when we have A0.0 C0.0, our tool
vector has an infinite number of CAxis positions that will
satisfy the orientation.
Mathematically, a Tool Vector is represented by its component
values that are relative to the linear X, Y and Z axes. These
component values typically use the addresses I, J and K. The
relationship of the vector component is defined as the
directional cosine. The directional cosines of a vector are the
cosines of the angles between the vector and the three
coordinate axes.

http://salzhauer27.rssing.com/chan14598779/latest.php

13/41

2016.12.5.

MTBTechBlog

Normally, CAM system postprocessors use the tool vector data


to calculate the required rotary axis angle. However, as
previously stated, this calculation can become problematic for
certain CAM systems.
To deal with these problems, CNC controls are becoming more
'intelligent'
The SIEMENS 840D sl is one such control that has some unique
abilities when it comes to the actual NC code syntax.
The SIEMENS 840D sl is capable of processing the tool vectors
directly instead of explicit rotary axis angles. The SIEMENS
format for using the tool vector in the NC code is A3= xxxx
B3=xxxx C3=xxxx . A3, B3 & C3 are simply the SIEMENS
designation of the typical I,J & K vector designation.
When coupled with the use of the SIEMENS TRAORI function
(RTCP), an NC program can be created that actually takes
advantage of singularities and machine kinematics.
For certain types of 5axis machines, the physical rotary axis
limits can also be problematic for a CAM postprocessor. It is
quite typical to find 5Axis heads where the spindle axis is
actually offset from the Caxis centerline. It is common to see
the rotary axis limits for a C/A Gantry Head of C+90.0/C450.0
on a CNC Router.
Whenever any angle would go beyond the limits, an unwind
sequence would need to be generated before that overtravel
occurs.
By using the SIEMENS Vector format, it is possible to effectively
eliminate the need for an unwinding sequence. Using our C/A
Gantry Head with limits of C+90.0/C450.0 we can see we have
a total rotary axis travel of 540 degrees. If we preposition our
Caxis to C180.0 prior to activating TRAORI and then using the
SIEMENS Vector format for our NC code, we now have
effectively changed our CAxis to be symmetrical with +/270
degrees of effective travel.

In the above example, we have prepositioned the CAxis,


activated TRAORI and then positioned to an X,Y,Z location with
a Tool Vector of 0,0,1 . If we had our CAM system generate
rotary axis angle instead of vectors, we would normally expect
to see A0.0 C0.0 for a vector of 0,0,1 . However, by using the
SIEMENS Vector format, we have actually taken advantage of
the CAxis singularity.
http://salzhauer27.rssing.com/chan14598779/latest.php

14/41

2016.12.5.

MTBTechBlog

We can now generate a 5axis toolpath with a complete sweep


of 360 degrees of travel in the Caxis, in either direction,
without generating an overtravel and an unwind sequence.

An additional benefit to the SIEMENS Vector format is that it is


not limited to 5Axis and it will support arcs. The vector data is
also modal. Meaning that if a tool vector doesn't change, no
additional vector address output is required.
However, there is an important rule regarding the modality of
the vector values.
The vectors must all be output together. Mathematically, all
three vector components are related. That relationship is
defined by the following equation.
SQRT (A3 + B3 + C3) = 1
Other things to consider when using the SIEMENS Vector format
is the resolution of the vector data. SIEMENS recommends that
a minimum resolution when programming in INCH units for
X,Y,Z and CR should be 5 decimal places.
A minimum resolution for the vectors themselves should be 6
decimal places.
The extra decimal for XYZ and CR in an INCH unit program
insures the most accurate and smooth High Speed motion while
using TRAORI. Additionally, while we are using vectors in our
NC program, the CNC Control is still calculating the rotary axis
angles, monitoring and displaying them during operation and
simulation. By allowing the CNC control to make its
calculations using the most accurate vector data will result in a
more accurate calculation of an angular addresses and more
accurate positioning.

To sum up, the Vector format of the SIEMENS 840D sl is an


advanced tool that provides a great deal of programming
http://salzhauer27.rssing.com/chan14598779/latest.php

15/41

2016.12.5.

MTBTechBlog

flexibility in addition to solving problems with machine


kinematics encountered by CAM systems.
It is worth considering configuring your CAM PostProcessor to
use SIEMENS Vector Programming to take advantage of the
benefits provided.

YouneedFlashPlayerinordertoviewthis.
NAS979(NationalAerospaceStandard)TestPart
NAS979TestPartprogrammedusingSIEMENS
840DVectorFormatandbackplottedusingCIMCO
EditV7.5x.5AxisMotionstartsat3:30Best
viewedinHD.

07/20/1510:45:FYItoPost
ProcessorDevelopersregarding
SIEMENSandG17,G18&G19

Just an FYI to to all PostProcessor Developers regarding


SIEMENS 840D Posts for Mills.
Please stop treating G17, G18 & G19 as if they act just like
FANUC codes!
THEY DO NOT!
G17, G18 & G19 have different infeed directions for the
application of Tool Offsets.
Treating G18 or G19 just like FANUC will cancel the current
tool length offset in G17 and will cause the tool to take a dive
directly into the part!
I'm now repairing a machine because of a crash caused by
someone editing a post and not having a proper understanding
of the control.
If G18& G19 are to be supported, then the proper application
of G18 & G19 is crucial. Since the infeed direction changes
when a new plane code is encountered, the machine must be
http://salzhauer27.rssing.com/chan14598779/latest.php

16/41

2016.12.5.

MTBTechBlog

told which direction to apply the tool length offset using the
TOFF or TOFFL command.
While this will work if you actually want to see G18 & G19 and
cut arcs in those planes, it is unnecessary. For anyone who
wants to cut 3D arcs with SIEMENS, your choices are use CIP
arcs for everything, (Brute Force but it will work) or simply
insure that arcs in the G18 & G19 planes are formatted as
shown below.
Make sure treat axis addresses and arc centers as nonmodal.
G02/G03 X Z I K F
G02/G03 Y Z J K F
No G18/G19 code required at all as SIEMENS will automatically
process the arcs for the proper planes while the active plane is
still G17!
Helical Arcs in the G17 XY plane must have all 3 addresses
(XYZ) present in the line of code. Modality of the axis
addresses is not supported for Helical Arcs.
Sections 8.2 & 5.8 of the SIEMENS Fundamental Programming
Manual (6FC53981BP403BA1) deal with Plane Selection and
programmable tool offsets.
Paying attention to this basic code formatting information will
eliminate costly machine crashes and down time.

10/09/1506:40:SIEMENSCIP
ArcsAreyouusingthem?

I recently updated all my SIEMENS PostProcessors to use the


CIP arc format and it makes a HUGE difference.
The size of 3D programs drops dramatically.
This is one function I wish FANUC would copy!
The arcs are defined by 3 points, in ANY tool orientation.
The three points are thestarting point, ending point and
intermediate point. That means you are not limited to cutting
arcs in the G17, G18 & G19 planes. Furthermore, CIP arcs
eliminate the need for Plane selection altogether.
You can also cut arcs in simultaneous 5axis motion!
I'm using the midpoint for the intermediate point but
theoretically, it could be any point between the start point and
end point. The NC code below shows a basic sample of the CIP
Arc Format in use. The starting point is the current position.
http://salzhauer27.rssing.com/chan14598779/latest.php

17/41

2016.12.5.

MTBTechBlog

X,Y & Z define the end point.


I1, J1 & K1 define the intermediate point.
While the CIP Arc Format makes it a bit more difficult to
determine whether an arc is CW or CCW, simply spending a
little time reading the NC code will also give you the answer.
As practical matter this is not an issue.

If you are machining a lot in 3D, consider modifying your post


processors to take advantage of the SIEMENS CIP Arc format.
For those who would like a detailed example of CIP Arcs used
in an actual program, here is a link to a 5Axis Qualification
program that shows CIP arcs in a variety of orientations and
also with the use of CUT2DF for tilted workplanes. This file has
been run on the machine and also simulates very well in the
840D sl Control as well as in the SINUTRAIN Simulator.
NAS_979_5X_CIPARC.MPF

01/19/1606:41:FANUCG68.2
5AxisTiltedWorkPlanes

While true 5Axis simultaneous machining has definitely


become more popular, the truth is that 5Axis simultaneous is a
very small part of machining when viewed in the context of all
machining operations.
The overwhelming majority of 5Axis machining operations are
actually what can be more correctly classified as 3 + 2
operations. Meaning, the 5Axis machine will position to a
specific orientation with its two rotary axes then perform
standard 21/2 Axis & 3Axis operations.
With smaller workpieces, 5Axis machines with Table/Table or
DualRotary Table configurations accomplish this by simply
rotating to align the Work Plane to be parallel to the XYPlane
(G17) and perpendicular to the Spindle/ZAxis. With the larger
http://salzhauer27.rssing.com/chan14598779/latest.php

18/41

2016.12.5.

MTBTechBlog

workpieces that are typical of Aerospace, Energy and


Automotive industries, this type of machine is impractical.
Large workpieces that require machining from various
orientations are typically done with Head/Head or Articulating
Head 5Axis machines. A Head/Head machine achieves the
required orientations by rotating and aligning the Spindle/Tool
Axis to be perpendicular to the Work Plane that will contain
the features to be machined.
In the past, this presented additional challenges as the CNC
Control Systems were not powerful enough to help manage the
various Work Plane orientations. Because of this limitation,
many CNC Programming functions, that are taken for granted
for 3axis, could not be used. Circular Interpolation, Cutter
Radius Compensation and Drilling Cycles are all standard
programming tools that couldn't be used. This would be
reflected in the NC code by large NC program files that were
largely pointtopoint movements.
As CNC Control Systems have become much more powerful,
this problem is largely a thing of past. Almost every CNC
control used on 5Axis machines today has some version of a
function for handling Tilted Work Planes. Among these are
FANUC and SIEMENS, two of the most popular CNC Control
Systems today.
While Tilted Work Plane functionality has pronounced benefits
with Head/Head type 5Axis Machines, It may also be used with
Table/Table and Head/Table Hybrid 5Axis machines. The
reason for using it with such machines is decidedly different.
We'll address those reasons in a future article.
Let's first take a look at how FANUC handles Tilted Work Planes
for a Head/Head type 5Axis Machine.
The FANUC command for Tilted Work Planes is G68.2 .
G68.2 is the Absolute Mode (G90) command and most common.
(NOTE: There is a variation of this command defined by G68.3).
G68.4 is the Incremental Mode (G91) command.
The G68.2 Tilted Work Plane function allows user to define the
Work Plane by Euler Angles, RollPitchYaw, 3 Points, 2
Vectors, Projections Angles. The method of defining the Work
Plane is designated by the P address.

G68.2
G68.2
G68.2
G68.2
G68.2

P0
P1
P2
P3
P4

(Euler Angles)
(RollPitchYaw Angles)
(3 Points)
(2 Vectors)
(Projection Angles)

NOTE: When the P is not specified, a P0 is assumed for using


Euler Angles.
http://salzhauer27.rssing.com/chan14598779/latest.php

19/41

2016.12.5.

MTBTechBlog

Since Roll, Pitch and Yaw Angles are the most common used in
Aerospace, let's construct a G68.2 command using Roll, Pitch
and Yaw Angles.
G68.2 Roll Pitch Yaw Syntax
G68.2 P1 Q123 X_ Y_ Z_ I_ J_ K_

P1indicatesaTiltedWorkPlanesdefinitionviaRoll,
PitchandYaw.
X,Y,ZdefinethelocationoftheOriginoftheTilted
WorkPlaneusingthebaseWCS(WorkCoordinate
System)ofthepartasthereference.
I,J,KdefinetheRoll(aboutX),Pitch(aboutY)and
Yaw(aboutZ).
TheQ123indicatestheorderinwhichtherotaryaxes
arerotated.

Q123isthedefaultfortheI,JandKvalues.IftheQis
notspecified,Q123isassumed.

In the above example, we have the following Tilted Work Plane


properties.
LocalCoordinateSystemOrigin:(200.0,
0.0,50.0)
OrderofRotaryAxisRotations:I,J,K(X,
Y,Z)
RotationabouttheXAxis(Roll):30
Degrees
RotationabouttheYAxis(Pitch):0
Degrees
RotationabouttheZAxis(Yaw):90
Degrees
This Tilted Work Plane is defined by this G68.2 Statement.
G68.2 P1 Q123 X200.0 Y0 Z50.0 I30.0 J0.0 K90.0
http://salzhauer27.rssing.com/chan14598779/latest.php

20/41

2016.12.5.

MTBTechBlog

There is another code associated with the use of G68.2 that


creates a great deal of confusion in what it actually does. That
code is G53.1 .FANUC defines G53.1 as Tool Axis Direction
Control. A much simpler and clear explanation is that G53.1
will cause the automatic positioning of the rotary axes required
by the Tilted Work Plane and align the Tool/Spindle Axis to be
perpendicular to the Tilted Work Plane. This results in the
Tool/Spindle Axis being the ZAxis of the LCS (Local Coordinate
System). G53.1 must be output immediately after the G68.2
statement.
Caution must be exercised when using G53.1 as it will NOT
adjust for the current tool location and it is possible to cause a
serious collision if a proper approach position is not defined
prior to the G68.2 Tilted Work Plane definition. With the larger
5Axis machines used in Aerospace, it's quite common to find
CPrimary/BSecondary or CPrimary/ASecondary Head/Head
machines. These configurations lend themselves, quite nicely,
to the use of the Roll, Pitch, Yaw method of Tilted Work Plane
definition as these relate directly to the specific rotary axes of
a given machine.
Looking along the POSITIVE axis normal towards the origin:
AAxisrotatesintheplusdirectionCCWabout(parallel
to)theXaxis.
BAxisrotatesintheplusdirectionCCWabout(parallel
to)theYaxis.
CAxisrotatesintheplusdirectionCCWabout(parallel
to)theZaxis.
Therefore:
Roll Axis = Rotary Axis 'A'
Pitch Axis = Rotary Axis 'B'
Yaw Axis = Rotary Axis 'C'
For our example, let's assume we have a C/A Head/Head 5
Axis machine. The secondary axis is also sometimes referred
to as the 'Slave' axis in that its position is dependent upon
where the CAxis is currently located.
However, our G68.2 definition is actually defined in the
reverse order even though our kinematically correct rotary axis
angles are being used.
Once we have defined a Tilted Work Plane, we can then
program standard toolpath operations as if they are in the XY
Plane (G17). Any operation defined within a G68.2 statement
and G69 cancellation of the Tilted Work Plane is done using the
LOCAL XYPlane and LOCAL coordinates of that Tilted Work
Plane.

http://salzhauer27.rssing.com/chan14598779/latest.php

21/41

2016.12.5.

MTBTechBlog

Below is a graphic that displays the practical application of


Tilted Work Planes for 3+2 machining along with 5Axis
simultaneous machining in the context of an actual part.
You may download the actual NC Code file as well as the
original Mastercam file that was used to generate it.
In my next article, we'll deal with the SIEMENS CYCLE800
function for Tilted Work Planes.

01/28/1607:51:CreatingFANUC
CustomGCodes&MCodes

Many times in the course of manufacturing, it is common to


find that there are many tasks that can be simplified and/or
automated. On those machine tools with FANUC CNC Controls,
one of the most useful tools available is the FANUC Custom
Macro B CNC Programming language. Here's a link to an
excellent reference text.
FANUC CNC Custom Macros by Peter Smid
FANUC Custom Macro B can most simply be described as
FANUC's version of Parametric CNC Programming. While the use
of Custom Macro B is typically applied to programming
operations for 'families' of parts and part probing, many
http://salzhauer27.rssing.com/chan14598779/latest.php

22/41

2016.12.5.

MTBTechBlog

engineers, programmers and operators do not realize it has a


'hidden' use. FANUC Custom Macro B can be used to create
UserDefined/Custom GCodes and MCodes.
In fact, it is quite likely that if you have a FANUC powered CNC
machine, the machine builder has taken advantage of this
functionality to offer greater flexibility to their customers with
several custom GCodes and MCodes.
A perfect example of that is a Customized M06, Tool Change M
Code. Depending upon the machine builder, the standard M06
code may do nothing more than actually change to the
selected tool. All the related steps of turning off coolant,
stopping the spindle, orienting the spindle and getting the
spindle in position for a tool change would have to be
programmed explicitly. By creating a custom M06 code, we can
eliminate the need to do all these tasks through explicit NC
code.
The first step in this process is the program number for our
custom M06. FANUC has parameters that control the
assignment of the actual code integer as well as the actual
program number used to define that custom Mcode. These are
the parameters that are used for the 30i Series as well as the
Oi Series (MD & TD). (Note: The FANUC 30i Series includes the
30i, 31i, 32i, 300i, 310i & 320i)
Custom MCode Parameters
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089

=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=

M code that
M code that
M code that
M code that
M code that
M code that
M code that
M code that
M code that
M code that
M code that
M code that
M code that
M code that
M code that
M code that
M code that
M code that
M code that

calls
calls
calls
calls
calls
calls
calls
calls
calls
calls
calls
calls
calls
calls
calls
calls
calls
calls
calls

the custom
the custom
the custom
the custom
the custom
the custom
the custom
the custom
the custom
the custom
the custom
the custom
the custom
the custom
the custom
the custom
the custom
the custom
the custom

macro of program
macro of program
macro of program
macro of program
macro of program
macro of program
macro of program
macro of program
macro of program
macro of program
macro of program
macro of program
macro of program
macro of program
macro of program
macro of program
macro of program
macro of program
macro of program

number
number
number
number
number
number
number
number
number
number
number
number
number
number
number
number
number
number
number

9001
9002
9003
9004
9005
9006
9007
9008
9009
9020
9021
9022
9023
9024
9025
9026
9027
9028
9029

It is a fairly standard practice to use O9001 as the program for


a custom M06. With this in mind, we will enter '6' into
parameter # 6071. The next step is to write the actual NC code
for our custom M06. The code below will execute when it reads
an M06 in the program currently running in the CNC.

http://salzhauer27.rssing.com/chan14598779/latest.php

23/41

2016.12.5.

MTBTechBlog

Ex.
T02 M06 is called in the Main NC program.
The CNC immediately reads O9001 as a subprogram triggered
by the M06. The Tool Number called is retrieved from system
variable #4120 and assigned to local variable #20. The coolant
is turned off and the spindle is stopped. The machine the
performs a reference return in the ZAxis, orients the spindle
and then actually executes the standard M06 defined in the
control PMC. Absolute mode (G90) is established and with the
M99 the control returns to the next block in the NC program.
Our custom M06 is just a simple example for a custom MCode.
The next example will demonstrate a realworld example of a
custom GCode function. As with custom MCodes, FANUC has
parameters that control the assignment of the actual code
integer as well as the actual program number used to define
that custom Gcode.
Custom GCode Parameters
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059

=
=
=
=
=
=
=
=
=
=

G
G
G
G
G
G
G
G
G
G

code that
code that
code that
code that
code that
code that
code that
code that
code that
code that

calls
calls
calls
calls
calls
calls
calls
calls
calls
calls

the custom
the custom
the custom
the custom
the custom
the custom
the custom
the custom
the custom
the custom

macro of program
macro of program
macro of program
macro of program
macro of program
macro of program
macro of program
macro of program
macro of program
macro of program

number
number
number
number
number
number
number
number
number
number

9010
9011
9012
9013
9014
9015
9016
9017
9018
9019

About 4 years ago I needed to write a custom GCode for a


Doosan MX3100 Multitasking CNC. The local Doosan dealer
had installed the machine in a customer's brand new building.
Unfortunately, the building was having issues with its power
from the local utility and it was having repeated incidents
where the BAxis head would be tilted for a drilling operation
and the power would be lost in the middle of the operation.
Recovering from this was becoming a timeconsuming matter
as there was no way to do this easily as the machine does not
have a jog wheel MPG (Manual Pulse Generator) with a
dedicated vector selection.
http://salzhauer27.rssing.com/chan14598779/latest.php

24/41

2016.12.5.

MTBTechBlog

The solution was a Macro used as a Custom GCode.


This allowed the operator to easily retract the tool by using the
current angle of the Baxis head and specifying a retract
distance along the current tool vector. This allowed the
operator to easily recover from a power outage or an EStop.

Using FANUC Custom Macro B give you tremendously flexibility


for creating your own custom GCodes & MCodes. It is a
powerful tool for that offers great returns in efficiency and
simplicity in manufacturing. It is a tool for truly Lean
Manufacturing.

http://salzhauer27.rssing.com/chan14598779/latest.php

25/41

2016.12.5.

MTBTechBlog

02/07/1618:21:SIEMENS
CYCLE8005AxisTiltedWork
Planes

In our previous post we dealt with how FANUC handles 5Axis Tilted Work
Planes for a 5Axis Machine with a Head/Head (C/A) kinematic
configuration.
FANUC G68.2 5Axis Tilted Work Planes
In this post we will explain how the SIEMENS 840D sl Control's CYCLE800
function is used for handling 5Axis Tilted Work Planes for the same
Machine with a Head/Head (C/A) kinematic configuration. Since
is really a continuation of our previous post on 5Axis Tilted Work Planes,
it may be helpful to reread that post before continuing.
The CYCLE800 Tilted Work Plane function allows user to define the Work
Plane by the following Swivel Modes.
Axis by Axis (Euler Angles or RollPitchYaw)
Solid Angle
Projection Angle
Direct Rotary Axis Angles
NOTE: Parameter MD10600 $MN_FRAME_ANGLE_INPUT_MODE
whether Euler angles or RPY Angles are to be used
.

One distinct difference with SIEMENS when using RollPitchYaw angles is


that their default interpretation of RPY is the reverse of the Standard
Aerospace interpretation. SIEMENS reverses X & Z so that Z is considered
the Roll Axis and X is considered the Yaw Axis.

Users can change the order to the Standard Interpretation of Roll, Pitch
and Yaw by selecting the X,Y, Z Axis Sequence from the Sequence of Axes
dropdown list in the Program Guide or by using the proper explicit
programming syntax.

http://salzhauer27.rssing.com/chan14598779/latest.php

26/41

2016.12.5.

MTBTechBlog

CYCLE800 Syntax
The standard CYCLE800 consists of 16 individual argument values
separated by commas and listed between parentheses.

CYCLE800(#1,#2,#3,#4,#5,#6,#7,#8,#9,#10,#11,#12,#13,#14,#15,#16
Since we are dealing with a Head/Head type machine, we'll explain each
argument in that context.

Some values will be determined by the kinematics of the machine as


as how the machine builder has commissioned the machine. Some
and order will also change depending upon the modes used. Machine
Builders may also customize the Standard SIEMENS CYCLE800 function.
Should you have any questions about the CYCLE800 implementation on
your machine, you should consult the Applications Engineering departmen
of your Machine Tool Builder.
Argument #1
This should always be 1. This indicates a retract in the direction of the
machine Z axis. A value of 0 indicates that no retraction will take
before swiveling.

Argument #2
This is the label of the Swivel Data Record in the Machine Setup area. Thi
contains the kinematic definition of the rotary axes. This label will always
be within closed quotation marks to indicate it is a text label.

Argument #3
This value is dependent upon both the kinematic configuration as well as
the commissioning of the machine by the machine builder. In our example
http://salzhauer27.rssing.com/chan14598779/latest.php

27/41

2016.12.5.

MTBTechBlog

the value will always be100010. The 5th & 6th digits, 10, indicate that
the tool tip will track in a fashion similar to TRAORI.

Argument #4
This value indicates the mode with which CYCLE800 will function.
57 = Axis by Axis Mode w/ Axis Order X, Y, Z
45 = Axis by Axis Mode w/ Axis Order X, Z, Y
54 = Axis by Axis Mode w/ Axis Order Y, X, Z
30 = Axis by Axis Mode w/ Axis Order Y, Z, X
39 = Axis by Axis Mode w/ Axis Order Z, X, Y
27 = Axis by Axis Mode w/ Axis Order Z, Y, X
64 = Solid Angle Mode
185 = Projection Angle Mode
192 = Direct Rotary Axis Angle Mode

Arguments #5, #6, #7


The X,Y,Z origin of the tilted work plane referencing the current Work
Offset.

Arguments #8, #9, #10


These depend on the mode set in Argument #4.
With Argument #4 set to 192,
Argument #8 = The CAxis Angle,
Argument #9 = The AAxis Angle.
Argument #10 is the rotation angle about Z, within the tilted work plane
This will almost always be 0.

http://salzhauer27.rssing.com/chan14598779/latest.php

28/41

2016.12.5.

MTBTechBlog

Arguments #11, #12, #13


The value of an X,Y,Z shift of the origin, within the tilted work plane

Argument #14 will always be 1


Argument #15 will always be empty

Argument #16

This value can be 1, 2 or 3.


1= G17 Plane (The most commonly used option)
2=G18 Plane
3=G19 Plane

In the above example, we have the following Tilted Work Plane


properties.
Local Coordinate System Origin : (200.0, 0.0, 50.0)
Direct Rotary Axis Angle Mode
Rotation about the XAxis (Roll) : 30 Degrees (AAxis Angle)
Rotation about the YAxis (Pitch): 0 Degrees
Rotation about the ZAxis (Yaw) : 90 Degrees (CAxis Angle)
Since our above example has a Pitch Angle of 0.0, we will use the Direct
Rotary Axis Angle Mode. This Tilted Work Plane is defined with the
following CYCLE800 Statement.
CYCLE800(1,"HEAD",100010,192,200.0,0,50.0,90.0,30.0,0,0,0,0,1,,1)
Now let's see it used in context.
http://salzhauer27.rssing.com/chan14598779/latest.php

29/41

2016.12.5.

MTBTechBlog

Below is a graphic that displays the practical application of Tilted


Planes for 3+2 machining along with 5Axis simultaneous machining
context of an actual part.
You may download the actual NC Code file as well as the original
Mastercam file that was used to generate it. This will give you a good idea
of how CYCLE800 is used in the typical application of Tilted Work Planes.
In future articles we'll get into depth on the variations and nuances
CYCLE800 as well as other 5Axis specific CNC Control functionality.

02/09/1617:19:SIEMENS
0
ManualVectored
Retract/ApproachofToolfor5Axis

http://salzhauer27.rssing.com/chan14598779/latest.php

30/41

2016.12.5.

MTBTechBlog

Many times in the course of operating a 5Axis CNC Machine


Tool, a situation will arise where it is necessary to manually
retract a tool from a drilled hole at a given orientation. This
could be because that drill broke in the middle of a cycle,
there was a power outage in the middle of the cycle, or an
alarm was somehow generated.
On Table/Table or DualRotary 5Axis Machines, this isn't a
problem. It's not a problem because the the Spindle Axis on
these type of machines is always aligned with the ZAxis of the
machine. All that is needed is to simply manually jog the tool
out of the hole along the ZAxis.
However, on a Head/Head or Head/Table machine, this
creates a serious problem if the spindle axis is not aligned with
the machine ZAxis. When this occurs, there typically isn't a
separate position for axis selection on the Machine Pendant or
MPG (Manual Pulse Generator) that will assume the spindle
axis.
The reverse is also true.
When we may want to approach a machine position, at a given
orientation, there typically isn't a separate position for axis
selection on the Machine Pendant or MPG (Manual Pulse
Generator) that will assume the spindle axis.
The SIEMENS 840D sl CNC Control has native functionality to
handle these situations relatively easily.
NOTE:
This procedure requires that there MUST be a Tool in the
spindle and that tool offset MUST be active.
From MDI,
Enter TRAFOOF and the commands to cancel any active
FRAMES.
Press CYCLE START.
In the graphic below, I am using a custom machine command
called FRAME_RESET to do this.

Press the JOGButton make sure the LED above it is on.

http://salzhauer27.rssing.com/chan14598779/latest.php

31/41

2016.12.5.

MTBTechBlog

Press theWCS/MCSButton and make sure the LED above it is on.


Press the ZButton and make sure the LED above it is on.

If the machine is currently at the required orientation,


Press the SoftKey labeled Swivel.

Set Retract to No.


Set Swivel Plane to New.
Set Swivel Mode to Directly.
Scroll down and make sure that Tool is set to Do Not Track.

Press the SoftKey labeled Teach rot. Axes.


http://salzhauer27.rssing.com/chan14598779/latest.php

32/41

2016.12.5.

MTBTechBlog

You will now see the current rotary axis values for the current
kinematic configuration. In this case the CAxis value & AAxis
Value.

Press the CYLE STARTButton.


You will now see an XZ Rotation symbol immediately below
the position window. This symbol indicates the centerline of
rotation for the AAxis and the CAxis. The AAxis rotates about
an axis that is parallel to the XAxis. The CAxis rotates about
an axis that is parallel to the ZAxis.
A machine with a different kinematic configuration, such as a
C/B head would show the Rotation Symbol that defines its
rotary axis centerlines. In the case of a C/B head, this would
be a YZ Rotation symbol.

You can now press the Jog Plus Sign (+) button and the head
will move in the positive direction along the current tool
vector. Press the Jog Minus Sign () button and the head will
move in the negative direction along the current tool vector.
When you have moved the required distance along the vector,
Press MDI. Enter the commands to cancel any active FRAMES.
Press CYCLE START.

06/07/1600:39:CAMSoftware
VendorsandPostProcessors
http://salzhauer27.rssing.com/chan14598779/latest.php

33/41

2016.12.5.

MTBTechBlog

I chose to write this article because of a repeated problem I


see with CAM software vendors. They charge quite handsomely
for PostProcessors, especially 5Axis or MultiAxis Post
Processors. However, more often than not, the VAR for a
specific CAM software will task the actual work to someone
who is completely incompetent for the task. The Post
processor is the most important part of the CAM system. It
takes all the work done in the CAM software and formats the
output for a given CNC Machine tool and CNC Control.
I repeatedly come across vendors who task postprocessor
development to someone who has never even run a CNC!
I recently had one where the person in question had never
touched a CNC and his last position was a security guard.
This is not to knock security guards but this person was clearly
out of their element.
I recently dealt with this from a CAM VAR who believes
someone with an Associates Degree in Computer Science from
a local Community College and no CNC background is qualified
to write a 5Axis PostProcessor for a CNC Control he has ZERO
experience with. Talk about delusional!
This is beyond unethical. It is borderline fraud.
The history of the CAM software is replete with stories of
customers who were sold a bill of goods by their VAR and left
with essentially useless software. Whenever anyone is
purchasing a PostProcessor there are several questions one
should ask of your VAR to make sure that your aren't being
ripped off.
1) Will someone within your organization actually be doing
the work or are you farming out the job to a subcontractor
to get the job done?
If you vendor is farming the job out, demand to know who that
subcontractor is. You will become quite close to them as there
will ultimately be multiple iterations of a post before it can be
blessed and accepted. This use of subcontractors is actually
quite common and should not be considered as something
unethical. However, disclosure and transparency is critical.
Many smaller CAM VARs will take this route because it's quicker
to get the work done and satisfy the customer.
2) Does the person developing the postprocessor have any
experience with the control system to be supported?
If the answer is 'No', stop right here.
Without the experience of actually knowing a CNC Control
System, it is impossible to properly develop a postprocessor.
The idea that someone with no experience with a SIEMENS
840D can write a usable 5Axis postprocessor for that control
is intellectually offensive. If they can't explain to you what a
http://salzhauer27.rssing.com/chan14598779/latest.php

34/41

2016.12.5.

MTBTechBlog

CUT2DF statement is or a CUT3DC statement is then they are in


over their head.
3) Does the person developing the postprocessor have any
CNC Programming and CNC Machining experience?
Again, if the answer is 'No', stop right here.
Without the experience of actually knowing how a machine
reacts in the real world to a given CNC Control System, it is
impossible to properly develop a postprocessor. If the post
developer doesn't understand FANUC AICC High Speed Mode or
NANO Smoothing, it is foolish to believe they can implement
the functionality. If the post developer has never operated a
machine running a program that properly uses RTCP or G68.2
Tilted Work Plane functionality, it is foolish to believe they can
write a post that properly implements that functionality. I had
a situation where the CAM vendor in question actually caused a
crash while trying to operate the machine to test his post
processor.
FYI to PostProcessor Developers regarding SIEMENS and G17,
G18 & G19
4) How long will it take to develop the postprocessor?
This is a bit of a loaded question but an important one.
An ethical VAR will immediately tell the customer that
question is impossible to answer without knowing the specific
Machine Tool, the specific CNC Control, the options the
customer will want supported and what functions must be
supported by the postprocessor.
5) What do you need from me to assist you in developing the
postprocessor for our requirements?
This is a very important question and one that anyone in
charge of procuring a postprocessor should have on their list.
You should be ready to give the CAM vendor as much data as
possible. However, you, as the customer, should NOT be
responsible for getting any reference data regarding the CNC
Control System. CAM software companies are in the business of
developing software to support CNC controls. That should
ALWAYS be the responsibility of the CAM software VAR and
vendor. The Applications Department of the Machine Tool
Company or Distributor should be the first resource for the CAM
software vendor.
If your CAM software VAR obfuscates or in any way displays a
reluctance to answer these questions honestly, find another
CAM software vendor. Any equivocation is just an excuse.
There are some very good CAM VARs out there with excellent
postprocessor developers. If you use Mastercam, consider
Dave Thomson at Postability, James Wakeford at Barefoot CNC
or Colin Gilchrist at eApprentice. Colin recently published an
article on postprocessors that every CAM system vendor and
CNC Programmer should pay attention to.
http://salzhauer27.rssing.com/chan14598779/latest.php

35/41

2016.12.5.

MTBTechBlog

If you use other CAM systems, reach out to other customers to


find one that you will be comfortable with. Don't assume that
because you use a well known CAM system, you will not get
scammed. Conversely, don't discount CAM systems that are
newer to the US market. Bill Genc and his crew at TopSolid are
top notch. (AlphaCAM users can feel free to contact me
directly)
You may also want to consider 3rdParty companies like IMS
Software,ICAM Technologies or Spring Technologies. All three
offer custom postprocessors as well as machine simulation
that run directly from your NC code.
Doing your homework up front and asking the right questions of
your CAM VAR will protect you from getting ripped off and
given a expensive but useless postprocessor.

10/06/1613:45:FANUCG43.5
RTCPTypeIIVector
Programmingfor5Axis

G43.5 RTCP Type II

In a previous article we discussed the SIEMENS Vector format


for 5Axis. It may come as a surprise to many that a similar
function exists within the FANUC CNC lexicon. That function is
activated with the G43.5 command.
G43.5 is defined by FANUC as RTCP Type II (Rotary Tool Center
Point) function. (RTCP functionality on the SIEMENS controls is
called by the command TRAORI.) While most understand that
RTCP automatically accounts for the length of the tool in 5
Axis machines with a Head/Head rotary axis configuration,
many people do not understand that it is primarily designed to
maintain the tool control point in relation to the programmed
point of the workpiece. This means that it can be and is also
used for 5Axis machines with a Table/Table rotary axis
configurations as well as machines with Head/Table rotary axis
configurations. Maintaining this relationship between the tool
control point and the programmed point of the workpiece,
results is a a program that requires a smaller envelope within
which to operate.

http://salzhauer27.rssing.com/chan14598779/latest.php

36/41

2016.12.5.

MTBTechBlog

When viewing from the right side of a C/A 5Axis Head, the
rotary command A90.0 causes a movement of axis A without
any linear axis movements that would keep the tool in contact
with the part.

If RTCP is active, the same command causes the swing of 90


with displacements of the linear axes to maintain the tool tip
at the same location.

Vector Programming
Mathematically, a Tool Vector is represented by its component
values that are relative to the linear X, Y and Z axes. These
component values typically use the addresses I, J and K. The
relationship of the vector component is defined as the
directional cosine. The directional cosines of a vector are the
cosines of the angles between the vector and the three
coordinate axes. A Tool Vector is always referenced with its
start point at the tip of the tool along its centerline. It is
generally terminated with its end point at the tool gauge line
the intersection of the tool holder taper and the spindle taper.

http://salzhauer27.rssing.com/chan14598779/latest.php

37/41

2016.12.5.

MTBTechBlog

Normally, CAM system postprocessors use the tool vector data


to calculate the required rotary axis angle. However, this
calculation can become problematic for certain CAM systems
and their postprocessors.
To deal with these problems, CNC controls are becoming more
'intelligent'. The FANUC 30i Series is one such control that has
some unique abilities when it comes to the actual NC code
syntax. The FANUC 30i Series is capable of processing the tool
vectors directly instead of explicit rotary axis angles by using
the G43.5 RTCP Type II command. G43.5 provides both RTCP
functionality along with the ability to use vectors in the
programming. G43.5 uses the familiar I, J & K addressees for
the vector word designations. Mathematically, all three vector
components are related. That is, the square root, of the sum of
the squares, of all three vector component values equals 1.
That relationship is defined by the following equation.
SQRT (I + J + K) = 1
One of the major benefits of using G43.5 RTCP Type II is that
this results in a program format that is kinematically
independent. That is, regardless of the rotary axis
configuration of a given machine, the program can run without
issue. The most that one has to do, generally speaking, is
modify tool change sequences depending upon the
commissioning of any given machine tool. A great article on
the benefits of kinematic independence through the use of
Vector Programming can be found at the link below.
Vector Programming Eases FiveAxis Aerospace Machining
Now, let's take a look at how it is actually implemented for a
machine with a C/A 5Axis Head configuration with the
following sample file 5AXIS_PRISMATIC.NC . This sample file
will machine five faces of a part 20.0" x 10.0" x 5.0".
In block number N13 of the program, we see the machine
positions to X14.5 Y4.25. In block number N14, RTCP Type II is
activated with the appropriate tool length offset and a tool
http://salzhauer27.rssing.com/chan14598779/latest.php

38/41

2016.12.5.

MTBTechBlog

vector of I0.0 J0.0 K1.0 . This tool vector is equivalent to a


rotary axis position of A0.0 C0.0

The facing operation continues to completion at X12.0 Y4.75


and then retracts to Z4.0 .

Now this is where things get interesting. In block number N32,


the tool now gets a plane change with G18 and a vector change
to I0.0 J1.0 K0.0. This orientation is equivalent to A90.0 C0.0 .
However, the tool tip location has NOT changed because we
have RTCP Type II active.

In block number N33, we have the FANUC AICC High Speed


settings for the facing operation on the back face of our part.
Block number N34 is the initial XY positioning for the facing
operation. Block number N35 is the final positioning move
before beginning the feed to Y5.0 and machining the back face
of the part.
http://salzhauer27.rssing.com/chan14598779/latest.php

39/41

2016.12.5.

MTBTechBlog

The video below shows the complete tool motion of the


program using FANUC RTCP Type II.

You need Flash Player in order to view this.


FANUC G43.5 RTCP Type II
Demonstration of FANUC G43.5 RTCP Type IIThe function is
operating on a Belotti TRIM 4016

Those who may have an interest can download the program


used in the video above. 5AXIS_PRISMATIC.NC
A program with more detailed use of G43.5 RTCP Type II is also
available. NAS_979_5X.NC

You need Flash Player in order to view this.


NAS 979

http://salzhauer27.rssing.com/chan14598779/latest.php

40/41

2016.12.5.

MTBTechBlog

With G43.5 RTCP Type II, the standard data resolution of 3


decimal places for Millimeter and 4 decimals places for Inch is
insufficient. The least increment system should be changed
from the default ISB to ISE. This will allow a resolution of 7
decimal places. By doing this, your vectors will have the
greatest precision possible and reduce the rounding error to
two decimal places LESS than the standard unit precision (ISB)
on a FANUC for either Inch or Millimeter. This can be
accomplished by modifying Parameters #1013 and #5042.

The higher decimal resolution for coordinates and vectors in a


program insures the most accurate and smooth High Speed
motion while using G43.5 RTCP Type II. Additionally, while we
are using vectors in our NC program, the CNC Control is still
calculating the rotary axis angles, monitoring and displaying
them during operation. By allowing the CNC control to make its
calculations using the most accurate vector data will result in a
more accurate calculation of an angular addresses values and
more accurate positioning.
To sum up, the FANUC G43.5 RTCP Type II command is an
advanced tool that provides a great deal of programming
flexibility in addition to solving problems with machine
kinematics encountered by CAM systems. It is worth
considering configuring your CAM PostProcessor to use FANUC
G43.5 RTCP Type II Vector Programming to take advantage of
the benefits provided.

HOME | ABOUTUS | CATALOG | CONTACTUS | 2016http://www.rssing.com

http://salzhauer27.rssing.com/chan14598779/latest.php

41/41

You might also like