Absolute vs Incremental Coordinates

Programming|Process Desk|

Absolute vs incremental are the two modes in which a CNC program measures its moves, and they answer one question about every position in the program: measured from where? In absolute mode, the G90 mode, each coordinate is measured from the origin of the active work coordinate system — the part zero that the setup set — so a position means the same place on the part whatever the tool was doing before. In incremental mode, the G91 mode, each coordinate is measured from the tool’s current position, so a value means “move this far from wherever you are now”. The same block means completely different things in the two modes, and which one is in force is a matter of the modal state the program has set. This entry sets out the two modes, when each is used, and the discipline of keeping them apart.

The two coordinate modes

The difference between the modes is the reference each uses, and the blocks that carry them are read accordingly. In absolute mode a block that moves to X50 means “go to the point 50 millimetres from the part’s zero in X” — wherever the tool started, it ends at that same point, and the program reads like the dimensioned drawing, with every feature given its distance from the datum. In incremental mode the same block means “move 50 millimetres in the X direction from your present position” — the tool ends 50 millimetres from wherever it happened to be, and the block reads as a distance and a direction rather than as a place. Absolute mode is the natural language of a drawing dimensioned from datums; incremental mode is the natural language of a move defined by its distance from the last move. Both are complete and correct ways of describing a toolpath; they simply measure from different points.

The same numbers, different places

The modes are dangerous precisely because the numbers look the same, and the meaning is invisible in the block. A line that reads “X25” is a statement about a fixed place on the part if the machine is in absolute mode, and a statement about a direction and a distance from the current position if it is in incremental mode — and nothing in the block itself says which. Under absolute mode the program can move to X25 and back to X0 all day and always return to the same places; under incremental mode the same values carry the tool somewhere new on every repetition, adding each distance to the last. A program written for one mode and run under the other does not fail gradually — it moves to places the writer never intended, cutting air where metal was expected and metal where air was, which is why the mode is one of the first things a machinist checks when reading a program and the first thing a program’s header declares.

Reading the drawing

The mode a program should use is written, in effect, on the drawing, and the choice follows the dimensioning. A part dimensioned from datum surfaces — most machined parts, dimensioned from the edges or the bores that are its work offsets — is naturally programmed in absolute mode, because the drawing’s numbers are the part’s coordinates and they can be entered as they stand. A part dimensioned from feature to feature, as a chain of dimensions where each is given from the last, is naturally programmed incrementally, because that is how its numbers run. The general practice of the shop is absolute: it is easier to read, easier to check against the drawing, and far safer, since a mistake in one absolute value moves one feature rather than shifting everything after it. Incremental programming is reserved for the work where relative distance is genuinely what is wanted — the repeated pattern, the subprogram run at a series of positions, the move defined by a fixed amount from where the tool stands.

Where each mode is used

Absolute mode is the working mode of the shop’s programs, and it is what the structure of a program assumes when its header sets G90: the offsets select the part zero, and every position that follows is measured from it, feature by feature, in the drawing’s own numbers. Incremental mode earns its place in particular patterns rather than as a general habit: a subprogram that machines a shape relative to the tool’s entry point can be called at each of several positions, machining the same shape wherever it is told to begin; a tool can be moved by a fixed step — the same depth again, the same pitch again — without recomputing absolute values. In these uses G91 expresses exactly what the programmer means, and it is switched back to G90 as soon as the pattern is done, so that the running program returns to measuring from the part.

The danger of the leftover mode

The great hazard of incremental mode is not using it but leaving it on, and the discipline against it is part of the state tracking that reading a program demands. Because the mode is modal, a G91 written for one pattern stays in force through every block that follows until a G90 replaces it; a program that used G91 for a subprogram and forgot to return to G90 will then measure all its next moves from where the tool happens to be — the toolpath drifts, the tool runs where it should not, and the first sign is a crash or a spoiled part. The program’s answer is to set the mode deliberately: the header declares absolute, the incremental sections declare G91 and return to G90 when they finish, and the prove-out walks the program watching for a mode left in the wrong state. The two modes are equally valid ways to describe a part; the discipline of the shop is to know which is in force at every block — measured from the part, or measured from here — and to make sure the program and the machine agree on it.

Related