 Open Access
 Authors : Sotiris L. Omirou
 Paper ID : IJERTV9IS090227
 Volume & Issue : Volume 09, Issue 09 (September 2020)
 Published (First Online): 24092020
 ISSN (Online) : 22780181
 Publisher Name : IJERT
 License: This work is licensed under a Creative Commons Attribution 4.0 International License
Advanced Programming Techniques for a CNC Milling Machine
Sotiris L. Omirou
Department of Mechanical Engineering, Frederick University, Nicosia, Cyprus
Abstract: This paper takes advantage of the powerful capabilities of modern CNC controllers such as subprogramming and parametrization to demonstrate the efficiency improvement of machining operations as a result of applying them in short, flexible and smart CNC programs. To show the benefits of using the above capabilities over conventional G/M programming language, three representative applications are presented through manufacturing drawings, flowcharts, program lists and simulation results. As it is deduced by all three cases, subprogramming and parametrization facilitates the full exploitation of the potential of a CNC machine and makes CNC machines easier to work with.
Key Words: CNC programming, Milling, Parameters, Canned cycles, Drilling, Cutter path generation.

INTRODUCTION
The operation of a CNC machine tool is controlled by a program written in the G/Mcode programming language called part program. A part program contains an ordered sequence of statements specifying in detail the cutter motions to be executed and the auxiliary operations (e.g., spindle on/off, spindle speed and feedrate) to be realized by the CNC machine in order to machine a specified part. A statement is made up of words. Characters, and numerical digits are the elements that constitute a word. For example, the statement
N10 G01 X200 Y300 Z100 F200 M03 S800
consists of the words "N10", "G01", "X200", "Y300", "Z100", "F200", "M03", "S800", meaning that the statement with sequence number N10, requires movement of the tool from its current position to position (200, 300, 100) linearly (G01) with a feedrate of 200 mm/min and with the spindle rotating clockwise (M03) at 800 rpm.
Each of the codes other than G and M has a unique function. The G and M have many functions depending on the following twodigit number. These functions have been standardised and are commonly known as "G and M codes". Generallya Gcode, named preparatory function code, defines one type of motion or one mode of operation while an Mcode, named miscellaneous function code, turns various operations on/off (e.g., coolant flow, spindle, etc). It must be noted that not all the possible code numbers are allocated, which means that control systems manufacturers can use those remaining for whatever purpose they wish.
Parametric programming constitutes an innovative programming technique of G/Mcode programming language. This innovation is not well known, which is unusual because of the fact that it simplifies the CNC procedures dramatically, lessens the user's dependence on CAD/CAM and contributes to bare minimum cycle time [8]. As production quantities grow, every second of program execution time becomes more critical. An important factor that minimizes the cycle time is how the program is formatted. While CAM systems have come a long way, it can be difficult, if not impossible, to cause some CAM systems to output CNC programs as efficiently as can be done with parametric programming technique.
Applying the technique of parametric programming, a part program can be written using variables, arithmetic and logic statements similar to usual programming languages such as Basic, Pascal or C. The specific is that in the case of CNC programming, all these parametric expressions are used to represent the machine axis position (x, y, z, a, etc.), feedrate, and spindle speed functions.
Like other computer programming languages, parametric programming comes in several versions. The most popular are those of Heidenhain and Fanuc (Custom Macro B) controls [9]. Others include User Task (from Okuma), Q Routine (from Sodick), and Advanced Programming Language [APL] (from G& L). The present work uses the latest version of Heidenhain control [4], called iTNC 530.
The rest of the paper is organized as follows: Section 2 describes in detail the mechanism of defining and using parameters in the environment of Heidenhain control. Section 3 is an analytic presentation of three case studies. Each case represent an application category. Namely, case 1 illustrates the potential of subprogramming and parametrization to widen the motion generation capability of a CNC machine with interpolators other than the standard, case 2 points out the flexibility of a
parametric program to accommodate families of parts and case 3 shows how parametric programming can be used to invent new useful canned cycles. Finally, section 4 summarizes the contribution of the paper.

