Guide to G16 Polar Coordinate Command in CNC Programming
Learn how to program the G16 Polar Coordinate Command on Fanuc, Siemens, and Mitsubishi CNCs. Master parameters, resolve errors, and prevent turret collisions.
Understanding G16 Polar Coordinate Mode and Production Risks
Omitting pre-positioning before calling G16 shifts the entire polar grid, causing the tool turret to move along an unintended path, gouging raw stock, or driving the turret straight into the revolving workpiece chuck jaws, a table-mounted vise jaw, or a physical fixture clamp. When the operator executes G16 polar coordinate mode with an incorrect center pivot, the tool carrier drives the tool straight into a solid vise jaw. The operator hears a loud impact and sees the spindle stop as the controller halts axis travel. This hard collision shatters the carbide insert, bends the spindle, and turns the expensive raw stock into a ruined scrap part. To protect the machine, operators must verify tool compensations and configure virtual Chuck Barrier safety zones before cutting.
Technical Summary of G16 Commands
The following table provides the operational specifications of the G16 polar coordinate command:
| Technical Aspect | Specification Details |
|---|---|
| Command Code | G16 (paired with G15 for cancellation) |
| Modal Group | Group 18 (Polar Coordinate Command ON) / Modal |
| Compatible Brands | Fanuc, Siemens (ISO Dialect Mode G291), Mitsubishi (M-system) |
| Critical Parameters | Fanuc Parameter No. 3402 Bit 6, Mitsubishi Parameter #1210 Bit 11, Siemens MD18800 ($MN_MM_EXTERN_LANGUAGE) |
| Main Constraint | Must be programmed alone in independent blocks. Active compensations must be managed. |
Quick Read: Key Rules for Polar Programming
- Select the working plane (G17, G18, or G19) before activating G16 to define axis roles.
- Position the tool at the pivot center coordinates in the block immediately preceding G16.
- Program G16 and G15 alone in independent blocks without motion or auxiliary codes to avoid syntax and interpreter errors.
- Cancel high-speed machining modes like G05 High-Speed Precision Contour Control or G05.1 before issuing G16.
- Cancel any active mirror image function only when the tool is positioned over the mirror center.
- Perform a dry run in the air with reduced rapid traverse to verify safety barriers before cutting.
Basic Concepts of CNC Polar Coordinates
The G16 polar coordinate command allows programmers to quickly lay out bolt hole circles, angular slots, and arc patterns on flat faces. The practical programming effect is that it eliminates complex coordinate geometry calculations for the operator, shifting the mathematical load to the CNC preprocessor and speeding up manual data input. Under polar programming, coordinates specify a radial distance (radius) and angular position (angle) rather than standard Cartesian coordinates.
While polar coordinate programming simplifies pattern layouts, operators must distinguish G16 polar coordinates from G12.1 Polar Coordinate Interpolation, which interpolates a virtual linear axis with a rotary axis for mill-turn profiling on lathe systems. To deactivate the polar coordinate entry mode and restore Cartesian coordinates, the programmer must execute the cancel command G15 Polar Coordinate Cancel.
Command Structure and Parameter Syntax
Under active G16 mode, coordinate commands correspond to the active working plane. The first axis of the selected plane specifies the arc radius value, while the second axis specifies the angular position of the target location. Both absolute (G90) and incremental (G91) dimensioning can be applied to specify these radius and angle values. The center of the polar coordinate system is defined by the last coordinates programmed immediately before the G16 command is called.
On standard systems, if absolute mode (G90) is active, the origin of the program coordinate system acts as the center. If incremental mode (G91) is active, the current position is set as the center of the polar coordinate system. This flexible axis structure provides a multi-modal coordinate environment within the control system.
The basic command syntax is structured as follows:
G16 ;
The parameters governing polar coordinate behavior are summarized in the following table:
| Brand | Parameter | Description | Setting Options / Values |
|---|---|---|---|
| Fanuc | Parameter No. 3453 Bit 4 (FRC) | Controls chamfering feed speed specification by address E or ,E. | 0 or 1 |
| Fanuc | Parameter No. 5101 Bit 2 (RTR) | Configures high-speed peck drilling vs. standard peck drilling in canned cycles. | 0 or 1 |
| Fanuc | Parameter No. 12623 Bit 0 (PTE) | Establishes the active drilling axis under legacy Series 15 program format. | 0 or 1 |
| Siemens | Machine Data MD18800 ($MN_MM_EXTERN_LANGUAGE) | System parameter configured to 1 to enable external ISO Dialect compiling. | 0 or 1 |
| Siemens | Option Bit 19800 ($MN_EXTERN_LANGUAGE) | Option bit permitting external CNC language interpretation. | 0 or 1 |
| Mitsubishi | Parameter #1210 RstGmd Bit 11 | Determines whether G16 state is retained upon reset (1) or modal resets to G15 (0). | 0 or 1 |
| Mitsubishi | Parameter #1041 I_inch | Determines whether parameter and tool data are input/output in metric or imperial. | 0 (Metric) or 1 (Inch) |
| Mitsubishi | Parameter #1274 ext10/bit5 | Controls selection of standard or extended workpiece coordinate systems for offset inputs. | 0 or 1 |
Brand-Specific Applications: Fanuc, Siemens, and Mitsubishi
Fanuc
Fanuc G16 polar coordinate programming simplifies the layout of bolt-hole circles and arc slots. Shifting mathematical pre-calculations to the CNC preprocessor reduces manual data entry errors. The active working plane determines which axis represents the radius or angle. We configure parameters like Parameter 3453 and Parameter 5101 to control cycle behavior.
The G16 command must be programmed in an independent block immediately after establishing the coordinate center. In absolute mode, the program zero is the center, while in incremental mode, the current coordinate location becomes the center.
| System Identifier | Category | Details |
|---|---|---|
| Parameter No. 3453 Bit 4 (FRC), Parameter No. 5101 Bit 2 (RTR), Parameter No. 12623 Bit 0 (PTE) | Parameters | Control feed speed specification, peck drilling type, and active drilling axis. |
| Alarm PS0050, Alarm PS0051, Alarm PS0052, Alarm PS0306 | Alarms | Triggers for corner chamfering in threading blocks, missing linear moves, and axis mismatches. |
| Series 15 Program Format vs. Series 16 Format | Version Differences | Rigid tapping uses G84.2 and drilling axis selection is governed by PTE and PTX under legacy Series 15 format. |
Warning: Failing to pre-position the axes before executing G16 offsets the polar coordinate origin. The tool turret can then travel along an unintended path, crashing into chuck jaws, vise jaws, or fixture clamps.
Siemens
Siemens SINUMERIK controls do not natively interpret G16. To run legacy G16 programs, you must switch the compiler to ISO Dialect mode via G291. System parameters such as Machine Data MD18800 must be set to 1 to enable this translation.
When operating under G291, G16 must be programmed alone in an independent block. Coordinates are mapped to the selected working plane where the first axis acts as a radius and the second acts as an angle.
| System Identifier | Category | Details |
|---|---|---|
| MD18800 ($MN_MM_EXTERN_LANGUAGE), Option Bit 19800 ($MN_EXTERN_LANGUAGE) | Parameters | Enable external ISO Dialect compiling system and hardware/software option bit. |
| Alarm 61800, Alarm 14800, Alarm 61003, Alarm 61102 | Alarms | Triggers for missing external CNC system, zero feedrate, missing spindle direction, and zero velocity drops. |
| SINUMERIK Mode vs. ISO Dialect Mode | Version Differences | Bilingual parser allows switching between native (G290) and ISO Dialect (G291). Native mode uses G110/G111/G112 pole definitions instead of G16. HMI screens support touch-based cycle parameterization (XP, YP, LO, CO). |
Warning: Activating G16 under ISO mode while MD18800 is disabled triggers Alarm 61800, halting the machine. Trajectory errors can cause hard collisions with workholding chucks, vise jaws, or pneumatic clamps.
Mitsubishi
Mitsubishi systems interpret G16 as polar coordinates for Machining Centers. In absolute mode (G90), absolute radius coordinates default to the workpiece zero point. In incremental mode (G91), the current tool position becomes the center. We configure parameters like Parameter #1210 to control the modal state after system resets.
The G16 command is modal and must be placed in its own block. Plane selection must be executed prior to or alongside polar coordinate command activation.
| System Identifier | Category | Details |
|---|---|---|
| Parameter #1210 RstGmd Bit 11, Parameter #1041 I_inch, Parameter #1274 ext10/bit5, System variables #4018 / #4218 | Parameters | Controls modal reset settings, unit selection, and extended coordinate selections. |
| Program Error P34, Program Error P75, Program Error P923, Program Error P438 | Alarms | Triggers for G16 active during high-speed high-accuracy control, 3D circular interpolation, coordinate conversion, and G52/G54.1 limits. |
| M800/M80 Series (version D4 or earlier) | Version Differences | Version D4 or earlier triggers Program Error P438 when executing local coordinate G52 during active G54.1 Pn extended coordinates. Resolved in later versions. |
Warning: Attempting to cancel mirror image functions anywhere except at the exact mirror center while G16 is active causes coordinate deviations, driving the tool turret straight into chuck jaws, vise jaws, or fixture clamps.
Cross-Brand Technical Comparison
The following table compares the polar coordinate command characteristics across Fanuc, Siemens, and Mitsubishi controllers:
| Operational Feature | Fanuc | Siemens | Mitsubishi |
|---|---|---|---|
| Native Polar Commands | Uses G16 (ON) and G15 (OFF) G-codes in Group 18. | Does not natively use G15/G16. Uses pole definition commands (G110, G111, G112) and arguments AP= and RP= in motion blocks. G15/G16 only interpreted in legacy ISO Dialect Mode (G291). | Uses G16 (ON) and G15 (OFF) G-codes. |
| Lathe Repurposing | Group 18 G-codes are reserved strictly for G15/G16 polar coordinates. | G15/G16 do not exist in native mode. TRACYL is mapped to G07.1 in ISO mode. | Mitsubishi lathe systems (G-code List 3) completely repurpose these: G15 for Balance Cut ON, G16 for Milling Interpolation Plane Selection. Only supported as polar coordinates in Machining Center formats. |
| Default Working Plane & Reset | Defaults to G17 (XY plane) if no plane is selected before G16. G15/G16 are modal. G15 is default state on reset/power-on if parameter No. 3402 Bit 6 (CLR) is configured to default clear. | Switchable between ISO Dialect (G291) and native SINUMERIK Mode (G290). Can parameterize via HMI cycle screens with prompts for pole coordinates (XP, YP, LO, CO). | Defaults G15 (OFF) at reset by default, but parameter #1210 RstGmd Bit 11 can be set to 1 to retain active polar command state upon reset. |
Deep Technical Analysis of Controller Behaviors
Analytically, the primary difference in polar coordinate command processing across these three platforms lies in how the interpreter treats Group 18 G-codes. Fanuc and Mitsubishi Machining Center configurations use G16 and G15 as standard modal switches. However, Siemens SINUMERIK completely avoids these G-codes in its native language. Instead of toggle switches, Siemens defines a pole location using native commands (G110, G111, G112) and executes polar coordinates using dedicated radius and angle arguments (RP= and AP=) inside motion blocks. Siemens only processes G15 and G16 blocks when the control is explicitly switched to G291 ISO Dialect mode.
Lathe system configurations reveal a crucial distinction. On Fanuc, G16 remains a polar coordinate command regardless of the machine type. On Mitsubishi, G16 is completely repurposed under G-code List 3 Lathe formats, selecting Milling Interpolation Plane Selection, while G15 activates Balance Cut ON. Programmers who transfer programs between brands must ensure that the G-code system configuration on Mitsubishi is configured to Machining Center format, or risk initiating dual-turret cuts instead of a simple polar coordinate activation.
Another major analytical variation is the reset and initialization behavior. While Fanuc uses Parameter No. 3402 Bit 6 to configure whether G15 is loaded automatically at reset, Mitsubishi relies on Parameter #1210 Bit 11 to choose between resetting to G15 or retaining the current state. Siemens handles default reset values via Machine Data MD20150. These differences determine how a machine behaves after an E-stop or program reset, directly affecting operator recovery workflows.
G-Code Programming Examples and Dry Runs
Fanuc G-Code Example
G17 G90 G54 G00 X0 Y0 S900 M03 ;
G16 ;
G99 G81 X6.8 Y60.0 R0.1 Z-0.163 F3.0 ;
G15 G80 M09 ;
dry run: Before running the cutting cycle, verify axis positions by executing the program "in the air" with workpiece coordinates shifted in Z. Confirm that the tool center aligns with the polar coordinates (R6.8, 60.0°) and that the G15 block successfully terminates polar mode before the tool retracts to home position.
Siemens ISO Dialect Example
G291 ;
G17 G90 G00 X0 Y0 S900 M03 ;
G16 ;
G99 G81 X6.8 Y60.0 R0.1 Z-0.163 F3.0 ;
G15 ;
G290 ;
G111 X50.0 Y50.0 ;
G01 AP=45.0 RP=100.0 F150.0 ;
dry run: With the tool offset from the workpiece, execute the program. Verify that the compiler switches to G291 ISO Dialect mode, positions to X0 Y0, interpolation occurs along the 60.0° angle path, G15 deactivates polar mode at a complete stop, and G290 successfully returns the compiler to native Siemens mode.
Mitsubishi G-Code Example
G17 G90 G16 ;
G85 X200. Y30. Z-20. F200. ;
G91 Y90. ;
G15 G80 ;
dry run: Execute the program with the feedrate override turned down. Confirm that the tool positions to the workpiece zero origin, activates polar coordinate mode, executes the drilling cycle at R200.0 and 30.0° angle, and moves incrementally by Y90.0 (total 120.0°). Verify that G15 is executed alone in its block to prevent P33 format errors.
Error Analysis and Diagnostic Troubleshooting
Incorrect programming syntax or improper modal states during polar coordinate activation trigger specific alarm codes. The table below details common errors, their causes, and how to resolve them across all three brands:
| Brand | Alarm Code | Trigger Condition | Operator Symptom | Root Cause / Fix |
|---|---|---|---|---|
| Fanuc | Alarm PS0050 | Corner chamfering or corner R command specified in a block programmed for threading. | Spindle halts, alarm displays on HMI, program execution stops. | Correct threading block or remove corner chamfering command. |
| Fanuc | Alarm PS0051 / PS0052 | Linear G01 command is not specified in the block immediately following the block where corner chamfering/rounding is specified. | Program halts immediately after the chamfer block. | Insert a linear G01 command in the block following the chamfer. |
| Siemens | Alarm 61800 | Encountered G15 or G16 while machine data MD18800 or option 19800 is disabled. | The interpreter rejects the ISO block, triggers a system halt, and displays "External CNC system missing". | Ensure that Machine Data MD18800 (or Option 19800) is set to 1 to enable the ISO Dialect compiler. |
| Siemens | Alarm 14800 | Path feedrate F evaluates to zero (or is omitted) during cutting interpolation when fixed feedrates function is inactive. | Spindle stops or axis motion halts with zero feedrate error. | Declare a non-zero feedrate F in the motion block or before. |
| Mitsubishi | Program Error P34 | Attempted to activate G16 polar coordinate mode while high-speed high-accuracy control I or II (G05.1 Q1 or G05 P10000) is active. | CNC control stops during block preview, triggering a high-speed format alarm. | Program G15 in a separate block to deactivate polar coordinate mode before calling any high-speed high-accuracy control codes. |
| Mitsubishi | Program Error P75 | G16 command issued while CNC is operating in 3-dimensional circular interpolation (G02.4 or G03.4) modal state. | Program halts with circular interpolation error. | Cancel 3D circular interpolation before G16. |
| Mitsubishi | Program Error P923 | G16 programmed in the same block as a 3-dimensional coordinate conversion (G68.1 or G69.1) command. | Controller halts, reporting coordinate conversion conflict. | Command G16 in a separate block and after the coordinate conversion. |
Application Notes for Shop Floor Integration
A catastrophic hard collision resulting in a shattered spindle, destroyed workholding, and a ruined scrap part occurs when operators attempt to cancel mirror image functions anywhere except at the exact programmed mirror image center while polar coordinate mode is active. This action causes absolute position and physical machine coordinates to deviate. When the operator recommands the mirror center afterward, the tool path shifts to an unpredictable coordinate, driving the tool turret straight into the revolving workpiece chuck jaws, a table-mounted vise jaw, or a fixture clamp. To prevent mechanical damage, operators must configure virtual safety boundaries on the Barrier Chuck setting screen or use Stroke Check Before Travel (G22/G23) on the control panel. If an incorrect polar coordinate calculation or path shift attempts to cross into these electronic envelopes, the controller immediately halts axis travel and triggers a stored stroke limit alarm code, preventing a hard collision.
Related G-Codes and Command Network
- G15 Polar Coordinate Cancel: Used to cancel G16 polar coordinate programming mode and restore standard Cartesian coordinates.
- G17 / G18 / G19 (Plane Selection): Selects the active working plane (XY, ZX, YZ) which defines which axis represents the radius and which represents the angle.
- G90 / G91 (Absolute / Incremental Command): Determines whether the polar radius and angle are programmed absolutely (relative to workpiece zero or center) or incrementally (relative to current position).
- G110 / G111 / G112 (Siemens Pole Definition): Used in native Siemens SINUMERIK mode to define the pole reference coordinate (current, absolute, or relative to last pole).
- G80 (Canned Cycle Cancel): Deactivates active canned drilling, tapping, or boring cycles that are commonly used in combination with polar coordinate grids.
Conclusion and Operational Takeaways
To ensure stable CNC operation, programmers must treat G16 as a modal preparatory code that must be carefully managed. The center pivot must always be programmed immediately before calling G16. Always place G16 on its own line and program coordinates on subsequent lines. Cancel polar coordinate mode with G15 before calling any high-speed machining or coordinate transformations. Finally, confirm parameter configurations and execute dry runs in the air before cutting raw stock to prevent turret collisions and ruined scrap parts.
Frequently Asked Questions (FAQ)
How do I set the center of the polar coordinate system on Fanuc and Siemens controls?
The polar coordinate origin is defined by the last coordinates programmed immediately before calling G16. If absolute mode (G90) is active, the origin of the program coordinate system acts as the center, whereas in incremental mode (G91), the current position is set as the center. Action: Always program a dedicated linear positioning block (e.g., G00 X0 Y0) immediately before G16 to lock in the pivot point.
Can G16 be programmed in the same block as a motion command?
No. Standard ISO controllers like Siemens and Mitsubishi enforce the Independent Block Rule, which requires G15 and G16 to be programmed completely alone in independent blocks. Combining them with coordinates or feed rates will trigger syntax errors or alarm codes like P33. Action: Place G16 on its own line and program the coordinates and canned cycles on subsequent lines.
How does a machine reset affect the active G16 modal coordinate state?
The status of the polar coordinate mode after a system reset or power cycle is dictated by machine parameters, such as Fanuc Parameter No. 3402 Bit 6 or Mitsubishi Parameter #1210 Bit 11. Depending on these settings, the control may either initialize Group 18 to G15 (Cartesian) or retain G16 (Polar). Action: Check your control parameters or program an explicit G15 command in the safety blocks at the start of your program to ensure the machine initializes in Cartesian mode.
Still not resolved?
Ask our AI assistant about this topic in natural language. Grounded in verified sources, no hallucinations.

