Index: firmware/App/Controllers/LoadCell.c =================================================================== diff -u -r6499ea25921fcf67826fa0c35bb03caf411ba542 -r6e2d32cb9856abbcfeca679b6a49b51e581a1604 --- firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision 6499ea25921fcf67826fa0c35bb03caf411ba542) +++ firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision 6e2d32cb9856abbcfeca679b6a49b51e581a1604) @@ -21,6 +21,7 @@ #include "LoadCell.h" #include "MessageSupport.h" #include "NVDataMgmt.h" +#include "OperationModes.h" #include "PersistentAlarm.h" #include "SystemCommMessages.h" #include "TaskPriority.h" @@ -51,7 +52,8 @@ #define EMPTY_RESERVOIR_WEIGHT_GRAMS 1600.0F ///< Reservoirs empty weight in grams. #define MAX_ALLOWED_EXTRA_WEIGHT_BEFORE_FIRST_TARE_GRAMS 300.0F ///< Max allowed extra weight before first tare in grams. #define MAX_ALLOWED_EXTRA_WEIGHT_BEFORE_TARE_GRAMS 60.0F ///< Max allowed extra weight before tare in grams. -#define LOAD_CELL_PRIMARY_BACKUP_MAX_ALLOWED_DRIFT_GRAMS 60.0F ///< Load cell primary and backup maximum allowed weight drift in grams. +#define LOAD_CELL_PRIMARY_BACKUP_MAX_ALLOWED_DRIFT_GRAMS 80.0F ///< Load cell primary and backup maximum allowed weight drift in grams. +#define LOAD_CELL_PRIMARY_BACKUP_MAX_HEAT_DRIFT_GRAMS 200.0F ///< Load cell primary and backup maximum allowed weight drift in grams for heat disinfect mode. #define DATA_PUBLISH_COUNTER_START_COUNT 0 ///< Data publish counter start count. #define LOAD_CELL_FPGA_ERROR_TIMEOUT_MS ( 2 * MS_PER_SECOND ) ///< Load cell FPGA error timeout in milliseconds. #define LOAD_CELL_FPGA_SIGN_BIT 0x800000 ///< Load cell FPGA sign bit. @@ -512,8 +514,15 @@ F32 drift = 0.0; F32 loadCellADrift = 0.0; F32 loadCellBDrift = 0.0; + F32 maxDrift = LOAD_CELL_PRIMARY_BACKUP_MAX_ALLOWED_DRIFT_GRAMS; BOOL isDriftOutOfRange = FALSE; + // Increase max drift limit if in heat disinfect mode + if ( DG_MODE_HEAT == getCurrentOperationMode() ) + { + maxDrift = LOAD_CELL_PRIMARY_BACKUP_MAX_HEAT_DRIFT_GRAMS; + } + // Test is valid after load cells are tared if ( isLoadCellTared( LOAD_CELL_RESERVOIR_1_PRIMARY ) && isLoadCellTared( LOAD_CELL_RESERVOIR_1_BACKUP ) ) { @@ -526,8 +535,7 @@ getLoadCellSmallFilteredWeight( LOAD_CELL_RESERVOIR_2_BACKUP ) ); } - if ( ( loadCellADrift > LOAD_CELL_PRIMARY_BACKUP_MAX_ALLOWED_DRIFT_GRAMS ) || - ( loadCellBDrift > LOAD_CELL_PRIMARY_BACKUP_MAX_ALLOWED_DRIFT_GRAMS ) ) + if ( ( loadCellADrift > maxDrift ) || ( loadCellBDrift > maxDrift ) ) { isDriftOutOfRange = TRUE; } @@ -538,8 +546,7 @@ // Pick the biggest drift to log w/ alarm if triggered drift = ( loadCellADrift > loadCellBDrift ? loadCellADrift : loadCellBDrift ); - checkPersistentAlarm( ALARM_ID_DG_LOAD_CELL_PRIMARY_BACKUP_DRIFT_OUT_OF_RANGE, isDriftOutOfRange, drift, - LOAD_CELL_PRIMARY_BACKUP_MAX_ALLOWED_DRIFT_GRAMS ); + checkPersistentAlarm( ALARM_ID_DG_LOAD_CELL_PRIMARY_BACKUP_DRIFT_OUT_OF_RANGE, isDriftOutOfRange, drift, maxDrift ); }