Early releases of the system maintained a tight coupling between the program coordinate space and the machine coordinate space. The new system separates the two coordinate spaces allowing adjustments and axis movements, e.g., jogging, in the machine coordinate space that do not affect the program coordinate space.

A one-way coupling of the program coordinate space to the machine coordinate space is achieved using an arbitrarily complex user defined multi-dimensional coordinate transformation matrix (CTM). Prior releases used separate transformation matrices for axis scaling and rotation enabled calculation of inverse transforms. However, using a single arbitrarily complex CTM, it is difficult or impossible to calculate inverse transformations, e.g., an all zero CTM will entirely separate the program and machine coordinate spaces. Using inverse transforms, the host software could calculate and display the program position with micro-controller reporting only the machine position.

Commands for scaling and rotation now have a cumulative effect on the single CTM. Rotation commands can now be performed in any combination of 2 or 3 axes and are not limited to the X, Y and Z axes. The axes specified are assumed to be orthogonal. For example, if axes U, V and W control a separate gantry for a wire EDM machine, then a rotation could be applied to those axes in addition to the rotation applied to the X, Y and Z axes. Angular axes can be included in the rotation although the resulting CTM is not likely to be useful.

The CTM builds on the axis linking capability of the prior release adding scaling, skewing and rotation to the CTM. The CTM continues to support axis couplings (or linking) for threading operations or other synchronized motor movements.

Repeating a rotation command will increase the rotation of the CTM. To avoid the cumulative effect, the matrix must first be reset to the identity matrix. The identity matrix couples program X to machine X, program Y to machine Y, etc. all with 100% scaling. G-codes to cancel scaling or rotation now have the same effect of resetting the single CTM to the identity matrix. G-code 102 is redefined to facilitate program initialization of the CTM.

Offsets are no longer calculated for rotational transformations. Rotations are assumed to be about the current program position. The CTM can be changed at any time without affecting either the current program position or the current machine position. Effectively, the CTM only differentially couples interpolations in the program coordinate space to movement of the machine axes.

In prior releases, axis transformations were calculated on the host side. With this release, the CTM is downloaded to the µP board. Transformations are now applied more accurately in real time during linear or cubic Bezier interpolation with the µP periodically reporting both the program and machine positions to the host for display to the user.

As before, fixture and tool offsets are applied in the machine coordinate space. Prior releases calculated the equivalent change in the program coordinate space such that the axes would adjust when the next command was executed. But because the CTM is assumed to be one-way, fixture and tool offsets are supported differently. The firmware now has commands to perform linear interpolations in the machine coordinate space bypassing the CTM. Program selection of a different fixture or tool will generate an immediate movement of the machine axes such that the program and tool positions are maintained. If fixture or tool offsets are changed interactively, then the user is presented with the option to merely adjust the machine coordinates rather than running the motors.

The Coordinate Transformation Matrix