HEIDENHAIN PARAMETERS.
In the Heidenhain control [4], parameters are designated by the letter Q and a number between 0 and 99. Using Q parameters, an entire family of parts can be accommodated by a single part program. In such a case, Q parameters are entered in the part program instead of fixed numerical values. For example, several parts may require machining a pocket (figure 1) with different sizes. A single parametric program can be called up to machine the specific feature. Prior the execution of the parametric program, the numerical values for each pocket are transferred to the respective parameters. This approach eliminates the redundant codes in part program and substantially reduces the size of the program and programming time.
Fig. 1: A pocket dimensioned with parameters instead of fixed numerical values
Q parameters also enable the programming of contours that are defined with mathematical functions or can be used to make the execution of machining steps depend on logical conditions. According to the implementing function, Q parameters are classified in three groups (table 1.):
Table 1: Function Groups
Function group
Operation
Code
Basic arithmetic
Assign Addition Subtraction Multiplication Division Square root
D00 D01 D02 D03 D04 D05
Trigonometric functions
Sine cosine
Root sum of squares Angle
D06 D07 D08 D13
If / then conditions, jumps
If equal jump
If not equal jump
If greater than jump If less than jump
D09 D10 D11 D12
Table 2: Description of the Operations
Operation
Example
Description of the example
D01: ADDITION
D01 Q1 P01 Q2 P02 5
Calculates and assigns the sum of two values to parameter Q1.
D02: SUBTRACTION
D02 Q4 P01 +10 P02 +5
Calculates and assigns the difference of two values to parameter Q4.
D03: MULTIPLICATION
D03 Q2 P01 +3 P02 +3
Calculates and assigns the product of two values to parameter Q2.
D04: DIVISION
D04 Q4 P01 +8 P02 +Q2
Calculates and assigns the quotient of two values to parameter Q4.
D05: SQUARE ROOT
D05 Q50 P01 4
Not permitted: division by 0
D06: SINE
D06 Q20 P01 Q5
Calculates and assigns the square root of number 4 to parameter Q50.
D07: COSINE
D07 Q21 P01 Q5
Calculate the sine of an angle in degrees (Â°) and assign it to parameter Q20
D08: ROOT SUM OF SQUARES
D08 Q10 P01 +5 P02 +4
Calculate the cosine of an angle in degrees (Â°) and assign it to parameter Q21.
D09: IF EQUAL, JUMP
D09 P01 +Q1 P02 +Q3 P03 5
Calculate and assign length from two values to parameter Q10.
D10: IF NOT EQUAL, JUMP
D10 P01 +10 P02 Q5 P03 10
If the two values or parameters are equal, jump to the given label (5).
D11: IF GREATER THAN, JUMP
D11 P01 +Q1 P02 +10 P03 5
If the two values or parameters are not equal, jump to the given label (10).
D12: IF LESS THAN, JUMP
D12 P01 +Q5 P02 +0 P03 1
If the first parameter or value is greater than the second value or parameter, jump to the given label (5).
D13: ANGLE
D00 Q5 P01 +60
Assigns the numerical value +60 to parameter Q5.

