Index: firmware/App/Controllers/BloodFlow.c =================================================================== diff -u -r0a61f7fa5ff6945ebc2e507d8ecb71a652c38eaa -r52412b5ae4d6087c1363676430942360f751dd7d --- firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision 0a61f7fa5ff6945ebc2e507d8ecb71a652c38eaa) +++ firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision 52412b5ae4d6087c1363676430942360f751dd7d) @@ -8,7 +8,7 @@ * @file BloodFlow.c * * @author (last) Sean Nash -* @date (last) 08-Mar-2023 +* @date (last) 28-Mar-2023 * * @author (original) Sean Nash * @date (original) 07-Nov-2019 @@ -85,12 +85,10 @@ static const U32 BP_DIRECTION_ERROR_PERSIST = ( 250 ); /// Persist time period (in ms) blood pump rotor speed too fast error condition. static const U32 BP_MAX_ROTOR_SPEED_ERROR_PERSIST = ( 1 * MS_PER_SECOND ); -/// Persist time (in ms) blood flow rate out of range error condition. -static const U32 BP_MAX_FLOW_RATE_OUT_OF_RANGE_PERSIST = (1 * MS_PER_SECOND); #define BP_MAX_CURR_WHEN_STOPPED_MA 150.0F ///< Motor controller current should not exceed this when pump should be stopped. #define BP_MAX_CURR_WHEN_RUNNING_MA 2000.0F ///< Motor controller current should not exceed this when pump should be running. -#define BP_MAX_CURR_ERROR_DURATION_MS 2000 ///< Motor controller current errors persisting beyond this duration will trigger an alarm. +#define BP_MAX_CURR_ERROR_DURATION_MS 5000 ///< Motor controller current errors persisting beyond this duration will trigger an alarm. #define BLOODPUMP_ADC_FULL_SCALE_V 3.0F ///< BP analog signals are 0-3V (while int. ADC ref may be different). #define BLOODPUMP_ADC_ZERO 1998 ///< Blood pump ADC channel zero offset. @@ -219,7 +217,6 @@ static void checkBloodPumpDirection( void ); static void checkBloodPumpSpeeds( void ); static void checkBloodPumpMCCurrent( void ); -static void checkBloodPumpFlowRate( void ); static F32 calcBloodFlow( void ); static void resetBloodPumpRPMMovingAverage( void ); @@ -264,7 +261,6 @@ initTimeWindowedCount( TIME_WINDOWED_COUNT_BP_COMMUTATION_ERROR, BP_COMMUTATION_ERROR_MAX_CNT, BP_COMMUTATION_ERROR_TIME_WIN_MS ); initPersistentAlarm( ALARM_ID_BLOOD_PUMP_ROTOR_SPEED_TOO_HIGH, 0, BP_MAX_ROTOR_SPEED_ERROR_PERSIST ); initPersistentAlarm( ALARM_ID_BLOOD_PUMP_MC_CURRENT_CHECK, 0, BP_MAX_CURR_ERROR_DURATION_MS ); - initPersistentAlarm( ALARM_ID_HD_BLOOD_FLOW_OUT_OF_RANGE, 0, BP_MAX_FLOW_RATE_OUT_OF_RANGE_PERSIST ); } /*********************************************************************//** @@ -580,9 +576,8 @@ checkBloodPumpDirection(); // Check pump controller current checkBloodPumpMCCurrent(); - // Check pump speeds and flow + // Check pump speeds checkBloodPumpSpeeds(); - checkBloodPumpFlowRate(); // Check for home position, zero/low speed checkBloodPumpRotor(); } @@ -652,6 +647,10 @@ isBloodPumpOn = TRUE; result = BLOOD_PUMP_RAMPING_UP_STATE; } + else + { + isBloodPumpOn = FALSE; + } return result; } @@ -1269,30 +1268,6 @@ } } -/*********************************************************************//** - * @brief - * The checkBloodPumpFlowRate function checks the measured blood flow rate - * is in range. - * @details Inputs: measuredBloodFlowRate - * @details Outputs: alarm may be triggered - * @return none - *************************************************************************/ -static void checkBloodPumpFlowRate( void ) -{ -#ifndef _RELEASE_ - if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_PUMP_FLOW_CHECKS ) != SW_CONFIG_ENABLE_VALUE ) -#endif - { - F32 flow = getMeasuredBloodFlowRate(); - - // Range check on measure BP flow rate. - if ( TRUE == isPersistentAlarmTriggered( ALARM_ID_HD_BLOOD_FLOW_OUT_OF_RANGE, ( flow > BP_MAX_FLOW_RATE ) || ( flow < BP_MIN_FLOW_RATE ) ) ) - { - SET_ALARM_WITH_1_F32_DATA( ALARM_ID_HD_BLOOD_FLOW_OUT_OF_RANGE, flow ); - } - } -} - /*********************************************************************//** * @brief * The execBloodFlowTest function executes the state machine for the