Index: firmware/App/Controllers/LoadCell.c =================================================================== diff -u -re9f4774b8c6c4b5d064bca8076e084dd9b72da76 -re6453f6070bec116e1f1e3a553eb2c6a7aac1f9d --- firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision e9f4774b8c6c4b5d064bca8076e084dd9b72da76) +++ firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision e6453f6070bec116e1f1e3a553eb2c6a7aac1f9d) @@ -164,8 +164,8 @@ *************************************************************************/ void execLoadCell( void ) { - LOAD_CELL_ID_T ii; - LOAD_CELL_ID_T alarmID; + LOAD_CELL_ID_T sensorId; + LOAD_CELL_ID_T sensorInAlarm = LOAD_CELL_RESERVOIR_1_PRIMARY; U32 a1 = getFPGALoadCellA1(); U32 a2 = getFPGALoadCellA2(); U32 b1 = getFPGALoadCellB1(); @@ -212,58 +212,58 @@ } // Rolling average of last 100 raw samples in small filter - for ( ii = LOAD_CELL_RESERVOIR_1_PRIMARY; ii < NUM_OF_LOAD_CELLS; ++ii ) + for ( sensorId = LOAD_CELL_RESERVOIR_1_PRIMARY; sensorId < NUM_OF_LOAD_CELLS; ++sensorId ) { - F32 loadCell = (F32)loadcells[ ii ].rawReading * ADC2GRAM; + F32 loadCell = (F32)loadcells[ sensorId ].rawReading * ADC2GRAM; // Apply the calibration factors to the data. // load_cell_weight = fourth_order_coeff * (load_cell^4) + third_order_coeff * (load_cell^3) + second_order_coeff * (load_cell^2) + gain * load_cell + offset - loadcells[ ii ].weight.data = pow( loadCell, 4 ) * loadCellsCalRecord.loadCells[ (CAL_DATA_DG_LOAD_CELLS_T)ii ].fourthOrderCoeff + - pow( loadCell, 3 ) * loadCellsCalRecord.loadCells[ (CAL_DATA_DG_LOAD_CELLS_T)ii ].thirdOrderCoeff + - pow( loadCell, 2 ) * loadCellsCalRecord.loadCells[ (CAL_DATA_DG_LOAD_CELLS_T)ii ].secondOrderCoeff + - loadCell * loadCellsCalRecord.loadCells[ (CAL_DATA_DG_LOAD_CELLS_T)ii ].gain + - loadCellsCalRecord.loadCells[ (CAL_DATA_DG_LOAD_CELLS_T)ii ].offset; + loadcells[ sensorId ].weight.data = pow( loadCell, 4 ) * loadCellsCalRecord.loadCells[ (CAL_DATA_DG_LOAD_CELLS_T)sensorId ].fourthOrderCoeff + + pow( loadCell, 3 ) * loadCellsCalRecord.loadCells[ (CAL_DATA_DG_LOAD_CELLS_T)sensorId ].thirdOrderCoeff + + pow( loadCell, 2 ) * loadCellsCalRecord.loadCells[ (CAL_DATA_DG_LOAD_CELLS_T)sensorId ].secondOrderCoeff + + loadCell * loadCellsCalRecord.loadCells[ (CAL_DATA_DG_LOAD_CELLS_T)sensorId ].gain + + loadCellsCalRecord.loadCells[ (CAL_DATA_DG_LOAD_CELLS_T)sensorId ].offset; // Monitor the load cells weight // Since there is a single alarm value for all 4 load cells the persistence check must be // executed if ANY of the load cell values are out of range. Only when all of the load // cells are in range should the persistence for the alarm be cleared. - weight = getLoadCellWeight( ( LOAD_CELL_ID_T) ii ); + weight = getLoadCellWeight( ( LOAD_CELL_ID_T) sensorId ); if ( ( weight < LOAD_CELL_MIN_ALLOWED_WEIGHT_GRAMS ) || ( weight > LOAD_CELL_MAX_ALLOWED_WEIGHT_GRAMS ) ) { isLoadCellOutOfRange = TRUE; - alarmID = ii; + sensorInAlarm = sensorId; alarmLoadCell = weight; } - loadcells[ ii ].loadCellVelocity_g_min = ( getLoadCellWeight( (LOAD_CELL_ID_T)ii ) - - loadcells[ ii ].smallFilterReadings[ smallReadingsIdx ] ) * (F32)SEC_PER_MIN; + loadcells[ sensorId ].loadCellVelocity_g_min = ( getLoadCellWeight( (LOAD_CELL_ID_T)sensorId ) - + loadcells[ sensorId ].smallFilterReadings[ smallReadingsIdx ] ) * (F32)SEC_PER_MIN; // Update small filter with new weight sample - loadcells[ ii ].smallFilterTotal -= loadcells[ ii ].smallFilterReadings[ smallReadingsIdx ]; - loadcells[ ii ].smallFilterReadings[ smallReadingsIdx ] = getLoadCellWeight( (LOAD_CELL_ID_T)ii ); - loadcells[ ii ].smallFilterTotal += getLoadCellWeight( (LOAD_CELL_ID_T)ii ); + loadcells[ sensorId ].smallFilterTotal -= loadcells[ sensorId ].smallFilterReadings[ smallReadingsIdx ]; + loadcells[ sensorId ].smallFilterReadings[ smallReadingsIdx ] = getLoadCellWeight( (LOAD_CELL_ID_T)sensorId ); + loadcells[ sensorId ].smallFilterTotal += getLoadCellWeight( (LOAD_CELL_ID_T)sensorId ); // Calculate the load cell value before applying calibration to it - loadcells[ ii ].smallFilteredWeight.data = (F32)( loadcells[ ii ].smallFilterTotal / (F64)SIZE_OF_SMALL_LOAD_CELL_AVG ); + loadcells[ sensorId ].smallFilteredWeight.data = (F32)( loadcells[ sensorId ].smallFilterTotal / (F64)SIZE_OF_SMALL_LOAD_CELL_AVG ); // Apply the tare offset. NOTE: tare must be applied after checking the weight out of range. - loadcells[ ii ].smallFilteredWeight.data -= loadcells[ ii ].autoCalOffset; + loadcells[ sensorId ].smallFilteredWeight.data -= loadcells[ sensorId ].autoCalOffset; } - checkPersistentAlarm( ALARM_ID_DG_LOAD_CELL_WEIGHT_OUT_OF_RANGE, isLoadCellOutOfRange, alarmID, alarmLoadCell ); + checkPersistentAlarm( ALARM_ID_DG_LOAD_CELL_WEIGHT_OUT_OF_RANGE, isLoadCellOutOfRange, sensorInAlarm, alarmLoadCell ); smallReadingsIdx = INC_WRAP( smallReadingsIdx, 0, SIZE_OF_SMALL_LOAD_CELL_AVG - 1 ); // filter every 100ms if ( ++loadCellFilterTimerCount >= LOAD_CELL_REPORT_PERIOD ) { - for ( ii = LOAD_CELL_RESERVOIR_1_PRIMARY; ii < NUM_OF_LOAD_CELLS; ++ii ) + for ( sensorId = LOAD_CELL_RESERVOIR_1_PRIMARY; sensorId < NUM_OF_LOAD_CELLS; ++sensorId ) { // Update large filter with new small filter weight sample - loadcells[ ii ].largeFilterTotal -= loadcells[ ii ].largeFilterReadings[ largeReadingsIdx ]; - loadcells[ ii ].largeFilterReadings[ largeReadingsIdx ] = getLoadCellSmallFilteredWeight((LOAD_CELL_ID_T) ii); - loadcells[ ii ].largeFilterTotal += getLoadCellSmallFilteredWeight((LOAD_CELL_ID_T) ii); - loadcells[ ii ].largeFilteredWeight = (F32)( loadcells[ ii ].largeFilterTotal / (F64)SIZE_OF_LARGE_LOAD_CELL_AVG ); + loadcells[ sensorId ].largeFilterTotal -= loadcells[ sensorId ].largeFilterReadings[ largeReadingsIdx ]; + loadcells[ sensorId ].largeFilterReadings[ largeReadingsIdx ] = getLoadCellSmallFilteredWeight((LOAD_CELL_ID_T) sensorId); + loadcells[ sensorId ].largeFilterTotal += getLoadCellSmallFilteredWeight((LOAD_CELL_ID_T) sensorId); + loadcells[ sensorId ].largeFilteredWeight = (F32)( loadcells[ sensorId ].largeFilterTotal / (F64)SIZE_OF_LARGE_LOAD_CELL_AVG ); } loadCellFilterTimerCount = 0; Index: firmware/App/Controllers/Pressures.c =================================================================== diff -u -rb2279059f1aa781e973ff6487a33c85615cedb4d -re6453f6070bec116e1f1e3a553eb2c6a7aac1f9d --- firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision b2279059f1aa781e973ff6487a33c85615cedb4d) +++ firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision e6453f6070bec116e1f1e3a553eb2c6a7aac1f9d) @@ -556,11 +556,11 @@ static void monitorPressureSensors( void ) { PRESSURE_SENSORS_T sensorId; - PRESSURE_SENSORS_T alarmID; - F32 pressureReading = 0.0F; - BOOL isBaroOutOfRange = FALSE; - BOOL isPressureOutOfRange = FALSE; - F32 alarmPressure = 0.0F; + PRESSURE_SENSORS_T sensorInAlarm = PRESSURE_SENSOR_RO_PUMP_INLET; + F32 pressureReading = 0.0F; + BOOL isBaroOutOfRange = FALSE; + BOOL isPressureOutOfRange = FALSE; + F32 alarmPressure = 0.0F; for ( sensorId = PRESSURE_SENSOR_RO_PUMP_INLET; sensorId < NUM_OF_PRESSURE_SENSORS; sensorId++ ) { @@ -579,7 +579,7 @@ if ( ( pressureReading < MIN_VALID_PRESSURE_RANGE_PSIA ) || ( pressureReading > MAX_VALID_PRESSURE_RANGE_PSIA ) ) { isPressureOutOfRange = TRUE; - alarmID = sensorId; + sensorInAlarm = sensorId; alarmPressure = pressureReading; } break; @@ -603,7 +603,7 @@ } // Once the sensors were all checked to be out of range, check the persistent alarm - checkPersistentAlarm( ALARM_ID_DG_PRESSURE_OUT_OF_RANGE, isPressureOutOfRange, alarmID, alarmPressure ); + checkPersistentAlarm( ALARM_ID_DG_PRESSURE_OUT_OF_RANGE, isPressureOutOfRange, sensorInAlarm, alarmPressure ); } Index: firmware/App/Controllers/TemperatureSensors.c =================================================================== diff -u -rb2279059f1aa781e973ff6487a33c85615cedb4d -re6453f6070bec116e1f1e3a553eb2c6a7aac1f9d --- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision b2279059f1aa781e973ff6487a33c85615cedb4d) +++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision e6453f6070bec116e1f1e3a553eb2c6a7aac1f9d) @@ -1025,15 +1025,15 @@ if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_TEMPERATURE_SENSORS_ALARM ) != SW_CONFIG_ENABLE_VALUE ) #endif { - TEMPERATURE_SENSORS_T i; - TEMPERATURE_SENSORS_T alarmIndex; - F32 temperature = 0.0F; - BOOL isTemperatureOutOfRange = FALSE; - F32 alarmTemperature = 0.0F; + TEMPERATURE_SENSORS_T sensorId; + TEMPERATURE_SENSORS_T sensorInAlarm = TEMPSENSORS_INLET_PRIMARY_HEATER; + F32 temperature = 0.0F; + BOOL isTemperatureOutOfRange = FALSE; + F32 alarmTemperature = 0.0F; - for ( i = TEMPSENSORS_INLET_PRIMARY_HEATER; i < NUM_OF_TEMPERATURE_SENSORS; i++ ) + for ( sensorId = TEMPSENSORS_INLET_PRIMARY_HEATER; sensorId < NUM_OF_TEMPERATURE_SENSORS; sensorId++ ) { - switch ( i ) + switch ( sensorId ) { case TEMPSENSORS_INLET_PRIMARY_HEATER: case TEMPSENSORS_HEAT_DISINFECT: @@ -1052,14 +1052,14 @@ case TEMPSENSORS_BAROMETRIC_TEMP_SENSOR: // All the temperature sensors are monitored except the heaters' temperature sensors. // The heaters' temperature sensors are only broadcast for information - temperature = getTemperatureValue( i ); + temperature = getTemperatureValue( sensorId ); // Check both temperature and to be in range - if ( ( ( temperature < TEMP_SENSORS_MIN_ALLOWED_DEGREE_C ) || ( temperature > tempSensors[ i ].maxAllowedTemp ) ) && + if ( ( ( temperature < TEMP_SENSORS_MIN_ALLOWED_DEGREE_C ) || ( temperature > tempSensors[ sensorId ].maxAllowedTemp ) ) && ( getCurrentOperationMode() != DG_MODE_INIT ) ) { isTemperatureOutOfRange |= TRUE; - alarmIndex = i; + sensorInAlarm = sensorId; alarmTemperature = temperature; } break; @@ -1071,7 +1071,7 @@ } - checkPersistentAlarm( ALARM_ID_DG_TEMPERATURE_SENSOR_OUT_OF_RANGE, isTemperatureOutOfRange, alarmIndex, alarmTemperature ); + checkPersistentAlarm( ALARM_ID_DG_TEMPERATURE_SENSOR_OUT_OF_RANGE, isTemperatureOutOfRange, sensorInAlarm, alarmTemperature ); } } Index: firmware/App/Controllers/Thermistors.c =================================================================== diff -u -r760ad8f1018cdba6f60397c698659a70774c5191 -re6453f6070bec116e1f1e3a553eb2c6a7aac1f9d --- firmware/App/Controllers/Thermistors.c (.../Thermistors.c) (revision 760ad8f1018cdba6f60397c698659a70774c5191) +++ firmware/App/Controllers/Thermistors.c (.../Thermistors.c) (revision e6453f6070bec116e1f1e3a553eb2c6a7aac1f9d) @@ -20,6 +20,7 @@ #include "FPGA.h" #include "InternalADC.h" #include "MessageSupport.h" +#include "OperationModes.h" #include "PersistentAlarm.h" #include "SystemCommMessages.h" #include "Thermistors.h" @@ -268,27 +269,27 @@ *************************************************************************/ static void monitorThermistors( void ) { - THERMISTORS_TEMP_SENSORS_T thermistor; - THERMISTORS_TEMP_SENSORS_T alarmID; + THERMISTORS_TEMP_SENSORS_T sensorId; + THERMISTORS_TEMP_SENSORS_T sensorInAlarm = THERMISTOR_ONBOARD_NTC; F32 temperature = 0.0F; BOOL isTempOutOfRange = FALSE; F32 alarmTemperature = 0.0F; - for ( thermistor = THERMISTOR_ONBOARD_NTC; thermistor < NUM_OF_THERMISTORS; thermistor++ ) + for ( sensorId = THERMISTOR_ONBOARD_NTC; sensorId < NUM_OF_THERMISTORS; sensorId++ ) { - temperature = getThermistorTemperatureValue( thermistor ); + temperature = getThermistorTemperatureValue( sensorId ); // Check if thermistor is out of range if ( ( ( temperature < MIN_ALLOWED_TEMPERATURE ) || ( temperature > MAX_ALLOWED_TEMPERATURE ) ) && ( getCurrentOperationMode() != DG_MODE_INIT ) ) { isTempOutOfRange = TRUE; - alarmID = thermistor; + sensorInAlarm = sensorId; alarmTemperature = temperature; } } - checkPersistentAlarm( ALARM_ID_DG_THERMISTORS_TEMPERATURE_OUT_OF_RANGE, isTempOutOfRange, alarmID, alarmTemperature); + checkPersistentAlarm( ALARM_ID_DG_THERMISTORS_TEMPERATURE_OUT_OF_RANGE, isTempOutOfRange, sensorInAlarm, alarmTemperature); }