Skip to main content
Skip table of contents

PathPilot Post Processor Guidelines

Background

PathPilot is a dedicated machine controller designed specifically for Tormach machine tools. It shares common code with the open source LinuxCNC project, with Tormach specific additions. If your CAM system already supports a LinuxCNC post, this would be a good starting point for a PathPilot post.

PathPilot control implements 98 percent of the Fanuc standard. The entire list of supported codes is located below.

Deviations from Fanuc G-code

Mill/Router

  • G07, G09 not supported

  • G12, G13 pocketing canned cycles are not supported

  • G52 local coordinate system offset is not supported. See G92 below

  • PathPilot supports G54 – G59, G59.1, G59.2, and G59.3 as well as G54.1 P1 - P500 (G54.1 P2 = G55) for work offset systems

  • G74 tapping cycle for left-hand threads is not supported

  • G87, G88 boring cycles are not supported

  • The number of tool offsets for mills is 1000

  • Tool changes are expressed as either “Txx M06” or “M06 Txx” on one line or by “Txx” and “M06” on separate lines

  • It is recommended to set the machine to path blending mode for most situations with G64. “G64” is equivalent to “G64 P0.005” and is recommend to be set on a separate line at the beginning of a program.

    • For roughing toolpaths P can be increased and Q can be specified. There are greatly diminishing returns setting Q larger than 0.002

Lathe

  • Diameter mode only – PathPilot does not allow programming in radius values

  • G07, G09 are not supported

  • PathPilot uses G33.1 in place of G32 for spindle-synched moves

  • G50 max RPM in CSS is not supported. See G96 below for max CSS rpm

  • G75 peck groove is not supported. Instead program G73 for chip break

  • G70-73 roughing cycles not supported

  • The number of tool offsets for lathes is 99

  • Tool changes are expressed as “Txx” or “Txxnn”

    • “Txx” of the tool call will both call the tool number and apply the geometry offset

    • “nn” of the tool call will call the wear offset

    • If a turret is installed calling tools 1-8 will automatically command the turret to rotate to pocket 1-8

      • If additional tools are installed in a given pocket, you must first call that pocket (eg, “T07”) and then call the desired tool offset (eg, “T1717”)

    • If a quick change tool post (QCTP) is installed an M0 or other break for the tool change is not needed, PathPilot will automatically pause at the tool call for a manual tool change

Miscellaneous

  • It is highly recommended to include a G30 command before a tool change.

  • Cancelling a canned cycle with G80 also cancels the motion mode. This means that you must explicitly call a G00 or G01 after cancelling a canned cycle before using axis values on a line.

  • G28/G30 moves cannot be made in G91 – machine must be in G90 before a G28 or G30 is executed

  • G41/G42 cutter compensation entry move must be a straight G01 move and must be greater than the tool radius

  • Characters such as “$” or “%” at the beginning/end of a program should not be used

  • End of block characters, “;”, should not be used

Sample Programs

Sample mill/router program

Conversational mill example program.nc

Sample lathe program

Conversational lathe example program.nc

Sample plasma program

Plasma example program.nc

PathPilot Supported G and M Codes

G Codes

Motion 

Name

Description

Supported Machines

Mill

Router

Lathe

Plasma

G0 

Rapid Motion

This command produces coordinated motion to the destination point at the rapid traverse rate. Axis words (X, Y, Z, or A) are optional, except that at least one must be used.

X

X

X

X

G1 

Coordinated Motion

This command produces coordinated motion to the destination point at the specified traverse rate. Axis words (X, Y, Z, or A) are optional, except that at least one must be used. If a feed rate (F) is not specified on the line with G1, one must have been previously specified.

X

X

X

X

G2

Coordinated Helical Motion CW

This command produces coordinated motion to the destination point in a clockwise circular or helical arc at the specified traverse rate.

X

X

X

X

G3 

Coordinated Helical Motion CCW