CASE STUDIES
Case 1: Complex motions – Serpentine Curve
The case of a Serpentine curve (figure 2) was selected to illustrate the mechanism of generating complex motion using sub programming and parametrization. Figure 3 shows the flowchart at which the program of List 1 was based on. The same program can be executed to machine a serpentine of any size, at any starting angle, with any angle step and any milling depth. Simulation results are shown in figures 4 and 5.
Fig.2: The serpentine curve for a = b = 1.
Fig.3: Flowchart for generating motion along a serpentine curve
List 1: CNC program for motion generation along a serpentine curve
Fig. 4: Simulation test on HEIDENHAIN control
Fig. 5: Simulation tests for cutting a serpentine curve with different parameters.
Case 2 – Families of parts A bolt circle
Almost all companies have at least some applications that fit into this category. Possibly they have prints dimensioned with variables right on the print. The programmer must reference a chart on the drawing to come up with values needed in the program. Or even if they don't have a perfect family of parts application, surely they have at least some workpieces that require similar machining operations. With parametrization, it is possible the development of generalpurpose routines for similar machining operations.
The present application demonstrates the effectiveness of parametic programming for machining holes located on a circle at variable angle (Fig. 6). Figure 7 shows the flowchart on which the program of List 2 was based on. Simulation result is shown in figure 8
Fig. 6: Holes on a circle at variable angle
Fig. 7: Flow chart for drilling holes on a circle with variable number and angle
List 2: CNC program for drilling any number of holes on a circle at desired angles
Fig. 8: Simulation test on Heidenhain Five holes drilled on a circle with desired angles
Case 3 – Inventing canned cycles A spherical pocket
Canned cycles provide a programming method of a CNC machine to accomplish repetitive machining operations, using the G/M code language. Their use, eliminates the need for many lines of programming, reduces the programming time and simplifyies the whole programming process [7, 10]. All CNC machining controls come with a set of helpful machining canned cycles. However, the standard canned cycles are limited in number and capability, being unable to accommodate the needs of applications requiring something unusualsomething that the standard canned cycles cant handle. Parametrization and subprogramming comes to remedy this situation, by offering to the programmer the ability to invent and develop his own canned cycles. The following work demonstrates the application of parametrization and subprogramming in developing a canned cycle for machining a spherical pocket.
Fig. 9: A spherical pocket
The machining of the spherical pocket is achieved by repeating 2 successive motions which are programmed in a sub program. These motions are:

Full circular polar motion on XY plane

Linear motion with selected step along the generatrix on XZ plane
It should be noted that the accuracy of the machining depends on the step selection along the generatrix. Figure 10 shows the flowchart on which the program of List 3 was based on. Simulation result is shown in figure 11
Fig. 10: Flow chart for machining of spherical pocket
List 3: CNC program for machining of a spherical pocket
Fig. 11: Simulation test on Heidenhain Machining of a spherical pocket


CONCLUSIONS
Programming method is of utmost importance in achieving effective CNC programs regarding flexibility, programming time and most critical to cycle time reduction. As it is demonstrated by the three representative case studies, parametrization and subprogramming techniques constitute a powerful programming tool in this direction. The generation of various motions with the desired each time accuracy, the development of programs capable of machining families of parts and the invention of new canned cycles enhancing the feature generating capabilities of CNC systems were all achieved by short flexible programs incorporating these advanced programming techniques.
BIOGRAPHY
Dr. Sotiris Omirou is a professor at the Department of Mechanical Engineering of Frederick University in Cyprus. He has over 30 years teaching experience in tertiary education. His research interests are focused on CAD/CAM and CNC manufacturing methods. He has published a significant number of scientific papers in international peerreviewed journals and he is the author of two technical books. 
REFERENCES

Abbas A.T. and Megahed S.M., A General Algorithm for Drilling Holes Lying in a Matrix, Vol. 21, pp. 235239, 2005.

Djassemi Manocher, An efficient CNC programming approach based on group technology, Journal of Manufacturing Systems, 2000.

Djassemi Manocher, A Parametric Programming Technique for Efficient CNC Machining Operations Computers and Industrial Engineering, Vol. 35, pp 3336, 1998.

Heidenhain iTNC 530 Users Manual.

Voelcker H. and Reuicha A., "Geometric Modelling of Mechanical Parts and Processes", Computer, Vol. 10, No.12, pp. 4857, 1977.

Sava M. and Pusztai J., "Computer Numerical Control Programming", Prentice Hall, 1990.

Stenerson J. and Curran K., Computer Numerical Control Operation and Programming, Prentice Hall, 2005.

http://www.mmsonline.com/articles/0402cnc.html, CNC Tech Talk by Mike Lynch.

S.K Sinha, CNC Programming using Fanuc Custom Macro B 1st Edition, Kindle Edition , 2018

S. Omirou Technology and Programming of CNC Machines Kleidarithmos press, 2018