CathyInBlue
Grandmaster
In this issue of First World Problem Theatre:
I'm trying to learn all the ins and outs of CNC programming in G Code by creating my own "conversational" compiler to G Code.
There are a number of "modes" the machine can be in:
G20, inch (English/Imperial) mode or G21 millimeter (Metric) mode.
G90, absolute positioning mode or G91 incremental positioning mode.
For instructions that specify circular motion, select one of the three cartesian machine planes: G17 (X-Y), G18 (X-Z), or G19 (Y-Z).
I've got all of those, but now, I'm trying to understand how the machine uses this mode:
G15 cartesian coordinates mode or G16 polar coordinates mode.
Most resources seem to indicate that at the moment of dropping into G16 mode, you form a new coordinate system, completely independent of previous positioning, coordinate, and plane settings. That this new polar coordinate system has its origin fixed in the old coordinate system, but is itself absolute in radius but relative in angle (or maybe absolute in angle as well?), that it ignores plane selection and always operates exclusively in the X-Y plane (or for whatever the plane selection is, the first axis is interpretted as the radius and the second as the angle in whatever orientation?).
I've been scouring the bowels of the Internet (H/T: Weasel Zippers) for CNC programming guides that at least pretend to be authoritative about polar coordinate CNC programming and how it plays with G17/G18/G19 and G90/G91, but no dice. Most of them are just plagiarized off one another, complete with some of the same wrong information. Some claim that while in G16 mode, the only X-Y travel instructions that are permitted are G00 (rapid) or G01 (linear), but then some have examples that show canned cycle instructions that have X and/or Y travel in them, using polar coordinates in those values.
So, if INGO does not have its fair share of CNC machinists, then I miss my guess. Any of you G Code Jockeys care to enlighten me as to all of the true ins and outs of G16 polar coordinate system programming? My compiler is kinda stymied until I can fill in this hole.
I'm trying to learn all the ins and outs of CNC programming in G Code by creating my own "conversational" compiler to G Code.
There are a number of "modes" the machine can be in:
G20, inch (English/Imperial) mode or G21 millimeter (Metric) mode.
G90, absolute positioning mode or G91 incremental positioning mode.
For instructions that specify circular motion, select one of the three cartesian machine planes: G17 (X-Y), G18 (X-Z), or G19 (Y-Z).
I've got all of those, but now, I'm trying to understand how the machine uses this mode:
G15 cartesian coordinates mode or G16 polar coordinates mode.
Most resources seem to indicate that at the moment of dropping into G16 mode, you form a new coordinate system, completely independent of previous positioning, coordinate, and plane settings. That this new polar coordinate system has its origin fixed in the old coordinate system, but is itself absolute in radius but relative in angle (or maybe absolute in angle as well?), that it ignores plane selection and always operates exclusively in the X-Y plane (or for whatever the plane selection is, the first axis is interpretted as the radius and the second as the angle in whatever orientation?).
I've been scouring the bowels of the Internet (H/T: Weasel Zippers) for CNC programming guides that at least pretend to be authoritative about polar coordinate CNC programming and how it plays with G17/G18/G19 and G90/G91, but no dice. Most of them are just plagiarized off one another, complete with some of the same wrong information. Some claim that while in G16 mode, the only X-Y travel instructions that are permitted are G00 (rapid) or G01 (linear), but then some have examples that show canned cycle instructions that have X and/or Y travel in them, using polar coordinates in those values.
So, if INGO does not have its fair share of CNC machinists, then I miss my guess. Any of you G Code Jockeys care to enlighten me as to all of the true ins and outs of G16 polar coordinate system programming? My compiler is kinda stymied until I can fill in this hole.