Index: firmware/App/Services/PIControllers.h =================================================================== diff -u -r7104ce1a12799c5a3dff10c94cb191d409bc8244 -r5e8f96e11c797bddeddfc009c87f20df3b7a8664 --- firmware/App/Services/PIControllers.h (.../PIControllers.h) (revision 7104ce1a12799c5a3dff10c94cb191d409bc8244) +++ firmware/App/Services/PIControllers.h (.../PIControllers.h) (revision 5e8f96e11c797bddeddfc009c87f20df3b7a8664) @@ -7,8 +7,8 @@ * * @file PIControllers.h * -* @author (last) Dara Navaei -* @date (last) 02-Nov-2021 +* @author (last) Michael Garthwaite +* @date (last) 21-Nov-2022 * * @author (original) Sean * @date (original) 04-Feb-2020 @@ -53,25 +53,26 @@ NUM_OF_CONTROLLER_SIGNAL ///< Number of PI controller signals } PI_CONTROLLER_SIGNALS_ID; +/// Data structure for PI control profiles. typedef struct ControllerProfile { - F32 Kp; ///< Proportional Value. - F32 Ki; ///< Integral Value. - F32 uMin; ///< Minimum control signal. - F32 uMax; ///< Maximum control signal. + F32 Kp; ///< Proportional Value + F32 Ki; ///< Integral Value + F32 uMin; ///< Minimum control signal + F32 uMax; ///< Maximum control signal + F32 maxErrorSumStep; ///< Maximum change in I (error sum) for a single control interval. + U32 controlInterval; ///< Control interval value } PI_CONTROLLER_PROFILE_DATA_T; - // ********** public function prototypes ********** void initializePIController( PI_CONTROLLER_ID_T controllerID, F32 initialControlSignal, F32 kP, F32 kI, F32 controlMin, F32 controlMax ); void resetPIController( PI_CONTROLLER_ID_T controllerID, F32 initialControlSignal ); F32 runPIController( PI_CONTROLLER_ID_T controllerID, F32 referenceSignal, F32 measuredSignal ); F32 getPIControllerSignals( PI_CONTROLLER_ID_T controllerID, PI_CONTROLLER_SIGNALS_ID signalID ); -void setPIControlerProfile( PI_CONTROLLER_ID_T controllerID, F32 initialControlSignal, PI_CONTROLLER_PROFILE_DATA_T profile); +void setPIControllerStepLimit( PI_CONTROLLER_ID_T controllerID, F32 stepLimit ); - /**@}*/ #endif