Index: firmware/App/Services/PIControllers.c =================================================================== diff -u -r316e7117180362d54af53818822694c4f936e550 -r90ff6d5060b3f679d17fada9057e4dcecdecae9c --- firmware/App/Services/PIControllers.c (.../PIControllers.c) (revision 316e7117180362d54af53818822694c4f936e550) +++ firmware/App/Services/PIControllers.c (.../PIControllers.c) (revision 90ff6d5060b3f679d17fada9057e4dcecdecae9c) @@ -136,15 +136,15 @@ controller->referenceSignal = referenceSignal; controller->measuredSignal = measuredSignal; // calculate error signal - controller->errorSignal = referenceSignal-measuredSignal;//fabs( referenceSignal ) - ( referenceSignal < 0.0 ? ( measuredSignal * -1.0 ) : measuredSignal ); + controller->errorSignal = referenceSignal-measuredSignal; controller->errorSum += controller->errorSignal; // anti-windup controller->errorSumBeforeWindUp = controller->errorSum; // calculate control signal controlSignalBeforeWindup = ( controller->Kp * controller->errorSignal ) + ( controller->Ki * controller->errorSum ); controller->controlSignal = RANGE( controlSignalBeforeWindup, controller->uMin, controller->uMax ); // handle anti-windup for i term - windupError = controller->controlSignal - controlSignalBeforeWindup; + windupError = controlSignalBeforeWindup - controller->controlSignal; if ( fabs( windupError ) > NEARLY_ZERO ) { controller->errorSum -= ( windupError / controller->Ki );