Index: firmware/App/Controllers/ROPump.c =================================================================== diff -u -r4a20fdc5e32937930ea3793b831b8d4852e453d1 -rfbc0a281b094ff309dcbf83db1878818a9b384f1 --- firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision 4a20fdc5e32937930ea3793b831b8d4852e453d1) +++ firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision fbc0a281b094ff309dcbf83db1878818a9b384f1) @@ -461,30 +461,6 @@ { RO_PUMP_STATE_T result = RO_PUMP_OFF_STATE; -#ifdef DEBUG_ENABLED -#ifdef ENABLE_DIP_SWITCHES - // TODO - test code - remove later - if ( GET_DIP_SW0_TEST() ) - { - setValveState( VSP, VALVE_STATE_CLOSED ); - setValveState( VPI, VALVE_STATE_OPEN ); - setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); - setValveState( VRC, VALVE_STATE_DRAIN_C_TO_NO ); - setValveState( VDR, VALVE_STATE_DRAIN_C_TO_NO ); - setROPumpTargetPressure( 120 ); -#ifdef EMC_TEST_BUILD - { - F32 fanPWM = 0.25; - etpwmSetCmpA( etpwmREG6, (U32)( (S32)( ( fanPWM * (F32)(etpwmREG6->TBPRD) ) + FLOAT_TO_INT_ROUNDUP_OFFSET ) ) ); - etpwmSetCmpB( etpwmREG6, (U32)( (S32)( ( fanPWM * (F32)(etpwmREG6->TBPRD) ) + FLOAT_TO_INT_ROUNDUP_OFFSET ) ) ); - setPrimaryHeaterTargetTemperature( 50.0 ); - startPrimaryHeater(); - } -#endif - } -#endif -#endif - // If there is a flow, transition to the PI controller to get the corresponding pressure of that flow if ( getTargetROPumpFlowRate() > 0 && roPumpControlMode == PUMP_CONTROL_MODE_CLOSED_LOOP ) { @@ -651,22 +627,6 @@ roControlTimerCounter = 0; } -#ifdef DEBUG_ENABLED -#ifdef ENABLE_DIP_SWITCHES - // TODO - test code - remove later - if ( !GET_DIP_SW0_TEST() ) - { - signalROPumpHardStop(); - result = RO_PUMP_OFF_STATE; -#ifdef EMC_TEST_BUILD - etpwmSetCmpA( etpwmREG6, 0 ); - etpwmSetCmpB( etpwmREG6, 0 ); - stopPrimaryHeater(); -#endif - } -#endif -#endif - return result; } @@ -853,14 +813,13 @@ /*********************************************************************//** * @brief - * The testSetTargetROPumpFlowRateOverride function overrides the target - * flow rate. + * The testSetTargetROPumpFlow function overrides the target flow rate. * @details Inputs: none * @details Outputs: none * @param value which is override target RO flow rate (in L/min) * @return TRUE if override successful, FALSE if not *************************************************************************/ -BOOL testSetTargetROPumpFlowAndPressure( F32 flow, U32 pressure ) +BOOL testSetTargetROPumpFlow( F32 flow ) { BOOL result = FALSE; @@ -869,10 +828,7 @@ // The flow rate and pressure must be in range if ( flow < MAX_RO_FLOWRATE_LPM && flow >= MIN_RO_FLOWRATE_LPM ) { - if ( pressure >= MIN_ALLOWED_PRESSURE_PSI && pressure <= MAX_ALLOWED_PRESSURE_PSI ) - { - result = setROPumpTargetFlowRate( flow, pressure ); - } + result = setROPumpTargetFlowRate( flow, MAX_ALLOWED_PRESSURE_PSI ); } } Index: firmware/App/Controllers/ROPump.h =================================================================== diff -u -r1943944469d5a9f841f366ef9d8969c3072bd7ab -rfbc0a281b094ff309dcbf83db1878818a9b384f1 --- firmware/App/Controllers/ROPump.h (.../ROPump.h) (revision 1943944469d5a9f841f366ef9d8969c3072bd7ab) +++ firmware/App/Controllers/ROPump.h (.../ROPump.h) (revision fbc0a281b094ff309dcbf83db1878818a9b384f1) @@ -68,7 +68,7 @@ BOOL testSetMeasuredROFlowRateOverride( F32 value ); BOOL testResetMeasuredROFlowRateOverride( void ); -BOOL testSetTargetROPumpFlowAndPressure( F32 flow, U32 pressure ); +BOOL testSetTargetROPumpFlow( F32 flow ); BOOL testSetTargetROPumpPressure( U32 value ); Index: firmware/App/Modes/ModeFill.c =================================================================== diff -u -r1943944469d5a9f841f366ef9d8969c3072bd7ab -rfbc0a281b094ff309dcbf83db1878818a9b384f1 --- firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 1943944469d5a9f841f366ef9d8969c3072bd7ab) +++ firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision fbc0a281b094ff309dcbf83db1878818a9b384f1) @@ -169,10 +169,10 @@ // Concentrate pumps on request and set RO pump to flow rate 800 mL/min requestConcentratePumpsOn( CONCENTRATEPUMPS_CP1 ); requestConcentratePumpsOn( CONCENTRATEPUMPS_CP2 ); - // TODO: Change to set flow rate once RO pump driver is updated - // setROPumpFlowRate( FILL_TARGET_RO_FLOW_RATE ); - //setROPumpTargetPressure( FILL_TARGET_RO_PRESSURE_PSI, PUMP_CONTROL_MODE_CLOSED_LOOP ); + // TODO: Change to set the right flow rate and max pressure for this mode + // setROPumpFlowRate( FILL_TARGET_RO_FLOW_RATE, 120 ); + result = DG_FILL_MODE_STATE_DIALYSATE_PRODUCTION; } Index: firmware/App/Modes/ModeRecirculate.c =================================================================== diff -u -r4a20fdc5e32937930ea3793b831b8d4852e453d1 -rfbc0a281b094ff309dcbf83db1878818a9b384f1 --- firmware/App/Modes/ModeRecirculate.c (.../ModeRecirculate.c) (revision 4a20fdc5e32937930ea3793b831b8d4852e453d1) +++ firmware/App/Modes/ModeRecirculate.c (.../ModeRecirculate.c) (revision fbc0a281b094ff309dcbf83db1878818a9b384f1) @@ -39,7 +39,8 @@ // ********** private definitions ********** -#define TARGET_RO_PRESSURE_PSI 120 ///< Target pressure for RO pump. +#define TARGET_RO_PRESSURE_PSI 130 ///< Target pressure for RO pump. +#define TARGET_RO_FLOW_RATE_L 0.8 ///< Target flow rate for RO pump. #define FLUSH_LINES_VOLUME_L 0.1 ///< Water volume (in Liters) to flush when starting re-circulate mode. // ********** private data ********** @@ -84,7 +85,7 @@ setValveState( VRC, VALVE_STATE_DRAIN_C_TO_NO ); setValveState( VDR, VALVE_STATE_DRAIN_C_TO_NO ); setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); - setROPumpTargetFlowRate( 0.8, 120 ); //TODO Add a #define for this value + setROPumpTargetFlowRate( TARGET_RO_FLOW_RATE_L, TARGET_RO_PRESSURE_PSI ); signalDrainPumpHardStop(); startPrimaryHeater(); requestConcentratePumpsOff( CONCENTRATEPUMPS_CP1 ); Index: firmware/App/Services/PIControllers.c =================================================================== diff -u -r1943944469d5a9f841f366ef9d8969c3072bd7ab -rfbc0a281b094ff309dcbf83db1878818a9b384f1 --- firmware/App/Services/PIControllers.c (.../PIControllers.c) (revision 1943944469d5a9f841f366ef9d8969c3072bd7ab) +++ firmware/App/Services/PIControllers.c (.../PIControllers.c) (revision fbc0a281b094ff309dcbf83db1878818a9b384f1) @@ -49,7 +49,7 @@ F32 errorSumBeforeWindUp; ///< error signal before windup correction. F32 errorSum; ///< error integral after windup correction. F32 controlSignal; ///< actual control signal. - PI_CONTROLLER_DIRECTIONS_T direction; ///< PI controller control direction. + PI_CONTROLLER_DIRECTIONS_T direction; ///< PI controller control direction. } PI_CONTROLLER_T; #define MIN_KI NEARLY_ZERO ///< minimum integral coefficient - cannot be zero. @@ -61,10 +61,10 @@ static PI_CONTROLLER_T piControllers[ NUM_OF_PI_CONTROLLERS_IDS ] = { // Kp Ki uMax uMin ref meas err esw esum ctrl { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, CONTROLLER_UNIDIRECTIONAL }, // PI_CONTROLLER_ID_RO_PUMP - { 0.0, 0.0, 0.99, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, CONTROLLER_UNIDIRECTIONAL }, // I_CONTROLLER_ID_RO_PUMP_RAMP_UP { 0.0, 0.0, 3000, 300, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, CONTROLLER_BIDIRECTIONAL }, // PI_CONTROLLER_ID_DRAIN_PUMP { 0.0, 0.0, 1.39, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, CONTROLLER_UNIDIRECTIONAL }, // PI_CONTROLLER_ID_PRIMARY_HEATER - { 0.0, 0.0, 0.50, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, CONTROLLER_UNIDIRECTIONAL } // PI_CONTROLLER_ID_TRIMMER_HEATER + { 0.0, 0.0, 0.50, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, CONTROLLER_UNIDIRECTIONAL }, // PI_CONTROLLER_ID_TRIMMER_HEATER + { 0.0, 0.0, 0.99, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, CONTROLLER_UNIDIRECTIONAL }, // I_CONTROLLER_ID_RO_PUMP_RAMP_UP }; /*********************************************************************//** Index: firmware/App/Services/PIControllers.h =================================================================== diff -u -r1943944469d5a9f841f366ef9d8969c3072bd7ab -rfbc0a281b094ff309dcbf83db1878818a9b384f1 --- firmware/App/Services/PIControllers.h (.../PIControllers.h) (revision 1943944469d5a9f841f366ef9d8969c3072bd7ab) +++ firmware/App/Services/PIControllers.h (.../PIControllers.h) (revision fbc0a281b094ff309dcbf83db1878818a9b384f1) @@ -34,6 +34,7 @@ typedef enum ControllerList { PI_CONTROLLER_ID_RO_PUMP = 0, ///< RO Pump controller + PI_CONTROLLER_ID_DRAIN_PUMP, ///< Drain Pump controller PI_CONTROLLER_ID_PRIMARY_HEATER, ///< Primary Heater controller PI_CONTROLLER_ID_TRIMMER_HEATER, ///< Trimmer Heater controller I_CONTROLLER_ID_RO_PUMP_RAMP_UP, ///< RO Pump controller during ramp up time. Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -r1943944469d5a9f841f366ef9d8969c3072bd7ab -rfbc0a281b094ff309dcbf83db1878818a9b384f1 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 1943944469d5a9f841f366ef9d8969c3072bd7ab) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision fbc0a281b094ff309dcbf83db1878818a9b384f1) @@ -1084,10 +1084,6 @@ handleTestROPumpDataBroadcastIntervalOverrideRequest( message ); break; - case MSG_ID_DRAIN_PUMP_SET_RPM_OVERRIDE: - handleTestDrainPumpSetPointOverrideRequest( message ); - break; - case MSG_ID_DRAIN_PUMP_SEND_INTERVAL_OVERRIDE: handleTestDrainPumpDataBroadcastIntervalOverrideRequest( message ); break; @@ -1161,15 +1157,15 @@ break; case MSG_ID_DG_RO_PUMP_DUTY_CYCLE_OVERRIDE: - handleROPumpDutyCycleOverride( message ); + handleTestROPumpDutyCycleOverride( message ); break; case MSG_ID_DG_RO_FLOW_RATE_OVERRIDE: - handleROFlowRateOverride( message ); + handleTestMeasuredROFlowRateOverride( message ); break; case MSG_ID_DG_RO_PUMP_TARGET_FLOW_OVERRIDE: - handleROPumpTargetFlowOverride( message ); + handleTestROPumpTargetFlowOverride( message ); break; case MSG_ID_DG_RO_PUMP_TARGET_PRESSURE_OVERRIDE: Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r1943944469d5a9f841f366ef9d8969c3072bd7ab -rfbc0a281b094ff309dcbf83db1878818a9b384f1 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 1943944469d5a9f841f366ef9d8969c3072bd7ab) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision fbc0a281b094ff309dcbf83db1878818a9b384f1) @@ -61,7 +61,7 @@ // ********** private data ********** static BOOL testerLoggedIn = FALSE; ///< Flag indicates whether tester logged in or not. -static volatile U16 nextSeqNo = 1; ///< Next sequence number. +static volatile U16 nextSeqNo = 1; ///< Next sequence number. // ********** private function prototypes ********** @@ -1474,38 +1474,6 @@ /*********************************************************************//** * @brief - * The handleTestDrainPumpSetPointOverrideRequest function handles a request to - * override the drain pump speed set point (in RPM). - * @details Inputs: none - * @details Outputs: message handled - * @param message a pointer to the message to handle - * @return none - *************************************************************************/ -void handleTestDrainPumpSetPointOverrideRequest( MESSAGE_T *message ) -{ - TEST_OVERRIDE_PAYLOAD_T payload; - BOOL result = FALSE; - - // verify payload length - if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) - { - memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); - if ( FALSE == payload.reset ) - { - result = testSetTargetDrainPumpSpeedOverride( payload.state.u32 ); - } - else - { - result = testResetTargetDrainPumpSpeedOverride(); - } - } - - // respond to request - sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); -} - -/*********************************************************************//** - * @brief * The handleTestDrainPumpDataBroadcastIntervalOverrideRequest function handles * a request to override the broadcast interval for drain pump data. * @details Inputs: none @@ -1971,24 +1939,25 @@ /*********************************************************************//** * @brief -* The handleROPumpDutyCycleOverride function handles a request to override +* The handleTestROPumpDutyCycleOverride function handles a request to override * the RO pumps duty cycle. * @details Inputs: none * @details Outputs: message handled * @param message a pointer to the message to handle * @return none *************************************************************************/ -void handleROPumpDutyCycleOverride( MESSAGE_T *message ) +void handleTestROPumpDutyCycleOverride( MESSAGE_T *message ) { - TEST_OVERRIDE_PAYLOAD_T payload; BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( F32 ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + F32 payLoad; - result = testSetTargetDutyCycle( payload.state.f32 ); + memcpy( &payLoad, message->payload, sizeof( F32 ) ); + + result = testSetTargetDutyCycle( payLoad ); } // respond to request @@ -1997,22 +1966,22 @@ /*********************************************************************//** * @brief -* The handleROFlowRateOverride function handles a request to override +* The handleTestROFlowRateOverride function handles a request to override * the RO flow rate. * @details Inputs: none * @details Outputs: message handled * @param message a pointer to the message to handle * @return none *******************************************************************/ -void handleROFlowRateOverride( MESSAGE_T *message ) +void handleTestMeasuredROFlowRateOverride( MESSAGE_T *message ) { TEST_OVERRIDE_ARRAY_PAYLOAD_T payload; BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetMeasuredROFlowRateOverride( payload.state.f32 ); @@ -2029,24 +1998,24 @@ /*********************************************************************//** * @brief -* The handleROPumpTargetFlowOverride function handles a request to override -* the RO pump target flow rate. +* The handleTestROPumpTargetFlowOverride function handles a request to +* override the RO pump target flow rate. * @details Inputs: none * @details Outputs: message handled * @param message a pointer to the message to handle * @return none *******************************************************************/ -void handleROPumpTargetFlowOverride( MESSAGE_T *message ) +void handleTestROPumpTargetFlowOverride( MESSAGE_T *message ) { - TEST_OVERRIDE_ARRAY_PAYLOAD_T payload; BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( F32 ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) ); + F32 payload; - result = setROPumpTargetFlowRate( payload.state.f32, payload.state.f32 ); + memcpy( &payload, message->payload, sizeof( F32 ) ); + result = testSetTargetROPumpFlow( payload ); } // respond to request @@ -2064,15 +2033,16 @@ *******************************************************************/ void handleROPumpTargetPressureOverride( MESSAGE_T *message ) { - TEST_OVERRIDE_ARRAY_PAYLOAD_T payload; BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( U32 ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) ); + U32 payload; - result = testSetTargetROPumpPressure( payload.state.f32 ); + memcpy( &payload, message->payload, sizeof( U32 ) ); + + result = testSetTargetROPumpPressure( payload ); } // respond to request Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -r1943944469d5a9f841f366ef9d8969c3072bd7ab -rfbc0a281b094ff309dcbf83db1878818a9b384f1 --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 1943944469d5a9f841f366ef9d8969c3072bd7ab) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision fbc0a281b094ff309dcbf83db1878818a9b384f1) @@ -162,9 +162,6 @@ // MSG_ID_RO_PUMP_SEND_INTERVAL_OVERRIDE: void handleTestROPumpDataBroadcastIntervalOverrideRequest( MESSAGE_T *message ); -// MSG_ID_DRAIN_PUMP_SET_PT_OVERRIDE: -void handleTestDrainPumpSetPointOverrideRequest( MESSAGE_T *message ); - // MSG_ID_DRAIN_PUMP_SEND_INTERVAL_OVERRIDE: void handleTestDrainPumpDataBroadcastIntervalOverrideRequest( MESSAGE_T *message ); @@ -211,13 +208,13 @@ void handleConcentratePumpPublishIntervalOverride( MESSAGE_T *message ); // MSG_ID_DG_RO_PUMP_DUTY_CYCLE_OVERRIDE -void handleROPumpDutyCycleOverride( MESSAGE_T *message ); +void handleTestROPumpDutyCycleOverride( MESSAGE_T *message ); // MSG_ID_DG_RO_FLOW_RATE_OVERRIDE -void handleROFlowRateOverride( MESSAGE_T *message ); +void handleTestMeasuredROFlowRateOverride( MESSAGE_T *message ); // MSG_ID_DG_RO_PUMP_TARGET_FLOW_OVERRIDE -void handleROPumpTargetFlowOverride( MESSAGE_T *message ); +void handleTestROPumpTargetFlowOverride( MESSAGE_T *message ); // MSG_ID_DG_RO_PUMP_TARGET_PRESSURE_OVERRIDE void handleROPumpTargetPressureOverride( MESSAGE_T *message );