Jump to content
OMRON Forums

Transformation Matrix CNC


andreychip

Recommended Posts

  • Replies 7
  • Created
  • Last Reply

Top Posters In This Topic

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

In the transformation matrix for a coordinate system, all axes have a scaling term (Diag) and an offset term (Bias). 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.

Link to comment
Share on other sites

In the transformation matrix for a coordinate system, all axes have a scaling term (Diag) and an offset term (Bias). 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.

Link to comment
Share on other sites

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.

 

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

2018-05-03_19-04-21.png.2a7f0071838baa3d44a2eaa2c5dc5d0e.png

Link to comment
Share on other sites

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

 

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).

 

ODT - please correct my omissions, lack of detail, and outright errors.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.

×
×
  • Create New...