Trying to create a 2 element CompTable to correct axis squareness. The table is using CompTable[15].Ctrl = $4

This should be linear interpolation, non-rollover. The comp generated starts at zero, at half travel my full comp is being applied. It then diminishes back to zero at full travel. It looks like this is doing a mirror instead of holding the last value. Do I need more data points?

I can't duplicate this problem. My attempt works as it should. Here's what I used:

CompTable[0].Source[0]=1

CompTable[0].SourceCtrl=0

CompTable[0].Nx[0]=1

CompTable[0].Nx[1]=0

CompTable[0].Nx[2]=0

CompTable[0].X0[0]=0

CompTable[0].Dx[0]=10000

CompTable[0].Data[0]=0

CompTable[0].Data[1]=100

CompTable[0].Ctrl=4

CompTable[0].Target[0]=Motor[1].CompDesPos.a

CompTable[0].Sf[0]=1

CompTable[0].OutCtrl=0

As I jog slowly across the range of the table (0 - 10000), the correction increases in direct proportion to the commanded position and saturates at 100 as I go past the end of the defined range. It also saturates at 0 as I pass the negative end.

Why aren't you using the axis definitions to correct for squareness?

(11-09-2018, 12:08 PM)curtwilson Wrote: [ -> ]Why aren't you using the axis definitions to correct for squareness?

We are using both transformation/rotation matrix, and kinematics. Comp tables are more straight forward in my mind.

In the manual, we show an example of correcting for a 1 arcmin squareness error at 10,000 cts/unit with:

#1->10000X-2.91Y

#2->10000Y

It would be easy to do the same functionality in kinematic subroutines. (You do have to mathematically invert this for the forward kinematics.)

You can do matrix transformations "on top" of this just as for simpler configurations.

Thank you Curt for pointing out my error. A two point non-rollover comptable should have Nx[0]=1 for a single zone.