Index: firmware/App/Controllers/DialInFlow.c =================================================================== diff -u -rebe0866d88ffe938d6ff48c9c1e30a83d63145be -r14d9389c9db66c265e17d975e30ed73c66dcc21b --- firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision ebe0866d88ffe938d6ff48c9c1e30a83d63145be) +++ firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 14d9389c9db66c265e17d975e30ed73c66dcc21b) @@ -784,10 +784,11 @@ *************************************************************************/ static F32 calcDialInFlow( void ) { - F32 estimatedFlow; - F32 QdTarget = getTargetDialInFlowRate(); + F32 estimatedFlow; + F32 QdTarget = getTargetDialInFlowRate(); + F32 deltaFlow; - if (QdTarget >= DIAL_IN_FLOW_QHIGHTRANSITION) + if ( QdTarget >= DIAL_IN_FLOW_QHIGHTRANSITION ) { //At higher flow rates, use the flow meter value. Assume target flow rate has already checked for out of bounds on high end. estimatedFlow = filteredDialInFlowMeterReading; @@ -803,7 +804,7 @@ F32 calculatedFlow = ( motorRPM * 2 * DIAL_IN_STROKE_VOLUME/DIAL_IN_GEAR_RATIO ) * alphaTerm; - if ( ( QdTarget < DIAL_IN_FLOW_QHIGHTRANSITION ) && ( QdTarget >= DIAL_IN_FLOW_QLOWTRANSITION ) ) + 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; @@ -815,7 +816,7 @@ } // Check the measured flow against estimated flow - / - F32 deltaFlow = 0.5 * estimatedFlow; // 50% estimated flow + deltaFlow = 0.5 * estimatedFlow; // 50% estimated flow if ( deltaFlow < fabs( estimatedFlow - filteredDialInFlowMeterReading ) ) { SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_DIAL_IN_FLOW_CHECK_FAILURE, filteredDialInFlowMeterReading, estimatedFlow );