Talon SRX PID Not Running

We’re trying to use the built-in Talon SRX PID loop to control our Elevator motor. We have a quadrature encoder that is correctly reading the position of the Elevator and we can verify that the ticks are increasing as the Elevator moves up. I think that I have done what is necessary in code, but the Talon isn’t doing anything during closed loop control.

These are the results of a self-test after (as far as I know) enabling the PID control mode of the Talon.

The self test completed successfully.
TALON is enabled.
Mode : 1 : Position Close Loop
Applied Throttle : 0
Brake during neutral

CloseLoopError : 1300
ProfileSlotSelect : 0

Selected Device for Close Loop : 0 : Quad Encoder
Pos: -1
Velocity: 1

Quad Encoder 
Pos: 0
Velocity : -1
A Pin : 0
B Pin : 1
Idx Pin : 1
Idx rise edges : 0

This is the code that I’m using to enable PID and change the setpoint:


elevatorTalon.changeControlMode(CANTalon.ControlMode.Position);

elevatorTalon.set(0.0);

elevatorTalon.setProfile(0);

elevatorTalon.setPID(0.00091054, 0, 0);

elevatorTalon.enableControl();

elevatorTalon.set(setpoint.encoderValue);

(The setpoint used was 1300 encoder ticks)

Nothing strikes me as obviously wrong with your code.
However, I do have to ask: How exactly did you arrive at that P gain value? Per section 17.13 of the Talon SRX Software Reference Manual, the P gain is in units of throttle / sensor, where throttle is 0 - 1024 and sensor units are encoder ticks (same units as the 1300 you are seeing). This means that your code should cause the talon to apply a throttle of 1300 * 0.00091054 = 1.18 throttle (out of 1024), and it is not implausible that such a low throttle could get rounded to zero. Have you tried a larger P value, tried including an I or D gain, or tried increasing the error?

Edit: Just as a reminder, if you haven’t already, be sure to read the Talon Software Reference Manual. It is quite comprehensive and can generally answer any questions you may have.

My mistake, I went with the (incorrect) assumption that throttle would be normalized. The P term was based on doing a linear regression from known errors to certain motor set points but I had done that with a maximum speed of 1.0 at 1000? ticks. I feel like that is most likely the issue, I’ll have to test it on Monday. Thank you for your help.