trochoidal milling

trochoidal milling

Trochoidal milling is circular milling with forward movement. It is mostly used to machine slots and pockets. Trochoidal milling reduces vibration and can greatly improve cutting time. It is mostly done with solid carbide tools, but can also be done with insert tools which are designed to handle it. Trochoidal milling is designed so that only  a small amount of material is taken off per cut, but the full length of the cutting edge can be used. This ensures even wear and heat distribution. Trochoidal milling should be done at high feed rates, using multi edged cutters. Refer to the cutter specs before attempting trochoidal milling.

Most CAM software has trochoidal milling as a feature, but Delcam is developing what they call Vortex milling, which is essentially the same thing. Here is a link to a video demonstration of vortex milling in action. Note that a shrink fit holder is being used for the solid carbide end mill as it provides better support for the cutter and prevents chatter. Also note the way the program handles corners, this is all part of Delcam's extensive research into increasing productivity in the machine shop.

Here is the link: Vortex Milling

Important g codes for cnc turning

Important g codes in cnc turning

G00 - rapid traverse
G01 - feed
G02 - circular interpolation (clockwise)
G03 - circular interpolation (counter clockwise)
G04 - dwell
G10 - data setting
G28 - return to reference point
G40 - tool nose radius compensation off
G41 - tool nose compensation left
G42 - tool nose compensation right
G50 - coordinate system settin and spindle max speed setting
G96 - constant surface speed on
G97 - constant surface speed off

Turning cycles

G70 - Finishing cycle
G71 - OD / ID roughing cycle
G72 - Face roughing cycle
G74 - Peck drilling cycle
G75 - Grooving cycle
G76 - common threading cycle

This is designed to be a basic guide, and should be taken as such. Always refer to the machines manual before attempting to use any codes or writing any programs.

Best brands of Cnc machinery

Best brands of Cnc Machinery

There are lots of brands to choose from when buying Cnc machines. Some of the best brands of CNC on the market include such names as:


Mazak was established in 1919 in Japan. Mazak CNC is most likely the best brand of CNC machine on the market. Even though a Mazak CNC is expensive, not many people can argue that buying a Mazak CNC is money well spent. Although, if you are using your CNC just for a  hobby, or are just starting out, then maybe go for a cheaper brand. There are a lot of cheaper brands of CNC machines that still provide good reliability and accuracy. But if you own a production workshop, you shouldn't compromise.


Doosan was founded in 1896 in South Korea. Doosan is a good, reasonably cheap brand of CNC machine. Its easy to use, which makes it very popular. It is one of the leading brands of CNC machine on the market, although there are notable design flaws, even in the newer models. Good for a small engineering factory or for personal use, and quite good for a production environment.


Victor - taichung was founded in 1954. Their CNC machines are high quality, at a reasonable price. The company is based in Taiwan but has support branches in a number of countries including most of
 Africa. Quite a popular brand of machinary and deservedly so. They have built up a reputation as one of the top brands of cnc machine in the world.


Okuma was founded in 1898 in Japan. Okuma is definately one of the most popular and best brands of Cnc machine. Okumas are reasonably priced, and very reliable. Okuma uses its own control system called the OSP (okuma sampling control) system. It is quite similar to Fanuc but it has some differences. okuma is a brilliant machine when given to the right cnc programmer and comes highly recommended.


Haas is the biggest cnc manufacturer in America. Founded in 1983 in California, Haas quickly established itself as a serious competitor by building high quality cnc machines. Haas is arguably the most popular brand in america and europe. It comes highly recommended if you are looking to buy a new cnc machine for your factory or for personal use.

High feed milling

High Feed Machining

High feed machining is the process whereby a machinist ups his feed to the region of 2000+ mm per minute and reduces the cut size to around 1mm. This process requires specialized high feed cutters and inserts to achieve.

There are a number of advantages to high feed machining like:
  • Spindle load is greatly reduced
  • Machine time is often reduced as your feed is much higher than with regular machining
  • Shavings are smaller and easier to handle
  • Less risk of cutter burning
  • Insert life is much greater
  • Insert and job don't get as hot with high feed milling
The disadvantages of high feed machining are:
  • Much more prone to vibration
  • Generally very loud
  • A separate finish cut is needed as the finish on high feed milling is not good
  • Sub-programs are necessary to prevent the programs from being too long
  • Cut size is much smaller
  • Does not work on most older machines

