,cnc machinist,cnc manufacturing,cnc mechanic,cnc mill,cnc milling center,cnc milling companies,cnc milling tools,cnc parts,cnc plasma cutter,cnc plasma cutting,cnc plasma table,cnc production,cnc router table,cnc screw machine,cnc service,cnc swiss,cnc turning,cnc turning center,cnc turning centers,cnc vertical lathe,horizontal cnc,how to cnc machine,machining cnc,manufacturing cnc machines,okuma cnc,plasma cnc machine,production cnc machining,troubleshooting cnc machines,used cnc machine tools,used cnc milling machines,vertical cnc lathe,what can a cnc machine make
List of M-codes commonly found on Fanuc and similarly designed controls
Code | Description | Milling ( M ) | Turning ( T ) | Corollary info |
M00 | Compulsory stop | M | T | Non-optional—machine will always stop upon reaching M00 in the program execution. |
M01 | Optional stop | M | T | Machine will only stop at M01 if operator has pushed the optional stop button. |
M02 | End of program | M | T | No return to program top; may or may not reset register values. |
M03 | Spindle on (clockwise rotation) | M | T | |
M04 | Spindle on (counterclockwise rotation) | M | T | |
M05 | Spindle stop | M | T | |
M06 | Automatic tool change (ATC) | M | T (some-times) | Many lathes do not use M06 because the T address itself indexes the turret. To understand how the T address works and how it interacts (or not) with M06, one must study the various methods, such as lathe turret programming, ATC fixed tool selection, ATC random memory tool selection, the concept of "next tool waiting", and empty tools. Programming on any particular machine tool requires knowing which method that machine uses. |
M07 | Coolant on (mist) | M | T | |
M08 | Coolant on (flood) | M | T | |
M09 | Coolant off | M | T | |
M10 | Pallet clamp on | M | For machining centers with pallet changers | |
M11 | Pallet clamp off | M | For machining centers with pallet changers | |
M13 | Spindle on (clockwise rotation) and coolant on (flood) | M | This one M-code does the work of both M03 and M08. It is not unusual for specific machine models to have such combined commands, which make for shorter, more quickly written programs. | |
M19 | Spindle orientation | M | T | Spindle orientation is more often called within cycles (automatically) or during setup (manually), but it is also available under program control via M19. The abbreviation OSS (oriented spindle stop) may be seen in reference to an oriented stop within cycles. |
M21 | Mirror, X-axis | M | ||
M21 | Tailstock forward | T | ||
M22 | Mirror, Y-axis | M | ||
M22 | Tailstock backward | T | ||
M23 | Mirror OFF | M | ||
M23 | Thread gradual pullout ON | T | ||
M24 | Thread gradual pullout OFF | T | ||
M30 | End of program with return to program top | M | T | |
M41 | Gear select - gear 1 | T | ||
M42 | Gear select - gear 2 | T | ||
M43 | Gear select - gear 3 | T | ||
M44 | Gear select - gear 4 | T | ||
M48 | Feedrate override allowed | M | T | |
M49 | Feedrate override NOT allowed | M | T | This rule is also called (automatically) within tapping cycles or single-point threading cycles, where feed is precisely correlated to speed. Same with spindle speed override and feed hold button. |
M60 | Automatic pallet change (APC) | M | For machining centers with pallet changers | |
M98 | Subprogram call | M | T | Takes an address P to specify which subprogram to call, for example, "M98 P8979" calls subprogram O8979. |
M99 | Subprogram end | M | T | Usually placed at end of subprogram, where it returns execution control to the main program. The default is that control returns to the block following the M98 call in the main program. Return to a different block number can be specified by a P address. M99 can also be used in main program with block skip for endless loop of main program on bar work on lathes (until operator toggles block skip). |