Miscellaneous Functions is another name for M-Codes. How are they different from the G-codes in my previous post? The G-code is a preparatory command for CNC programming, which presets, or prepares, the machine to use a certain cycle or mode. An M-code is an actual machine function.
A machine function is something that the actual machine does, whether it’s turning on the spindle or ending your program. Not every machine is the same because there are many different CNC machine manufacturers, as well as different controllers, so I recommend reading through your machine’s manual to see what M-codes you can use.
- M00 – Compulsory program stop
- M01 – Optional stop
- M02 – End of program (no rewind, usually with reset)
- M03 – Spindle on (rotate CW for R/H tools)
- M04 – Spindle on reverse (CCW for R/H tools)
- M05 – Spindle stop
- M06 – Automatic tool change (ATC)
- M07 – Coolant mist ON (optional)
- M08 – Coolant ON
- M09 – Coolant OFF
- M19 – Spindle orientation
- M30 – Program end (always resets & rewinds)
- M48 – Feedrate override cancel OFF (deactivated)
- M49 – Feedrate override cancel ON (activated)
- M60 – Automatic pallet change (APC)
- M78 – B axis clamp (nonstandard)
- M79 – B axis unclamp (nonstandard)
- M98 – Subprogram call
- M99 – Subprogram end
Unlike a G-code, you can only use one M-code per line/block of code. Using an M03 and M04 is not possible because they do two opposite functions.
The more M-codes you try out, the more efficient you can become. M98 can significantly decrease programming and possibly cycle time because it calls up a sub-program that can be repeated over and over any given number of times.
There are more Miscellaneous functions than listed above, which are referred to as ‘machine specific codes’. You will have to learn the codes used by your individual machine and controller to get the most out of your CNC machine, whether it’s a milling or turning center.