Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -rd5b87d7dab8613f3963fb66f8833d210f127fa1f -r0a8d902c3a7c4883ce6692cc53e85b254cef82c4 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision d5b87d7dab8613f3963fb66f8833d210f127fa1f) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 0a8d902c3a7c4883ce6692cc53e85b254cef82c4) @@ -76,11 +76,9 @@ /// Heaters data structure typedef struct { - OVERRIDE_F32_T targetTempC; ///< Heater target temperature. HEATERS_STATE_T state; ///< Heater state. BOOL startHeaterSignal; ///< Heater start indication flag. BOOL heaterOnState; ///< Heater on/off status flag. - OVERRIDE_F32_T control; ///< Heater control ( Primary : On/Off, Trimmer : Dutycycle). F32 targetFlowLPM; ///< Heater target flow in L/min to calculate the duty cycle. F32 nomTargetFlowLPM; ///< Heater nominal target flow in L/min. BOOL hasTargetTempChanged; ///< Heater target temperature change flag indicator. @@ -98,6 +96,8 @@ } HEATER_START_CMD_PAYLOAD_T; static HEATER_STATUS_T heatersStatus[ NUM_OF_DD_HEATERS ]; ///< Heaters status. +static OVERRIDE_F32_T targetTempC[ NUM_OF_DD_HEATERS ]; ///< Heater target temperature. +static OVERRIDE_F32_T control[ NUM_OF_DD_HEATERS ]; ///< Heater control ( Primary : On/Off, Trimmer : Dutycycle). static U32 dataPublicationTimerCounter; ///< Data publication timer counter. static OVERRIDE_U32_T heatersDataPublishInterval = { HEATERS_DATA_PUBLISH_INTERVAL, HEATERS_DATA_PUBLISH_INTERVAL, 0, 0 }; ///< Heaters data publish time interval. @@ -128,17 +128,17 @@ for ( heater = DD_HEATERS_FIRST; heater < NUM_OF_DD_HEATERS; heater++ ) { - heatersStatus[ heater ].targetTempC.data = 0.0F; - heatersStatus[ heater ].targetTempC.ovData = 0.0F; - heatersStatus[ heater ].targetTempC.ovInitData = 0.0F; - heatersStatus[ heater ].targetTempC.override = OVERRIDE_RESET; + targetTempC[ heater ].data = 0.0F; + targetTempC[ heater ].ovData = 0.0F; + targetTempC[ heater ].ovInitData = 0.0F; + targetTempC[ heater ].override = OVERRIDE_RESET; heatersStatus[ heater ].state = HEATER_EXEC_STATE_OFF; heatersStatus[ heater ].startHeaterSignal = FALSE; heatersStatus[ heater ].heaterOnState = FALSE; - heatersStatus[ heater ].control.data = HEATERS_MIN_DUTY_CYCLE; - heatersStatus[ heater ].control.ovData = HEATERS_MIN_DUTY_CYCLE; - heatersStatus[ heater ].control.ovInitData = HEATERS_MIN_DUTY_CYCLE; - heatersStatus[ heater ].control.override = OVERRIDE_RESET; + control[ heater ].data = HEATERS_MIN_DUTY_CYCLE; + control[ heater ].ovData = HEATERS_MIN_DUTY_CYCLE; + control[ heater ].ovInitData = HEATERS_MIN_DUTY_CYCLE; + control[ heater ].override = OVERRIDE_RESET; heatersStatus[ heater ].targetFlowLPM = 0.0F; heatersStatus[ heater ].nomTargetFlowLPM = 0.0F; heatersStatus[ heater ].hasTargetTempChanged = FALSE; @@ -188,7 +188,7 @@ // Check if the requested temperature is within the allowed range if ( ( targetTemperature >= HEATER_TARGET_TEMPERATURE_MIN ) && ( targetTemperature <= HEATER_TARGET_TEMPERATURE_MAX ) ) { - heatersStatus[ heater ].targetTempC.data = targetTemperature; + targetTempC[ heater ].data = targetTemperature; heatersStatus[ heater ].hasTargetTempChanged = TRUE; result = TRUE; } @@ -212,7 +212,7 @@ *************************************************************************/ F32 getHeaterTargetTemperature( DD_HEATERS_T heater ) { - F32 targetTemp = getF32OverrideValue( &heatersStatus[ heater ].targetTempC ); + F32 targetTemp = getF32OverrideValue( &targetTempC[ heater ] ); return targetTemp; } @@ -271,7 +271,7 @@ { heatersStatus[ heater ].startHeaterSignal = FALSE; heatersStatus[ heater ].heaterOnState = FALSE; - heatersStatus[ heater ].control.data = HEATERS_MIN_DUTY_CYCLE; + control[ heater ].data = HEATERS_MIN_DUTY_CYCLE; heatersStatus[ heater ].state = HEATER_EXEC_STATE_OFF; // update duty cycle @@ -430,15 +430,15 @@ static HEATERS_STATE_T handleHeaterStateRampToTarget( DD_HEATERS_T heater ) { HEATERS_STATE_T state = HEATER_EXEC_STATE_RAMP_TO_TARGET; - F32 control = 0.0F; + F32 ctrl = 0.0F; DD_OP_MODE_T opMode = getCurrentOperationMode(); F32 targetTemperature = getHeaterTargetTemperature( heater ); if ( DD_PRIMARY_HEATER == heater ) { if ( DD_MODE_HEAT != opMode ) { - heatersStatus[ heater ].control.data = PRIMARY_HEATER_ON; + control[ heater ].data = PRIMARY_HEATER_ON; state = HEATER_EXEC_STATE_CONTROL_TO_TARGET; } else @@ -451,8 +451,8 @@ { if ( DD_MODE_HEAT != opMode ) { - control = ( ( targetTemperature / HEATER_TARGET_TEMPERATURE_MAX ) * HEATERS_DUTY_CYCLE_CONVERSION_FACTOR ) + FLOAT_TO_INT_ROUNDUP_OFFSET; - state = HEATER_EXEC_STATE_CONTROL_TO_TARGET; + ctrl = ( ( targetTemperature / HEATER_TARGET_TEMPERATURE_MAX ) * HEATERS_DUTY_CYCLE_CONVERSION_FACTOR ) + FLOAT_TO_INT_ROUNDUP_OFFSET; + state = HEATER_EXEC_STATE_CONTROL_TO_TARGET; } else { @@ -461,7 +461,7 @@ } // Update the duty cycle - heatersStatus[ heater ].control.data = control; + control[ heater ].data = ctrl; } setHeaterControl( heater ); @@ -484,7 +484,7 @@ HEATERS_STATE_T state = HEATER_EXEC_STATE_CONTROL_TO_TARGET; F32 targetTemperature = getHeaterTargetTemperature( heater ); F32 measuredTemperature = 0.0F; - F32 control = 0.0F; + F32 ctrl = 0.0F; if( ++heatersStatus[ heater ].controlIntervalCounter > PRIMARY_HEATER_CONTROL_INTERVAL_COUNT ) { @@ -495,12 +495,12 @@ if ( measuredTemperature >= targetTemperature ) { // Turn off heater - heatersStatus[ heater ].control.data = HEATERS_MIN_DUTY_CYCLE; + control[ heater ].data = HEATERS_MIN_DUTY_CYCLE; } else { // Turn On heater - heatersStatus[ heater ].control.data = PRIMARY_HEATER_ON; + control[ heater ].data = PRIMARY_HEATER_ON; } //control = runPIController( PI_CONTROLLER_ID_PRIMARY_HEATER, targetTemperature, measuredTemperature ); @@ -511,11 +511,11 @@ //control = runPIController( PI_CONTROLLER_ID_TRIMMER_HEATER, targetTemperature, measuredTemperature ); if ( targetTemperature > 0.0F ) { - control = HEATERS_MAX_DUTY_CYCLE - ( measuredTemperature / targetTemperature ); - control = control < 0.0F ? HEATERS_MIN_DUTY_CYCLE: control; + ctrl = HEATERS_MAX_DUTY_CYCLE - ( measuredTemperature / targetTemperature ); + ctrl = ( ctrl < 0.0F ? HEATERS_MIN_DUTY_CYCLE: ctrl ); } - heatersStatus[ heater ].control.data = ( control * HEATERS_DUTY_CYCLE_CONVERSION_FACTOR ) + FLOAT_TO_INT_ROUNDUP_OFFSET; + control[ heater ].data = ( ctrl * HEATERS_DUTY_CYCLE_CONVERSION_FACTOR ) + FLOAT_TO_INT_ROUNDUP_OFFSET; break; default: @@ -597,7 +597,7 @@ *************************************************************************/ static F32 getHeaterControl( DD_HEATERS_T heater ) { - F32 duty = getF32OverrideValue( &heatersStatus[ heater ].control ); + F32 duty = getF32OverrideValue( &control[ heater ] ); return duty; } @@ -708,7 +708,7 @@ *************************************************************************/ BOOL testHeaterDutyCycleOverride( MESSAGE_T *message ) { - BOOL result = f32ArrayOverride( message, &heatersStatus[0].control, NUM_OF_DD_HEATERS - 1 ); + BOOL result = f32ArrayOverride( message, &control[ 0 ], NUM_OF_DD_HEATERS - 1 ); return result; } @@ -725,7 +725,7 @@ *************************************************************************/ BOOL testHeaterTargetTemperatureOverride( MESSAGE_T *message ) { - BOOL result = f32ArrayOverride( message, &heatersStatus[0].targetTempC, NUM_OF_DD_HEATERS - 1 ); + BOOL result = f32ArrayOverride( message, &targetTempC[ 0 ], NUM_OF_DD_HEATERS - 1 ); return result; }