This command produces coordinated motion to the destination point in a counter clockwise circular or helical arc at the specified traverse rate.

X

X

X

X

G4 

Dwell

This command produces a period of no activity for the amount of time specified by the P argument (P is specified in seconds).

X

X

X

X

G10 L1

Set Tool Table (Absolute)

This command sets the tool table entry of the tool specified by P to the value of the given arguments.

P - tool number

R - radius of the tool

I - front angle (lathe)

J - back angle (lathe)

Q - tip orientation (lathe)

X

X

X

X

G10 L2

Set Coordinate System (Absolute)

This command sets the origin of the specified coordinate system to the value of the given arguments.

P - coordinate system (1-500)

X, Y, Z, A - axes

R - rotation about the Z axis (degrees)

X

X

X

X

G10 L10

Set Tool Table

This command sets the tool table entry of the tool specified by P so that the current coordinates become the given arguments.

P - tool number

R - radius of the tool

I - front angle (lathe)

J - back angle (lathe)

Q - tip orientation (lathe)

X

X

X

X

G10 L20

Set Coordinate System

This command sets the origin of the specified coordinate system so that the current coordinates become the given arguments.

P - coordinate system (1-500)

X, Y, Z, A - axes

R - rotation about the Z axis (degrees)

X

X

X

X

G15

Workpiece Probe

This command will move the Z axis in a probing move towards the workpiece. The ohmic sensor or Z axis touch piece will trigger the end of the probing move depending on machine settings.

-

-

-

X

G16

Pierce

This command will move the Z axis to the parameter #<_PierceHeight> in G53 coordinates then command the plasma source to pierce a workpiece.

-

-

-

X

G17

Set Plane

This command will set the current plane to XY .

X

X

X

X

G18

Set Plane

This command will set the current plane to ZX.

X

X

X

X

G19

Set Plane

This command will set the current plane to YZ.

X

X

X

X

G20

Set Units

This command will set units to inches.

X

X

X

X

G21

Set Units

This command will set units to millimeters.

X

X

X

X

G28

Return to Predefined Position

This command will make a rapid move in G53 coordinate to the position specified by the values of parameters 5161-5166 (default 0s).

If an X, Y, Z, or A value is given in conjunction with a G28 command the axis values will be treated as an offset from the G28 position to move to. The machine will first move to the offset position, then move to the final G28 position.

Cutter compensation must be disabled during G28 moves.

X

X

X

X

G28.1

Return to Predefined Position

This command will store the current location in G53 coordinates to the parameters 5161-5166.

X

X

X

X

G30

Return to Predefined Position

This command will make a rapid move in G53 coordinate to the position specified by the values of parameters 5181-5186 (default 0s).

If an X, Y, Z, or A value is given in conjunction with a G30 command the axis values will be treated as an offset from the G30 position to move to. The machine will first move to the offset position, then move to the final G30 position.

Cutter compensation must be disabled during G30 moves.

X

X

X

X

G30.1

Return to Predefined Position

This command will store the current location in G53 coordinates to the parameters 5181-5186.

X

X

X

X

G33.1

Spindle Synchronized Motion

This command will synchronize the motion of the specified axis to the spindle rotation (only Z should be specified). An optional I argument can be used to command a different spindle speed for return. Use of an I argument will result in the starting plane being overshot during return by the distance multiplied by the I value.

Peck tapping can be commanded by programming successive G33.1 cycles at increasing depths. For each G33.1 cycle the starting Z position should be identical.

K - distance moved per spindle revolution

I - spindle return speed multiplier

X

-

-

-

G37

Tool Measurement

This command will start a tool length measurement or tool breakage cycle. H and P arguments are optional.

H - specifies the tool length offset to store (if not specified the current active offset will be used)

P - existence commands a tool breakage check. The P value specifies the tolerance from the stored offset that is acceptable.

X

-

-

-

G37.1

Tool Measurement

