Index: firmware/App/Modes/FPModes/FPOperationModes.c =================================================================== diff -u -r2475e55c224cbd841d61b76f1618451efe6be1f5 -r26dca0a06faa2a79443d7bf2bc547c8dab0673a2 --- firmware/App/Modes/FPModes/FPOperationModes.c (.../FPOperationModes.c) (revision 2475e55c224cbd841d61b76f1618451efe6be1f5) +++ firmware/App/Modes/FPModes/FPOperationModes.c (.../FPOperationModes.c) (revision 26dca0a06faa2a79443d7bf2bc547c8dab0673a2) @@ -59,7 +59,7 @@ /* FAUL */{ FP_MODE_FAUL, FP_MODE_SERV, FP_MODE_NLEG, FP_MODE_NLEG, FP_MODE_NLEG, FP_MODE_NLEG, FP_MODE_NLEG, FP_MODE_NLEG }, /* SERV */{ FP_MODE_FAUL, FP_MODE_SERV, FP_MODE_NLEG, FP_MODE_NLEG, FP_MODE_NLEG, FP_MODE_NLEG, FP_MODE_NLEG, FP_MODE_NLEG }, /* INIT */{ FP_MODE_FAUL, FP_MODE_NLEG, FP_MODE_INIT, FP_MODE_STAN, FP_MODE_NLEG, FP_MODE_NLEG, FP_MODE_NLEG, FP_MODE_NLEG }, -/* STAN */{ FP_MODE_FAUL, FP_MODE_SERV, FP_MODE_NLEG, FP_MODE_STAN, FP_MODE_PGEN, FP_MODE_NLEG, FP_MODE_DPGP, FP_MODE_NLEG }, +/* STAN */{ FP_MODE_FAUL, FP_MODE_SERV, FP_MODE_NLEG, FP_MODE_STAN, FP_MODE_PGEN, FP_MODE_GENP, FP_MODE_DPGP, FP_MODE_NLEG }, /* PGEN */{ FP_MODE_FAUL, FP_MODE_NLEG, FP_MODE_NLEG, FP_MODE_STAN, FP_MODE_PGEN, FP_MODE_GENP, FP_MODE_NLEG, FP_MODE_NLEG }, /* GENW */{ FP_MODE_FAUL, FP_MODE_NLEG, FP_MODE_NLEG, FP_MODE_STAN, FP_MODE_NLEG, FP_MODE_GENP, FP_MODE_NLEG, FP_MODE_NLEG }, /* DPGP */{ FP_MODE_FAUL, FP_MODE_NLEG, FP_MODE_NLEG, FP_MODE_STAN, FP_MODE_NLEG, FP_MODE_NLEG, FP_MODE_DPGP, FP_MODE_DEGP }, Index: firmware/App/Modes/FPModes/FlushFilter.c =================================================================== diff -u -r2475e55c224cbd841d61b76f1618451efe6be1f5 -r26dca0a06faa2a79443d7bf2bc547c8dab0673a2 --- firmware/App/Modes/FPModes/FlushFilter.c (.../FlushFilter.c) (revision 2475e55c224cbd841d61b76f1618451efe6be1f5) +++ firmware/App/Modes/FPModes/FlushFilter.c (.../FlushFilter.c) (revision 26dca0a06faa2a79443d7bf2bc547c8dab0673a2) @@ -21,6 +21,7 @@ #include "MessageSupport.h" #include "Messaging.h" #include "Pressure.h" +#include "ROPump.h" #include "TaskGeneral.h" #include "Timers.h" #include "Valves.h" @@ -188,11 +189,13 @@ setValveState( P34_VALV, VALVE_STATE_CLOSED ); setValveState( P37_VALV, VALVE_STATE_CLOSED ); setValveState( P39_VALV, VALVE_STATE_OPEN ); - filterFlushTimer = getMSTimerCount(); + if ( TRUE == isBoostPumpInstalled() ) { setBoostPumpTargetPressure( FILTER_FLUSH_BOOST_PUMP_TGT_PSI ); } + signalROPumpHardStop(); + filterFlushTimer = getMSTimerCount(); break; case FILTER_FLUSH_PAUSED: Index: firmware/App/Modes/FPModes/FlushFilterDefeatured.c =================================================================== diff -u -rfb0f180eb25dbcfd15d58ef584d535efd1c24e30 -r26dca0a06faa2a79443d7bf2bc547c8dab0673a2 --- firmware/App/Modes/FPModes/FlushFilterDefeatured.c (.../FlushFilterDefeatured.c) (revision fb0f180eb25dbcfd15d58ef584d535efd1c24e30) +++ firmware/App/Modes/FPModes/FlushFilterDefeatured.c (.../FlushFilterDefeatured.c) (revision 26dca0a06faa2a79443d7bf2bc547c8dab0673a2) @@ -263,15 +263,14 @@ else if ( m3Pressure <= minThreshold ) { // Trigger alarm if M3 pressure is not within range - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_INLET_PRESSURE_OUT_LOW_RANGE, m3Pressure, FILTER_FLUSH_STATIC_PRESSURE_CHECK_TIMEOUT ); + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_INLET_PRESSURE_OUT_LOW_RANGE, m3Pressure, minThreshold ); state = FILTER_FLUSH_DEF_PAUSED; } // when inlet pressure is > 10 else if ( m3Pressure >= maxThreshold ) { // Trigger alarm if M3 pressure is not within range - //ALARM_ID_FP_INLET_PRESSURE_OUT_HIGH_RANGE or ALARM_ID_FP_RO_INLET_PRESSURE_OUT_HIGH_RANGE //TODO - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_RO_INLET_PRESSURE_OUT_HIGH_RANGE, m3Pressure, FILTER_FLUSH_STATIC_PRESSURE_CHECK_TIMEOUT ); + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_INLET_PRESSURE_OUT_HIGH_RANGE, m3Pressure, maxThreshold ); state = FILTER_FLUSH_DEF_PAUSED; } } @@ -323,7 +322,7 @@ case FILTER_FLUSH_DEF_STATIC_PRESSURE_CHECK: setValveState( M4_VALV, VALVE_STATE_CLOSED ); - setValveState( M12_VALV, VALVE_STATE_CLOSED ); + setValveState( M12_VALV, VALVE_STATE_OPEN ); setValveState( D52_VALV, VALVE_STATE_CLOSED ); filterFlushDefStaticPressureTimer = getMSTimerCount(); break; Index: firmware/App/Modes/FPModes/FlushPermeate.c =================================================================== diff -u -r2475e55c224cbd841d61b76f1618451efe6be1f5 -r26dca0a06faa2a79443d7bf2bc547c8dab0673a2 --- firmware/App/Modes/FPModes/FlushPermeate.c (.../FlushPermeate.c) (revision 2475e55c224cbd841d61b76f1618451efe6be1f5) +++ firmware/App/Modes/FPModes/FlushPermeate.c (.../FlushPermeate.c) (revision 26dca0a06faa2a79443d7bf2bc547c8dab0673a2) @@ -179,6 +179,7 @@ if ( TRUE == didTimeout( permeateFlushTimer, getPermeateFlushTimeout() ) ) { F32 p18conductivity = getFilteredConductivity( P18_COND ); + //TODO add remaining checks per SRS-275 if ( ( PERMEATE_FLUSH_CONDUCTIVITY_THRESHOLD > p18conductivity ) && ( LEVEL_STATE_HIGH == level ) ) { isFlushComplete = TRUE; @@ -248,6 +249,7 @@ { setBoostPumpTargetPressure( PERMEATE_FLUSH_BOOST_PUMP_TGT_PSI ); } + //TODO update target macro after changing it to 750 + rinse pump rate setROPumpTargetFlowRateMLPM( PERMEATE_FLUSH_RO_PUMP_TGT_ML, TRUE ); permeateFlushTimer = getMSTimerCount(); permeateFlushAlarmTimer = getMSTimerCount(); Index: firmware/App/Modes/FPModes/InletPressureCheck.c =================================================================== diff -u -r95a7e12ec9b9d70b13baf9aafd94e183beccd89c -r26dca0a06faa2a79443d7bf2bc547c8dab0673a2 --- firmware/App/Modes/FPModes/InletPressureCheck.c (.../InletPressureCheck.c) (revision 95a7e12ec9b9d70b13baf9aafd94e183beccd89c) +++ firmware/App/Modes/FPModes/InletPressureCheck.c (.../InletPressureCheck.c) (revision 26dca0a06faa2a79443d7bf2bc547c8dab0673a2) @@ -86,8 +86,8 @@ isPressureCheckComplete = FALSE; // Pressure alarms - initPersistentAlarm( ALARM_ID_FP_INLET_PRESSURE_OUT_LOW_RANGE, INLET_PRES_OUT_OF_RANGE_CLEAR_MS, INLET_PRES_OUT_OF_RANGE_TIMEOUT_MS ); - initPersistentAlarm( ALARM_ID_FP_INLET_PRESSURE_OUT_HIGH_RANGE, INLET_PRES_OUT_OF_RANGE_CLEAR_MS, INLET_PRES_OUT_OF_RANGE_TIMEOUT_MS ); + initPersistentAlarm( ALARM_ID_FP_INLET_PRESSURE_REGULATOR_OUT_OF_RANGE, INLET_PRES_OUT_OF_RANGE_CLEAR_MS, INLET_PRES_OUT_OF_RANGE_TIMEOUT_MS ); + initPersistentAlarm( ALARM_ID_FP_INLET_PRESSURE_REGULATOR_OUT_OF_RANGE, INLET_PRES_OUT_OF_RANGE_CLEAR_MS, INLET_PRES_OUT_OF_RANGE_TIMEOUT_MS ); } /*********************************************************************//** @@ -175,8 +175,8 @@ else { // check persistent alarm for 1 second - checkPersistentAlarm( ALARM_ID_FP_INLET_PRESSURE_OUT_LOW_RANGE, isPresOutOfLowRange, m3Pressure, minThreshold ); - checkPersistentAlarm( ALARM_ID_FP_INLET_PRESSURE_OUT_HIGH_RANGE, isPresOutOfHighRange, m3Pressure, maxThreshold ); + checkPersistentAlarm( ALARM_ID_FP_INLET_PRESSURE_REGULATOR_OUT_OF_RANGE, isPresOutOfLowRange, m3Pressure, minThreshold ); + checkPersistentAlarm( ALARM_ID_FP_INLET_PRESSURE_REGULATOR_OUT_OF_RANGE, isPresOutOfHighRange, m3Pressure, maxThreshold ); } } Index: firmware/App/Modes/FPModes/ModePreGenPermeate.c =================================================================== diff -u -rbcaaa40e08eb2b5d789931d516083ac2bbcf1292 -r26dca0a06faa2a79443d7bf2bc547c8dab0673a2 --- firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision bcaaa40e08eb2b5d789931d516083ac2bbcf1292) +++ firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision 26dca0a06faa2a79443d7bf2bc547c8dab0673a2) @@ -203,6 +203,7 @@ { setBoostPumpTargetPressure( VERIFY_WATER_BOOST_PUMP_TGT_PSI ); } + //TODO change target flow to 750 + rinse pump rate setROPumpTargetFlowRateMLPM( VERIFY_WATER_RO_PUMP_TGT_FLOW_ML, TRUE ); verifyWaterTimer = getMSTimerCount(); break; @@ -352,6 +353,15 @@ // check RO duty cycle in range checkRODutyCycle(); + + // check p21 is set to 15 PSI + checkPressureRelief(); + + // check RO rejection ratio + checkRORejectionRatio(); + + // check RO pressure (p13) + checkROPressures(); } // if ( TRUE == 1 ))// TODO Alarm and Stop State Rework Index: firmware/App/Monitors/WaterQualityMonitor.c =================================================================== diff -u -r95a7e12ec9b9d70b13baf9aafd94e183beccd89c -r26dca0a06faa2a79443d7bf2bc547c8dab0673a2 --- firmware/App/Monitors/WaterQualityMonitor.c (.../WaterQualityMonitor.c) (revision 95a7e12ec9b9d70b13baf9aafd94e183beccd89c) +++ firmware/App/Monitors/WaterQualityMonitor.c (.../WaterQualityMonitor.c) (revision 26dca0a06faa2a79443d7bf2bc547c8dab0673a2) @@ -52,8 +52,8 @@ #define MAX_PERMEATE_FLOW_FAULT_THRESHOLD 1.25F ///< Maximum permeate flow threshold value in percentage. #define INLET_WATER_PRES_OUT_OF_RANGE_TIMEOUT_MS ( 5 * MS_PER_SECOND ) ///< Persistence period for pressure out of range error in milliseconds. #define INLET_WATER_PRES_OUT_OF_RANGE_CLEAR_MS ( 5 * MS_PER_SECOND ) ///< Persistence period for pressure out of range clear in milliseconds. -#define INLET_WATER_PRES_RELIEF_OUT_OF_RANGE_TIMEOUT_MS ( 5 * MS_PER_SECOND ) ///< Persistence period for pressure out of range error in milliseconds. -#define INLET_WATER_PRES_RELIEF_OUT_OF_RANGE_CLEAR_MS ( 5 * MS_PER_SECOND ) ///< Persistence period for pressure out of range clear in milliseconds. +#define INLET_WATER_PRES_RELIEF_OUT_OF_RANGE_TIMEOUT_MS ( 1 * MS_PER_SECOND ) ///< Persistence period for pressure out of range error in milliseconds. +#define INLET_WATER_PRES_RELIEF_OUT_OF_RANGE_CLEAR_MS ( 1 * MS_PER_SECOND ) ///< Persistence period for pressure out of range clear in milliseconds. #define OUTLET_CONDUCTIVITY_HIGH_THRESHOLD_US 200.0F ///< Minimum allowed inlet conductivity in uS/cm. #define INLET_WATER_COND_OUT_OF_RANGE_TIMEOUT_MS ( 5 * MS_PER_SECOND ) ///< Persistence period for conductivity out of range error in milliseconds. @@ -364,6 +364,7 @@ { F32 avgRORR = getRORRAverage(); // Alarm if the filtered average is less than allowed RO rejection limit + //TODO update the macro with value from institutional configuration if ( avgRORR < MIN_RO_REJECTION_RATIO_PCT ) { SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_REJECTION_RATIO_LOW_RANGE, avgRORR, MIN_RO_REJECTION_RATIO_PCT ) Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r95a7e12ec9b9d70b13baf9aafd94e183beccd89c -r26dca0a06faa2a79443d7bf2bc547c8dab0673a2 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 95a7e12ec9b9d70b13baf9aafd94e183beccd89c) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision 26dca0a06faa2a79443d7bf2bc547c8dab0673a2) @@ -192,6 +192,7 @@ { MSG_ID_DD_FILTERED_COND_SENSOR_READINGS_OVERRIDE_REQUEST, &testDDConductivitySensorFilteredReadingsOverride }, { MSG_ID_DD_FILTERED_COND_SENSOR_TEMPERATURE_OVERRIDE_REQUEST, &testDDConductivitySensorFilteredTemperatureReadingsOverride }, { MSG_ID_FP_TESTER_LOGIN_REQUEST, &handleTesterFPLogInRequest }, + { MSG_ID_FP_SOFTWARE_RESET_REQUEST, &handleDDSoftwareResetRequest }, { MSG_ID_FP_SET_OPERATION_MODE_REQUEST, &testSetFPOperationMode }, { MSG_ID_FP_OPERATION_MODE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testSetFPOpModePublishIntervalOverride }, { MSG_ID_FP_PRE_GEN_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testPreGenDataPublishIntervalOverride },