Index: firmware/App/Controllers/DialInFlow.c =================================================================== diff -u -r60648d9085c200d4bb707341f9ee14dbbc5d4c4e -r714e5bc990074b9b73a46af011bf7204f0d5d5e1 --- firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 60648d9085c200d4bb707341f9ee14dbbc5d4c4e) +++ firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 714e5bc990074b9b73a46af011bf7204f0d5d5e1) @@ -49,6 +49,7 @@ #define MAX_DIAL_IN_PUMP_PWM_STEP_DN_CHANGE 0.02F ///< Max duty cycle change when ramping down ~ 300 mL/min/s. #define MAX_DIAL_IN_PUMP_PWM_DUTY_CYCLE 0.89F ///< Controller will error if PWM duty cycle > 90%, so set max to 89%. #define MIN_DIAL_IN_PUMP_PWM_DUTY_CYCLE 0.10F ///< Controller will error if PWM duty cycle < 10%, so set min to 10%. +#define MIN_DG_DIAL_FLOW_RATE 10.0F ///< Minimum DG Dialysate Flow Rate (mL/Min) - DN-9NOV2022 #define DIP_CONTROL_INTERVAL_SEC 4 ///< Dialysate inlet pump control interval (in seconds). /// Interval (ms/task time) at which the dialIn pump is controlled. @@ -789,7 +790,6 @@ { F32 estimatedFlow; F32 QdTarget = getTargetDialInFlowRate(); - F32 deltaFlow; if ( QdTarget >= DIAL_IN_FLOW_QHIGHTRANSITION ) { @@ -818,24 +818,9 @@ } } - // Check the measured flow against estimated flow - / - deltaFlow = FIFTY_PERCENT * estimatedFlow; // 50% estimated flow - if ( ( TRUE == isDialInPumpRunning() ) && ( dialInPumpControlMode != PUMP_CONTROL_MODE_OPEN_LOOP ) ) - { - if ( ( TRUE == isPersistentAlarmTriggered( ALARM_ID_HD_DIAL_IN_FLOW_CHECK_FAILURE, deltaFlow < fabs( estimatedFlow - filteredDialInFlowMeterReading ) ) ) ) - { - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_DIAL_IN_FLOW_CHECK_FAILURE, filteredDialInFlowMeterReading, estimatedFlow ); - } - } - else - { - isPersistentAlarmTriggered( ALARM_ID_HD_DIAL_IN_FLOW_CHECK_FAILURE, FALSE ); - } - return estimatedFlow; } - /*********************************************************************//** * @brief * The dialysateInPumpPWMFromTargetFlowRate function calculates a motor PWM setting @@ -1366,6 +1351,7 @@ static void checkDialInPumpFlowRate( void ) { F32 flow = getMeasuredDialInFlowRate(); + F32 measuredDialInFlow; // Range check on measure DPi flow rate. if ( ( TRUE == isPersistentAlarmTriggered( ALARM_ID_HD_DIAL_IN_FLOW_OUT_OF_RANGE, ( flow > DIP_MAX_FLOW_RATE ) || ( flow < DIP_MIN_FLOW_RATE ) ) ) ) @@ -1407,6 +1393,22 @@ { errorDialInFlowVsMotorSpeedPersistTimerCtr = 0; } + + // Check DG Dialysate flow rate + /* TODO: Temporarily comment this out. Will restore it when know better how to handle this alarm. + measuredDialInFlow = getDGDialysateFlowRateLMin() * ML_PER_LITER; + if ( ( TRUE == isDialInPumpRunning() ) && ( dialInPumpControlMode != PUMP_CONTROL_MODE_OPEN_LOOP ) ) + { + if ( ( TRUE == isPersistentAlarmTriggered( ALARM_ID_HD_DIAL_IN_FLOW_CHECK_FAILURE, measuredDialInFlow < MIN_DG_DIAL_FLOW_RATE ) ) ) + { + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_DIAL_IN_FLOW_CHECK_FAILURE, measuredDialInFlow, (F32)targetDialInFlowRate ); + } + } + else + { + isPersistentAlarmTriggered( ALARM_ID_HD_DIAL_IN_FLOW_CHECK_FAILURE, FALSE ); + } + */ } /*********************************************************************//**