Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r77f16abd083c385b3ed9cb0c41a60dff7295022c -ra3a396aa37fb562327f05e54990f06538c7617ed --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 77f16abd083c385b3ed9cb0c41a60dff7295022c) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision a3a396aa37fb562327f05e54990f06538c7617ed) @@ -42,33 +42,33 @@ #define HEATERS_MAX_DUTY_CYCLE 1.00F ///< Heaters max duty cycle (100%) or ON state #define HEATERS_MIN_DUTY_CYCLE 0.00F ///< Heaters minimum duty cycle (0.00%) or OFF state -#define PRIMARY_HEATER_ON 1.00F ///< Primary heater ON control +#define D5_HEAT_ON 1.00F ///< Primary heater ON control #define HEATERS_DISINFECT_DUTY_CYCLE 0.80F ///< Heaters disinfect cycle. #define HEATERS_DISINFECT_TRANSFER_DUTY_CYCLE 0.60F ///< Heaters disinfect transfer duty cycle. #define HEATERS_DISINFECT_TEMPERATURE_DRIFT_C 3.0F ///< Heaters disinfect temperature drift in C. #define HEATERS_ZERO_DELTA_TEMP_C 0.0F ///< Heaters zero delta temperature in C. #define HEATERS_DUTY_CYCLE_CONVERSION_FACTOR 100.0F ///< Heaters duty cycle 0: OFF, 100: 100% duty cycle. -#define TRIMMER_HEATER_GAIN 10.0F ///< Trimmer heater gain for testing. +#define D45_HEAT_GAIN 10.0F ///< Trimmer heater gain for testing. -#define PRIMARY_HEATER_P_COEFFICIENT 1.0F ///< P Term for primary heater control. -#define PRIMARY_HEATER_I_COEFFICIENT 1.0F ///< I Term for primary heater control. -#define TRIMMER_HEATER_P_COEFFICIENT 1.0F ///< P Term for trimmer heater control. -#define TRIMMER_HEATER_I_COEFFICIENT 1.0F ///< I Term for trimmer heater control. +#define D5_HEAT_P_COEFFICIENT 1.0F ///< P Term for primary heater control. +#define D5_HEAT_I_COEFFICIENT 1.0F ///< I Term for primary heater control. +#define D45_HEAT_P_COEFFICIENT 1.0F ///< P Term for trimmer heater control. +#define D45_HEAT_I_COEFFICIENT 1.0F ///< I Term for trimmer heater control. #define HEATERS_DATA_PUBLISH_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Heaters data publish interval. #define HEATER_TEMP_CONTROL_TOLERANCE 2.0F ///< Primary Heater temp tolerance for ON/Off control #define HEATER_TARGET_TEMPERATURE_MIN 10.0F ///< Minimum allowed target temperature for the heaters. #define HEATER_TARGET_TEMPERATURE_MAX 90.0F ///< Maximum allowed target temperature for the heaters. -#define PRIMARY_HEATER_ON_NO_FLUID_TIMEOUT_MS ( 10 * MS_PER_SECOND ) ///< Primary heater on with no flow time out in milliseconds. -#define TRIMMER_HEATER_ON_NO_FLUID_TIMEOUT_MS ( 12 * MS_PER_SECOND ) ///< Trimmer heater on with no flow time out in milliseconds. +#define D5_HEAT_ON_NO_FLUID_TIMEOUT_MS ( 10 * MS_PER_SECOND ) ///< Primary heater on with no flow time out in milliseconds. +#define D45_HEAT_ON_NO_FLUID_TIMEOUT_MS ( 12 * MS_PER_SECOND ) ///< Trimmer heater on with no flow time out in milliseconds. #define HEATERS_MAX_OPERATING_VOLTAGE_V 24.0F ///< Heaters max operating voltage in volts. #define HEATERS_VOLTAGE_OUT_OF_RANGE_TIMEOUT_MS ( 2 * MS_PER_SECOND ) ///< Heaters voltage out of range time out in milliseconds. #define HEATERS_MAX_VOLTAGE_OUT_OF_RANGE_TOL 0.2F ///< Heaters max voltage out of range tolerance. -#define TRIMMER_HEATER_INITIAL_CONTROL_INTERVAL_COUNT ( ( 5 * MS_PER_SECOND ) / TASK_GENERAL_INTERVAL ) ///< Trimmer heater initial control interval count. -#define TRIMMER_HEATER_CONTROL_INTERVAL_COUNT ( ( 10 * MS_PER_SECOND ) / TASK_GENERAL_INTERVAL ) ///< Trimmer heater control interval count. -#define PRIMARY_HEATER_CONTROL_INTERVAL_COUNT ( ( 1 * MS_PER_SECOND ) / TASK_GENERAL_INTERVAL ) ///< Primary heater control interval count. +#define D45_HEAT_INITIAL_CONTROL_INTERVAL_COUNT ( ( 5 * MS_PER_SECOND ) / TASK_GENERAL_INTERVAL ) ///< Trimmer heater initial control interval count. +#define D45_HEAT_CONTROL_INTERVAL_COUNT ( ( 10 * MS_PER_SECOND ) / TASK_GENERAL_INTERVAL ) ///< Trimmer heater control interval count. +#define D5_HEAT_CONTROL_INTERVAL_COUNT ( ( 1 * MS_PER_SECOND ) / TASK_GENERAL_INTERVAL ) ///< Primary heater control interval count. #define DATA_PUBLISH_COUNTER_START_COUNT 70 ///< Data publish counter start count. @@ -150,18 +150,18 @@ } // Initialize the primary controller PI controller - initializePIController( PI_CONTROLLER_ID_PRIMARY_HEATER, HEATERS_MIN_DUTY_CYCLE, PRIMARY_HEATER_P_COEFFICIENT, PRIMARY_HEATER_I_COEFFICIENT, + initializePIController( PI_CONTROLLER_ID_D5_HEAT, HEATERS_MIN_DUTY_CYCLE, D5_HEAT_P_COEFFICIENT, D5_HEAT_I_COEFFICIENT, HEATERS_MIN_DUTY_CYCLE, HEATERS_MAX_DUTY_CYCLE ); // Initialize the trimmer heater PI controller - initializePIController( PI_CONTROLLER_ID_TRIMMER_HEATER, HEATERS_MIN_DUTY_CYCLE, TRIMMER_HEATER_P_COEFFICIENT, TRIMMER_HEATER_I_COEFFICIENT, + initializePIController( PI_CONTROLLER_ID_D45_HEAT, HEATERS_MIN_DUTY_CYCLE, D45_HEAT_P_COEFFICIENT, D45_HEAT_I_COEFFICIENT, HEATERS_MIN_DUTY_CYCLE, HEATERS_MAX_DUTY_CYCLE ); // Initialize the persistent alarms - //initPersistentAlarm( ALARM_ID_DD_PRIMARY_HEATER_VOLTAGE_OUT_OF_RANGE, 0, HEATERS_VOLTAGE_OUT_OF_RANGE_TIMEOUT_MS ); - //initPersistentAlarm( ALARM_ID_DD_TRIMMER_HEATER_VOLTAGE_OUT_OF_RANGE, 0, HEATERS_VOLTAGE_OUT_OF_RANGE_TIMEOUT_MS ); - initPersistentAlarm( ALARM_ID_DD_FLUID_TOO_LOW_WHILE_PRIMARY_HEATER_IS_ON, 0, PRIMARY_HEATER_ON_NO_FLUID_TIMEOUT_MS ); - initPersistentAlarm( ALARM_ID_DD_FLUID_TOO_LOW_WHILE_TRIMMER_HEATER_IS_ON, 0, TRIMMER_HEATER_ON_NO_FLUID_TIMEOUT_MS ); + //initPersistentAlarm( ALARM_ID_DD_D5_HEAT_VOLTAGE_OUT_OF_RANGE, 0, HEATERS_VOLTAGE_OUT_OF_RANGE_TIMEOUT_MS ); + //initPersistentAlarm( ALARM_ID_DD_D45_HEAT_VOLTAGE_OUT_OF_RANGE, 0, HEATERS_VOLTAGE_OUT_OF_RANGE_TIMEOUT_MS ); + initPersistentAlarm( ALARM_ID_DD_FLUID_TOO_LOW_WHILE_D5_HEAT_IS_ON, 0, D5_HEAT_ON_NO_FLUID_TIMEOUT_MS ); + initPersistentAlarm( ALARM_ID_DD_FLUID_TOO_LOW_WHILE_D45_HEAT_IS_ON, 0, D45_HEAT_ON_NO_FLUID_TIMEOUT_MS ); } /*********************************************************************//** @@ -357,13 +357,13 @@ switch ( heater ) { - case DD_PRIMARY_HEATER: - alarm = ALARM_ID_DD_FLUID_TOO_LOW_WHILE_PRIMARY_HEATER_IS_ON; + case D5_HEAT: + alarm = ALARM_ID_DD_FLUID_TOO_LOW_WHILE_D5_HEAT_IS_ON; isLevelLow = ( ( getLevelStatus( FLOATER_LEVEL ) != 0 )? FALSE : TRUE ); break; - case DD_TRIMMER_HEATER: - alarm = ALARM_ID_DD_FLUID_TOO_LOW_WHILE_TRIMMER_HEATER_IS_ON; + case D45_HEAT: + alarm = ALARM_ID_DD_FLUID_TOO_LOW_WHILE_D45_HEAT_IS_ON; isLevelLow = ( ( getLevelStatus( SPENT_DIALYSATE_LEVEL ) != 0 )? FALSE : TRUE ); break; @@ -376,13 +376,13 @@ } else { - if ( DD_PRIMARY_HEATER == heater ) + if ( D5_HEAT == heater ) { - checkPersistentAlarm( ALARM_ID_DD_FLUID_TOO_LOW_WHILE_PRIMARY_HEATER_IS_ON, FALSE, 0.0F, 0.0F ); + checkPersistentAlarm( ALARM_ID_DD_FLUID_TOO_LOW_WHILE_D5_HEAT_IS_ON, FALSE, 0.0F, 0.0F ); } else { - checkPersistentAlarm( ALARM_ID_DD_FLUID_TOO_LOW_WHILE_TRIMMER_HEATER_IS_ON, FALSE, 0.0F, 0.0F ); + checkPersistentAlarm( ALARM_ID_DD_FLUID_TOO_LOW_WHILE_D45_HEAT_IS_ON, FALSE, 0.0F, 0.0F ); } } } @@ -435,11 +435,11 @@ DD_OP_MODE_T opMode = getCurrentOperationMode(); F32 targetTemperature = getHeaterTargetTemperature( heater ); - if ( DD_PRIMARY_HEATER == heater ) + if ( D5_HEAT == heater ) { if ( DD_MODE_HEAT != opMode ) { - control[ heater ].data = PRIMARY_HEATER_ON; + control[ heater ].data = D5_HEAT_ON; state = HEATER_EXEC_STATE_CONTROL_TO_TARGET; } else @@ -487,11 +487,11 @@ F32 measuredTemperature = 0.0F; F32 ctrl = 0.0F; - if( ++heatersStatus[ heater ].controlIntervalCounter > PRIMARY_HEATER_CONTROL_INTERVAL_COUNT ) + if( ++heatersStatus[ heater ].controlIntervalCounter > D5_HEAT_CONTROL_INTERVAL_COUNT ) { switch ( heater ) { - case DD_PRIMARY_HEATER: + case D5_HEAT: measuredTemperature = getTemperatureValue( (U32)TEMPSENSORS_HYDRAULICS_PRIMARY_HEATER ); if ( measuredTemperature >= targetTemperature ) { @@ -501,19 +501,19 @@ else { // Turn On heater - control[ heater ].data = PRIMARY_HEATER_ON; + control[ heater ].data = D5_HEAT_ON; } - //control = runPIController( PI_CONTROLLER_ID_PRIMARY_HEATER, targetTemperature, measuredTemperature ); + //control = runPIController( PI_CONTROLLER_ID_D5_HEAT, targetTemperature, measuredTemperature ); break; - case DD_TRIMMER_HEATER: + case D45_HEAT: measuredTemperature = getTemperatureValue( (U32)TEMPSENSORS_TRIMMER_HEATER ); - //control = runPIController( PI_CONTROLLER_ID_TRIMMER_HEATER, targetTemperature, measuredTemperature ); + //control = runPIController( PI_CONTROLLER_ID_D45_HEAT, targetTemperature, measuredTemperature ); if ( targetTemperature > 0.0F ) { ctrl = HEATERS_MAX_DUTY_CYCLE - ( measuredTemperature / targetTemperature ); - ctrl = ( ctrl < 0.0F ? HEATERS_MIN_DUTY_CYCLE: ctrl * TRIMMER_HEATER_GAIN ); + ctrl = ( ctrl < 0.0F ? HEATERS_MIN_DUTY_CYCLE: ctrl * D45_HEAT_GAIN ); //Apply dutycycle limit ctrl = MIN( ctrl, HEATERS_MAX_DUTY_CYCLE ); ctrl = MAX( ctrl, HEATERS_MIN_DUTY_CYCLE ); @@ -552,8 +552,8 @@ //TODO : update dutycycle for the heat disinfect state - setHeaterControl( DD_TRIMMER_HEATER ); - setHeaterControl( DD_PRIMARY_HEATER ); + setHeaterControl( D45_HEAT ); + setHeaterControl( D5_HEAT ); return state; } @@ -576,7 +576,7 @@ control = getHeaterControl( heater ); - if ( DD_PRIMARY_HEATER == heater ) + if ( D5_HEAT == heater ) { BOOL heaterCntrl = (BOOL)control; setFPGACPrimaryHeaterOnOffControl( heaterCntrl ); @@ -612,9 +612,9 @@ * The monitorHeatersVoltage function monitors the heaters' voltages * @details \b Inputs: Voltage range * @details \b Outputs: none - * @details \b Alarms: ALARM_ID_DD_MAIN_PRIMARY_HEATER_VOLTAGE_OUT_OF_RANGE when + * @details \b Alarms: ALARM_ID_DD_MAIN_D5_HEAT_VOLTAGE_OUT_OF_RANGE when * primary heater voltage found out of range. - * @details \b Alarms: ALARM_ID_DD_TRIMMER_HEATER_VOLTAGE_OUT_OF_RANGE when + * @details \b Alarms: ALARM_ID_D45_HEAT_VOLTAGE_OUT_OF_RANGE when * trimmer heater voltage found out of range. * @return none *************************************************************************/ @@ -624,8 +624,8 @@ // F32 trimmerVoltage = getMonitoredLineLevel( MONITORED_LINE_24V_GND_TRIM_HTR_V ); // // // Voltage to PWM is reverse. If PWM = 0 -> V = 24V -// F32 mainPriDC = getHeaterControl( DD_PRIMARY_HEATER ); -// F32 trimmerDC = getHeaterControl( DD_TRIMMER_HEATER ); +// F32 mainPriDC = getHeaterControl( D5_HEAT ); +// F32 trimmerDC = getHeaterControl( D45_HEAT ); // // // The expected voltage is the inverse of the duty cycle // F32 mainPriExpectedVoltage = HEATERS_MAX_OPERATING_VOLTAGE_V * ( 1.0F - mainPriDC ); @@ -635,15 +635,15 @@ // BOOL isTrimmerOut = FALSE; // // // If the system is DVT, check the FPGA persistent alarm of the main primary heater's voltage ADC -// checkFPGAPersistentAlarms( FPGA_PERS_ERROR_MAIN_PRIMARY_HEATER_VOLTAGE_ADC, getFPGAHeaterGateADCReadCount() ); +// checkFPGAPersistentAlarms( FPGA_PERS_ERROR_MAIN_D5_HEAT_VOLTAGE_ADC, getFPGAHeaterGateADCReadCount() ); // // isMainPriOut = ( fabs( mainPriExpectedVoltage - mainPriVoltage ) > HEATERS_VOLTAGE_TOLERANCE_V ? TRUE : FALSE ); // isTrimmerOut = ( fabs( trimmerExpectedVoltage - trimmerVoltage ) > HEATERS_VOLTAGE_TOLERANCE_V ? TRUE : FALSE ); // // if ( getCurrentOperationMode() != DD_MODE_INIT ) // { -// checkPersistentAlarm( ALARM_ID_DD_MAIN_PRIMARY_HEATER_VOLTAGE_OUT_OF_RANGE, isMainPriOut, mainPriDC, HEATERS_VOLTAGE_TOLERANCE_V ); -// checkPersistentAlarm( ALARM_ID_DD_TRIMMER_HEATER_VOLTAGE_OUT_OF_RANGE, isTrimmerOut, trimmerDC, HEATERS_VOLTAGE_TOLERANCE_V ); +// checkPersistentAlarm( ALARM_ID_DD_MAIN_D5_HEAT_VOLTAGE_OUT_OF_RANGE, isMainPriOut, mainPriDC, HEATERS_VOLTAGE_TOLERANCE_V ); +// checkPersistentAlarm( ALARM_ID_D45_HEAT_VOLTAGE_OUT_OF_RANGE, isTrimmerOut, trimmerDC, HEATERS_VOLTAGE_TOLERANCE_V ); // } //} @@ -663,14 +663,14 @@ { HEATERS_DATA_T data; - data.mainPrimayHeaterDC = getHeaterControl( DD_PRIMARY_HEATER ); - data.trimmerHeaterDC = getHeaterControl( DD_TRIMMER_HEATER ); - data.primaryTargetTemp = getHeaterTargetTemperature( DD_PRIMARY_HEATER ); - data.trimmerTargetTemp = getHeaterTargetTemperature( DD_TRIMMER_HEATER ); - data.primaryHeaterState = heatersStatus[ DD_PRIMARY_HEATER ].state; - data.trimmerHeaterState = heatersStatus[ DD_TRIMMER_HEATER ].state; - data.primaryControlCounter = heatersStatus[ DD_PRIMARY_HEATER ].controlIntervalCounter; - data.trimmerControlCounter = heatersStatus[ DD_TRIMMER_HEATER ].controlIntervalCounter; + data.d5_HeaterDC = getHeaterControl( D5_HEAT ); + data.d45_HeaterDC = getHeaterControl( D45_HEAT ); + data.d5_HeaterTargetTemp = getHeaterTargetTemperature( D5_HEAT ); + data.d45_HeaterTargetTemp = getHeaterTargetTemperature( D45_HEAT ); + data.d5_HeaterState = heatersStatus[ D5_HEAT ].state; + data.d45_HeaterState = heatersStatus[ D45_HEAT ].state; + data.d5_HeaterControlCounter = heatersStatus[ D5_HEAT ].controlIntervalCounter; + data.d45_HeaterControlCounter = heatersStatus[ D45_HEAT ].controlIntervalCounter; dataPublicationTimerCounter = 0;