Even with these disadvantages, high speed machining has become very popular, and is being used more and more in the cnc industry. The advantages outweigh the disadvantages, and as tool developers produce new inserts and cutters, the disadvantages will be eliminated.

Tool life Vs Finish

Tool Life VS Finish

Having a good finish is normally very important when it comes to CNC machining . But it can come at a price. To get a good finish, it is common practice to speed up the RPM of the cut, but this often causes a tool life decrease.

The key to this is to find the balance. Luckily, most quality inserts have specs on the back of the box which tell exactly how fast to cut to maintain a good finish as well as prevent inserts from wearing too quickly or burning.

It is also important to ensure that the correct grade of insert is used for the type of material that is being cut. Using the incorrect grade will reduce tool life drastically as well as the finish (in most cases).

It is important to note the correct cutting conditions of inserts. They are calculated by the company that makes the inserts, and the guidelines should be followed to ensure maximum productivity, reasonable insert life and a good finish.

I also recommend using quality insert brands like:






G92 code description for milling

Start Point (G92) for milling


This code is mostly used by the older machines, but since then G54,G55,G56 and G57  have become the more frequently used codes for indicating the program start location. It is still useful to know the way G92 functions, which is the reason for this short post.

G92 is a code used to show the machine where the zero-point of the program is. It is usually followed by an X,Y and Z co-ordinate which is measured beforehand.

 G90 G92 X-200. Y150. Z600. ;

This means that from the machines zero position (Home), the start point is 200mm away on the X-axis, 150mm away on the Y-axis and 600mm away. Most programs start points are at the center of the material, but generally use the drawing or setting sheet to find the best start point for your program. It is also important for this reason that the programmer and the setter communicate to ensure that the correct point is measured relative to the program. G90 is used to clear the previous start point stored in the memory. It is important that the G92 code is read when running the machine to ensure that the machine knows where the start point is. Every time the reset button is pressed, it clears the G92 out of the machines memory.

Dwell (G04)

Dwell (G04)


This is a relatively simple command and is mostly used in hole machining. It stops the machine from moving for a set amount of time, this is to ensure that all necessary material is removed from the component.

 G01 Z-10. F100 ;
 G04 P3000 ;

This will move your Z axis to -10mm, And the following line will make your machine wait 3 seconds before moving again. The spindle still moves while your machine dwells, but none of the axis's move for the time you set your dwell to. The Dwell command is most often used when drilling, to ensure the hole is cleaned up properly, as well as counter boring.

Please don't hesitate to comment on any questions you may have and I will answer them as quickly as possible. If you have not been there, check out for a list of the most important G codes.

Cutter compensation G40, G41 & G42 for milling

Cutter Compensation (G40, G41 & G42)

Cutter compensation (G40, G41 and G42) has a few very useful applications. It makes a programmers job much easier by allowing a the freedom to change cutter diameters (up to an extent) without having to write a new program.

 G01 G41 Y100. F200 D21 ;

This will move the Y axis to 100mm while taking the cutter size into consideration.

So, if offset 21 is set at 10.00mm, the Y axis will only go to Y90.

G42 works exactly the same except it will compensate on the opposite side.

 G01 G42 Y100. F200 D21 ;

Generally speaking, this line will move the Y-axis to 100.00. With the addition of G42 and D21, the machine will read from offset 21 and compensate accordingly. So if offset 21 is set to 10.00, the machines Y-axis will only move to 90.00 as it compensates 10.00 for the D-offset.

Cutter compensation remains active on the program until the machine reads G40, at which time it will switch off cutter compensation until another G41 or G42 is activated.

**Note: When using Cutter compensation, the required offset is selected using the letter D, But when working with tool height, G43 followed by  H(offset number) should be used in order to indicate a Z-height.
 EG: G0 G43 Z100. H01 (this indicates that offset number 1 is assigned with the height for the current tool)

Starting a program And references for milling

Starting a program and references

This is not a strict rule, But more of a guideline. Always start programs with these codes:

G40 G80 G90 ;

G28 Z0. ;

G28 X0. Y0. ;

This is a safety feature that should be applied to programs, The first line clears any and all offsets, start points, and cutter compensations that might have been left on from the previous program.

