diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2020-10-18 15:02:21 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2020-10-18 15:02:21 +0300 |
| commit | 69efdab62748d6411da35dbfdc390c4029193b6b (patch) | |
| tree | 2e5cb3e1a48f17b7cf6fc2e845b0872e42775ab9 /Software/Embedded_SW/Embedded/Modules | |
| parent | 9c78f978589d5a1b8c4ff701a80e3e3b2bf3bee0 (diff) | |
| parent | 539d2e2f5987f7aa1b4d6be493a72376680e0145 (diff) | |
| download | Tango-69efdab62748d6411da35dbfdc390c4029193b6b.tar.gz Tango-69efdab62748d6411da35dbfdc390c4029193b6b.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
3 files changed, 51 insertions, 132 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_Blowers.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_Blowers.c index f76480aaf..8f00dbe47 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_Blowers.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_Blowers.c @@ -72,6 +72,9 @@ typedef struct }HeadBlowerConfig; HeadBlowerConfig HeadBlowerControl[2] = {0,0}; +/******************** FUNCTIONS ********************************************/ +int HeadBlowersGetPWM(uint8_t blowerId); + /******************************************************************************** * Arc Head Pressure sensors *******************************************************************************/ diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index b5e0d467f..275a96cd6 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -95,6 +95,7 @@ uint32_t ControlIdtoHeaterId [HEATER_TYPE_MAX_HEATERS] = {0xFF,0xFF,0xFF,0 uint32_t ControlIdtoMaxHeaterId [HEATER_TYPE_MAX_HEATERS] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; uint32_t OverHeatCounter [HEATER_TYPE_MAX_HEATERS] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; uint32_t BlowerOverHeatCounter[HEATER_TYPE_MAX_HEATERS] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; +uint32_t BlowersControlIdtoMaxHeaterId [HEATER_TYPE_MAX_HEATERS] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; uint32_t UnderHeatCounter [HEATER_TYPE_MAX_HEATERS] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; uint32_t MainDryerHeaterMaxTempControl = 0xFF; uint32_t SecondDryerHeaterMaxTempControl = 0xFF; @@ -244,6 +245,7 @@ uint32_t DryerInternalPT100Id = DRYER_AIR_PT100; bool HeatersRestart = false; bool HeaterMaxTempFlag[HEATER_TYPE_MAX_HEATERS] = {false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false}; +bool BlowerHeaterMaxTempFlag[HEATER_TYPE_MAX_HEATERS] = {false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false}; bool HeaterMinTempFlag[HEATER_TYPE_MAX_HEATERS] = {true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true}; uint32_t OutputProportionalSingleStep = 0; //A/C Heaters step size from one decision point to another - in cpu clocks. 120000 = 1 millisecod @@ -289,7 +291,6 @@ uint32_t HeatersDisasterControl(uint32_t x,uint32_t y); uint32_t PrepareHeater(int HeaterId, uint32_t SetTemperatue); void HeatersStartControlTimer (void); -int HeadBlowersGetPWM(uint8_t blowerId); //********************************************************************** //******************** CODE *******************************************/ @@ -514,6 +515,13 @@ uint32_t HeatersSingleHeaterEnd(int HeaterId) status |= RemoveControlCallback(ControlIdtoMaxHeaterId [HeaterId], DcHeaterMaxTempCBFunction); ControlIdtoMaxHeaterId [HeaterId]=0xFF; } +#ifdef USE_TUNNEL_PT100 + if (BlowersControlIdtoMaxHeaterId [HeaterId]!=0xFF) + { + status |= RemoveControlCallback(BlowersControlIdtoMaxHeaterId [HeaterId], HeaterBlowerMaxTempCBFunction); + BlowersControlIdtoMaxHeaterId [HeaterId]=0xFF; + } +#endif HeaterRecalculateHeaterParams(HeaterId, 0); DeActivateHeater(HeaterId); HeaterPIDConfig[HeaterId].m_SetParam = 0; @@ -765,6 +773,13 @@ void PrepareACHeater(int HeaterId,uint32_t Frequency, uint32_t SetTemperatue) RemoveControlCallback(ControlIdtoMaxHeaterId [HeaterId], DcHeaterMaxTempCBFunction); ControlIdtoMaxHeaterId [HeaterId] = 0xFF; } +#ifdef USE_TUNNEL_PT100 + if (BlowersControlIdtoMaxHeaterId [HeaterId]!=0xFF) + { + RemoveControlCallback(BlowersControlIdtoMaxHeaterId [HeaterId], HeaterBlowerMaxTempCBFunction); + BlowersControlIdtoMaxHeaterId [HeaterId] = 0xFF; + } +#endif if (ControlIdtoHeaterId [HeaterId] != 0xFF) { RemoveControlCallback(ControlIdtoHeaterId [HeaterId], DCHeaterControlCBFunction); @@ -848,6 +863,13 @@ int PrepareDCHeater(int HeaterId, uint32_t Frequency, uint32_t SetTemperatue) RemoveControlCallback(ControlIdtoMaxHeaterId [HeaterId], DcHeaterMaxTempCBFunction); ControlIdtoMaxHeaterId [HeaterId] = 0xFF; } +#ifdef USE_TUNNEL_PT100 + if (BlowersControlIdtoMaxHeaterId [HeaterId]!=0xFF) + { + RemoveControlCallback(BlowersControlIdtoMaxHeaterId [HeaterId], HeaterBlowerMaxTempCBFunction); + BlowersControlIdtoMaxHeaterId [HeaterId]=0xFF; + } +#endif if (ControlIdtoHeaterId [HeaterId] != 0xFF) { RemoveControlCallback(ControlIdtoHeaterId [HeaterId], DCHeaterControlCBFunction); @@ -881,18 +903,15 @@ int PrepareDCHeater(int HeaterId, uint32_t Frequency, uint32_t SetTemperatue) } //ReportWithPackageFilter(HeatersFilter,"PrepareHeater Read", __FILE__,HeaterId, SetTemperatue, RpWarning,HeaterPreviousRead[HeaterId], 0); - if ((HeaterId != HEATER_TYPE__HeadCoverHeater1)&&(HeaterId != HEATER_TYPE__HeadCoverHeater2)) //tunnel Heaters -#warning ronen, what is happening here? what is the difference between if and else? - { - if (ControlIdtoMaxHeaterId [HeaterId] == 0xFF) - ControlIdtoMaxHeaterId [HeaterId] = AddControlCallback("DcHeatersMax", DcHeaterMaxTempCBFunction, eOneSecond,MillisecGetTemperatures,(IfTypeHeaters*0x100+HeaterId),HeaterId2PT100Id[HeaterId],0); - } - else + if (ControlIdtoMaxHeaterId [HeaterId] == 0xFF) + ControlIdtoMaxHeaterId [HeaterId] = AddControlCallback("DcHeatersMax", DcHeaterMaxTempCBFunction, eOneSecond,MillisecGetTemperatures,(IfTypeHeaters*0x100+HeaterId),HeaterId2PT100Id[HeaterId],0); +#ifdef USE_TUNNEL_PT100 + if ((HeaterId == HEATER_TYPE__HeadCoverHeater1)||(HeaterId == HEATER_TYPE__HeadCoverHeater2)) //tunnel Heaters { - if (ControlIdtoMaxHeaterId [HeaterId] == 0xFF) - ControlIdtoMaxHeaterId [HeaterId] = AddControlCallback("DcHeatersMax", HeaterBlowerMaxTempCBFunction, eOneSecond,MillisecGetTemperatures,(IfTypeHeaters*0x100+HeaterId),HeaterId2PT100Id[HeaterId],0); + if (BlowersControlIdtoMaxHeaterId [HeaterId] == 0xFF) + BlowersControlIdtoMaxHeaterId [HeaterId] = AddControlCallback("DcHeatersMax", HeaterBlowerMaxTempCBFunction, eOneSecond,MillisecGetTemperatures,(IfTypeHeaters*0x100+HeaterId),HeaterId2PT100Id[HeaterId],0); } - +#endif return OK; } /* @@ -1126,22 +1145,8 @@ uint32_t HeaterBlowerMaxTempCBFunction(uint32_t IfIndex, uint32_t readValue) } } - if (BlowerPt100Read > 25500) + if (BlowerPt100Read > 26000) { -#warning ronen, no need for histeresis here, only in alarm handling below - /*if(BlowerOverHeatCounter[index]++ >= Overheat_Count_Limit) - { - BlowerOverHeatCounter[index] = Overheat_Count_Limit; - - if ((HeaterReady[index]==false)&&(HeaterPreviousRead[index]>HeaterCmd[index].targettemperatue)) - { - ReportWithPackageFilter(HeatersFilter,"DC Heater Over the max temperature, cooling off",__FILE__,index,HeaterPreviousRead[index],RpWarning, HeaterCmd[index].targettemperatue,0); - } - else - { - ReportWithPackageFilter(HeatersFilter,"DC Heater Over the max temperature, turned off",__FILE__,index,HeaterPreviousRead[index],RpWarning, HeaterReady[index],0); - } - }*/ if (index == HEATER_TYPE__HeadCoverHeater1) { DeActivateHeater(HEATER_TYPE__HeadCoverHeater1); @@ -1152,106 +1157,11 @@ uint32_t HeaterBlowerMaxTempCBFunction(uint32_t IfIndex, uint32_t readValue) DeActivateHeater(HEATER_TYPE__HeadCoverHeater2); HeaterRecalculateHeaterParams(HEATER_TYPE__HeadCoverHeater2,0); } - HeaterMaxTempFlag[index] = true; + BlowerHeaterMaxTempFlag[index] = true; } else { - //if (BlowerOverHeatCounter[index]) - //{ - if (BlowerPt100Read <= 25300) - // { - // BlowerOverHeatCounter[index]--; - // if (BlowerOverHeatCounter[index]==0) - { - HeaterMaxTempFlag[index] = false; - } - // } - //} - } - - // alarm handling - if ((HeaterPreviousRead[index] >= HeaterControl[index].sensormaxvalue) && (HeaterCmd[index].targettemperatue)) - { -#warning ronen actually counters are handled twice! - if(OverHeatCounter[index]++ >=Overheat_Count_Limit) - { - OverHeatCounter[index] = Overheat_Count_Limit; - if (JobIsActive()&&(HeaterReady[index]==true)) - { - JobEndReason = JOB_TEMPERATURE_ALARM; - SendJobProgress(0.0,0,false, "Temperature Error"); - AbortJob("Over Temperature Error"); - ReportWithPackageFilter(HeatersFilter, "Temperature Error",__FILE__,__LINE__,index,RpError, 0,0); - return OK; - } - - if ((HeaterReady[index]==false)&&(HeaterPreviousRead[index]>HeaterCmd[index].targettemperatue)) - { - ReportWithPackageFilter(HeatersFilter,"DC Heater Over the max temperature, cooling off",__FILE__,index,HeaterPreviousRead[index],RpWarning, HeaterCmd[index].targettemperatue,0); - } - else - { - ReportWithPackageFilter(HeatersFilter,"DC Heater Over the max temperature, turned off",__FILE__,index,HeaterPreviousRead[index],RpWarning, HeaterReady[index],0); - ReportWithPackageFilter(HeatersFilter,"Heater over the max temperature",__FILE__,index,OverHeatCounter[index],RpWarning,HeaterControl[index].sensormaxvalue, 0); - AlarmHandlingSetAlarm(HeaterEventType[index], true); - } - } - } - else if ((HeaterPreviousRead[index] < HeaterControl[index].sensormaxvalue) && (!HeaterCmd[index].targettemperatue)) - { - if(OverHeatCounter[index]++ >=Overheat_Count_Limit) - #warning ronen why increasing the counter here? ??? + if (BlowerPt100Read <= 25800) { - OverHeatCounter[index] = Overheat_Count_Limit; - AlarmHandlingSetAlarm(HeaterEventType[index], false); - } - } - else if ((HeaterPreviousRead[index]) < (HeaterControl[index].sensorminvalue)) - #warning enter all this area only when target temperature is set (actually, this control call should be stopped on Heater_end() togehter with couter = zero and alarms off - { - if (HeaterReady[index]==true) - { - ReportWithPackageFilter(HeatersFilter,"Heater under the min temperature",__FILE__,index,UnderHeatCounter[index],RpWarning,HeaterControl[index].sensorminvalue, 0); - ReportWithPackageFilter(HeatersFilter,"Heater under the min temperature more info",__FILE__,HeaterReady[index],GetHeaterState(index),RpWarning,HeaterPreviousRead[index], 0); - } - if(UnderHeatCounter[index]++ >= Underheat_Count_Limit) - { - UnderHeatCounter[index] = Underheat_Count_Limit; - if (JobIsActive()&&(HeaterReady[index]==true)) - { - JobEndReason = JOB_TEMPERATURE_ALARM; - SendJobProgress(0.0,0,false, "Temperature Error"); - AbortJob("Under Temperature Error"); - ReportWithPackageFilter(HeatersFilter, "Temperature Error",__FILE__,__LINE__,index,RpError, 0,0); - return OK; - } - if (HeaterReady[index]==false) - AlarmHandlingSetAlarm(HeaterUnderEventType[index], true); - else - AlarmHandlingSetAlarm(HeaterUnderEventType_B[index], true); - } - } - else //temperature within limits - { - if(UnderHeatCounter[index] ) - { - UnderHeatCounter[index]--; - if (UnderHeatCounter[index]==0) - { - if (HeaterReady[index]==false) - AlarmHandlingSetAlarm(HeaterUnderEventType[index], false); - else - AlarmHandlingSetAlarm(HeaterUnderEventType_B[index], false); - } - } - if(OverHeatCounter[index] ) - { - if ((HeaterPreviousRead[index]) <= (HeaterControl[index].sensormaxvalue-2)) - { - OverHeatCounter[index]--; - if (OverHeatCounter[index]==0) - { - AlarmHandlingSetAlarm(HeaterEventType[index], false); - } - } + BlowerHeaterMaxTempFlag[index] = false; } } return OK; @@ -1687,7 +1597,7 @@ uint32_t DCHeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) } if (readValue < ((HeaterCmd[index].targettemperatue * (100-HeaterControl[index].outputproportionalband))/100)) { - if (HeaterMaxTempFlag[index] == false) + if ((HeaterMaxTempFlag[index] == false) && (BlowerHeaterMaxTempFlag[index] == false)) ActivateHeater(index); //HeaterRecalculateHeaterParams(index, 100); //Heaters OFF until coming into the proportional band @@ -1867,11 +1777,17 @@ void HeaterSafetyTestSetLimits(int limit) HeaterDisasterTemp[i] = limit; RemoveControlCallback(ControlIdtoMaxHeaterId [i], DcHeaterMaxTempCBFunction); } - RemoveControlCallback(DisasterControlId, HeatersDisasterControl); - RemoveControlCallback(MainDryerHeaterMaxTempControl ,HeaterMaxTempCBFunction); - RemoveControlCallback(SecondDryerHeaterMaxTempControl ,HeaterMaxTempCBFunction); - - MaxAllowedTemperature = limit+1; + RemoveControlCallback(DisasterControlId, HeatersDisasterControl); + RemoveControlCallback(MainDryerHeaterMaxTempControl ,HeaterMaxTempCBFunction); + RemoveControlCallback(SecondDryerHeaterMaxTempControl ,HeaterMaxTempCBFunction); +#ifdef USE_TUNNEL_PT100 + for(i = HEATER_TYPE__HeadCoverHeater1; i<=HEATER_TYPE__HeadCoverHeater2;i++) + { + HeaterDisasterTemp[i] = limit; + RemoveControlCallback(BlowersControlIdtoMaxHeaterId [i], HeaterBlowerMaxTempCBFunction); + } +#endif + MaxAllowedTemperature = limit+1; } double TotalCurrentLimit(double VAC) @@ -2055,7 +1971,7 @@ uint32_t HeatersControlLoop(uint32_t tick) { if (SliceCounter == DcHeaterId) { - if (HeaterMaxTempFlag[DcHeaterId] == false) + if ((HeaterMaxTempFlag[DcHeaterId] == false) && (BlowerHeaterMaxTempFlag[DcHeaterId] == false)) { ActivateHeater (DcHeaterId); } diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index 9b700bf4f..97a269105 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -163,7 +163,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) else if(request->amount == 0xb05) { - response.progress = Test_Uart3(request->delay); + response.progress = Test_Uart3(request->delay);//test Shinko response.has_progress = true; } else |
