User Tools

Site Tools


en:x300:g-code_and_m-code

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:x300:g-code_and_m-code [2022/09/28 10:47]
erik.ketele
en:x300:g-code_and_m-code [2023/05/17 10:05] (current)
Line 118: Line 118:
 The modal groups for M codes are: The modal groups for M codes are:
  
-|group 4|{M0, M1, M2, M30, M60} stopping | +|group 4|{M0, M1, M2, M30, M60} stopping| 
-|group 5|{54, M55, M56, M64, M65, M66} AUX and general purpose I/O | +|group 5|{54, M55, M56, M64, M65, M66} AUX and general purpose I/O| 
-|group 6|{M6} tool change | +|group 6|{M6} tool change| 
-|group 7|{M3, M4, M5} spindle turning | +|group 7|{M3, M4, M5} spindle turning| 
-|group 8|{M7, M8, M9} coolant (special case: M7 and M8 may be active at the same time) | +|group 8|{M7, M8, M9} coolant (special case: M7 and M8 may be active at the same time)| 
-|group 9|{M48, M49, M50, M51, M52} enable/disable feed and speed override switches | +|group 9|{M48, M49, M50, M51, M52} enable/disable feed and speed override switches| 
-|group 10|{M90, M91, M92, M95, M97} select standard or alternate spindle or touch probe or camera offset, M90=standard. | +|group 10|{M90, M91, M92, M95, M97} select standard or alternate spindle or touch probe or camera offset, M90=standard.| 
-| |Enable THC = {M20, M21} THC ON. THC OFF (Torch height control) A axis clamp = {M26, M27} Clamp on. Clamp off. |+| |Enable THC = {M20, M21} THC ON. THC OFF (Torch height control) A axis clamp = {M26, M27} Clamp on. Clamp off.|
 | |In addition to the above modal groups, there is a group for non-modal G codes:  | | |In addition to the above modal groups, there is a group for non-modal G codes:  |
