Index: firmware/App/Services/PIControllers.c =================================================================== diff -u -r926afe9b1d9cc6931cbca48080e4a66385a20239 -r8e7158d8231435496fcf1d5649e51babf859ccc7 --- firmware/App/Services/PIControllers.c (.../PIControllers.c) (revision 926afe9b1d9cc6931cbca48080e4a66385a20239) +++ firmware/App/Services/PIControllers.c (.../PIControllers.c) (revision 8e7158d8231435496fcf1d5649e51babf859ccc7) @@ -1,22 +1,21 @@ -/**********************************************************************//** - * - * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. - * - * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN - * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. - * - * @file PIControllers.c - * - * @date 18-Dec-2019 - * @author L. Baloa - * - * @brief PIControllers source file. - * - **************************************************************************/ +/************************************************************************** +* +* Copyright (c) 2019-2021 Diality Inc. - All Rights Reserved. +* +* THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN +* WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. +* +* @file PIControllers.c +* +* @author (last) Sean Nash +* @date (last) 13-Aug-2020 +* +* @author (original) Sean +* @date (original) 27-Dec-2019 +* +***************************************************************************/ -#ifndef _VECTORCAST_ - #include "math.h" -#endif +#include #include "SystemCommMessages.h" #include "PIControllers.h" @@ -66,22 +65,22 @@ * Initialize controller before operation. Make sure to call it before * first call to runController function. * - * @param controllerID - ID filter number - * @param initialControlSignal - Value of the output on the first iteration - * @param kP - Coefficient for proportional. - * @param kI - Coefficient for integral. - * @param controlMin - Minimum control output. - * @param controlMax - Maximum control output. + * @param controllerID ID filter number + * @param initialControlSignal Value of the output on the first iteration + * @param kP Coefficient for proportional + * @param kI Coefficient for integral + * @param controlMin Minimum control output + * @param controlMax Maximum control output * * @return none *************************************************************************/ void initializePIController( PI_CONTROLLER_ID_T controllerID, F32 initialControlSignal, F32 kP, F32 kI, F32 controlMin, F32 controlMax ) { - PI_CONTROLLER_T *controller; - if ( controllerID < NUM_OF_PI_CONTROLLERS_IDS ) { + PI_CONTROLLER_T *controller; + SET_CONTROLLER( controller, controllerID ); controller->Kp = kP; @@ -99,7 +98,7 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_PI_CTRL_INVALID_CONTROLLER, (U32)controllerID ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_PI_CTRL_INVALID_CONTROLLER, (U32)controllerID ) } } @@ -108,8 +107,8 @@ * Reset controller before new set point. Make sure to call it before first * call to runController function. * - * @param controllerID - ID filter number - * @param initialControlSignal - Value of the output on the first iteration + * @param controllerID ID filter number + * @param initialControlSignal Value of the output on the first iteration * * @return none *************************************************************************/ @@ -129,17 +128,17 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_PI_CTRL_INVALID_CONTROLLER, (U32)controllerID ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_PI_CTRL_INVALID_CONTROLLER, (U32)controllerID ) } } /*********************************************************************//** * @brief * Call this function whenever a new measured signal sampled is acquired. * - * @param controllerID - ID filter number - * @param referenceSignal - reference signal value - * @param measuredSignal - latest measured sample + * @param controllerID ID filter number + * @param referenceSignal reference signal value + * @param measuredSignal latest measured sample * * @return value of the control signal *************************************************************************/ @@ -172,27 +171,10 @@ controller->errorSum -= ( windupError / controller->Ki ); } result = controller->controlSignal; -//#ifdef DEBUG_ENABLED -// { -// // TODO - temporary debug code - remove later -// char debugFlowStr[ 100 ]; -// S32 nums = (S32)(measuredSignal); -// S32 decs = (S32)(fabs(measuredSignal-(S32)(measuredSignal))*100.0); -// S32 nume = (S32)controller->errorSignal; -// S32 dece = (S32)(fabs(controller->errorSignal-(S32)controller->errorSignal)*100.0); -// S32 numes = (S32)controller->errorSum; -// S32 deces = (S32)((controller->errorSum-(S32)(controller->errorSum))*100.0); -// S32 nump = (S32)controller->controlSignal; -// S32 decp = (S32)((controller->controlSignal-(S32)controller->controlSignal)*10000.0); -// -// sprintf( debugFlowStr, "%6d.%02d %6d.%02d %10d.%02d %3d.%04d\n", nums, decs, nume, dece, numes, deces, nump, decp ); -// sendDebugData( (U08*)debugFlowStr, strlen(debugFlowStr) ); -// } -//#endif } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_PI_CTRL_INVALID_CONTROLLER, (U32)controllerID ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_PI_CTRL_INVALID_CONTROLLER, (U32)controllerID ) } return result; @@ -202,8 +184,8 @@ * @brief * Returns the latest requested signal sample. * - * @param controllerID - ID filter number - * @param signalID - signal sample ID request + * @param controllerID ID filter number + * @param signalID signal sample ID request * * @return latest sample requested *************************************************************************/ @@ -251,13 +233,13 @@ break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_PI_CTRL_INVALID_SIGNAL, (U32)signalID ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_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_SOFTWARE_FAULT, SW_FAULT_ID_PI_CTRL_INVALID_CONTROLLER, (U32)controllerID ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_PI_CTRL_INVALID_CONTROLLER, (U32)controllerID ) } return output;