The document discusses the dwell (G04) command in CNC machines. It can be used to pause machine axes for a specified time or number of revolutions. The primary use is to relieve tool pressure when plunging or changing directions. However, the dwell should not be used to program around machine problems or non-interfaced M codes, as this can be dangerous. The better solution is to fix the machine issues. The document also discusses exact stop check commands G09 and G61 which can eliminate corner rounding.
The document discusses the dwell (G04) command in CNC machines. It can be used to pause machine axes for a specified time or number of revolutions. The primary use is to relieve tool pressure when plunging or changing directions. However, the dwell should not be used to program around machine problems or non-interfaced M codes, as this can be dangerous. The better solution is to fix the machine issues. The document also discusses exact stop check commands G09 and G61 which can eliminate corner rounding.
Most basic CNC courses do introduce the dwell command. As you probably know, you can make the machines axes pause for a specified period. With all machines, the dwell period can specified in time (seconds). The primary application for the dwell command (relieving tool pressure) is also commonly introduced in basic CNC courses. Here we intend to discuss the dwell command in more detail and explore the various applications for the dwell command (including to relieve tool pressure). Can you specify the dwell period in number of spindle revolutions? As stated, all controls allow you to specify the dwell period in seconds. With some machines (those that allow feedrate specification in per revolution fashion), you can additionally specify the dwell period in number of revolutions. This can be helpful, especially when you are trying to relieve tool pressure. To designate the method by which you specify dwell period (time or number of revolutions), use the G code for specifying feed per minute or feed per revolution. For machining center controls, this command is usually G94 for time in seconds or G95 for number of revolutions. For turning centers, its usually G98 for time in seconds or G99 for number of revolutions. Here are two examples for a turning center. N060 G98 G04 X1.0 (Dwell one second) N060 G99 G04 X5.0 (Dwell five revolutions) Relieving tool pressure As you probably know, the primary application for the dwell command (at least for machining and turning centers) is to relieve tool pressure. For machining centers, this is commonly necessary once you have plunged an end mill into a pocket or slot in the Z axis, prior to beginning to mill the pocket or slot in XY. . . . N045 G54 G90 S500 M03 (Select coordinate system, abs mode, start spindle N050 G00 X0.5 Y4.0 (Rapid to slot in XY) N055 G43 H01 Z0.1 (Instate tool length compensation, rapid to just above surface) N060 G01 Z-0.25 F2.0 (Plunge pocket in Z) N065 G04 X0.5 (Dwell for 0.5 seconds) N070 G01 X4.0 F4.0 (Mill slot) . . . In line N065, the dwell period is in seconds since feedrate is being specified in per minute fashion (note that most machining centers do not even allow feed per revolution). Another time you have to relieve tool pressure in this fashion on machining centers is when counter-boring. You know that this dwell is part of the G82 counter-boring canned cycle.
Lesson Eight: G04 Dwell Techniques
For turning centers, its often necessary to relieve tool pressure after plunging a groove. If you dont, its likely that the bottom of the groove will not be round. Heres an example. . . . N050 T0202 M41 (Index turret, select spindle range) N055 G96 S400 M03 (Start spindle at 400 sfm) N060 G00 X4.2 Z-3.5 (Rapid to just above groove) N065 G01 X3.5 F0.005 (Plunge groove) N070 G04 X5.0 (Dwell for five seconds) N075 G00 X4.2 (Retract from groove) . . . Were assuming this turning center allows the dwell period to be specified in number of revolutions. And since feedrate is being specified in per revolution fashion, the dwell period in line N070 will be five revolutions. Are you dwelling to overcome machine problems? As stated, the primary application for the dwell command is to allow time for tool pressure to be relieved. Weve seen some CNC users, rather inappropriately, use the dwell command in order to program around certain machine limitations. (Worse, weve seen some machine tool builders actually recommend using the dwell command in this manner.) Say, for example, your CNC turning centers coolant system isnt reacting as quickly as it is supposed to. Maybe theres a bad check-valve. You specify an M08, but it takes 2-3 seconds before the coolant comes on at full blast. Yet you have a tool (possibly a coolant-through-the-tool drill) that requires coolant to be flowing at its maximum before the drill can enter a hole. If its not, the drill could be damaged. In this case, some programmers will simply program an 2-3 second dwell command after the M08 and before the drill is allowed to enter the hole. While this does take care of the problem, it adds time to the cycle. And its likely that the coolant systems check valve will eventually worsen (taking even more time to fully activate the coolant). The right way to handle this problem is, of course, to fix the machine. Poorly interfaced M codes With the coolant system example, at least the machine was originally designed to function properly. It was a machine problem (the bad check valve) that caused the programmer to add the dwell. However, we have seen many poorly interfaced M codes (designed by the machine tool builder) that do not provide full confirmation that the M code has been completed prior to allowing the machine to continue with the program. One turning center manufacturer, for example, did not fully interface the chuck-jaw open and close M codes. When an end user attached a bar feeder, they found that when the jaw close M code was specified (to clamp on the bar after feeding), the program continued before the jaws fully closed. The bar stop moved away while the jaws were
Lesson Eight: G04 Dwell Techniques
still closing and allowed the bar to feed too far. The proper long-term solution to this problem is, of course, to have the jaw closing M code fully interfaced so that the machine must receive a confirmation signal that the jaws are closed before it is allowed to continue with the program. Yet when this user contacted the machine tool builder, they were told to include a dwell command after the jaw close M code to allow time for the jaws to close. Programming around non-interfaced M codes with the dwell command can be very dangerous. In this example, if for any reason the jaws dont close in the allotted time, the program will simply continue. You should never have to use the dwell command to program around non-interfaced M codes. Given the technology of todays programmable controller logic, machine tool builders can modify the way M codes behave with relative ease. So if you do happen across an M code that is not fully interfaced, and especially if its function could be hazardous, we urge you to contact the machine tool builder to have it fully interfaced (dont take no for an answer). CNC machines are dangerous enough when all M codes are properly interfaced. Other M codes you should never program around with dwell commands include indexing devices, pallet changers, tailstocks, tool changing, or just about any other machine function that takes time to complete. Another time weve seen the dwell command rather inappropriately applied has to do with spindle acceleration. With most turning centers, if the spindle is not yet up to speed when a positioning movement is completed, the control will make the machine wait until the spindle is up to speed. As you accelerate, not waiting for the spindle may not be too dangerous (machining will simply be too slow). However, say youve just faced a workpiece to center using constant surface speed and the spindle is running at its maximum speed. Now you rapid this tool up to a large six inch diameter to do some rough turning. Its likely that the (three inch) motion will occur much faster than the spindles deceleration to the appropriate speed for a six inch diameter. In this case, if the machine does not wait for the spindle to slow down before the tool is allowed to continue, machining will occur much faster than it is supposed to. This could cause damage to the tool and/or workpiece and if the workpiece is not securely held, it could be thrown from the work holding device. This may be another time when you are tempted to program a dwell command to handle a machine problem. You can, of course, include a dwell command right after the machines movement to the six inch diameter that is long enough for the spindle to slow down to the appropriate speed. However, if you do this kind of work on a regular basis (several different workpieces), its likely that youll eventually forget to include the dwell command - and the results could be disastrous. Again, the better long term solution is to get the machine tool builder to fix the machine. This problem may be as simple to solve as a parameter change. G09 and G61 - exact stop check commands We mention the exact stop check command during our discussion of the dwell command (G04). As you know, the CNC machine will have the tendency to round corners as it transitions from one G01 command to another. The larger the machine and the faster the feedrate, the more the tendency there will be for corner rounding. The G09 command
Lesson Eight: G04 Dwell Techniques
will cause the machine to come to a complete stop between motions. For outside corners, this will have the effect of eliminating corner rounding. Here is an example. . . . N055 G00 X-0.6 Y-0.25 (Rapid to approach position) N060 G43 H01 Z-0.25 (Instate tool length compensation, move to work surface in Z) N065 G01 G09 X4.25 F5.0 (Machine lower surface in Y, stop at command end) N070 G09 Y5.25 (Machine right side in X, stop at command end) N075 G00 Z0.1 (Retract in Z) N080 G91 G28 Z0 M19 (Move to tool change position, orient spindle) . . . Note that G09 is a non-modal G code. Since we need it twice in this series of commands, it must be programmed twice. There is another exact stop check command that is modal (G61). Heres the same program using G61. Note that G64 (normal cutting) cancels the exact stop check mode. . . . N055 G00 X-0.6 Y-0.25 (Rapid to approach position) N060 G43 H01 Z-0.25 (Instate tool length compensation, move to work surface in Z) N065 G01 G61 X4.25 F5.0 (Machine lower surface in Y, stop at command end) N070 Y5.25 (Machine right side in X, stop at command end) N075 G64 G00 Z0.1 (Retract in Z) N080 G91 G28 Z0 M19 (Move to tool change position, orient spindle) . . .