The second line takes the Z axis home, This is to ensure there is clearance for the X and Y axis to go home. By moving all 3 together, there is a risk that the tool will crash into the job or fixture.

T01 ;

M06 ;

This is simply to select this first tool in the process, and does a tool change.

G00 G54 X0. Y0. S500 M03 ;

This puts the machine in rapid movement mode, Reads the first reference point, and starts thespindle in a clockwise direction at 500 RPM.

G43 Z100. H01

This set of codes reads the tool height ( measured and put into the machine at the beginning of the setup process) and moves the Z axis 100mm from the job.

Now put it all together:

G40 G80 G90 ;

G28 Z0. ;

G28 X0. Y0. ;

T01 ;

M06 ;

G00 G54 X0. Y0. S500 M03 ;

Simple as that!

Follow up now with the codes depending on the required tool path. For flood coolant, it is necessary to use the M08 code near the beginning of the program, and M09 after the tool has completed its path. The M30 code is used to indicate that the program has finished.

**Note: This is just a guide, Not all Fanuc machines work exactly like this. Some use G46 instead of G43 and some use other codes like G92 instead of G54. Always refer to the manual before writing programs.

Use of Movement g codes for milling

Use of movement G-codes

Here I will discuss how to utilize the movement G-Codes, If you haven't checked out the list of G codes yet, be sure to check them first here:

Eg 1.
G00 X100.  ;

This will make the X axis Rapid to 100mm, Can also be used with any other Axis the machine has.

Eg 2.
G01 X100. F100 ;

This will make the X axis feed to 100mm at a feed rate of  F100 or 100mm/m

With these 2 codes, a basic straight line cut can be done by rapid traversing the tool near to the job, and then using the G01 code to cut the material. 

Eg 3.
G00 X20. ;
Z1. ;    *
G01 X0. ;

*Note that it is not necessary to re write G00 to get the Z axis to rapid to 1mm. This is because G00 is already selected from the previous line. Only once G01 is selected in the program, then it will be necessary to change back to G0 for rapid traversing.

This set of codes will rapid the X axis to 20mm, Then rapid the Z axis to 1mm, Then feed the X axis to 0mm.

These 2 codes are very important to know, If you swap them around, you will end up rapiding into your job and breaking your tool. Now to the next code.

Eg 4.
G02 X0. Y100. R100.

This code is telling the machine that you want it to make a clockwise radius of 100mm. The X and Y values in this case represent what position the tool is going to stop cutting the radius.

The same applies for G03 except that your radius cuts counter clockwise.

This completes our list of movement G-codes.

List of important M-Codes

List of Important M-codes



M00 - Program pause
M01 - Optional stop
M03 - Spindle start (clockwise)
M04 - Spindle start (Counter clockwise)
M05 - Spindle stop
M06 - Tool change
M08 - Flood coolant on
M09 - Flood coolant off
M19 - Spindle orientation
M30 - Program end and rewind

Please note that this is not a complete list of M-codes, just the most common ones used in CNC programming. One should always be familiar with the machine before attempting to use it or program it. Machine G-codes and M-codes may vary from model to model. Consult the programming manual for machine specific codes.

List of important g codes for milling

List of important G-codes in Cnc milling

G00 - Rapid movement
G01 - Linear movement
G02 - Circular interpolation (Clockwise)
G03 - Circular interpolation (Counter clockwise)
G04 - Dwell
G28 - Chosen axis returns home
G40 - Cutter compensation off
G41 - Cutter compensation on
G42 - Cutter compensation on

G43 - Read tool height
G54 - Reference point 1
G55 - Reference point 2
G56 - Reference point 3
G57 - Reference point 4
G92 - Start point

Milling Cycles

G73 - Peck drilling cycle
G74 - Counter tapping cycle
G76 - Fine boring cycle
G80 - Cycle cancel
G81 - Drill cycle / spot drill cycle
G82 - counter boring cycle
G83 - Peck drilling cycle
G84 - Tapping cycle
G86 - Boring cycle
G87 - Back boring cycle

Please note that these are not all the G-codes but only the most common ones used in CNC milling. Also note that the G-codes on this list work for majority of Fanuc controls, but one should always be familiar with the machine and machine codes before attempting to program a CNC machine, as there are variations in G and M codes on different machines.