Index: firmware/App/Services/PIControllers.c =================================================================== diff -u -r342b6c3de2a79fe5945d0b69aeaf9c3f46df1d8f -ra04e9df50b7cdd4e56481fc37703710fe5ca8995 --- firmware/App/Services/PIControllers.c (.../PIControllers.c) (revision 342b6c3de2a79fe5945d0b69aeaf9c3f46df1d8f) +++ firmware/App/Services/PIControllers.c (.../PIControllers.c) (revision a04e9df50b7cdd4e56481fc37703710fe5ca8995) @@ -281,5 +281,47 @@ return output; } +/*********************************************************************//** + * @brief + * The getPIControllerSignals function returns the latest requested signal sample. + * @details Inputs: none + * @details Outputs: none + * @param controllerID ID filter number + * @param signalID signal sample ID request + * @return latest sample requested + *************************************************************************/ +void setPIControllerStepLimit( PI_CONTROLLER_ID_T controllerID, PI_CONTROLLER_SIGNALS_ID signalID, F32 stepLimit ) +{ + PI_CONTROLLER_T *controller; + F32 maxStepLimit = 1.0; + if ( controllerID < NUM_OF_PI_CONTROLLERS_IDS ) + { + SET_CONTROLLER( controller, controllerID ); + + switch( signalID ) + { + case CONTROLLER_SIGNAL_MAX_ERROR_PER_STEP: + if ( ( stepLimit > NEARLY_ZERO ) && ( stepLimit < maxStepLimit ) ) + { + controller->maxErrorSumStep = stepLimit; + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_PI_CTRL_INVALID_SIGNAL, (U32)signalID ) + } + break; + + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_PI_CTRL_INVALID_SIGNAL, (U32)signalID ) + break; + } // End of switch + } + else + { // Invalid controller given + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_PI_CTRL_INVALID_CONTROLLER, (U32)controllerID ) + } + +} + /**@}*/