Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Transformation Matrix CNC
#1
Hello.
We purchased PowerPmacNc16-SDK and we need to add 2 axes. How can we add the linear axis W (on one axis with the Z axis) and the circular axis B to the x / y / z axis transformation matrix? .
Thank you Help.
Reply
#2
Not really sure what you want to achieve.
if you just want to add display on NC interface, then please change the content of PowerPmacNC.ini file and save.
in that file, you need to change AxisLabels and MotorNumbers to match your axis names.

Transformation matrices are usually used with G code with variable values, but not axis values.
it seems to be a 5-axis system but it's not clear how it works.
Please tell more about the details you want to achieve.
Reply
#3
(04-27-2018, 02:05 PM)JayL Wrote: Not really sure what you want to achieve.
if you just want to add display on NC interface, then please change the content of PowerPmacNC.ini file and save.
in that file, you need to change AxisLabels and MotorNumbers to match your axis names.

Transformation matrices are usually used with G code with variable values, but not axis values.
it seems to be a 5-axis system but it's not clear how it works.
Please tell more about the details you want to achieve.

I know how to add an axis. In this case, I do not understand how to add another coordinate axis to the transformation matrix 3x3 (X / Y / Z) or it must be added to another matrix. In the documentation, this is poorly described.
Reply
#4
In the transformation matrix for a coordinate system, all axes have a scaling term (Diag[i]) and an offset term (Bias[i]). This includes the W and B axes you want to add.

There are four sets of axis "triplets" -- X/Y/Z, U/V/W, XX/YY/ZZ, and UU/VV/WW -- that have 3x3 transformations consisting of the 3 diagonal terms already mentioned plus 6 off-diagonal terms (e.g. XYZ[m]).

What no one here understands is what you are trying to do by "add[ing] another coordinate axis to the transformation matrix 3x3 (X / Y / Z)". I doesn't seem to make any geometric sense to us.

The User's Manual chapter "Setting Up Coordinate Systems" shows the full transformation matrix structure.
Reply
#5
(05-01-2018, 03:35 PM)curtwilson Wrote: In the transformation matrix for a coordinate system, all axes have a scaling term (Diag[i]) and an offset term (Bias[i]). This includes the W and B axes you want to add.

There are four sets of axis "triplets" -- X/Y/Z, U/V/W, XX/YY/ZZ, and UU/VV/WW -- that have 3x3 transformations consisting of the 3 diagonal terms already mentioned plus 6 off-diagonal terms (e.g. XYZ[m]).

What no one here understands is what you are trying to do by "add[ing] another coordinate axis to the transformation matrix 3x3 (X / Y / Z)". I doesn't seem to make any geometric sense to us.

The User's Manual chapter "Setting Up Coordinate Systems" shows the full transformation matrix structure.

I believe he is asking:
A) How to add a 4th (rotary) axis
B) How to accommodate a compound (or redundant) Z axis

A) For the rotary axis, isn't this usually handled in a CAM software package? (Suitable POST processor assumed)
Otherwise the CNC machine can be treated as a 4 DOF kinematic machine, which is essentially what the CAM software does.

B) I suspect his machine has a 'Major' & 'minor' Z axis arrangement where the W axis might move the entire head in the Z direction and the (z) axis extends & retracts the spindle (also in the Z direction) so that "Z" = W + (z).
Could this be handled as: (???)
1) Make Z a phantom axis with feedback Z=W+(z) so that the T-matrix remains intact. Phantom not controlling, no cascade - just a buffer between the machine Z command and two other active axes such as DD & EE.

2) An algorithm to distribute the Z motion command over the two axes. The W axis might be slower than the (z), but who knows. (spectral decomposition comes to mind, linear proportioning would be simplest.)

Or perhaps I am completely missing his point.... It has happened before.
Maybe all he wants to do is add some screen art.
Reply
#6
I believe he is asking:
A) How to add a 4th (rotary) axis
B) How to accommodate a compound (or redundant) Z axis

A) For the rotary axis, isn't this usually handled in a CAM software package? (Suitable POST processor assumed)
Otherwise the CNC machine can be treated as a 4 DOF kinematic machine, which is essentially what the CAM software does.

B) I suspect his machine has a 'Major' & 'minor' Z axis arrangement where the W axis might move the entire head in the Z direction and the (z) axis extends & retracts the spindle (also in the Z direction) so that "Z" = W + (z).
Could this be handled as: (???)
1) Make Z a phantom axis with feedback Z=W+(z) so that the T-matrix remains intact. Phantom not controlling, no cascade - just a buffer between the machine Z command and two other active axes such as DD & EE.

2) An algorithm to distribute the Z motion command over the two axes. The W axis might be slower than the (z), but who knows. (spectral decomposition comes to mind, linear proportioning would be simplest.)

Or perhaps I am completely missing his point.... It has happened before.
Maybe all he wants to do is add some screen art.
[/quote]

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


Attached Files Image(s)
   
Reply
#7
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.
Reply
#8
Thanks, mbalentine.
I'll write when I finish the machine.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)