Dan.Allard Posted May 11, 2016 Share Posted May 11, 2016 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. Link to comment Share on other sites More sharing options...
curtwilson Posted May 12, 2016 Share Posted May 12, 2016 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. Link to comment Share on other sites More sharing options...
steve.milici Posted May 12, 2016 Share Posted May 12, 2016 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. Link to comment Share on other sites More sharing options...
Dan.Allard Posted May 12, 2016 Author Share Posted May 12, 2016 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. Link to comment Share on other sites More sharing options...
curtwilson Posted May 12, 2016 Share Posted May 12, 2016 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). Link to comment Share on other sites More sharing options...
Recommended Posts