Index: firmware/App/Controllers/Fans.c =================================================================== diff -u -r07012e0a841e4b35049bd5aa4609a2b37978f65b -rb66dabe73c8418e0e4ee358ce787b6d9bd9e128e --- firmware/App/Controllers/Fans.c (.../Fans.c) (revision 07012e0a841e4b35049bd5aa4609a2b37978f65b) +++ firmware/App/Controllers/Fans.c (.../Fans.c) (revision b66dabe73c8418e0e4ee358ce787b6d9bd9e128e) @@ -51,6 +51,7 @@ typedef struct { F32 targetDutyCycle; ///< Fan's target duty cycle that was fed to the fans + F32 targetRPM; ///< Fan's target RPM OVERRIDE_F32_T rpm[ NUM_OF_FANS_NAMES ]; ///< Fan's current tachometers reading in RPM } FAN_STATUS_T; @@ -103,6 +104,8 @@ // Initialize the fans for ( fan = FAN_INLET_1; fan < NUM_OF_FANS_NAMES; fan++ ) { + fansStatus.targetDutyCycle = 0.0; + fansStatus.targetRPM = 0.0; fansStatus.rpm[ fan ].data = 0.0; fansStatus.rpm[ fan ].ovData = 0.0; fansStatus.rpm[ fan ].ovInitData = 0.0; @@ -287,6 +290,9 @@ } } + // Calculate the target RPM from the duty cycle. + fansStatus.targetRPM = fansStatus.targetDutyCycle * FANS_MAX_ALLOWED_RPM; + // Set the PWM to inlet and outlet fans setInletFansDutyCycle( fansStatus.targetDutyCycle ); @@ -380,13 +386,12 @@ *************************************************************************/ static void monitorFans( void ) { - FAN_NAMES_T fan; - if ( ++fansMonitorCounter >= FANS_MONITOR_INTERVAL_COUNT ) { if ( FALSE == hasAlarmBeenRaised ) { BOOL isFanRPMOutOfRange; + FAN_NAMES_T fan; // The RPM is expected to be 5500 @ 100% duty cycle // The nominal RPM = duty cycle * 5500 / 1.0 @@ -442,8 +447,9 @@ { FANS_DATA_T fansData; - fansData.fansTargetDutyCycle = fansStatus.targetDutyCycle * FRACTION_TO_PERCENT_FACTOR; - fansData.fanInlet1RPM = getMeasuredFanRPM( FAN_INLET_1 ); + fansData.fansDutyCycle = fansStatus.targetDutyCycle * FRACTION_TO_PERCENT_FACTOR; + fansData.fansTargetRPM = fansStatus.targetRPM; + fansData.fanInlet1RPM = getMeasuredFanRPM( FAN_INLET_1 ); broadcastFansData( &fansData ); Index: firmware/App/Controllers/Fans.h =================================================================== diff -u -r07012e0a841e4b35049bd5aa4609a2b37978f65b -rb66dabe73c8418e0e4ee358ce787b6d9bd9e128e --- firmware/App/Controllers/Fans.h (.../Fans.h) (revision 07012e0a841e4b35049bd5aa4609a2b37978f65b) +++ firmware/App/Controllers/Fans.h (.../Fans.h) (revision b66dabe73c8418e0e4ee358ce787b6d9bd9e128e) @@ -22,7 +22,8 @@ /// Fans data publish typedef struct { - F32 fansTargetDutyCycle; ///< Fans target duty cycle + F32 fansDutyCycle; ///< Fans duty cycle + F32 fansTargetRPM; ///< Fans target RPM F32 fanInlet1RPM; ///< Fan inlet 1 RPM } FANS_DATA_T; Index: firmware/App/Controllers/Temperatures.c =================================================================== diff -u -r07012e0a841e4b35049bd5aa4609a2b37978f65b -rb66dabe73c8418e0e4ee358ce787b6d9bd9e128e --- firmware/App/Controllers/Temperatures.c (.../Temperatures.c) (revision 07012e0a841e4b35049bd5aa4609a2b37978f65b) +++ firmware/App/Controllers/Temperatures.c (.../Temperatures.c) (revision b66dabe73c8418e0e4ee358ce787b6d9bd9e128e) @@ -250,11 +250,10 @@ static void monitorTemperatures( void ) { TEMPERATURES_T sensor; - F32 temperature = 0.0; for ( sensor = THERMISTOR_ONBOARD_NTC; sensor < NUM_OF_TEMPERATURES; sensor++ ) { - temperature = getTemperatureValue( sensor ); + F32 temperature = getTemperatureValue( sensor ); BOOL isTempOutOfRange = ( temperature > MAX_ALLOWED_TEMPERATURE ) || ( temperature < MIN_ALLOWED_TEMPERATURE ); isPersistentAlarmTriggered( ALARM_ID_HD_TEMPERATURES_OUT_OF_RANGE, isTempOutOfRange ); Index: firmware/App/Modes/TreatmentStop.c =================================================================== diff -u -r85a18ee758116bb8e19b80b18f166a691a464bb7 -rb66dabe73c8418e0e4ee358ce787b6d9bd9e128e --- firmware/App/Modes/TreatmentStop.c (.../TreatmentStop.c) (revision 85a18ee758116bb8e19b80b18f166a691a464bb7) +++ firmware/App/Modes/TreatmentStop.c (.../TreatmentStop.c) (revision b66dabe73c8418e0e4ee358ce787b6d9bd9e128e) @@ -137,6 +137,7 @@ // Ensure we do not sit in stopped state for too long if ( ++bloodSittingTimerCtr > MAX_TIME_BLOOD_SITTING ) { + // Activate the alarm activateAlarmNoData( ALARM_ID_TREATMENT_STOPPED_NO_RINSEBACK ); } Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -recbd3443e0fbf2c84da7a66761765e74eb41407e -rb66dabe73c8418e0e4ee358ce787b6d9bd9e128e --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision ecbd3443e0fbf2c84da7a66761765e74eb41407e) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision b66dabe73c8418e0e4ee358ce787b6d9bd9e128e) @@ -40,9 +40,8 @@ #include "PresOccl.h" #include "Rinseback.h" #include "Switches.h" -#include "Temperatures.h" -#include "ModeStandby.h" #include "SyringePump.h" +#include "Temperatures.h" #include "Valves.h" #include "Voltages.h" Index: firmware/App/Tasks/TaskGeneral.c =================================================================== diff -u -rf5f00981805e265ce63058f650d784f06db4d188 -rb66dabe73c8418e0e4ee358ce787b6d9bd9e128e --- firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision f5f00981805e265ce63058f650d784f06db4d188) +++ firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision b66dabe73c8418e0e4ee358ce787b6d9bd9e128e) @@ -77,7 +77,13 @@ execPresOccl(); #endif // Monitor voltages - execVoltagesMonitor(); + execVoltagesMonitor(); + + // Monitor switches + execSwitches(); + + // Monitor temperatures + execTemperatures(); // Run operation mode state machine execOperationModes(); @@ -99,12 +105,6 @@ // Control dialysate outlet pump execDialOutFlowController(); - // Monitor switches - execSwitches(); - - // Monitor temperatures - execTemperatures(); - // Monitor/Control fans execFans(); #endif