-|group 0|{G4, G10, G28, G30, G53, G92, G92.1, G92.2, G92.3} |+|group 0|{G4, G10, G28, G30, G53, G92, G92.1, G92.2, G92.3}| 
 + 
 +For several modal groups, when a machining center is ready to accept commands, one member of the group must be in effect. There are default settings for these modal groups. When the machining center is turned on or otherwise re-initialized, the default values are automatically in effect. 
 + 
 +Group 1, the first group on the table, is a group of G codes for motion. One of these is always in effect. That one is called the current motion mode. It is an error to put a G-code from group 1 and a G-code from group 0 on the same line if both of them use axis words. If an axis word-using G-code from group 1 is implicitly in effect on a line (by having been activated on an earlier line), and a group 0 G-code that uses axis words appears on the line, the activity of the group 1 G-code is suspended for that line. The axis word-using G-codes from group 0 are G10, G28, G30, and G92. 
 + 
 +==== G Codes ==== 
 + 
 +G codes of the RS274/NGC language are shown in the table below and described in this Section. The descriptions contain command prototypes, set in bold type. In the command prototypes, three dots (…) stand for a real value. As described earlier, a real value may be (1) an explicit number, 4, for example, (2) an expression, [2+2], for example, (3) a parameter value, #88, for example, or (4) a unary function value, acos[0], for example.\\ 
 +In most cases, if axis words (any or all of X…, Y…, Z…, A…, B…, C…) are given, they specify a destination point. Axis numbers are in the currently active coordinate system, unless explicitly described as being in the absolute coordinate system.\\ 
 +Where axis words are optional, any omitted axes will have their current value. Any items in the command prototypes not explicitly described as optional are required. It is an error if a required item is omitted. In the prototypes, the values following letters are often given as explicit numbers. Unless stated otherwise, the explicit numbers can be real values. For example, G10 L2 could equally well be written G[2*5] L[1+1].\\ 
 +If the value of parameter 100 were 2, G10 L#100 would also mean the same. Using real values which are not explicit numbers as just shown in the examples is rarely useful.\\ 
 +If L… is written in a prototype the "…" will often be referred to as the "L number". Similarly the "…" in H… may be called the "H number", and so on for any other letter. 
 + 
 +=== Rapid Linear Motion - G0 === 
 + 
 +For rapid linear motion, program G0 X… Y… Z… A…, where all the axis words are optional, except that at least one must be used.\\ 
 +The G0 is optional if the current motion mode is G0. This will produce coordinated linear motion to the destination point at the current traverse rate (or slower if the machine will not go that fast). It is expected that cutting will not take place when a G0 command is executing.\\ 
 +It is an error if:\\ 
 +• All axis words are omitted.\\ 
 +If cutter radius compensation is active, the motion will differ from the above. If G53 is programmed on the same line, the motion will also differ. 
 + 
 +G-codes 
 + 
 +|G-code|meaning| 
 +|G0|rapid positioning| 
 +|G1|linear interpolation| 
 +|G2|helical interpolation (clockwise)| 
 +|G3|circular/helical interpolation (counterclockwise)| 
 +|G4|dwell| 
 +|G10|coordinate system origin setting| 
 +|G17|XY-plane selection| 
 +|G18|XZ-plane selection| 
 +|G19|YZ-plane selection| 
 +|G20|inch system selection| 
 +|G21|millimeter system selection| 
 +|G28|move to park position 1, setup on variable page| 
 +|G30|move to park position 2, setup on variable page| 
 +|G33|Lathe, motion synchronized to spindle| 
 +|G38.2|straight probe| 
 +|G40|cancel cutter radius compensation| 
 +|G41|start cutter radius compensation left| 
 +|G42|start cutter radius compensation right| 
 +|G43|tool length offset (plus) , tool X offset for lathe| 
 +|G49|cancel tool length offset| 
 +|G53|motion in machine coordinate system| 
 +|G54|use preset work coordinate system 1| 
 +|G55|use preset work coordinate system 2| 
 +|G56|use preset work coordinate system 3| 
 +|G57|use preset work coordinate system 4| 
 +|G58|use preset work coordinate system 5| 
 +|G59|use preset work coordinate system 6| 
 +|G59.1|use preset work coordinate system 7| 
 +|G59.2|use preset work coordinate system 8| 
 +|G59.3|use preset work coordinate system 9| 
 +|G61|set path control mode: exact path| 
 +|G61.1|set path control mode: exact stop| 
 +|G64|set path control mode: continuous| 
 +|G68|XY rotation| 
 +|G76|Lathe, threading| 
 +|G80|cancel motion mode (including any canned cycle)| 
 +|G81|canned cycle: drilling| 
 +|G82|canned cycle: drilling with dwell| 
 +|G83|canned cycle: peck drilling| 
 +|G84|canned cycle: right hand tapping| 
 +|G85|canned cycle: boring, no dwell, feed out| 
 +|G86|canned cycle: boring, spindle stop, rapid out| 
 +|G87|canned cycle: back boring| 
 +|G88|canned cycle: boring, spindle stop, manual out| 
 +|G89|canned cycle: boring, dwell, feed out| 
 +|G90|absolute distance mode| 
 +|G91|incremental distance mode| 
 +|G92|offset coordinate systems and set parameters| 
 +|G92.1|cancel offset coordinate systems and set parameters to zero| 
 +|G92.2|cancel offset coordinate systems but do not reset parameters| 
 +|G92.3|apply parameters to offset coordinate systems| 
 +|G93|inverse time feed rate mode| 
 +|G94|units per minute feed rate mode| 
 +|G98|initial level return in canned cycles| 
 +|G99|R-point level return in canned cycles| 
 + 
 +=== Linear Motion at Feed Rate - G1 === 
 + 
 +For linear motion at feed rate (for cutting or not), program G1 X… Y… Z… A…, where all the axis words are optional, except that at least one must be used.\\ 
 +The G1 is optional if the current motion mode is G1. This will produce coordinated linear motion to the destination point at the current feed rate (or slower if the machine will not go that fast).\\ 
 +It is an error if:\\ 
 +• • All axis words are omitted. 
 + 
 +=== Arc at Feed Rate - G2 and G3 === 
 + 
 +A circular or helical arc is specified using either G2 (clockwise arc) or G3 (counterclockwise arc). The axis of the circle or helix must be parallel to the X, Y, or Z-axis of the machine coordinate system.\\ 
 +The axis (or, equivalently, the plane perpendicular to the axis) is selected with G17 (Z-axis, XY-plane), G18 (Y-axis, XZ-plane), or G19 (X-axis, YZ-plane). If the arc is circular, it lies in a plane parallel to the selected plane.\\ 
 +If a line of RS274/NGC code makes an arc and includes rotational axis motion, the rotational axes turn at a constant rate so that the rotational motion starts and finishes when the XYZ motion starts and finishes. Lines of this sort are hardly ever programmed.\\ 
 +Two formats are allowed for specifying an arc. We will call these the center format and the radius format. In both formats the G2 or G3 is optional if it is the current motion mode. 
 + 
 +== Radius format arc == 
 + 
 +In the radius format, the coordinates of the end point of the arc in the selected plane are specified along with the radius of the arc. Program G2 X… Y… Z… A… R… (or use G3 instead of G2). R is the radius.\\ 
 +The axis words are all optional except that at least one of the two words for the axes in the selected plane must be used. The R number is the radius.\\ 
 +A positive radius indicates that the arc turns through 180 degrees or less, while a negative radius indicates a turn of 180 degrees to 359.999 degrees. If the arc is helical, the value of the end point of the arc on the coordinate axis parallel to the axis of the helix is also specified.\\ 
 +It is not good practice to program radius format arcs that are nearly full circles or are semicircles (or nearly semicircles) because a small change in the location of the end point will produce a much larger change in the location of the center of the circle (and, hence, the middle of the arc).\\ 
 +The magnification effect is large enough that rounding error in a number can produce out-of-tolerance cuts. Nearly full circles are outrageously bad, semicircles (and nearly so) are only very bad. Other size arcs (in the range tiny to 165 degrees or 195 to 345 degrees) are OK.\\ 
 +Here is an example of a radius format command to mill an arc: **G17 G2 x 10 y 15 r 20 z 5.** \\ 
 +That means to make a clockwise (as viewed from the positive Z-axis) circular or helical arc whose axis is parallel to the Z-axis, ending where X=10, Y=15, and Z=5, with a radius of 20. If the starting value of Z is 5, this is an arc of a circle parallel to the XY-plane; otherwise it is a helical arc. 
 + 
 +== Center format arc == 
 + 
 +In the center format, the coordinates of the end point of the arc in the selected plane are specified along with the offsets of the center of the arc from the current location. In this format, it is OK if the end point of the arc is the same as the current point. It is an error if:\\ 
 +• When the arc is projected on the selected plane, the distance from the current point to the center differs from the distance from the end point to the center by more than 0.0002 inch (if inches are being used) or 0.002 millimeter (if millimeters are being used).\\ 
 +When the XY-plane is selected, program **G2 X… Y… Z… A… I… J…** (or use G3 instead of G2). The axis words are all optional except that at least one of X and Y must be used. I and J are the offsets from the current location (in the X and Y directions, respectively) of the center of the circle.\\ 
 +I and J are optional except that at least one of the two must be used. It is an error if:\\ 
 +* I and J are both omitted.\\ 
 +\\ 
 +When the XZ-plane is selected, program **G2 X… Y… Z… A… I… K…** (or use G3 instead of G2). The axis words are all optional except that at least one of X and Z must be used. I and K are the offsets from the current location (in the X and Z directions, respectively) of the center of the circle.\\ 
 +I and K are optional except that at least one of the two must be used. It is an error if:\\ 
 +* I and K are both omitted.\\ 
 +\\ 
 +When the YZ-plane is selected, program **G2 X… Y… Z… A… B… C… J… K…** (or use G3 instead of G2). The axis words are all optional except that at least one of Y and Z must be used. J and K are the offsets from the current location (in the Y and Z directions, respectively) of the center of the circle.\\ 
 +J and K are optional except that at least one of the two must be used. It is an error if:\\ 
 +* J and K are both omitted.\\ 
 +\\ 
 +Here is an example of a center format command to mill an arc:\\ 
 +**G17 G2 x10 y16 i3 j4 z9.** \\ 
 +\\ 
 +That means to make a clockwise (as viewed from the positive z-axis) circular or helical arc whose axis is parallel to the Z-axis, ending where X=10, Y=16, and Z=9, with its center offset in the X direction by 3 units from the current X location and offset in the Y direction by 4 units from the current Y location.\\ 
 +If the current location has X=7, Y=7 at the outset, the center will be at X=10, Y=11. If the starting value of Z is 9, this is a circular arc; otherwise it is a helical arc. The radius of this arc would be 5.\\ 
 +\\ 
 +In the center format, the radius of the arc is not specified, but it may be found easily as the distance from the center of the circle to either the current point or the end point of the arc 
 + 
 +=== Dwell - G4 === 
 + 
 +For a dwell, program G4 P… . This will keep the axes unmoving for the period of time in seconds specified by the P number. It is an error if the P number is negative.\\ 
 +=== Length Units - G20/G21 and G70/G71 === 
 + 
 +Program G20 to use inches for length units. Program G21 to use millimeters.\\ 
 +It is usually a good idea to program either G20 or G21 near the beginning of a program before any motion occurs, and not to use either one anywhere else in the program.\\ 
 +It is the responsibility of the user to be sure all numbers are appropriate for use with the current length units. G70/G71 is added for CAM software compatibility.\\ 
 +=== Return to Home - G28 and G30 === 
 + 
 +Two home positions are defined (by parameters 5161-5166 for G28 and parameters 5181-5186 for G30). The parameter values are in terms of the absolute coordinate system, but are in unspecified length units.\\ 
 +To return to home position by way of the programmed position, program G28 X… Y… Z… A… (or use G30). All axis words are optional.\\ 
 +The path is made by a traverse move from the current position to the programmed position, followed by a traverse move to the home position.\\ 
 +If no axis words are programmed, the intermediate point is the current point, so only one move is made. The order of Z depends on its position, if the end position is higher as the current Z position Z will move first, otherwise Z will move last, this is to prevent collision.\\ 
 +\\ 
 +==== Input M codes ==== 
 + 
 +M codes of the RS274/NGC language are shown in the following table.\\ 
 +|M code|Meaning| 
 +|M0|program stop| 
 +|M1|optional program stop| 
 +|M2|program end| 
 +|M3|turn spindle clockwise| 
 +|M4|turn spindle counterclockwise| 
 +|M5|stop spindle turning| 
 +|M6|tool change| 
 +|M7|mist coolant on| 
 +|M8|flood coolant on| 
 +|M9|mist and flood coolant off| 
 +|M30|progrma end, spindle and coolants off and rewind.| 
 +|M48|enable speed and feed overrides.| 
 +|M49|disable speed and feed overrides.| 
 +|M90|standard head/spindle| 
 + 
 +== Program Stopping and Ending - M0, M1, M2, M30, M60 == 
 +To halt a running program temporarily, program M0. If a program is stopped by an M0, pressing the cycle start button will restart the program at the following line, so the program will continue.\\  
 +**M30** for next effects:\\  
 +• Distance mode is set to MODE_ABSOLUTE (like G90).\\ 
 +• Feed rate mode is set to UNITS_PER_MINUTE (like G94).\\ 
 +• Feed and speed overrides are set to ON (like M48).\\ 
 +• The spindle is stopped (like M5).\\ 
 +• Coolants are turned off (like M9).\\ 
 +• Program is re-winded to the first line, ready for next start.\\ 
 +\\ 
 +Program **M60** instead of M30 if the spindle and coolants should remain ON.\\ 
 +\\ 
 +== Spindle/Head Control - M3, M4, M5, M90-M97 ==  
 +To start the spindle turning clockwise at the currently programmed speed, program M3.\\ 
 +To start the spindle turning counterclockwise at the currently programmed speed, program M4.\\ 
 +To stop the spindle from turning, program M5.\\ 
 +It is OK to use M3 or M4 if the spindle speed is set to zero. If this is done (or if the speed override switch is enabled and set to zero), the spindle will not start turning.\\ 
 +If, later, the spindle speed is set above zero (or the override switch is turned up), the spindle will start turning. It is OK to use M3 or M4 when the spindle is already turning or to use M5 when the spindle is already stopped.\\ 
 +\\ 
 +**__Note:__** It is not possible to make the spindle rotate counterclockwise in the Cyborg engravers. 
 +\\ 
 +== Coolant Control - M7, M8, M9 ==  
 +To turn mist coolant on, program M7. To turn flood coolant on, program M8. To turn all coolant off, program M9. It is always OK to use any of these commands, regardless of what coolant is on or off.\\ 
 +\\ 
  
 **Continue to [[:en:x300:table_of_contents|the table of contents]].** **Continue to [[:en:x300:table_of_contents|the table of contents]].**
  
  
en/x300/g-code_and_m-code.1664354832.txt.gz · Last modified: 2022/09/28 10:47 by erik.ketele