diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2019-01-03 10:37:29 +0200 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2019-01-03 10:37:29 +0200 |
| commit | becf303ec41e05660ce24fe10f0a873d1ca92a34 (patch) | |
| tree | e38ba430fb2d3dabe52c060bd839a8d365c84e85 /Software/Embedded_SW/Embedded/Modules | |
| parent | 520e878bf98efcec9c75abcfe483175ff72620a2 (diff) | |
| download | Tango-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.c | 40 |
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)); } |
