Index: firmware/App/Controllers/PresOccl.c =================================================================== diff -u -r8121bf62592934e01f365a973ac813c3d4748cda -r2f0657170e95295bf2907aa4295b804c24e0242c --- firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision 8121bf62592934e01f365a973ac813c3d4748cda) +++ firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision 2f0657170e95295bf2907aa4295b804c24e0242c) @@ -79,7 +79,7 @@ #define VENOUS_PRESSURE_MAX_MMHG ( 2000.0F ) ///< Maximum venous pressure reading (in mmHg) for range check. #define VENOUS_PRESSURE_MIN_MMHG ( -1500.0F ) ///< Minimum venous pressure reading (in mmHg) for range check. #define VENOUS_PRESSURE_LIMIT_MAX_MMHG ( 400.0F ) ///< Maximum venous pressure limit (in mmHg). -#define VENOUS_PRESSURE_LIMIT_MIN_MMHG ( 20.0F ) ///< Minimum venous pressure limit (in mmHg). +#define VENOUS_PRESSURE_LIMIT_MIN_MMHG ( 0.0F ) ///< Minimum venous pressure limit (in mmHg). #define VENOUS_PRESSURE_OCCL_OFFSET_MMHG ( 50.0F ) ///< Venous pressure occlusion threshold offset from max alarm limit (in mmHg). #define VENOUS_PRESSURE_EXEMPTION_PERIOD ( ( 2 * MS_PER_SECOND ) / \ TASK_GENERAL_INTERVAL ) ///< Venous pressure low exemption period (in task interval) after fill for all blood flow rate Index: firmware/App/Modes/BloodPrime.c =================================================================== diff -u -r736cc5b56cc9c784ab1d8fc8687a73d190c35759 -r2f0657170e95295bf2907aa4295b804c24e0242c --- firmware/App/Modes/BloodPrime.c (.../BloodPrime.c) (revision 736cc5b56cc9c784ab1d8fc8687a73d190c35759) +++ firmware/App/Modes/BloodPrime.c (.../BloodPrime.c) (revision 2f0657170e95295bf2907aa4295b804c24e0242c) @@ -39,7 +39,7 @@ #define MIN_RAMP_TIME_SEC 60 ///< Minimum ramp time for blood prime (in seconds). /// Initial flow rate for blood pump when starting blood prime operation. -#define BLOOD_PRIME_INIT_BP_FLOW_RATE_ML_MIN 100 +#define BLOOD_PRIME_INIT_BP_FLOW_RATE_ML_MIN 250 /// Interval at which blood prime ramping is controlled. static const U32 BLOOD_PRIME_RAMPING_INTERVAL = ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ); @@ -85,6 +85,8 @@ void initBloodPrime( void ) { U32 setBPRate = getTreatmentParameterU32( TREATMENT_PARAM_BLOOD_FLOW ); + F32 rampRateSpan = 0.0F; + F32 estRampSeconds = 0.0F; bloodPrimeState = BLOOD_PRIME_RAMP_STATE; bloodPrimeRampControlTimerCtr = 0; @@ -94,22 +96,16 @@ bloodPrimeTargetVolume_mL = (F32)TUBING_BLOOD_PRIME_VOLUME_ML + (F32)getDialyzerBloodVolume(); bloodPrimeRampFlowRate_mL_min = (F32)BLOOD_PRIME_INIT_BP_FLOW_RATE_ML_MIN; + // Calculate BP ramp step size - if ( setBPRate <= BLOOD_PRIME_INIT_BP_FLOW_RATE_ML_MIN ) + rampRateSpan = (F32)( setBPRate - BLOOD_PRIME_INIT_BP_FLOW_RATE_ML_MIN ); + estRampSeconds = ( ( bloodPrimeTargetVolume_mL / (F32)setBPRate + bloodPrimeTargetVolume_mL / (F32)BLOOD_PRIME_INIT_BP_FLOW_RATE_ML_MIN ) / 2.0 ) * (F32)SEC_PER_MIN; + + if ( estRampSeconds < (F32)MIN_RAMP_TIME_SEC ) { - bloodPrimeRampStep_mL = 0.0; + estRampSeconds = (F32)MIN_RAMP_TIME_SEC; } - else - { - F32 rampRateSpan = (F32)( setBPRate - BLOOD_PRIME_INIT_BP_FLOW_RATE_ML_MIN ); - F32 estRampSeconds = ( ( bloodPrimeTargetVolume_mL / (F32)setBPRate + bloodPrimeTargetVolume_mL / (F32)BLOOD_PRIME_INIT_BP_FLOW_RATE_ML_MIN ) / 2.0 ) * (F32)SEC_PER_MIN; - - if ( estRampSeconds < (F32)MIN_RAMP_TIME_SEC ) - { - estRampSeconds = (F32)MIN_RAMP_TIME_SEC; - } - bloodPrimeRampStep_mL = rampRateSpan / estRampSeconds; - } + bloodPrimeRampStep_mL = rampRateSpan / estRampSeconds; } /*********************************************************************//**