This command will rapid move the Z axis to the G53 Z0 location, rapid move to the stored X and Y ETS coordinates, then rapid move to the stored Z ETS coordinate.

X

-

-

-

G38.2

Straight Probe

This command probes towards the workpiece, stops on contact, and signals an error if no contact is made.

At least one axis word must be specified.

X

X

-

-

G38.3

Straight Probe

This command probes towards the workpiece and stops on contact.

At least one axis word must be specified.

X

X

-

-

G38.4

Straight Probe

This command probes towards the workpiece, stops on loss of contact, and signals an error if contact is not lost.

At least one axis word must be specified.

X

X

-

-

G38.5

Straight Probe

This command probes towards the workpiece and stops on loss of contact.

At least one axis word must be specified.

X

X

-

-

G40

Cutter Compensation

This command will turn cutter compensation off.

X

X

X

X

G41

Cutter Compensation

This command turns cutter compensation on on the left side of the programmed tool path, with an optional D argument for the tool offset to use. If D is not specified the active tool offset is used.

X

X

X

X

G41.1

Dynamic Cutter Compensation

This command turns dynamic cutter compensation on on the left side of the programmed tool path, identical to G41 except with the D argument calling out the tool diameter.

X

X

X

X

G42

Cutter Compensation

This command turns cutter compensation on on the right side of the programmed tool path, with an optional D argument for the tool offset to use. If D is not specified the active tool offset is used.

X

X

X

X

G42.1

Dynamic Cutter Compensation

This command turns dynamic cutter compensation on on the left side of the programmed tool path, identical to G41 except with the D argument calling out the tool diameter.

X

X

X

X

G43

Tool Offset Selection

This command applies the tool offset number specified by an H argument.

For plasma, this should always be set to H1.

X

-

X

X

G47

Engrave Sequential Serial Number

This command will engrave a serial number into a part, incrementing from an internal counter in PathPilot.

Z - depth of cut of engraving

R - retract height between numbers

X - the starting X position, or the left side of the serial number – if omitted, the current X position is assumed.

Y - the starting Y position, or the bottom side of the serial number – if omitted, the current Y position is assumed.

P - the X extent (width) in current units (inches or millimeters) of the engraved number

Q - the Y extent (height) in current units (inches or millimeters) of the engraved number

D - the requested number of decimals of the engraved number – if the requested D value exceeds the number of decimals in the serial number, the serial number will show leading zeros. If the requested D value is less than the number of decimals in the serial number, only the digits of the serial number will show.

Cutter comp must be disabled before calling G47.

X

X

-

-

G49

Tool Offset Cancellation

This command cancels a tool length offset.

X

X

X

X

G53

Work Coordinate

This command sets the machine to move in machine coordinates. Non-modal.

At least one axis word must be specified.

X

X

X

X

G54

Work Coordinate

This command sets the machine to move in the first work coordinate. Modal.

X

X

X

X

G54.1

Work Coordinate

This command sets the machine to move in the work coordinate specified with a P value. Modal.

G54.1 P1 is equivalent to G54, etc.

X

X

X

X

G55

Work Coordinate

This command sets the machine to move in the second work coordinate. Modal.

X

X

X

X

G56

Work Coordinate

This command sets the machine to move in the third work coordinate. Modal.

X

X

X

X

G57

Work Coordinate

This command sets the machine to move in the forth work coordinate. Modal.

X

X

X

X

G58

Work Coordinate

This command sets the machine to move in the fifth work coordinate. Modal.

X

X

X

X

G59

Work Coordinate

This command sets the machine to move in the sixth work coordinate. Modal.

X

X

X

X

G59.1

Work Coordinate

This command sets the machine to move in the seventh work coordinate. Modal.

X

X

X

X

G59.2

Work Coordinate

This command sets the machine to move in the eighth work coordinate. Modal.

X

X

X

X

G59.3

Work Coordinate

This command sets the machine to move in the ninth work coordinate. Modal.

X

X

X

X

G61

Exact Stop Mode

