Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
motor[x].ActPos no decimals showing
#1
The motor[x].ActPos and motor[x].ActVel don't seem to be returning floating point values on my system. The motor[x].PosError is returning what I would expect. Below is what I get when I type these commands into the terminal window. Is there a setting to correct this? The software reference doesn't mention anything.

motor[1].ActPos
Motor[1].ActPos=5722118563
motor[1].ActVel
Motor[1].ActVel=14
motor[1].PosError
Motor[1].PosError=14.0083770751953125

from software refrence
Motor[x].ActPos
Description: Motor outer-loop feedback position
Range: Floating-point
Units: Motor units
Motor[x].ActPos contains the present servo cycle’s net feedback position value for the outer servo loop. It is derived from the measured position in Motor[x].Pos with corrections such as those from position-table compensation and backlash compensation. It is scaled in the motor units and referenced to the power-up position. It will be subtracted from Motor[x].DesPos to obtain the following error value in Motor[x].PosError.
To calculate the position relative to the motor zero position, subtract the value of Motor[x].HomePos.
Reply
#2
If a floating-point value holds an exact integer value, Power PMAC will report it without any places past the decimal point. When you have a feedback device and processing that does not produce any sub-count or sub-LSB estimation, actual position values will always be integers. Similarly, actual velocity values in this case will simply be the difference of two integers, so integers themselves.

Desired positions are always computed with floating-point math, so are much more likely to have fractional components in any given servo cycle. Of course, the position error (DesPos - ActPos) will have a fractional component if either source does.
Reply
#3
It is possible to not be on a fractional count – it all depends on how the motor was commanded to the current position. Verify this math “Motor[1].PosError = Motor[1].DesPos - Motor[1].ActPos” by viewing Motor[1].DesPos and Motor[1].ActPos in the watch window along with: “p1 = Motor[1].DesPos - Motor[1].ActPos p1”. The “Motor[1].PosError" should follow p1 with fractional resolution.

Also verify your position feedback processing in the ECT is providing fractional data.
Reply
#4
Thanks, I can look at the position feedback. I am running virtual motors that were provided for setting up web server on the PP. I just didn't know if the PP could be configured to always be on a full count. I have always worked with the turbo pmac product line in the past and don't remember ever seeing a position which wasn't configured for subcounts.
Reply
#5
The most common real feedback is incremental encoders processed with timer-based "1/T" sub-count interpolation, which generally produces fractional values in the actual position.

The most common virtual feedback is from pulse frequency outputs wrapped back into a counter, with NO sub-count interpolation (because that tends to cause continual dithering at rest).
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)