Index: PIControllers.c =================================================================== diff -u -r7498abad801e9eabdbcd016f11bc239e8f07e7cd -r6d6aeca98fc8593725cba4bb1c7a6d065f6f6e26 --- PIControllers.c (.../PIControllers.c) (revision 7498abad801e9eabdbcd016f11bc239e8f07e7cd) +++ PIControllers.c (.../PIControllers.c) (revision 6d6aeca98fc8593725cba4bb1c7a6d065f6f6e26) @@ -57,23 +57,22 @@ PI_CONTROLLER_DIRECTIONS_T direction; ///< PI controller control direction. BOOL isFeedForwardEnabled; ///< Eanble or disable Feed forward term F32 feedForward; ///< Feed forward term - F32 controlInterval; ///< Control interval for integral calculation( default : 1.0 sec control interval) } PI_CONTROLLER_T; // ********** private data ********** /// PI Controllers - initial configurations. static PI_CONTROLLER_T piControllers[ NUM_OF_PI_CONTROLLERS_IDS ] = -{ // Kp Ki uMax uMin ref meas err esw esum ctrl Ilimit controller type, feedfwdEnabled, feedfwdValue, Control Interval +{ // Kp Ki uMax uMin ref meas err esw esum ctrl Ilimit controller type, feedfwdEnabled, feedfwdValue #ifdef _DD_ - { 0.0, 0.0, 2650, 350, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0, CONTROLLER_BIDIRECTIONAL, 0, 0.0, 1.0 }, // PI_CONTROLLER_ID_D12_PUMP - { 0.0, 0.0, 2650, 350, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0, CONTROLLER_BIDIRECTIONAL, 0, 0.0, 1.0 }, // PI_CONTROLLER_ID_D48_PUMP - { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.0, CONTROLLER_BIDIRECTIONAL, 1, 0.0, 1.0 }, // PI_CONTROLLER_ID_D5_HEAT - { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.0, CONTROLLER_BIDIRECTIONAL, 0, 0.0, 1.0 }, // PI_CONTROLLER_ID_D45_HEAT + { 0.0, 0.0, 2650, 350, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0, CONTROLLER_BIDIRECTIONAL, 0, 0.0 }, // PI_CONTROLLER_ID_D12_PUMP + { 0.0, 0.0, 2650, 350, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0, CONTROLLER_BIDIRECTIONAL, 0, 0.0 }, // PI_CONTROLLER_ID_D48_PUMP + { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.0, CONTROLLER_BIDIRECTIONAL, 1, 0.0 }, // PI_CONTROLLER_ID_D5_HEAT + { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.0, CONTROLLER_BIDIRECTIONAL, 0, 0.0 }, // PI_CONTROLLER_ID_D45_HEAT #endif #ifdef _RO_ - { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, CONTROLLER_UNIDIRECTIONAL,0, 0.0, 1.0 }, // PI_CONTROLLER_ID_RO_PUMP - { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, CONTROLLER_UNIDIRECTIONAL,0, 0.0, 1.0 }, // PI_CONTROLLER_ID_RO_PUMP_MAX_PRES + { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, CONTROLLER_UNIDIRECTIONAL, 0, 0.0 }, // PI_CONTROLLER_ID_RO_PUMP + { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, CONTROLLER_UNIDIRECTIONAL, 0, 0.0 }, // PI_CONTROLLER_ID_RO_PUMP_MAX_PRES #endif }; @@ -93,13 +92,11 @@ * @param controlMax Maximum control output * @param isFeedForwardEnabled Feed forward enabled if true, otherwise not. * @param feedFowardSignal feedforward value to be applied to the control output - * @param controlInterval The task control interval for given heater to determine - * sample period * @return none *************************************************************************/ void initializePIController( PI_CONTROLLER_ID_T controllerID, F32 initialControlSignal, F32 kP, F32 kI, F32 controlMin, F32 controlMax, - BOOL isFeedForwardEnabled, F32 feedFowardSignal, F32 controlInterval ) + BOOL isFeedForwardEnabled, F32 feedFowardSignal ) { if ( controllerID < NUM_OF_PI_CONTROLLERS_IDS ) { @@ -119,7 +116,6 @@ controller->uMin = controlMin; controller->uMax = controlMax; controller->isFeedForwardEnabled = isFeedForwardEnabled; - controller-> controlInterval = controlInterval; resetPIController( controllerID, initialControlSignal, feedFowardSignal ); } else @@ -229,7 +225,7 @@ // Calculate control signal from i term controller->errorSumBeforeWindUp = controller->errorSum; - controlSignalBeforeWindup = ( controller->Ki * controller->controlInterval * controller->errorSum ); + controlSignalBeforeWindup = ( controller->Ki * controller->errorSum ); if ( FALSE == controller->isFeedForwardEnabled ) { @@ -244,7 +240,7 @@ windupError = controlSignalBeforeWindup - controller->controlSignal; if ( fabs( windupError ) > NEARLY_ZERO ) { - controller->errorSum -= ( windupError / ( controller->Ki * controller->controlInterval ) ); + controller->errorSum -= ( windupError / controller->Ki ); } // Add p term to control signal