Index: PIControllers.c =================================================================== diff -u -rc8d764933ccdc4a185131d77bbcc106a9223ae6b -r8d437a49a2eb86dfb38674f18a1e514998b3931f --- PIControllers.c (.../PIControllers.c) (revision c8d764933ccdc4a185131d77bbcc106a9223ae6b) +++ PIControllers.c (.../PIControllers.c) (revision 8d437a49a2eb86dfb38674f18a1e514998b3931f) @@ -7,8 +7,8 @@ * * @file PIControllers.c * -* @author (last) “rkallala” -* @date (last) 09-Dec-2025 +* @author (last) Vinayakam Mani +* @date (last) 14-Apr-2026 * * @author (original) Vinayakam Mani * @date (original) 07-Oct-2024 @@ -68,14 +68,15 @@ { 0.0, 0.0, 0.90, 0.10, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 100.0, CONTROLLER_UNIDIRECTIONAL, FALSE, 0.0 }, // PI_CONTROLLER_ID_BLOOD_FLOW #endif #ifdef _DD_ - { 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, 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 - { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, CONTROLLER_UNIDIRECTIONAL, FALSE, 0.0 }, // PI_CONTROLLER_ID_BOOST_PUMP_FLOW - { 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_BOOST_PUMP_PRES + { 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, 55.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 + { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, CONTROLLER_UNIDIRECTIONAL, FALSE, 0.0 }, // PI_CONTROLLER_ID_BOOST_PUMP_FLOW + { 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_BOOST_PUMP_PRES { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 75.0, CONTROLLER_UNIDIRECTIONAL, FALSE, 0.0 }, // PI_CONTROLLER_ID_BICARB_VOL { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000.0, CONTROLLER_UNIDIRECTIONAL, FALSE, 0.0 }, // PI_CONTROLLER_ID_ACID_VOL #endif @@ -388,38 +389,37 @@ return signals; } + /*********************************************************************//** * @brief - * The getPIControllerSignals function returns the latest requested signal sample. + * The setPIControllerFeedForward function sets the latest feed forward value + * to the corresponding PI controller. * @details \b Inputs: none - * @details \b Outputs: maxErrorSumStep of controller ID + * @details \b Outputs: feedforward 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 + * @param feedforward calculated feed forward control value + * @return none *************************************************************************/ -void setPIControllerStepLimit( PI_CONTROLLER_ID_T controllerID, F32 stepLimit ) +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 ( ( stepLimit > NEARLY_ZERO ) && ( stepLimit < MAX_ILIMIT ) ) + if ( ( feedforward > controller->uMin ) && ( feedforward < controller->uMax ) ) { - controller->maxErrorSumStep = stepLimit; + controller->feedForward = feedforward; } else { #ifdef _DD_ - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_PI_CTRL_INVALID_STEP_LIMIT, (U32)stepLimit ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_PI_CTRL_INVALID_FEED_FORWARD_LIMIT, (U32)feedforward ) #endif } - } else { Index: PIControllers.h =================================================================== diff -u -ra00631eb9cb99a828d4dc5ddf644bb7947eade0b -r8d437a49a2eb86dfb38674f18a1e514998b3931f --- PIControllers.h (.../PIControllers.h) (revision a00631eb9cb99a828d4dc5ddf644bb7947eade0b) +++ PIControllers.h (.../PIControllers.h) (revision 8d437a49a2eb86dfb38674f18a1e514998b3931f) @@ -7,8 +7,8 @@ * * @file PIControllers.h * -* @author (last) Michael Garthwaite -* @date (last) 11-Sep-2025 +* @author (last) Vinayakam Mani +* @date (last) 14-Apr-2026 * * @author (original) Vinayakam Mani * @date (original) 07-Oct-2024 @@ -45,6 +45,7 @@ PI_CONTROLLER_ID_D12_PUMP, ///< Fresh dialysate Pump controller PI_CONTROLLER_ID_D48_PUMP, ///< Spent dialysate Pump controller PI_CONTROLLER_ID_D5_HEAT, ///< Primary heater controller + PI_CONTROLLER_ID_D5_HEAT_OUTER_LOOP, ///< Primary heater controller outer loop PI_CONTROLLER_ID_D45_HEAT, ///< Trimmer heater controller PI_CONTROLLER_ID_RO_PUMP_FLOW, ///< RO Pump controller to flow PI_CONTROLLER_ID_RO_PUMP_PRES, ///< RO pump controller to maximum pressure @@ -104,7 +105,7 @@ void resetPIController( PI_CONTROLLER_ID_T controllerID, F32 initialControlSignal, F32 feedFowardSignal ); F32 runPIController( PI_CONTROLLER_ID_T controllerID, F32 referenceSignal, F32 measuredSignal ); F32 getPIControllerSignals( PI_CONTROLLER_ID_T controllerID, PI_CONTROLLER_SIGNALS_ID signalID ); -void setPIControllerStepLimit( PI_CONTROLLER_ID_T controllerID, F32 stepLimit ); +void setPIControllerFeedForward( PI_CONTROLLER_ID_T controllerID, F32 feedforward ); PI_CONTROLLER_SIGNALS_DATA getDebugPIControllerSignals( PI_CONTROLLER_ID_T controllerID );