Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Dual Feedback Encoder Table Scaling
#1
I have a ballscrew driven stage that utilizes both linear and rotary encoder feedback devices, controlled by PPMAC. Both encoders are interfaced to an ACC24E3. The position loop linear encoder is sin/cos, has a physical resolution of 1.22e-6 mm after 16384 interpolation, and connects to the standard encoder channel input. The velocity loop rotary encoder is quadrature, has a physical resolution of 5.0e-4 mm after 4x interpolation, and connects to the U,W channels of the supplemental quadrature interface. How should the EncTable[].ScaleFactor for each encoder be configured to match the effective resolutions to the motor?

Thanks for the help.
Reply
#2
On both the outer (position/load) loop and inner (velocity/motor) loop, there are two scale factors that can be employed in processing the feedback.

The first is the output scale factor from the encoder conversion table entry processing the hardware registers: EncTable[n].ScaleFactor.

The second is the motor input scale factor for the feedback, which multiplies the result of the ECT entry: Motor[x].PosSf for the outer loop, and Motor[x].Pos2Sf for the inner loop.

For performance, it does not matter what these scale factors are, because the double-precision floating-point math that closes the servo loops has enough dynamic range to process feedback with any reasonable scale factor. However, it is important to realize that, technically, these scale factors act as gain terms in the servo loop. So if you double one of these scale factors, you would need to halve a subsequent gain term (e.g. Kp or Kvfb) to get the same performance.

The only thing that the inner-loop scaling affects is the velocity loop gain terms Kvfb, Kvifb, and Kafb.

But we do have some general recommendations on the scaling for ease of understanding and use.

We usually recommend that the ECT scale factor be set so the entry result is in units of the feedback. For digital quadrature encoders, this is for each quadrature count to be a unit (4 per line). The "1/T" timer-based sub-count interpolation is fractional.

For sinusoidal encoders, most users also scale the feedback into quadrature counts as well, with the arctangent interpolated data used as fractional values (no resolution is lost this way). Some users do prefer the output to be scaled in LSBs out of the interpolator (1/16384 of a line for you).

For the motor scale factors, we generally recommend that the inner-loop scale factor Pos2Sf be adjusted so that after this multiplication, the scaling of the inner loop feedback position numerically matches that of the outer loop. Again, this is not a performance issue, but it can make testing easier when switching between single and dual feedback for evaluation.

This is true whether you decide to scale your motor in feedback units like quadrature counts (usually outer loop PosSf = 1.0) or in engineering units like millimeters. In either case, the ratio of Pos2Sf to PosSf would be the same.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)