Index: PIControllers.c =================================================================== diff -u -rca1d590217b1bfd14f0e0682f88e04de076ff199 -r5b4db16e34780cbbe85fbc3b994acbe0e68108e8 --- PIControllers.c (.../PIControllers.c) (revision ca1d590217b1bfd14f0e0682f88e04de076ff199) +++ PIControllers.c (.../PIControllers.c) (revision 5b4db16e34780cbbe85fbc3b994acbe0e68108e8) @@ -71,6 +71,7 @@ { 0.0, 0.0, 2650, 350, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0, CONTROLLER_BIDIRECTIONAL, FALSE, 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, FALSE, 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, TRUE, 0.0 }, // PI_CONTROLLER_ID_D5_HEAT + { 0.0, 0.0, 50.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 100.0, CONTROLLER_BIDIRECTIONAL, FALSE, 0.0 }, // PI_CONTROLLER_ID_D5_HEAT_OUTER_LOOP { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.0, CONTROLLER_BIDIRECTIONAL, FALSE, 0.0 }, // PI_CONTROLLER_ID_D45_HEAT { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 25.0, CONTROLLER_UNIDIRECTIONAL, FALSE, 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, FALSE, 0.0 }, // PI_CONTROLLER_ID_RO_PUMP_MAX_PRES @@ -340,18 +341,17 @@ return output; } + /*********************************************************************//** * @brief - * The getPIControllerSignals function returns the latest requested signal sample. + * The setPIControllerStepLimit function sets the step limit value. * @details \b Inputs: none * @details \b Outputs: maxErrorSumStep of controller ID * @details \b Alarms: ALARM_ID_XX_SOFTWARE_FAULT when invalid PI controller * Id is passed. - * @details \b Alarms: ALARM_ID_XX_SOFTWARE_FAULT when invalid PI controller - * stemp limit is passed. * @param controllerID ID filter number * @param stepLimit maximum step limit - * @return latest sample requested + * @return none *************************************************************************/ void setPIControllerStepLimit( PI_CONTROLLER_ID_T controllerID, F32 stepLimit ) { @@ -382,4 +382,45 @@ } } +/*********************************************************************//** + * @brief + * The setPIControllerFeedForward function sets the latest feed forward value + * to the corresponding PI controller. + * @details \b Inputs: none + * @details \b Outputs: feedforward of controller ID + * @details \b Alarms: ALARM_ID_XX_SOFTWARE_FAULT when invalid PI controller + * Id is passed. + * @param controllerID ID filter number + * @param feedforward calculated feed forward control value + * @return none + *************************************************************************/ +void setPIControllerFeedForward( PI_CONTROLLER_ID_T controllerID, F32 feedforward ) +{ + PI_CONTROLLER_T *controller; + + if ( controllerID < NUM_OF_PI_CONTROLLERS_IDS ) + { + SET_CONTROLLER( controller, controllerID ); + + if ( ( feedforward > NEARLY_ZERO ) && ( feedforward < MAX_ILIMIT ) ) + { + controller->feedForward = feedforward; + } + else + { +#ifdef _DD_ + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_PI_CTRL_INVALID_FEED_FORWARD_LIMIT, (U32)feedforward ) +#endif + } + + } + else + { +#ifdef _DD_ + // Invalid controller given + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_PI_CTRL_INVALID_CONTROLLER, (U32)controllerID ) +#endif + } +} + /**@}*/