Академический Документы
Профессиональный Документы
Культура Документы
DOCUMENTATIONABOUTTHE
MACHSIMULATIONCONTENTNX9
1
2
3
4
5
7
8
9
SIM01: ........................................................................................................................................................... 18
SIM03: ........................................................................................................................................................... 18
SIM05: ........................................................................................................................................................... 19
SIM10: ........................................................................................................................................................... 20
SIM11 SIM13 - Fanuc: ............................................................................................................................... 20
SIM13: ........................................................................................................................................................... 20
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 1 / 56
16 Creating your own CSE examples based on the OOTB mach examples ............................. 41
17 Appendix ............................................................................................................................... 42
A.
B.
C.
D.
E.
F.
G.
H.
I.
J.
K.
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 2 / 56
2 Overview
This document explains the handling and usage of the simulation examples provided out-of-thebox (OOTB) with NX Version 9. The example data is mainly contained in two locations: one is for
the library machine tool models in the
$UGII_CAM_BASE_DIR/resource/library/machine/installed_machines folder, the other for the
CAM examples utilizing the library machine tools. These CAM examples can be found under
$UGII_CAM_BASE_DIR/samples/nc_simulation_samples. All of the machine tools in the library have
preconfigured geometry, assembly and kinematics models as well as post processors and CSE
controller models for the major controller types Siemens SINUMERIK 840D, Fanuc family and
TNC Heidenhain Conversational; posts are available for metric and inch units. For all machine
tools in the library there is at least one CAM setup example available. The intention of these
examples is to show best practice and to demonstrate the features of the NX CAM built-in
machine simulation. Another intended use of the examples is as seed parts for customer specific
simulation.
NOTE: The examples cannot contain or show every possible feature of NX CAM, NX Post and
ISV. In certain cases such as complex or multi-function machine tools, and in order to achieve
advanced capabilities, specific customization of the provided posts and/or controller models will
be necessary.
3 Load Options
To ensure all related assembly component parts are loaded correctly it is recommended to use
the "From Search Folder" load option with the following search paths. Be certain to include the
three dots at the end of each path. Leave the Use Partial Loading - option unchecked'
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 3 / 56
4 CAM-Setup
When creating a new CAM setup with the provided set of machine tools, the following best
practice is suggested. It is assumed that the CAD geometry of the part to be machined already
exists.
Open the CAD part file in NX
Select New and pick an appropriate entry in the Manufacturing tab.
Select the body of the CAD model for the Wave object and hide the CAD component in the
assembly navigator
To prepare for material removal simulation it is recommended to have the blank geometry
pre-defined as well. In the example shown it is a simple cylinder added to the assembly.
Starting with NX9 all CAM setups part files in the sample folder are pre-configured to be used as
template or seed parts.
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 4 / 56
A few rules need to be considered for NX CAM setup to support the assigned post processor
creating a valid NC code which can be used at the physical machine tool as well as for
simulation.
5.1
Each CAM setup example using one of our OOTB MACH machine tools must not include
more than one single MCS with the purpose Main
The Main MCS needs to be placed at the same location and orientation as the
MACHINE_ZERO coordinate junction of the machine tool.
NOTE: This was used to tell the post processor the position of the machine zero position prior
NX8.5. Starting with NX8.5 the post has access to the junctions in the kinematics model. For
more details refer to Creating file with tool and offset data. The examples still include the MAIN
MCS to represent the Machine Zero Position; this is due to planned future improvements and
enhancements for a better usability.
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 5 / 56
Purpose
Main
Local
Local
Local
Fixture Offset
0
1
2
2 (inherit)
Special Output
Fixture Offset
Fixture Offset
CSYS Rotation
Post S840D
Post Fanuc
Post TNC
G54
G55
CYCLE800
G54
G55
G68.2
More details and example are shown in Appendix: OOTB MCS Handling output details
For the OOTB post, operations must not be placed under MCS objects with the special
output none or Use Main MCS. In such cases the post will not identify the correct offset
for the operation and the offset creation in the to_ini.ini files will fail.
5.2
Working with Mill-Turn machines the work piece spindle object needs to be represented in the
ONT. Therefore a MCS Spindle object is mandatory. That MCS object needs to be aligned with
the work piece spindle and the X/Y or Z/X plane represents the lathe work plane. Also the Lathe
axis needs to be aligned with the spindle axis. Working with multiple spindles e.g. Main and sub,
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 6 / 56
The LATHE-SPINDLE object is a local MCS with special purpose None and fixture offset
number 0, so that this MCS will be ignored by the post in regards to output offset information. The
offsets G54 and G55 are located as child objects of the spindle.
Also the sim15 is setup related that rules; details will be described in the sim15 chapter.
Additional information about best practice to set up a multi-spindle Mill-Turn geometry view is
available in the NX Help under CAMManufacturing TurningGeometry structure sample
for a 2 spindle multifunction machine
5.3
SIM15 post rule for local MCS object with special output None
A local MCS with special purpose None located as child of a local MCS with special
purpose Fixture Offset number will be used to output G59. See more in the chapter about
sim15
6.1
All three major controllers support the basic functionality for 2 axis drilling, 3 axis, 3+2 axis and 5
axis milling and also some advanced functionality.
6.1.1
Basic functionality
Addresses (X, Y, Z, A, B, C)
Program control ( M30, M0...)
Basic motion type: rapid, linear, circular
Metric/Inch units
Radius/diameter programming
Fixture offset
Coordinate system rotation(support Local CSYS and Auto3D way)
(G68, TRANS/AROT)
Tool radius compensation
Tool length compensation
Feed rate, feedrate unit
Spindle mode and spindle speed
Constant surface speed
Tool change
TCP (TRAORI, G43.4, M128)
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 7 / 56
Advanced functionality:
6.2
The SINUMERIK 840D post processor creates a CAM setup specific initialization data file for
offset values and the tool data. The post processor creates an additional ini file (to_ini.ini or
to_ini_Channel.ini) in the SINUMERIK format. This file will be located in the cse_files/subprog
subfolder of the CAM setup part:
MACH/samples/nc_simulation_samples/cse_files/subprog
This to_ini.ini file is handled as a subprogram and in the ini files of the machine tool in the library
this file gets called (executed and loaded). When working with CSE controller models, the
different ini files are loaded and executed before the simulation starts. The format and syntax of
the files is controller specific and their purpose is to initialize certain settings upfront. For more
details about ini files please see Appendix.
Before the post create a new file to_ini.ini it will back up the existing ini file by renaming it to
*.bck.
Note 1: New with NX85 is that the post query the kinematics model using the TCL query function
MOM_ask_init_junction_xform and store the results in the variable mom_sim_result[9],
mom_sim_result1[3] to get the data of the machine zero junction needed to calculate offset
information for e.g. G54.
Note 2: With the Sinumerik template Post within PostBuilder Version 8 or newer you are able to
configure the behavior of creating the ini file.
Note 3: The OOTB example machine tool ini files for Sinumerik (e.g. sim07_mill_5ax-Main.ini)
have the entry TO_INI to call the post created file as a subprogram. If the creation of the file not
work properly or the file gets deleted or the post does not have write access to create this file and
the CSE Simulation starts it will give you a warning in the details window, that the related TO_INI
file could not be found. The simulation will not stop in that case.
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 8 / 56
6.3
For coordinate rotation NC codes output inside the post, the related coordinate matrix is
changed. Reason for this is because the Main MCS is representing Machine zero and Local
fixture offset representing machining coordinate G54, G55, but mom_csys_origin and
mom_csys_matrix still map current local MCS to Main MCS. For CSYS rotation coordinate
output, the value of linear offset (G68, CYCLE800 ) should be the offset between current local
MCS to parent local MCS(e.g. G54,G55). Therefore, mom_parent_csys_matrix replaced
mom_csys_matrix in postprocessor .
MCS-Main (G53)
|----MCS-Local-for-G54
|-----MCS-for CSYS rotation or other-purpose
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
mom_csys_matrix
mom_parent_csys_matrix
Page 9 / 56
6.4
The OOTB posts are created based on the latest Sinumerik S840D basic template posts. Some
settings and or features are slightly different, which are listed here.
6.4.1
Coolant
Coolant output is different.
Posts of OOTB Examples
Coolant code always be M8
6.4.2
6.5
The post shipped with the OOTB machine tools in the library are coming with their own UDEs
(CDL file), which provides a series of UDE which all are supported.
6.6
OOTB post processors only support M8 (coolant on) and M9 (coolant off), to output other coolant
codes, post processors need to be customized.
6.7
About Special handling for 5 axis motions with Fanuc for table machine tool
configuration
The OOTB setting for Fanuc controller will not move the programming system together with the
table when doing 5 axis motions like G43.X. The post takes care about that when outputting the
X/Y/Z data. The CSE controller takes care about that by using a specific mode when activating
the 5 axis transformation.
This mode can be changed:
In Post do the following:
Change variable dpp_ge(sys_output_coord_mode) value to TCP_FIX_MACHINE in command
PB_CMD_customize_output_mode
In Simulation do the following:
Change the setting of the variable #19696 in the INI file to =0 (default is 32 for non-rotating
workpiece coordinate system)
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 10 / 56
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 11 / 56
Handling of Offsets:
Like any physical NC controller, CSE drivers can process offset information (activated e.g.
through G55) only if the required data is provided, i.e. coordinate values between the actual
chosen offset e.g. G55 and the machine tool zero position. There are two ways to achieve this
with CSE and both are used in the OOTB examples.
9.1.1
Alternative 1 (Fanuc)
In the case of Fanuc, the controller queries the information during simulation from the application
(ISV NX). This is done internally by a command called LoadOffset during interpretation of an
offset statement in the NC code like G55. The system searched in the ONT for an MCS object
with the related fixture offset number.
Example: In the NC code a G55 (2nd offset) is used. In this case the system cycles through all
MCS objects and compares the value use in Fixture Offset with the given offset in the NC code.
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 12 / 56
9.1.2
Alternative 2 (Sinumerik and TNC)
The SINUMERIK 840D CSE and the TNC controller doesnt use the LoadOffset mechanism as
described above but follows an alternative implementation. On the physical controller in the shop
floor, the offset values are typically measured by probing operations or are manually set in the
controller. The controller stores these values in an offset table and in controller variables.
The SINUMERIK OOTB post processors create an initialization file for the actual CAM setup
including information about the offsets and tool data. This initialization file is loaded before the
simulation starts. So the offset definition is achieved by the definition of the variables in the
initialization file.
Snapshot of the SINUMERIK ini file:
Later, when one of the offsets is activated in the NC code, the CSE controller uses these
variables to define the offset transformation.
The TNC OOTB post processors outputs the offset data into the main program based on the
actual CAM setup. The offset gets activated right away by parsing these NC code lines.
Example for TNC offset data:
Note: Working with CYCLE247 and/or is possible with CSE, but not part of the OOTB example.
9.2
Tool changes with CSE controller models in the existing examples are achieved by calling a tool
change subprogram. This subprogram is located under the subprog folder for each CSE driver;
its kept in the corresponding NC code syntax and basically positions the tool to the tool change
location. Using one of these subprograms for a different machine tool will typically require an
adjustment of the tool change position. Another section in the tool change subprogram is the
Anycontroller (AC) part, which mimics the PLC portion of the tool change. This mainly takes care
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 13 / 56
9.3
In Fanuc NC code, the G command G28 is often used to move the reference point. The OOTB
examples include this in the post and in the CSE controller models. This section describes how
the position of the reference point is defined and stored to get correct simulation results.
On physical machine tools, the reference point is stored inside of the controller. To mimic this in
the CSE simulation, the position of the reference point is defined in the *.ini file along with the
machine tool. The NC code to define reference points in Fanuc syntax is shown in the sim01
example (sim01_mill_3ax_fanuc-Main.ini) as:
(This part sets the position of the
G54
G17
G90
G10L52
N1240P1R0000
-> X Position
N1240P2R225.425
-> Y Position
N1240P3R406.425
-> Z Position
G11
If needed, the values of the reference point can easily be changed in the ini file. All coordinates
are assumed to be metric.
9.4
Handling tool data CSE is able to get the data on different ways. One way is a direct connection
to the application ISV and query the data through an API function during simulation e.g. when
activating the tool correction e.g. Dxx or G43 Hxx).
An alternative way is to rely on data predefined in controller variables e.g. in an ini file. The
behavior can be triggered in the OOTB CCF by setting the global variable
GV_bUseSetToolCorrection in the CSEInitializeChannel. Most controller use the first described
way and get the tool correction data via the API during simulation form ISV. New with NX9 for
the Sinumerik CCF (main purpose is for showcase) is, that these CCF relies completely on the
provided data in the to_ini.ini file created by the OOTB post and doesnt query any tool correction
data during simulation.
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 14 / 56
CYCLE71
CYCLE81 CYCLE90
CYCLE801
HOLES1, HOLES2
LONGHOLE
SLOT1, SLOT2
POCKET1, POCKET2, POCKET3, POCKET4
CYCLE800 (kinematic specific, customized per machine tool)
Solutionline
CYCLE71
CYCLE81 CYCLE90
CYCLE801
HOLES1, HOLES2
LONGHOLE
SLOT1, SLOT2
POCKET3, POCKET4
CYCLE95
CYCLE97
CYCLE800 (kinematic specific, customized per machine tool)
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 15 / 56
11.1
Swiveling on Heidenhain
11.1.1
How the ONT needs to be defined to achieve a proper Post output
To achieve an output of PLANE SPATIAL by the Post the following prerequisites needs to be
fulfilled. (PLANE SPATIAL is supported by OOTB post; PLANE AXIAL and CYCLE19 are
supported in the CCF for simulation only)
milling operations and drilling operations needs to be 3+2 axis operation
The MCS need to be set to CSYS Rotation
11.1.2 How to customize the machine data to achieve correct simulation
The settings are valid for all supported modes which are PLANE SPATIAL, PLANE AXIAL and
CYCLE19. Inside the MCF global variable in Internal variables tab must be set related to the type
of the machine tool and the axis vector directions. Name of the variables are:
GV_strMachineType (T, M,P)
T for Tool Head/Head
P for Part Table/Table
M for Mixed Head/Table
GV_strSwivelingChainName
The default name for the chain will be default
GV_strFourthAxisName
GV_strFifthAxisName
GV_dFourthAxisX (x component of fourth axis)
GV_dFourthAxisY (y component of fourth axis)
GV_dFourthAxisZ (z component of fourth axis)
GV_dFifthAxisX (x component of fifth axis)
GV_dFifthAxisY (y component of fifth axis)
GV_dFifthAxisZ (z component of fifth axis)
And the soft min/max limit of the rotary axes should be set if you wish rotary axis solution can be
selected based on axes limit.
More details about the cycle and the way how it is implemented in CSE can be found in the
Appendix
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 16 / 56
11.2
The Sinumerik Solutionline version is implemented in this approach. Much more details about the
cycle itself and the way how it is implemented in CSE can be found in the Appendix
11.2.1
11.2.2
How the ONT needs to be defined to achieve a proper Post output
To achieve an output of CYCLE800 by the Post the following prerequisites needs to be fulfilled.
milling operations and drilling operations needs to be 3+2 axis operation
Sinumerik 840 UDE should be added on the operations, Transformation option should
choose Swiveling as shown below:
11.2.3
Machine Tool dependent data customized ini files
This is the list of variables defined for each machine tool in the ini file and others files to define
data for the CYCEL800. These are the data, which need to match the related machine tool.
Content of the OOTB INI file
SMAC; adopt the original DEF file from MC
PGUD; need remove the line with REDEF
TC_CARR; define tool holder data
G40 D0
$MN_MM_NUM_TOOL_CARRIER=1
M17
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 17 / 56
11.3
11.3.1 How the ONT need to be defined to achieve a proper Post output
To achieve an output of G68.2 by the Post the following prerequisites needs to be fulfilled.
Milling operations and drilling operations needs to be 3+2 axis operation
The MCS need to be set to CSYS Rotation
11.3.2
How to customize the machine data to achieve correct simulation
The requirement for G68.2 is the same to the requirement for PLANE SPATIAL. Please refer to
previous chapter
More details about the cycle and the ay how it is implemented in CSE can be found in the
Appendix
SIM01:
This example has a special tool change mechanism including a real tool changer. Re-using this
example for other machines without a similar tool changer can cause unexpected behavior. In
this case, use sim02 as reference for a simple 3 axis milling machine tool.
12.2
SIM03:
This metric Sinumerik example includes a cam setup, which handles operation using milling tool
(T-Cutter and Step-Mill) dealing with multiple tracking points.
New with NX9 an additional CAM Setup part file is included showing a tomb stone configuration.
The CAM structure using the feature Paste with Reference and the OOTB post of this machine
tool included one special UDE to activate/deactivate the feature to output the pure cutting area of
the operation as separate subprograms.
Furthermore the post is enhanced to not outputting a ROT statement or a swivel cycle if the
orientation of the used MCS programming coordinate system can be brought into synch with the
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 18 / 56
12.3
SIM05:
This machine includes post and Simulation for controller OKUMA. Here a list of the supported
features.
12.3.1
Functionality list
Okuma controller supports the basic functionality for 2 axis drilling, 3 axis, 3+2 axis and 5 axis
milling and also some advanced functionality.
12.3.2
12.3.3
Basic functionality
Addresses (X, Y, Z, A, B, C)
Program control (M02, M0...)
Basic motion type: rapid, linear, circular(G0/G1/G2/G3)
Workplane selection (G17,G18,G19)
Metric/Inch units(G20/G21)
Absolute and incremental dimensioning mode(G90/G91)
Fixture offset(G15 Hn/G16 Hn)
Coordinate system rotation(support Local CSYS and Auto3D way)
Tool radius compensation(G41/G42/G40)
Tool length compensation(G54 H/G55 H/G56 H/G53 H/D)
Feedrate, federate unit(G94/G95 F)
Spindle speed and direction control (S, M3,M4,M5)
Tool number and tool change(T M6)
Coolant(M7/M8/M9)
Home position(G30)
Dwell(G4)
Drilling cycle(G73/G74/G76/G81/G82/G83/G85/G86/G87/G8R9/G80)
Advanced functionality:
G68
G68
G68
12.3.5
Switching between TCP G44 mode and G169 mode for 5 axis machine
Set variable dpp_ge(tcp_output_type) to AXIS", and set dpp_ge(tcp_base_coord_type) to
"TCP_FIX_MACHINE" in PB_CMD_dpp_ge_set_default_variable. It will output NC code G169.
set variable dpp_ge(tcp_output_type) to VECTOR,and set dpp_ge(tcp_base_coord_type) to
"TCP_FIX_TABLE" in PB_CMD_dpp_ge_set_default_variable. It will output NC code G44.
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 19 / 56
12.4
SIM10:
This machine tool is only available with a Fanuc controller model. Material removal and/or tool
path based TPB simulation are not supported. It doesnt support many different Mill-Turn
features, mainly what the example includes. To see more Mill-Turn features like e.g.
TRANSMIT/Polar mode refer to sim15 is suggested.
12.5
The initial setting for these machine tools in the library changed to be type LATHE and run with
G-Code System-A. That is done by using the variables in the ini file:
#983=0 (specifies that this is a lathe)
#3401=1 (specifies that G-Code system A should be used, where G99=feed per rev)
Doing so G99 will be interpreted as feed rate set per revolutions and G98 as feed per minute.
And G90 G91 is not a valid code in that setting. For incremental motions U/V/W is used
12.6
SIM13:
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 20 / 56
Note: Due to the general complexity and variations of mill turn machine tools it could not
expected that these example can be reused for any different mill turn machine tool type. For such
complex manufacturing centers a customization for Post and Driver is always mandatory.
Note: This example does not support TPB and MTD
13.1
Kinematics Configuration
+ Z3
+ X1
+ B1
+ Y1
+ C2
+ C4
+ C3
+ Z2
+ Z1
+ X2
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 21 / 56
13.2
G53
MZJ
G54
Local 1
G59
G59
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
G55
Local 2
Page 22 / 56
Description
G53
Picture
G54
G59
G55
G59
13.3
Tool Change
The tool change on the B-Axis is done by calling a sub program TC.SPF. The parameter
definition is defined as:
TC(tool number, B-Axis position, Spindle position )
Example:
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 23 / 56
13.4
About Spindles
The post outputs related code to activate (M3/M4) and stop (M5) them. At the beginning of an
operation the related spindle will be set as main spindle with the SETMS command. At the
beginning the main spindle C4 is assigned to the first channel (B-Axis Head) and the sub spindle
C3 is assigned to the second channel (lower turret). If necessary to change this the post will
output the command GETD(channel) to assigned the related spindle/axis to the channel which
drive this spindle/axis
13.5
The example includes the TRANSMIT option (CX Polar Mode) for one operation. To activate and
deactivate a start and end UDE needs to be used.
N5520
N5530
N5540
N5550
N5560
N5570
N5580
N5590
N5600
N5610
N5620
N5630
N5640
N5650
N5660
N5670
N5680
N5690
N5700
N5710
N5720
;Operation : PLANAR_MILL_ROUGH
GETD(C4)
;Tool Change
G17
DIAMOF TOWSTD
TC(5,0.,0.)
MSG("MILL_TRANSMIT")
SETMS(1)
;
;Initial Move
G0 B0.0 C4=0.0
TRANSMIT(1)
G54
TRANS X0.0 Y0.0 Z300.
G0 G90 X-42.544 Y-70.87 Z10. S1=2000 D1 M1=3
;Approach Move
Z-52.
;Engage Move
G94 G1 Z-55. M8 F200.
X-45.041 Y-66.538
;Cutting
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 24 / 56
X-80.152 Y-5.636
;Retract Move
X-82.649 Y-1.304
Z-52.
;Departure Move
G0 Z10.
;End of Path
TRANS X0 Y0 Z0
TRAFOOF
M1=5
For other milling modes like XYZ motions (example operation is FACE_MILLING_AREA) and for
axial drilling XYC motion (example operation DRILL_IN_CENTER_S1H) the post figure out this
automatically by the operation.
13.6
The example includes some multi axis operation, which simulated using the TRAORI function. As
a show case one operation (CONTOUR_PROFILE_1) are created Vector output instead of Axis
positioning. To achieve the vector output the following UDE is used.
13.7
Handling of special features like part transfer, moving sub-spindle and jaws
New with NX9 are three user defined generic motion types to give the user full flexibility define
special motions of the sub-spindle and the related jaws on the chucks. Doing these actions it is
no longer needed to use special UDE, but more using these new sub operation types. The
following sub-chapters describe the individual UI and related NC output of these operations.
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 25 / 56
Moving Sub-Spindle Z3
UI Setting
Posted NC Code
Move to Home
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 26 / 56
Handling of Chucks
UI Setting
Posted NC Code
Mainspindle Open
M120
Subspindle Open
M130
Mainspindle Close
M121
Subspindle Close
M131
Mainspindle Position
Subspindle Position
13.7.3
UI Setting
Posted NC Code
Main to Sub
M140
Sub to Main
M141
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 27 / 56
13.8
Multiple Chains
New with NX9 the kinematics model of sim15 has two kinematics chains of type milling defined in
the MTB. At this point in time only the first one B-HEAD-MAIN-SPINDLE is used in the CAM
setup and addressed by TRAORI. In the MCF it is prepared TRAORI(1) and TRAORI(2) for
working on the main or sub spindle.
13.9
This chapter explains the dependencies between tool angle data, the related orientation and
mounting in to a machine tool. This will be used to created specific operations and achieve the
desired orientation. Even if this is done based on one operation of the sim15 example, this is not
specific but can be seen as some more general CAM tool related information. As the example we
are using the operation ROUGH_BACK_TURN. Desired is the following manufacturing.
13.9.1
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 28 / 56
Selecting the tool in the ONT the tool will be displayed with the tracking point on the WCS in that
orientation as it will be mounted into the pocket. In the case above this is the B-Axis head. To
achieve the correct orientation the tool holder angle (OA), the insert position and the tool holder
type can be changed accordantly. Usually the turning tool (if it is a parameter tool without tool
assembly graphic) is mounted into the spindle with the tracking point. To change these values in
the tab More section Simulation are used. In this example 100 / 0 will result in:
100mm
13.9.2
Settings in the Operation:
To achieve the desired position for the operation the tool needs to be more orientated vertical
instead of horizontal (B-Axis motion) this will be set into the operation. Here to achieve 80
degree. To achieve the rotation about 180 degree in the spindle of the B axis, so that the cutting
edge is more on the right as on the left, the Flip Tool Holder is used.
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 29 / 56
Note: Due to the general complexity and some special assumptions made in that example it
could not be expected that this example can be reused for a different head change machine tool
without any customization on Post and Driver.
Note: This example is available in Sinumerik CSE and TPB. MTD is not supported.
14.1
This example is built in such a way that the base machine tool includes a head magazine, which
gets filled by heads using the device mechanism. The head magazine pocket gets the holder
type HEAD added, so that only heads and no tools can be placed in the pockets. The core
machine tool includes the three linear axes and a pocket to mount the head on. This junction is
classified as Tool Mount junction and is used later in simulation to mount the head.
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 30 / 56
Note1: To keep it simple, the orientation of the machine zero junction, the mount junctions on the
machine and the junctions on the heads to mount them onto the machine are all identical.
Note2: The holding system is defined, so that only HEAD objects can be mounted to that
pocket (_STATIC_HOLDER)
Note3: The Holder ID is not used today
14.2
The three heads are defined as devices with the related kinematics model and axes (if available).
Here the example of the 2-axis head:
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 31 / 56
Note1: Must not assign an axis in the root component, but always create the junction which is
used for an axis definition in the direct parent kinematics component of the axis.
The head objects are added into the device_database.dat file with the appropriate HEAD type so
that they match the holding system into the 3 designed pockets of the core machine tool. It is
important to mention that the description name will be used later when these objects get retrieved
in NX CAM. Thus they are chosen simple.
14.3
Page 32 / 56
14.4
The CSE driver handles that complete example mainly through the HEADCHANGE subprogram.
All related controller logic is placed into that single subprogram, which calls other subprograms to
mount/unmount the head and the tool.
14.4.1
Settings done in the ini file
This example uses some global NC variables. Here a list and description of variables used and
defined in the related ini file.
DEF NCK INT $P_HEADNO
-> actual mounted head
DEF NCK STRING[128] $P_HEADNAME
-> name of the mounted head
DEF NCK STRING[128] SIM_TOOL_CARRIER
-> name of the tool carrier, depends on the pocket name
DEF NCK INT HEAD_TRANS_PLUS_SWIVEL
-> switch to activate swivel together with the head NOT used today
DEF NCK REAL POCKET_SWIVEL_ROTX/Y/Z
-> variable to describe the rotation needed to do the swiveling based on the initial position
of the head after it is mounted
14.4.2
Head Change Program
This subprogram is called for all head/tool change actions from the main program. This program
is written in Sinumerik NC code language only. From the main program the other subprograms to
mount and un-mount the tool and head are called.
Name of the subprogram: HeadChange.spf
Parameter description of program:
No.
1
2
3
4
Parameter
_TOOL
_HN
_CPOS
_APOS
Type
STRING
INT
REAL
REAL
Description
The name of the tool e.g. MILL
The number of the head (1== vertical 2== RAH 3==AC-Head)
The axis values to position the C axis in the head (head 2 and 3 only)
The axis values to position the A axis in the head (head 3 only)
The mountHead command registers the heads tool carriers and axes in CSE. Each tool carrier
represents a pocket in the head.
When retrieving a device from the library, it can happen that a head axis has to be renamed due
to the fact that different heads come with the same axis name (in our example head 2 and head 3
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 33 / 56
= getVariable("SIM_TOOL_CARRIER");
The name is extended by the head number (see workaround in the post chapter)
sToolName = getArrayElement("$TC_TP2",nToolID)+"_"+getVariable("$P_HEADNO");
The creation of the tool itself is done as usual, but with the correct carrier object like:
generateTool (sToolName, sCarrier);
The grasp command to physically mount the tool needs to use the pocket junction on the head.
grasp(getNextTool(sCarrier), getJunction(sCarrier, "S"));
For the activation of the tool, the correct carrier object is required again:
activateNextTool (sCarrier);
14.5
This section is for experienced people who usually take care of customizing CSE
simulation drivers only. It describes what is changed in the MCF on top of the OOTB CCF to
implement the given head change example.
14.5.1 About head correction
One important enhancement in NX8.5 is the capability to access the head correction matrix in
CSE. With this information it is possible to activate a complete compensation calculation of the
head including the actual position of the axes in the head. A new CSE kernel method was
introduced to get the data from NX CAM.
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 34 / 56
If this head gets mounted to the spindle S (main tool carrier of the machine tool) the parameters
of getHeadCorrection look like:
getHeadCorrection("S","H"+getVariable("$P_HEADNO")+"_SPINDLE")
14.5.2 Axis and channel configuration in the MCF
The mount head and un-mount head CSE kernel command register and unregister the axes on
the head. To achieve the correct behavior in this example the base MCF does include the axes of
the base machine only. These are X,Y,Z and the spindle S.
14.5.3 Changes done in meta Code D
The length correction of both the tool and the head, are set in the transformation $TOOL.
Below the main difference on top of the CCF is shown. The kernel command SetToolCorrection
is used, but it is important here to use the correct tool carrier to get the compensation of the tool.
The compensation of the head is determined by calling getHeadCorrection. To follow the
common implementation, the overall handling is achieved in the D metacode, but the pure math
and setting of the $TOOL transformation is done in a method called from the D metacode. That
method is called GMe_ActivateHeadCorrection.
Note: In this implementation the update of the length compensation of the tool plus head is done
only if the D meta code is called. To handle e.g. an update after each motion of a heads rotary
axis it would be necessary to overwrite and change the meta code for C and A (calling the related
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 35 / 56
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 36 / 56
15.1
Kinematic Configuration
15.1.1
Machine Tool Builder
The kinematic model contains two spindle objects. The First one is the main spindle with the tool
mount junction S in head and the second one C with the part mount junction on the rotary
table. Both components are classified as spindles-objects and can be driven with a NC command
e.g. S1000 M3.
For lathe spindles it is necessary to create two spindle components (C_Base, C_Rotary) beneath
a parent object with a containing rotary junction (C_TABLE_ROT).
The C_BASE-component contains the NC axis flag and is classified as _LATHE_SPINDLE
without any graphics. The graphic elements are assigned in the C_ROTARY component
15.1.2
Machine Configurator
For the CSE driver it is also necessary to assign these two spindle objects. The C component
must be classified and assigned as a spindle as well as the S component. The default setup for
main spindle is S.
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 37 / 56
SETMS
The Sinumerik NC-command SETMS set the active main spindle. (1 for S; 2 for C)
Case2 - 0 rotated B-Head (vertical) and G18 working plane for turning
considered the non-centered tool tip and the L-correction on first axis
Case3 - 180 rotated B-Head (horizontal) and G18 working plane for turning
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 38 / 56
The following picture illustrates the reason for the advanced customization in the third case of the
tool length correction method. The head rotation from vertical (B0) into horizontal position (B180),
causes an offset value (101,6mm) which must be considered in the tool length correction. The
function calculateIKSLinears calculates this offset value.
15.1.4
Turning specific NC section
Turning operations take place in the XZ-working plane (G18). Therefore its required to swivel
(ROT) the coordinate system into the correct working plane.
For asymmetric tools (e.g. turning tool) the tool tip must be orientated (SPOS) into the correct
cutting direction.
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 39 / 56
15.2
15.2.1
Def-File
Adresses
S
Change [S$spindle=]
M_spindle
Change [M$spindle=]
spos
Change "SPOS1="
frame_rot_z Added
15.2.2
Limits
PUI
mom_kin_4th_axis_min_limit
mom_kin_4th_axis_plane
mom_kin_4th_axis_vector(2)
mom_kin_5th_axis_max_limit
mom_kin_5th_axis_plane
mom_kin_max_fpm
15.2.3
TCL
MOM_initial_move:
Removed
Template
Added
Custom
Command
Added
Template
Changed
Parameter
15.2.4
Added
"S"
"M"
"SPOS="
ROT Z
Change
Change
Change
Change
Change
Change
Old
0
ZX
0
360
0
10000
New
-360
Other
1
360000
-360000
15000
set_spindle
PB_CMD_TURN_reset_rotary
set_spindle (if TURN)
mom_siemens_5axis_mode = SWIVELING
in PB_CMD_set_Sinumerik_default_setting
Frame_z_rot
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 40 / 56
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 41 / 56
17 Appendix
A.
Summary:
The NC code examples shows, that the case 'D is general possible,
but this not supported by the OOTB post processors.
So the rule here is:
Activate TRAORI and avoid outputting circle statements G2/G3
after activating TRAORI and have NC axes rotated
M30
B.
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 42 / 56
C.
getJunction("SPINDLE", "S"));
0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
ON, TRUE);
2, -0.01);
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 43 / 56
D.
This chapter describes the supported functions of the example posts of the MACH library
machine tools. All post processors are available as inch and metric versions.
Milling Machine Posts
Standard functions for 3-5 milling machines:
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 44 / 56
E.
Set tool offset values for the related D number of the tool 100
$TC_DP1[100,1]=120
; tool type 120->milling
$TC_DP2[100,1]=133.00 ; flute length
$TC_DP3[100,1]=133.00 ; length
$TC_DP6[100,1]=68.500 ; radius
$TC_DP7[100,1]=0
; corner radius
$TC_TP1[1]=1
$TC_TP2[1]="UGT0203_065"
$TC_TP7[1]=1
$TC_TP8[1]=10
$TC_DP1[1,1]=120
$TC_DP2[1,1]=29.00
$TC_DP3[1,1]=109.00
$TC_DP6[1,1]=4.0
$TC_DP7[1,1]=4.0
$TC_MPP6[1,1]=1
;$TX_TOOLCOUNT = 9 ; tool numbers
M17
F.
Swiveling Cycles
All three CCFs for TNC, Sinumerik and Fanuc include one swivel cycle implementation for the
related NC code PLANE SPATIAL, TCARR/PAROT and G68.2. The way how that is
implemented is consolidate over the different controllers and follow one general workflow. Here
the details of that workflow:
Initialize the system/global variables to define chain kinematics.
Apply work piece coordinate rotation (and translation) to transformation
(WPFRAME for Sinumerik, ROTATIONAL for Fanuc, PLANE for TNC).
Calculate the tool vector after work piece coordinate rotation.
Calculate tool angle and part rotating angle with rotated tool vector.
Select the tool and part rotating angle based on the restriction (SEQ, limitation).
Compensate the linear offset caused by tool and part rotating.
Compensate the rotating offset caused by table rotating if applicable
(for HeadTable and TableTable machine).
Move and rotate head and/or table.
G.
PLANE SPATIAL
Inside the used MCF global variable are set related to the type of the machine tool and the axis
vector directions. Name of the variables are:
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 45 / 56
GV_strMachineType: "P"
GV_strFourthAxisName: "B"
GV_strFifthAxisName: "C"
GV_dFourthAxisX 0.584825
GV_dFourthAxisY -0.573576
GV_dFourthAxisZ 0.573576
GV_dFifthAxisX
0.0
GV_dFifthAxisY 0.0
GV_dFifthAxisZ -1.0
GV_dFourthAxisLimitMin -9999
GV_dFourthAxisLimitMax 9999
GV_dFifthAxisLimitMin -9999
GV_dFifthAxisLimitMax 9999
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 46 / 56
H.
CYCLE800
Basic Workflow
The CYCLE800.SPF consists of two subprograms, which are:
On Powerline: TOOLCARR.SPF
On Solutionline: CUST_800.SPF
In addition CYCLE800 makes use of lots of system-variables and machine data, e.g.
TC_CARRxx[x] that holds the kinematic configuration and also needs some definition files like
PGUD.DEF and SMAC.DEF so on Powerline even more.
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 47 / 56
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 48 / 56
YES
0 >= Value
Reset
transformation
NO
TCOFR
TCOABS
Assign
TC_CARR13&14
to
partAngle&toolAng
le
Calculate IKS
Angles
Set $P_TCSOL &
$P_TCANG value
Gme_GetRotateS
olution
TRUE
TCOABS or
TCOFR
Gme_Caculateline
ars
$P_TCSOL>0
Assign
TCANG1&2 to
partAngle&toolAng
le
YES
CARR13==TC
ANG3 AND
CARR14==TC
ANG4AND
CARR13!=0AN
D CARR14!=0
Assign
TCANG3&4 to
partAngle&toolAng
le
FALSE
NO
Gme_Caculateline
ars
End TCARR
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 49 / 56
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 50 / 56
I.
G68.2
Page 51 / 56
J.
This section list the settings, which are take place when a CSE simulation is initialized based on
the OOTB CCF. Thus the method CSEInitializeChannel is called, which sets these defaults.
Afterwards possible ini files get registered, which add addition defaults or can overwrite the ones
already set.
Sinumerik:
Defaults set in the CCF:
G0 G17 G54 G60 G601 G710 G90 G94 CFC NORM G450 BRISK ORIMKS DIAMOF
TCOABS
GV_bUseLoadOffset=FALSE to deactivate the LoadOffset functionality.
GV_bUseSetToolCorrection=FALSE to not use SetToolCorrection in D-Metacode and use
data from ini file instead.
$MC_FRAME_ADD_COMPONENTS=1. This means G58 and G59 can be used. Also
means that TRANS stores in $P_PFRAME[.., TR] and ATRANS stores in $P_PFRAME[..,
FI]
Defaults from the ini File:
TO_INI ; load a to_ini file including tool and offset data produced by the OOTB post
(the file TO_INI is handled like a subprogram. If this is not found the system will NOT raise
an error message as usual)
SMAC ; definition subprogram from Siemens SL
PGUD ;definition subprogram from Siemens SL
TC_CARR ; Sets data for the CYCLE800 see TC_CARR.DEF
G40 D0
$MN_MM_NUM_TOOL_CARRIER=1
$TX_TOOLCOUNT=1000
Fanuc:
Defaults set in the CCF:
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 52 / 56
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 53 / 56
K.
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 54 / 56
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 55 / 56
Working-with-OOTB-MACH-Simulation-Examples-NX902.docx
Page 56 / 56