- CNC CARE Co-Founder (May 2025 - Present)
- Mitsubishi Electric NC Sales & Service Section Manager (2008 - 2025)
- Reis CNC Service Engineer (2003 - 2008)
- Ören Kalıp CNC Mold Line Team Leader (1999 - 2002)
With over 25 years of experience working in all areas of the CNC machine industry, I continue my activities as a co-founder of CNC CARE, where we offer brand-independent consulting, engineering, and original spare parts services.
Related Articles
Other articles on this topic
G27 Reference Position Return Check: CNC Guide for Multi-Brand Systems
Master the CNC G27 reference position return check on Fanuc, Siemens, and Mitsubishi controls. Learn parameters like MD 34100 and fix Alarm 61816.
Siemens SINUMERIK G26 Upper Working Area & Spindle Speed Limit
Master the Siemens SINUMERIK G26 command for upper working area and spindle speed limits. Learn syntax, parameters like SD 43420, and alarms to avoid crashes.
G26 Spindle Speed Fluctuation Detection ON: CNC Programming Guide
Learn how to configure G26 on Fanuc, Siemens, and Mitsubishi CNC controls to prevent spindle speed fluctuations, set travel limits, and avoid tool crashes.
G25 Lower Working Area and Spindle Speed Limit: Siemens CNC
Master G25 lower working area and spindle speed limits on Siemens SINUMERIK controls. Avoid chuck collisions and configure safety parameter SD 43430.