Thank you. You described everything correctly.

I will clarify my question a little. Is it possible to add a correction to the W axis using such an expression?

tsel1; // Transform 1 selected as active

Tdet= tinit(1); // Initialize Transform 1

Tdata[1].Bias[6] = XdOffset; // Set X offset term

Tdata[1].Bias[7] = YdOffset;// Set Y offset term

Tdata[1].Bias[8] = ZdOffset;

Tdata[1].Bias[5]=WlOffset; // Is this expression true?

Thanks in advance

[/quote]

OK, A picture is SO valuable :-)

1) Tdata[1].Bias[5]=WlOffset; // Is this expression true?

-- Well, yes, but not in the context I believe you are asking.

Lets say you define:

#5->2000W+28

This would write kw=2000 and dw=28 so the answer to your question is yes

But will this value interact with the XYZ T-matrix? NO

Referring to the July 2016 Users Manual:

the axis def matrix on pp 466 and the T-matrix on pp484.

Note how the ka, kb, kc axes are single elements on the diagonal, but the kx, ky, kz elements are surrounded by dot products kxy, kyz, kzx, etc.

PMAC will treat these 3x3 sub matrices as a 'self contained' transformation. How?

That is where the IJK vector comes into use. Note that I, J, K (II, JJ, KK) are skipped over in the axis definitions. They are reserved to define rotation of the XYZ coordinate frame.

As you already know, the IJK vector is used to define the rotation of the XYZ T-matrix. This is hard coded into PMAC firmware. It is so common to do a rotation in XYZ space that this very basic kinematic transform is built in.

Your machine is an XYZ machine. You can indeed use the built in XYZ T-matrix functionality.

And an offset in d5 will apply to the W axis. (Easiest done in the axis def statement)

Lets say your machine has 5000 cts/mm with 200mm of travel in W and 2000 cnts/mm with 1000mm travel in Z, but you want to include the W axis as part of the XYZ T-matrix so you can take advantage of basic CNC coordinate rotations and circular interpolation, etc. over the full travel capacity in Z.

I think(?) you could just define motors

#4->(2000*1000/1200)Z+d4 //assume #4 is driving axis Z

#5->(5000*200/1200)Z+d5 //assume #5 is driving axis W

This will linearly proportion any Z axis command over the two motors, but is probably too simplistic a solution for real life. You probably have significant mechanical constraints to consider.

Another approach would be to do something like:

#4->2000DD+d12

#5->5000EE+d13

you will need to use a dummy or phantom axis for Z, and implement some algorithm to distribute the Z command over the two axis.

See the document on spectral decomposition from Kurt for one idea when two axes of significantly different bandwidths complement each other. Very. Cool. (Also a Youtube video).

https://www.youtube.com/watch?v=pc9v59fDzT8
ODT - please correct my omissions, lack of detail, and outright errors.