Академический Документы
Профессиональный Документы
Культура Документы
Description of NC code for EUROMAC punch presses with TopPunch control software
EUROMAC
This is version 1.9.1, last updated 6 September 2011, of the EUROMAC NC code description. Copyright EUROMAC.
Table of Contents
1 2 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 An NC File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2.1 2.2 Dimension Units and Ranges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Specifying Coordinates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2.2.1 Incremental Programming of Coordinates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
NC Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1 NC Job Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.2 Sheet Metal Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.3 Material Specication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.4 Clamps Position . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.5 L-Gauge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.6 Loading Position . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.7 Setting of Coordinate Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.8 Move to a Position . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.9 Hit at a Position . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.10 Interpolations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.10.1 Linear Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.10.2 Circular Interpolation CW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.10.3 Circular Interpolation CCW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.11 Clamps Repositioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.12 Programme Stops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.12.1 Programme Stop in the Ram Upper Dead Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.12.2 Programme Stop in a Tool Upper Stroke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.13 Work Chute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.14 Dwell in a Position . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.14.1 Dwell before a Hit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.14.2 Dwell after a Hit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.14.3 Dwell in a Tool Lower Stroke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.14.4 Dwell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.15 Controlling Technology Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.15.1 Axes Speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.15.2 Feed Rate in the Interpolation Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.15.3 Tool Upper Stroke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.15.4 Tool Lower Stroke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.15.5 Ram Speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.15.6 Ram Acceleration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.16 Tool Change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.17 Tool Oset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.18 Overriding Tool Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.19 Raising Punching Head . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.20 Rotating and Flipping a Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.20.1 Rotate Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.20.2 Flip Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.21 Extra Strip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.22 Marking Patterns and Proles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Application Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.1 4.2 Auto-Index Machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Turret Machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.1 MTX 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Flex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 Tapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5 Automatic Loading and Unloading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 15 16 16 16 17
1 Introduction
This document describes format of NC code for EUROMAC punch presses. The description is specic to the TopPunch R control software versions 1.5.x, 2.0.x, 2.1.x and 2.2..x.
2 An NC File Format
An NC code is an ASCII text le with the .nc or .cnc sux of its name. The le is organized in blocks or lines. Each line contains one NC command with its parameters. A line may optionally start with the semicolon character ;. The NC code is case insensitive. Arbitrary mixing of lower and upper cases is permitted. A line enclosed in parentheses () is read in but not executed. Comments may be put there. Three sections of commands can be identied in an NC code. The code starts with declarations like a job name, sheet metal dimensions, clamps positions and loading position. The largest portion of commands follows in the middle section where the actual punching job is programmed. The third section may conclude the code specifying what to do on unloading the sheet. Reading of an NC le stops when end of the le is reached or when the percent character % at a line beginning occurs. Any text like a setup sheet for a job may be output behind the % character.
Figure 2.2: Machine coordinate system and loading position: 0machine zero point, PIN1 and PIN2loading pins; shtrefreference position of a metal sheet at loading position; xload loading position of the back gauge; xpin1 , xpin2 and ypinloading pins positions; xpinrep and ypinrep reposition hold down cylinders positions. A machine has its zero point dened as follows (see Figure 2.2). The zero X coordinate is at zero value of a back gauge scale. A clamp support face denes the Y coordinate of the zero point. The zero point comes at the centre of a ram when both X and Y machine coordinates
have zero values. In many cases the machine and NC coordinate systems are equal. They may dier when not loading at XPIN1. The NC coordinate system is shifted by the xload shtref value. Another example is a machine with automatic loading and unloading where right hand edge of a metal sheet is positioned at a loading pin. See Section 4.5 [Automatic Loading and Unloading], page 17, for transforming coordinates on such machines. A group of commands take arguments specifying position or trajectory in the NC coordinate system. Those commands are SET , CARICO , MOV , COLPO , START_PROFILE , LIN , CIL , CIR and END . General form of a position specication is Xx Yy Cc where x, y and c respectively are the coordinate values. Exceptions are the CARICO and END commands where the x and y values refer to a machine coordinate system. Several special positions of the X axis are precongured in TopPunch R and can be accessed through machine parameters. See Table 2.2, for list of possible parametric expressions of the X axis position. They are intended mainly for loading and unloading of material, i.e. the CARICO and END commands. However, they may be used in any command taking position arguments. XPIN1 XPIN2 XPIN External loading pin position as specied in the xpin1 machine parameter. Internal loading pin position as specied in the xpin2 machine parameter. Position of automaticaly selected loading pin. If the programmed sheet X dimension is less then value of the xint machine parameter internal loading pin position (xpin2 parameter) is chosen. Otherwise, the xpin1 parameter value is assumed. Position specied in the xload machine parameter. This is available in TopPunch R since version 2.0.0.
XLOAD
Table 2.2: Precongured X axis positions. Any of the X, Y and C component can be omitted in the position specication meaning it doesnt change. The C coordinate may be used for auto-index machines only. Interpolation commands dene position of the end point and trajectory travelled to reach it. Linear interpolation moves axes along a line from the current position to the line end point dened by the X and Y coordinates. Programming of circular path is accomplished by circular interpolation commands. The resulting trajectory is a circular arc or a full circle. It starts from the current position. Its end point is dened by the X and Y coordinates. Additional XC or I and YC or J coordinates specify the circle centre point. The XC and YC are the centre point coordinates in the NC coordinate system while the I and J are increments from the circle start point in X and Y axis, respectively. Only X and Y axes coordinates may be used in interpolation commands. Programming the C axis is not permitted there. To adjust an initial tool rotation use the MOV command with the C coordinate before an interpolation command. Then certain tools (which are dened in the machine control software TopPunch R ) automatically keep their angular position tangent to the travelled path.
Chapter 3: NC Commands
COLPO X100 DY50 DC45 In the above example a machine rst positions X and Y axes to 100, 200 and then makes two hits. The rst hit will be at X150, Y100 with index at 45 and the second goes at X100, Y150 and C90. Mixing of absolute and incremental specication of coordinates is allowed in any NC block dening position in the NC coordinate system.
3 NC Commands
3.1 NC Job Name
NAME string An optional command typically found at the rst line of an NC le. In the string argument it denes the job name. In TopPunch R versions 1.5.x length of the string is limited to 32 characters. No such limit exists in version 2.0.0 and above. The command is supposed to appear only once at the biggining of an NC code before the CARICO command. An NC block example: NAME NC job
PINZE c1 c2 c3 ... cn CLAMPS c1 c2 c3 ... cn The command declares initial clamps positions. Two forms are possible. The rst one denes the left clamp position at the X parameter and the right clamp position at the Y parameter.
Chapter 3: NC Commands
Up to n clamps congured on a machine can be dened in the second form. The positions are stated from the leftmost clamp (c1 ) to the rightmost clamp (cn). This form is supported in TopPunch R since version 2.0.0. A clamp position is dened as a distance of its left side from NC coordinate system origin. The clamp left side indicates its position on a scale as it slides on a back gauge. On machines with automatic clamps the command may execute, if necessary, the clamps position reading and setting procedure. In any case the declared values are showed later in the loading position info message. The command is supposed to appear only once at the biggining of an NC code before the CARICO command. An NC block example: PINZE 325 950
3.5 L-Gauge
LGAUGE Xlgx Ylgy XClgox YClgoy LGAUGE Xlgx Ylgy Ilgox Jlgoy The command declares dimensions of an L-gauge and starts the L-gauge mode.
Figure 3.1: L-gauge dimensions. A machine works in a special mode with the L-gauge clamped in clamps instead of a metal sheet. Axes move in slow speed and stop at each hit coordinates. An operator has to push the sheet manually into the L-gauge. Depressing a foot pedal punches a hole and then moves to the next hit position. Safety barrier, if installed, is disabled to allow the operator to enter working area. See Table 3.1, for dimensions of the EUROMAC standard L-gauge. The dimensions correspond to machine parameters in TopPunch R . The lgclamp1 and lgclamp2 are clamp positions when loading at PIN1. lgx lgy lgox lgoy lgclamp1 lgclamp2 905 200 70 90 305 777
Chapter 3: NC Commands
The command is supposed to appear only once at the biggining of an NC code before the CARICO command. The command is supported in TopPunch R since version 2.0.0. An NC block example: LGAUGE X905 Y200 I70 J90
The command moves axes to the specied position for loading material. See Section 2.2 [Specifying Coordinates], page 1, for details on specifying coordinates. Note that in this case the x and y values refer to the machine coordinate system rather then to the NC coordinate system. Depending on a machine model, some more actions may be executed like positioning turret station or reseting auto-index axes. Then a message for an operator appears on a screen telling clamps positions, tool and material to load. Depressing a foot pedal opens the clamps and raises the proper reference pin. Optional ags argument species whether a material shall be loaded manually or automatically. Possible values are MAN and AUTO for manual and automatic loading, respectively. If ommited, machine parameter autoload makes the decission. This extension is supported in TopPunch since version 2.1.1. At least DIM , PINZE and TOOL instructions shall appear in an NC code before the CARICO . An NC block example: CARICO XPIN Y300
Move axes to the specied Xx Yy Cc . Trajectory of the movement is not dened. See Section 2.2 [Specifying Coordinates], page 1, for details on specifying coordinates. An NC block example: MOVE Y100 C-45
Chapter 3: NC Commands
3.10 Interpolations
Interpolation commands continuously move axes along a dened trajectory. This is needed by special operations like grooving, marking or beading. The interpolation path starts at the current position and continues to the end point dened by the command. Speed of the continuous move of the X and Y axes, the feed rate, is dened at a tool properties. However, since the TopPunch R version 2.2.0 it is possible to override it with the FEEDRATE command in an NC code. A group of subsequent interpolation commands composes a contour. Each contour may be optionally enclosed within the START_PROFILE and END_PROFILE commands.
Chapter 3: NC Commands
The clamps reposition command performs the following procedure. At the current position a machine xes material with hold down cylinders. Than, clamps are opened and the Y axis moves to the back by the y value. Now the X axis moves by the x distance. Here the Y axis moves back to the front. Finally, clamps are closed at the new position and hold downs release the material. Recommended values of the Y axis back moves are 2 mm in case of the rst reposition in a job and 1 mm for any following one. An NC block example: RIPOSIZIONA X-300 Y1
Chapter 3: NC Commands
3.14.4 Dwell
DWELL t Waits for t seconds in the current position. Unlike the PAUSE commands the DWELL is valid locally only at the place where it appears in an NC. The command is supported in TopPunch R since version 2.2.0.
Chapter 3: NC Commands
10
is in percents of the highest traversal speeds of the X and Y axes. It ranges from 1.0 to 100.0. That means the speed can be reduced up to one percent of its maximum. Speed settings persist after nishing a job. For this reason it is recommended to restore the full speed by calling SPEED_XY 100 just before the END command. The speed can be modied also interactively by an operator during running a programme.
Chapter 3: NC Commands
11
Tapping cycle with lubrication. Bending cycle on ZX/MTX machines. Tapping cycle without lubrication (Mate EasyTapTM ). Special cycle intended for forming tools on ZX/MTX machines. A stroke is done at low speed in low pressure with an optional dwell time in the lower stroke. Bending cycle on FLEX machines with overtravels with ram at the preset upper stroke. Bending cycle on FLEX machines with overtravels with ram at its upper limit position.
Table 3.2: Special working cycles. In case the programmed tool is a multitool certain rules are recommended for the tool code. In general the code can be expressed as TTCCSS. It is composed of three groups of two digits dening the multitool type, code and station (see Table 3.3). TT CC SS Multitool type. Multitool code. Multitool station.
Table 3.3: Multitool code: TTCCSS. According to a tool shape one to three dimensions are required. See Table 3.4, for supported tool shapes and their dimension parameters. All but round, grooving and marking tools need the angle specied at tool change. It is the angle at which the tool is inserted in a machine. Its value is dened in the NC coordinate system similar to the C coordinate.
Tool Round Square Rectangle Obround Single D Double D Rounded Corner Radius Tool Triangle Special Shape Forming Tool Grooving (Sheet Marker)1 Marking Tool1 Beading (Roller Ball)1 Table 3.4: Tool shapes.
shape T, TONDO, ROUND Q, QADRO, SQUARE R, RETTANGOLO, RECTANGLE A, ASOLA, OBROUND SD, SINGLED, SINGLE_D DD, DOUBLED, DOUBLE_D CR, ROUNDED_C, ROUNDED_CORNER RC, RADIUS TT, TRIANGLE S, SPECIALE, SPECIAL FM, FORMING MK, MARKER, SHEET_MARKER RB, MARKING RL, ROLLERBALL, ROLLER_BALL
The optional name argument is important for deciding whether single tool or multitool is programmed. The string SINGLE with any number of leading and/or trailing underscores means
1
Chapter 3: NC Commands
12
a call to a single tool. In addition, since the version 2.2.0 of TopPunch R , SINGLE_B or SINGLE_D may be used to explicitly require a B station or a D station, respectively, in a 12-station turret. Otherwise, TopPunch R considers the tool being inside a multitool. The argument may be used to give the multitool a name. TopPunch R uses the following procedure to search for a tool in its databases: 1. TopPunch R rst looks at the end of TOOL line in an NC to resolve single tool or multitool call. 2. A single tool is searched in punch list by its shape and dimensions. It may happen that more tools are found. The one with the programmed tool code, if exists in the punch list, is prefered. 3. In case of multitool the tool code is decoded and checked against multitool list. If the decoded multitool station exists and contains the programmed tool (shape, dimensions and angle are checked) TopPunch is happy and uses this tool. Otherwise the search continues with the next step. 4. Multitool list is searched for a multitool station containing the programmed tool. The tool shape, dimensions and angle are checked. First occurrence of the tool is used. Note that in this case the multitool and/or multitool station used in TopPunch R may be dierent from the one intended during o-line programming. 5. In case of MTX machine the turret is also checked for presence of the required tool. 6. An error is reported if any of the above steps fail. Moreover, the TOOL command resets technology conditions such as tool strokes, ram speed and acceleration and axes feed rate to values associated with the tool. See Section 3.15 [Controlling Technology Conditions], page 9 and Section 3.18 [Overriding Tool Parameters], page 13, for information on programming their overriding. The rst occurrence of the TOOL is expected at the beginning of an NC code before the CARICO command. However, it is not executed. It merely declares a tool to be loaded at the CARICO . An NC block example: TOOL 3 TONDO 20 SINGLE TOOL 60103 RE 20 3 0 6MT01
Chapter 3: NC Commands
13
Chapter 3: NC Commands
14
15
4 Application Notes
4.1 Auto-Index Machines
On auto-index machines a tool angle at the TOOL command has to be added to the C coordinate to get the real hit angle. To avoid any confusions it is recommended to declare any tool at zero degrees.
16
4.2.1 MTX 12
The 12-station turret of MTX machines houses three index D stations, three x D stations and six B stations. The B stations enable to lift a die when a forming tool is in use. This feature is done automatically in control and is not programmable in NC code. All the B stations are oset by 70 mm when under a ram. This has to be taken into account in an NC code so that the 70 mm are added to each Y coordinate for any B station. So, to make a hole at 100 mm in the X axis and 0 mm in the Y axis the following has to be output in an NC code. COLPO X100 Y70 The 12 station turret is supported in TopPunch R since version 2.2.0.
4.3 Flex
The EUROMAC Flex electro-hydraulic system consists of a servo motor driven cam which controls hydraulic valves. This solution allows very precise and exible control of a ram position, speed and acceleration. Flex machines support the PAUSE2 command which stops a ram at its lower stroke for a specied time. If the ram working stroke doesnt exceed the cam travel (which is 11 mm) its speed and acceleration are programmable. Moreover, since TopPunch R 2.2.0 the commands RAM_V and RAM_A may be used to override a tool preset values of the ram speed and acceleration in punching mode.
4.4 Tapping
TopPunch R uses a special macro cycle for tapping operations. That means a tapping tool must be declared as the SPECIAL shape and a unique code is dedicated to the tool. See Table 3.2, for the special macro cycles. Special shapes take two dimension parameters which in the case of the tapping tool mean diameter of a tap and a thread pitch. The tool requires rotation. Thus, it must be assigned to an index tool station. In an NC code the COLPO is used to make a thread. For a tapping tool the C coordinate is interpreted dierently from punching tools. In this case it means length of the thread or more precisely working travel of the tool. The full taping cycle is as follows. Machine moves the X and Y axes to a position specied at the COLPO command. Here the tapping tool descends to its upper stroke value. Now, the upper c index axis starts rotating in right hand direction making revolutions, where c is a value at p the C coordinate and p is the thread pitch. At this point the index reverses its rotation making identical number of revolutions in the left hand direction. Finally, a ram moves to its upper dead point. TOOL 9003 SPECIAL 4 1 COLPO X100 Y200 C5 The above example will produce a thread of length 5 at position X100, Y200 with a tap M41. It is operators responsibility to set up proper parameters of the tapping tool in punch list in TopPunch R . The parameters mainly include a thread pitch and revolution rate. The special macro cycle requirement implies that tapping tools are supported in TopPunch R since version 2.0.0.
17
Figure 4.1: Loading material. The machines have three loading pins used to dene a sheet metal reference position. See Figure 4.1, for location of the pins on the machine. In NC code (in the CARICO command) the pins are referred to as PIN1, PIN2 or, in case of automatic pin selection, PIN. See Table 4.1, for assignment of the loading pins. Both automatically and manually large material shell be loaded at the PIN1 and small material at the PIN2. Large material is considered when its X dimension is greater than the xint machine parameter.
PIN1 1 1
PIN2 2A 2M
Table 4.1: Loading pins. With the exception of manually loading at PIN1, material loads at its right hand edge. But the programming origin (NC zero) point still remains at the upper left corner of the sheet. Thus
18
with changing the sheet X dimension the NC zero point moves on a machine table. Figure 4.1 shows automatic loading at PIN2. See Figure 4.2, for more detailed explanation of dimensions and machine parameters used for loading sheet using its right edge as reference. The equations XM = XN C + xld xref and XN C = XM xld + xref transform the NC coordinate XN C to distance from a ram centre XM and vice versa. The XM is actually the XN C transformed to the machine coordinate system. The xld is position of back gauge and xref is distance of the sheet reference edge at loading position.
Figure 4.2: Loading material automatically at PIN1. To produce correct NC code any position coordinates and clamp position shall be checked against the transformed values of working area and clamp position limits and not against the machine parameters values. The following paragraphs explain how to calculate the transformations for various cases of loading positions.
xld xpin1 +xumax +2ou+pinoset xpin2 + xumax + 2ou xpin1 xpinman + xumax + 2ou
Table 4.2: xld and xref . sxX dimension of a metal sheet; machine parameters: xpin1 position of loading pin 1; xpin2 position of loading pin 2A; xpinmanposition of loading pin 2M; xumax maximum clamp position; ouhalf X dimension of a clamp. Assuming the above and knowing the minimal (xumin) and maximal (xumax ) positions of clamps on a back gauge we can transform those positions to NC coordinates. See Table 4.3, for results. Clamp positions in the PINZE command are expected within those ranges.
19
Minimal Clamp Position (cmin) sx + xumin xumax 2ou pinoset sx + xumin xumax 2ou xumin sx + xumin xumax 2ou
Table 4.3: Limit clamp positions in NC coordinates. The X coordinate range is dened by the machine parameters xmin and xmax . See Table 4.4, for its values transformed to the NC coordinate system.
Lowest X coordinate xmin xumax 2ou pinoset + sx xmin xumax 2ou + sx xmin xmin xumax 2ou + sx
Highest X coordinate xmax xumax 2oupinoset+sx xmax xumax 2ou + sx xmax xmax xumax 2ou + sx
Table 4.4: X axis limits in NC coordinates. On automatic unloading the sheet metal must be positioned so that it ts inside unloading area of a machine. See Figure 4.3. Here the unloading area is limited by the ua0 and ua1 dimensions. Thus the unloading distance of the right edge u must t within the range of < ua0, ua1 sx >. Currently, no machine parameters dene the range. The recommended values are ua0 = 600 mm and ua1 = 3600 mm. Considering the above the X unloading coordinate has to t within the range of < xld + ua0, xld + ua1 sx >. See Table 4.2, for calculation of xld. This is true if and only if clamps are at their original position, i.e. there was no reposition at all or the clamps are back at their original position after all repositions in a job. To compensate for repositions just add to the range the dierence between nal and original distances of a clamp to a sheet edge. Note that it may be necessary to include an extra clamps reposition before unloading when the X coordinate value exceeds its working range. Certain Y coordinates are required for both automatic loading and automatic unloading positions. There values can be obtained from machine parameters. See Table 4.5. yload1 yload2 yv Y coordinate when loading at PIN1. Y coordinate when loading at PIN2. Y coordinate for unloading. Table 4.5: Y axis automatic loading and unloading position parameters. Note that there is a limit of material size which a loader can accept. The machine parameter shtymax declares the largest material dimension in the Y axis. It applies for both the automatic and manual loading and unloading. Sheet rotation and ipping, i.e. the RUOTA and RIBALTA commands, are not allowed when loading automatically. Automatic loading and unloading is supported in TopPunch R since version 2.1.0.
20
21
5 An NC Code Example
Figure 5.1: An example job. Following is an example NC code for an EUROMAC punch press. Note that it contains some commands that are not supported by all models. See comments in parentheses for explanation of the code. (Name of the job) NAME nc-example (Sheet dimensions: X Y thickness) DIM 1000.0 700.0 1.00000 (Sheet material) MATERIAL steel (Clamps position) PINZE 395.00000 615.00000 (Initial tool declaration:) (round of 12 inside multitool XMTE10 code 6 station 9) TOOL 280609 T 12.00 XMTE10-06 OFFSET X28.90833 Y-26.02918 (Loading position: select loading pin automatically) CARICO XPIN Y341.00000 LAVORAZIONE (Move to X271.09 Y90) MOV X271.09167 Y90.00000 (Hit at X271.09 Y23.97)
22
COLPO X271.09167 Y23.97082 COLPO X71.09167 Y23.97082 MOV X71.09167 Y90.00000 MOV X560.00000 Y479.00000 (Clamps reposition) RIPOSIZIONA X407.61900 Y0.00000 LAVORAZIONE COLPO X471.09167 Y23.97082 LAVORAZIONE COLPO X671.09167 Y23.97082 LAVORAZIONE COLPO X871.09167 Y23.97082 (Set required position: the actual movement is executed in the next command) SET X732.24670 Y269.25038 C0.000 (Tool change: round 22 inside multitool XMTE6 code 1 station 6) TOOL 600106 T 22.00 6MT01 OFFSET X17.75330 Y-30.74962 (Dwell before a hit for 0.25 s) PAUSE 0.25 COLPO X732.24670 Y269.25038 C0.000 SET X811.52088 Y263.58605 C0.000 TOOL 600103 Q 15.00 0.000 6MT01 OFFSET X-17.75330 Y30.74962 (Reset the dwell before a hit) PAUSE 0.00 LAVORAZIONE COLPO X811.52088 Y263.58605 C45.000 COLPO X767.75328 Y230.74962 C0.000 COLPO X713.58605 Y238.47912 C315.000 COLPO X680.74962 Y282.24673 C270.000 COLPO X688.47912 Y336.41395 C225.000 COLPO X732.24672 Y369.25038 C180.000 COLPO X786.41396 Y361.52087 C135.000 COLPO X819.25038 Y317.75330 C90.000 SET X420.00000 Y570.00000 (Tool change: special shape single tool 10x16 at 0 degrees) (loaded in a B station of the 12-station turret) TOOL 3119 S 10.00 16.00 0.000 _SINGLE_B_ OFFSET X0.00000 Y-0.00000 LAVORAZIONE (Override tool parameters: ram speed at 60%, ram acceleration at 80%,) (dwell in the lover stroke for 200 ms) TOOL_PARAM vram=60000 aram=80000 pause2=200 COLPO X420.00000 Y570.00000 COLPO X260.00000 Y570.00000 SET X280.00000 Y580.00000 C0.000 (Tool change: MATE RollerBall and the like; requires the interpolation mode) TOOL 6972 RL 40.00 0.000 _SINGLE_D_ OFFSET X0.00000 Y-0.00000 (The interpolation mode feedrate: 3000 mm/min) FEEDRATE 3000.00 TOOL_PARAM vram=40000
23
(Move to an initial position and start profile in the interpolation mode) START_PROFILE X280.00000 Y580.00000 C180.000 (Linear interpolation to the end point X260 Y580) LINE X260.00000 Y580.00000 (Circular interpolation to the left to the end point X220 Y540) (The arc centre point is at X220 Y500) CIL X220.00000 Y540.00000 I0.00000 J-40.00000 LINE X220.00000 Y460.00000 CIL X260.00000 Y420.00000 I40.00000 J0.00000 LINE X430.00000 Y420.00000 CIL X470.00000 Y460.00001 I0.00000 J40.00000 LINE X470.00000 Y540.00000 CIL X430.00000 Y580.00000 I-40.00000 J0.00000 LINE X260.00000 Y580.00000 CIL X232.73445 Y569.26756 I0.00000 J-40.00000 (Finish interpolation mode) END_PROFILE SET X197.50000 Y575.00000 C0.000 (Tool change: rectangle 60x5 at 0 degrees) TOOL 365 R 60.00 5.00 0.000 _SINGLE_D_ OFFSET X0.00000 Y-0.00000 LAVORAZIONE (Limit X and Y axes travel speed to 70%) SPEED_XY 70.00 (Override the tool upper stroke) TOOL_UP 8.00 COLPO X197.50000 Y575.00000 C90.000 COLPO X197.50000 Y525.00000 C90.000 COLPO X197.50000 Y475.00000 C90.000 COLPO X197.50000 Y425.00000 C90.000 LAVORAZIONE COLPO X225.00000 Y397.50000 C0.000 COLPO X273.00000 Y397.50000 C0.000 COLPO X321.00000 Y397.50000 C0.000 COLPO X369.00000 Y397.50000 C0.000 COLPO X417.00000 Y397.50000 C0.000 COLPO X465.00000 Y397.50000 C0.000 LAVORAZIONE COLPO X492.50000 Y425.00000 C90.000 COLPO X492.50000 Y475.00000 C90.000 COLPO X492.50000 Y525.00000 C90.000 COLPO X492.50000 Y575.00000 C90.000 LAVORAZIONE COLPO X465.00000 Y602.50000 C0.000 COLPO X417.00000 Y602.50000 C0.000 COLPO X369.00000 Y602.50000 C0.000 COLPO X321.00000 Y602.50000 C0.000 COLPO X273.00000 Y602.50000 C0.000 COLPO X225.00000 Y602.50000 C0.000 (Stop a machine: remove ready part) STOP MOV X657.38100 Y341.00000 C0.000
24
(Restore travel speed to 100%) SPEED_XY 100.00 (Reset the tool upper stroke to a value found in punch list) TOOL_UP -100.00 END
25
C
circular interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 clamps reposition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 coordinate system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1, 3
N
NC command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
T
tapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11, technology conditions . . . . . . . . . . . . . . . . . . . . . . . . . . 9, tool code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tool shape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 12 10 11
F
feed rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7, 10 Flex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii, 16
I
incremental programming . . . . . . . . . . . . . . . . . . . . . . . . . 3 interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3, 7
U
unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
W L
L-gauge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 L-gauge mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 linear interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 working area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Z
zero point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
A
aram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 arami . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 autoload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 autounload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
U
unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
V
vram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 vrami . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
L
lgclamp1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lgclamp2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lgoffx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lgoffy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lgx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lgy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 5 5 5 5
X
xint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 xload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 xmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 xmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 xpin1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2, 3, 18 xpin2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2, 3, 18 xpinman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 xpinrep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 xumax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18, 19 xumin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18, 19
N
ncunit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
O
offu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18, 19
Y
yload1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 yload2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 ypin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 ypinrep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 yv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
P
pinoffset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18, 19
26
27
B
BOTOLA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
N
NAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
C
CARICO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3, 4 CARICO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5, 6 CARICO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12, 17 CHUTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 CIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 CIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 CIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 CIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 CLAMPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 COLPO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 COLPO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 COLPO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9, 16
O
OFFSET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
P
PAUSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 PAUSE1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 PAUSE2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9, 13, 16 PINZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 PINZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 PINZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
R
RAM_A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10, 16 RAM_A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 RAM_V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10, 16 RAM_V. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 RCIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 REPOSITION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 RIBALTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 RIBALTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 RIPOSIZIONA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 RODITURA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 ROTATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 RUOTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 RUOTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
D
DIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 DIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6, 14 DWELL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
E
END . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3, 10, 15 END_PROFILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7, 14 ENDRODI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
F
FEEDRATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 FEEDRATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9, 10 FLIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
S
SET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 SET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 SPEED_XY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9, 10 START_PROFILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 START_PROFILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7, 14 STOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 STOP1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 STRIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
H
HEAD_UP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 HEADUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 HIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
L
LAVORAZIONE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 LCIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 LGAUGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5, 14 LIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 LINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 LOAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
T
TOGLI_TOOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 TOOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 TOOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10, 12, 15 TOOL_DOWN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 TOOL_PARAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 TOOL_UP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 TRAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 TRAP_DOOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
M
MATERIAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MOV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MOV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MOV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3 6 9
W
WCYCLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 WORK_CHUTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8