This command sets the machine to move in exact stop mode where the machine will move to each point in a program, stop, and then begin to move to the next point. If two moves are exactly co-linear the movement will not stop during transition from the first point to the second point.

X

X

X

X

G64

Path Blending Mode

This command sets the machine to move in path blending mode where an allowed deviation from the programmed path is allowed based on option P and Q arguments. G64 without P or Q arguments commands the best possible speed to be maintained no matter how far from the programmed point motion would be. If G64 is specified with no arguments it is equivalent to “G64 P.005”.

P - allowable deviation from the programmed path

Q - naive cam detector. Commanded points less than Q from a straight line will be deleted and motion segments will be combined into a single path

G64 must be specified in inch units, not metric.

X

X

X

X

G73

Peck Drilling Cycle

This cycle drills a hole with peck retracts of .01”/.254 mm.

X - the X starting location to begin the cycle

Y - the Y starting location to begin the cycle

Z - the Z location to drill to

R - the retract plane to end the cycle

Q - the Z increment for pecks to be applied at

F - the feed rate to drill at

X

-

-

-

G76

Lathe Threading Cycle

This cycle cuts an ID or OD thread in multiple passes.

-

-

X

-

G80

Cancel Canned Cycles

This command cancels all canned cycles.

X

X

X

X

G81

Drilling Cycle

This cycle is intended to drill a hole.

X - the X starting location to begin the cycle

Y - the Y starting location to begin the cycle

Z - the Z location to drill to

R - the retract plane to end the cycle

Q - the Z increment for pecks to be applied at

F - the feed rate to drill at

L (optional) - specifies the number of times that the cycle should be run. Can be used in either absolute or incremental mode.

X

X

-

-

G82 

Drilling Cycle With Dwell

This cycle is identical to the G81 cycle except that it adds a P value (specified in seconds) to dwell at the bottom of the hole.

X

X

-

-

G83

Peck Drilling Cycle

This cycle is identical to the G73 cycle except that the retract is to the coordinate specified by R.

X

X

-

-

G84

Tapping Cycle

This cycle is intended to tap a hole.

X - the X starting location to begin the cycle

Y - the Y starting location to begin the cycle

Z - the Z location to tap to

R - the retract plane to end the cycle

P (optional)- the number of seconds to dwell at the Z location

F - the feed rate to tap at

Spindle speed must be specified before a G84 cycle.

X

-

-

-

G85

Boring/Reaming Cycle

This cycle is identical to the G81 cycle except that the retract is performed at the F feed rate, not the rapid traverse rate.

X

X

-

-

G86

Boring Cycle

This cycle is identical to the G82 cycle except that after the dwell and prior to the retract the spindle is turned off .

X

X

-

-

G88

Boring Cycle

This cycle is identical to the G82 cycle except that after the dwell and prior to the retract the spindle is turned off and the program is paused so the operator can retract the spindle manually.

X

X

-

-

G89

Boring Cycle

This cycle is identical to the G82 cycle except that after the dwell and prior to the retract the spindle is turned off and the retract is is performed at the F feed rate, not the rapid traverse rate.

X

X

-

-

G90 

Distance Mode

This command specifies absolute distance mode.

X

X

X

X

G90.1

Distance Mode

This command specifies absolute distance mode for arc offsets.

X

X

X

X

G91 

Distance Mode

This command specifies incremental distance mode.

X

X

X

X

G91.1 

Distance Mode

This command specified incremental distance mode for arc offsets.

X

X

X

X

G92

Coordinate System Offset

This command specifies a global offset shift such that the current position has the values given. All work offsets are shifted, not only the active work offset.

At least one axis must be specified.

The values of a G92 shift are stored in parameters #5211-5219.

X

X

X

X

G92.1

Coordinate System Offset

This command disables any active G92 offsets and clears the offset from parameters #5211-5219.

X

X

X

X

G92.2

Coordinate System Offset

