Index: firmware/App/Controllers/DialInFlow.c =================================================================== diff -u -r323df1eba09cd27a00a56e5e38b1fffcbff3b170 -r63be419d72523822693e10767ce3e4cd87aa05b6 --- firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 323df1eba09cd27a00a56e5e38b1fffcbff3b170) +++ firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 63be419d72523822693e10767ce3e4cd87aa05b6) @@ -73,6 +73,7 @@ /// Persist time (task intervals) for flow vs. motor speed error condition. static const U32 DIP_FLOW_VS_SPEED_PERSIST = ((5 * MS_PER_SECOND) / TASK_PRIORITY_INTERVAL); +//static const U32 DIP_FLOW_VS_SPEED_PERSIST = ((60 * MS_PER_SECOND) / TASK_PRIORITY_INTERVAL); //DN-03NOV2022 - Make it 1 minutes for testing /// Persist time (task intervals) for motor off error condition. static const U32 DIP_OFF_ERROR_PERSIST = ((5 * MS_PER_SECOND) / TASK_PRIORITY_INTERVAL); /// Persist time (task intervals) motor speed error condition. @@ -275,6 +276,7 @@ // Initialize persistent alarm for flow sensor signal strength too low initPersistentAlarm( ALARM_ID_HD_DIAL_IN_FLOW_OUT_OF_RANGE, 0, DIP_MAX_FLOW_RATE_OUT_OF_RANGE_PERSIST ); + initPersistentAlarm( ALARM_ID_HD_DIAL_IN_FLOW_CHECK_FAILURE, DIP_FLOW_VS_SPEED_PERSIST, DIP_FLOW_VS_SPEED_PERSIST ); initTimeWindowedCount( TIME_WINDOWED_COUNT_DIP_COMMUTATION_ERROR, DIP_COMMUTATION_ERROR_MAX_CNT, DIP_COMMUTATION_ERROR_TIME_WIN_MS ); } @@ -806,27 +808,20 @@ if ( ( QdTarget < DIAL_IN_FLOW_QHIGHTRANSITION ) && ( QdTarget > DIAL_IN_FLOW_QLOWTRANSITION ) ) { // use blended flow rate calculation - estimatedFlow = ( ( QdTarget - DIAL_IN_FLOW_QLOWTRANSITION ) / ( DIAL_IN_FLOW_QHIGHTRANSITION - DIAL_IN_FLOW_QLOWTRANSITION ) ) * calculatedFlow + - ( ( DIAL_IN_FLOW_QHIGHTRANSITION - QdTarget ) / ( DIAL_IN_FLOW_QHIGHTRANSITION - DIAL_IN_FLOW_QLOWTRANSITION ) ) * filteredDialInFlowMeterReading; + estimatedFlow = ( ( QdTarget - DIAL_IN_FLOW_QLOWTRANSITION ) / ( DIAL_IN_FLOW_QHIGHTRANSITION - DIAL_IN_FLOW_QLOWTRANSITION ) ) * filteredDialInFlowMeterReading + + ( ( DIAL_IN_FLOW_QHIGHTRANSITION - QdTarget ) / ( DIAL_IN_FLOW_QHIGHTRANSITION - DIAL_IN_FLOW_QLOWTRANSITION ) ) * calculatedFlow; } else - { - if ( QdTarget > DIAL_IN_FLOW_QHIGHTRANSITION) - { - estimatedFlow = filteredDialInFlowMeterReading; // Use flow sensor - } - else - { - estimatedFlow = calculatedFlow; // use calculated flow rate. - } + { // use calculated flow rate. Assume target flow rate has already checked for out of bounds on low end. + estimatedFlow = calculatedFlow; } } // Check the measured flow against estimated flow - / deltaFlow = 0.5 * estimatedFlow; // 50% estimated flow - if ( TRUE == isDialInPumpRunning() ) + if ( ( TRUE == isDialInPumpRunning() ) && ( dialInPumpControlMode != PUMP_CONTROL_MODE_OPEN_LOOP ) ) { - if ( ( TRUE == isPersistentAlarmTriggered( ALARM_ID_HD_DIAL_IN_FLOW_CHECK_FAILURE, deltaFlow < fabs( estimatedFlow - filteredDialInFlowMeterReading ) ) ) ) // DN-31OCT2022 + 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 ); }