aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2019-01-03 10:37:29 +0200
committerShlomo Hecht <shlomo@twine-s.com>2019-01-03 10:37:29 +0200
commitbecf303ec41e05660ce24fe10f0a873d1ca92a34 (patch)
treee38ba430fb2d3dabe52c060bd839a8d365c84e85 /Software/Embedded_SW/Embedded/Modules
parent520e878bf98efcec9c75abcfe483175ff72620a2 (diff)
downloadTango-becf303ec41e05660ce24fe10f0a873d1ca92a34.tar.gz
Tango-becf303ec41e05660ce24fe10f0a873d1ca92a34.zip
fix initial heating- PID started too early
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c40
1 files changed, 26 insertions, 14 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
index a985c7570..d27c1bcc9 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
@@ -155,8 +155,8 @@ uint32_t LoadHeaterSetPoint(HeaterType HeaterType)
void LoadHeaterState(HeaterType HeaterType,HeaterState *HeaterState)
{
int HeaterId = HeaterType;
- //double temp = TemperatureSensorRead(HeaterId2PT100Id[HeaterId]);
- double temp = HeaterPreviousRead[HeaterId];//TemperatureSensorRead(HeaterId2PT100Id[HeaterId]);
+ double temp = TemperatureSensorRead(HeaterId2PT100Id[HeaterId]);
+ //double temp = HeaterPreviousRead[HeaterId];//TemperatureSensorRead(HeaterId2PT100Id[HeaterId]);
@@ -336,7 +336,7 @@ uint32_t HeaterCommandRequestMessage(int HeaterId, bool OnOff, int Temperature)
*/
uint32_t PrepareHeater(int HeaterId, uint32_t SetTemperatue)
{
- CTRL_TIMING_ENUM Frequency = eHundredMillisecond;
+ CTRL_TIMING_ENUM Frequency = eOneSecond;
if(HeaterId >= MAX_HEATERS_NUM)
{
LOG_ERROR (HeaterId,"HeaterId too high");
@@ -563,19 +563,25 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
return OK;
}
- {
+/* {
InitialHeating = false;
DeActivateHeater(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary);
HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary, 0);
HeatersControlStart();
//HeaterReady[index] = true;
//HeaterPrepareReady();
- }
+ }*/
}
if (HeaterReady[index]==false)
{
if ((readValue > (HeaterCmd[index].targettemperatue * 995/1000))&&(readValue < (HeaterCmd[index].targettemperatue * 1005/1000)))//read value within 0.5 percent from target
{
+//////////////////
+ InitialHeating = false;
+ DeActivateHeater(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary);
+ HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary, 0);
+ HeatersControlStart();
+////////////////////////
HeaterReady[index] = true;
HeaterPrepareReady();
if (BlowerCfg.enabled == true)
@@ -586,6 +592,7 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
}
}
+ return OK;
}
if(HeaterPIDConfig[index].m_isEnabled && (HeaterPIDConfig[index].m_SetParam != 0))
{
@@ -612,7 +619,7 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
}
else
{
- HeaterPIDConfig[index].m_calculatedError = AdvancedPIDAlgorithmCalculation(HeaterPIDConfig[index].m_SetParam , HeaterPIDConfig[index].m_mesuredParam,
+ HeaterPIDConfig[index].m_calculatedError = PIDAlgorithmCalculation(HeaterPIDConfig[index].m_SetParam , HeaterPIDConfig[index].m_mesuredParam,
&HeaterPIDConfig[index].m_params, &HeaterPIDConfig[index].m_preError, &HeaterPIDConfig[index].m_integral);
}
// len = usnprintf(ACheatstr, 254, "ACD Id, Temp , Integral, Output{ %d, %d ,%d, %d} ",index,(int)HeaterPIDConfig[index].m_mesuredParam ,(int)HeaterPIDConfig[index].m_integral,(int)HeaterPIDConfig[index].m_calculatedError);
@@ -637,6 +644,7 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
//int Counter[HARDWARE_PID_CONTROL_TYPE__MixerHeater] = {0,0,0,0,0,0,0};
//char logmsg[HARDWARE_PID_CONTROL_TYPE__MixerHeater][254];
char heatstr[100];
+//float temp_calculatedError=0,temp_preError = 0, temp_integral = 0;
uint32_t DCHeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
{
@@ -686,8 +694,8 @@ uint32_t DCHeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
}
{
- DCInitialHeating[index] = false;
- HeatersControlStart();
+// DCInitialHeating[index] = false;
+// HeatersControlStart();
//HeaterReady[index] = true;
//HeaterPrepareReady();
}
@@ -696,9 +704,12 @@ uint32_t DCHeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
{
if ((readValue > (HeaterCmd[index].targettemperatue * 998/1000))&&(readValue < (HeaterCmd[index].targettemperatue * 1002/1000)))//read value within 0.5 percent from target
{
+ DCInitialHeating[index] = false;
+ HeatersControlStart();
HeaterReady[index] = true;
HeaterPrepareReady();
}
+ return OK;
}
if(HeaterPIDConfig[index].m_isEnabled && (HeaterPIDConfig[index].m_SetParam != 0))
@@ -726,8 +737,14 @@ uint32_t DCHeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
}
else
{
- HeaterPIDConfig[index].m_calculatedError = AdvancedPIDAlgorithmCalculation(HeaterPIDConfig[index].m_SetParam , HeaterPIDConfig[index].m_mesuredParam,
+ //temp_preError = HeaterPIDConfig[index].m_preError; temp_integral = HeaterPIDConfig[index].m_integral;
+ //temp_calculatedError = AdvancedPIDAlgorithmCalculation(HeaterPIDConfig[index].m_SetParam , HeaterPIDConfig[index].m_mesuredParam,
+ // &HeaterPIDConfig[index].m_params, &temp_preError, &temp_integral);
+ HeaterPIDConfig[index].m_calculatedError = PIDAlgorithmCalculation(HeaterPIDConfig[index].m_SetParam , HeaterPIDConfig[index].m_mesuredParam,
&HeaterPIDConfig[index].m_params, &HeaterPIDConfig[index].m_preError, &HeaterPIDConfig[index].m_integral);
+ //len = usnprintf(heatstr, 100, "ACD Id, Temp , Integral, Output,AdvIntegral, AdvOutput{ %d, %d ,%d, %d,%d, %d} ",index,(int)HeaterPIDConfig[index].m_mesuredParam ,
+ // (int)HeaterPIDConfig[index].m_integral,(int)HeaterPIDConfig[index].m_calculatedError,(int)temp_integral,(int)temp_calculatedError);
+ //Report(heatstr,__FILE__,__LINE__,index,RpWarning,index, readValue);
}
// error[index][Counter[index]] = HeaterPIDConfig[index].m_preError;
// integral[index][Counter[index]] = HeaterPIDConfig[index].m_integral;
@@ -736,11 +753,6 @@ uint32_t DCHeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
// Counter[index] = 0;
// Report(logmsg[index],__FILE__,__LINE__,index,RpWarning,index, Counter[index]);
// #warning PID is now only proportional (above)
- if (index == HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2)
- {
- // len = usnprintf(heatstr, 254, "PID id, Temp, Integral, Output { %d, %d ,%d, %d}",index,(int)HeaterPIDConfig[index].m_mesuredParam ,(int)HeaterPIDConfig[index].m_integral,(int)HeaterPIDConfig[index].m_calculatedError);
- // Report(heatstr,__FILE__,__LINE__,index,RpWarning,HeaterPIDConfig[index].m_calculatedError,0);
- }
HeaterRecalculateHeaterParams(index, (int)(HeaterPIDConfig[index].m_calculatedError/100));
}