This command disables any active G92 offsets but does not clear the offset from parameters #5211-5219.

X

X

X

X

G92.3

Coordinate System Offset

This command reenables a G92 offset with the values stored in parameters #5211-5219.

X

X

X

X

G93

Feed Rate Mode

This command specified inverse time mode where the feed rate specified by F commands the machine to complete the move in 1/F minutes.

G0 moves are not effected by inverse time mode.

X

X

X

X

G94

Feed Rate Mode

This command specifies units per minute mode where the feed rate specified by F commands the machine to complete the move by moving F inches/mm/degrees per minute.

X

X

X

X

G95

Feed Rate Mode

This command specifies units per revolution mode where the feed rate specified by F commands the machine to complete the move by moving F inches/mm per spindle rotation.

-

-

X

-

G96

Spindle Control Mode

This command specifies that the spindle will rotate in constant surface speed mode according to the surface speed set by S (required).

D (optional) - sets the maximum spindle speed.

-

-

X

-

G97

Spindle Control Mode

This command specifies that the spindle will rotate in RPM mode according to the RPM set by S.

X

X

X

-

G98

Canned Cycle Return

This command specifies that the canned cycle should be cancelled and that the machine should return to the Z position that the machine was in last before the canned cycle was started if that Z position is lower than the position specified by the R word.

X

X

X

-

G99 

Canned Cycle Return

This command specifies that the canned cycle should be cancelled and that the machine should return to the position specified by the R word of the canned cycle.

X

X

X

-

M Codes

Command

Name

Description

Supported Machines

Mill

Router

Lathe

Plasma

M0

Program Stop

This command temporarily stops the program, regardless of the status of the optional stop button setting. To resume the program the cycle start button must be pressed.

X

X

X

X

M1

Optional Program Stop

This command temporarily stops the program when the optional stop button is enabled. To resume the program the cycle start button must be pressed.

X

X

X

X

M2

Program End

This command ends the program but does not rewind to the beginning of the program for restart.

X

X

X

X

M3

Rotate Spindle CW

This command turns the spindle on to rotate clockwise at the RPM specified by a S command.

X

X

X

-

M4

Rotate Spindle CCW

This command turns the spindle on to rotate counter-clockwise at the RPM specified by a S command.

X

X

X

-

M5

Stop Spindle Rotation

This command turns the spindle off.

X

X

X

-

M6

Tool Change

This command begins a tool change sequence. The tool to change to must have been previously specified by a T command, but the T call can be on a previous line.

If the current or called tool is not stored in the ATC, or there is not an ATC installed, the machine will prompt the operator to remove the tool manually and continue once cycle start is pressed. If the current and called tools are stored in the ATC the tool change sequence will be completed automatically.

It is recommended to specify a G43 command on the same line as a tool change.

X

X

-

-

M7

Mist Coolant On

This command turns mist coolant on. If a Smart Cool unit is installed additional functionality is possible with E/P/R/Q arguments (reference TD10422 if a Smart Cool is installed).

X

-

-

-

M8

Flood Coolant On

This command turns flood coolant on. If a Smart Cool unit is installed additional functionality is possible with E/P/R/Q arguments (reference TD10422 if a Smart Cool is installed).

X

-

X

-

M9

All Coolant Off

This command turns both mist and flood coolant off.

X

-

X

-

M10

Collet Closer Unclamp

This command unclamps the collet closer. OD/ID clamping is selected in PathPilot.

-

-

X

-

M11

Collet Closer Clamp

This command clamps the collet closer. OD/ID clamping is selected in PathPilot.

-

-

X

-

M19

Spindle Orient

This command orients the spindle to a specified position. R and Q arguments are required to be specified.

R - position to rotate from 0 degrees.

Q - Number of seconds

This command is not able to be commanded to perform broaching operations!

X

-

-

-

M30

Program End and Rewind

This command ends the program and rewinds to the beginning of the program for restart.

X

X

X

X

M48

Enable Speed/Feed Rate Override

This command enables both spindle speed and feed rate overrides.

X

X

X

X

M49

Disable Speed/Feed Rate Override

This command disables both spindle speed and feed rate overrides.

X

X

X

X

M50

Enable/Disable Feed Override

This command enables only the feed rate override when entered with a “P1” argument or disables the feed rate override when entered with a “P0” argument.

X

X

X

X

M51

Enable/Disable Speed Override

This command enables only the spindle speed override when entered with a “P1” argument or disables the spindle speed override when entered with a “P0” argument.

X

X

X

X

M61

Set Tool Number

This command sets the current tool number to that specified with a Q parameter.

Use of this command is discouraged in favor of M6.

X

X

X

X

M64

Turn On Output

This command turns on a digital output of a USB IO module (reference TD10163 if a USB IO module is installed).

X

X

X

X

M65

Turn Off Output

This command turns off a digital output of a USB IO module (reference TD10163 if a USB IO module is installed).

X

X

X

X

M66

Wait On Input

This command will wait until the specified state of a digital input of a USB IO module is seen (reference TD10163 if a USB IO module is installed).

X

X

X

X

M70

Save Modal State

This command saves the current modal state of the following commands:

  • inch/metric (G20/G21)

  • selected plane (G17/G18/G19)

  • cutter compensation (G40/G41/G42)

  • distance mode (G90/G91)

  • arc distance mode (G90.1/G91.1)

  • feed mode (G93/G94/G95)

  • coordinate system (G54-G59.3/G51.1 P)

  • tool length compensation (G43/G43.1/G49)

  • retract mode (G98/G99)

  • spindle mode (G96/G97)

  • path control mode (G61/G64)

  • current speed and feed rate (S/F)

  • spindle status (M3/M4/M5)

  • coolant status (M7/M8/M9)

  • speed and feed rate override status (M50/M51)

X

X

X

X

M71

Invalidate Saved Modal State

This command deletes the saved state from the last M70 command.

X

X

X

X

M72

Restore Save Modal State

This command restores the saved state from the last M70 command.

X

X

X

X

M73

Restore Saved Modal State In Subprogram

This command is used in an o-word subroutine and saves the current modal state from the calling program and automatically restores the modal state when the subroutine is finished.

X

X

X

X

M98

Call Subroutine

This command calls a numbered internal subprogram, eg “M98 O100 L10”.

O - specifies the subprogram to run, equivalent to “o100 sub”. Required.

L - specifies the number of times to run the subprogram. Optional, if not specified the subprogram will be run once.

X

X

X

X

M99

Return From Subroutine/Repeat

This command A) returns from a numbered internal subroutine if an M98 is specified in the program or B) if no M98 is specified in the program it will rewind the program to the beginning to create an endless loop.

If an M98 is specified in a program M99 must placed at the end of the o-word subroutine and M98 must be specified before the o-word subroutine.

X

X

X

X

M301

Camera Control

This command begins a video recording by an attached camera.

X

X

X

X

M302

Camera Control

This command ends a video recording by an attached camera.

X

X

X

X

M303

Camera Control

This command takes a picture with an attached camera.

X

X

X

X

Other Codes

Command

Name

Description

Supported Machines

Mill

Router

Lathe

Plasma

F

Feed Rate

This command specifies the feed rate that the axes should move at during G1/G2/G3 moves. For linear moves specified in inches per minute (when G20 is active) or millimeters per minute (when G21 is active). For rotary moves specified in degrees per minute.

X

X

X

X

S

Spindle Speed

This command specifies the speed the spindle will rotate at. Specified in revolutions per minute.

X

X

X

-

T

Tool Number

This command specifies the tool number to be used in a tool change command (M6).

X

X

X

X

/

Block Delete

This command specifies that any code on the same line following “/” will be skipped when block delete is on.

PathPilot 2.10 or later must be installed to be able to toggle block delete on/off.

X

X

X

X

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.