diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2020-11-02 16:38:19 +0200 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2020-11-02 16:38:19 +0200 |
| commit | 9b3914f2aa4bb0dc50ee27321f7fa9caec8d05be (patch) | |
| tree | 7a83927793e6c3e05131c39ca7cbcb92449a3980 /Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c | |
| parent | f83a99d14efab540c664a4bed826caf213e7074d (diff) | |
| download | Tango-9b3914f2aa4bb0dc50ee27321f7fa9caec8d05be.tar.gz Tango-9b3914f2aa4bb0dc50ee27321f7fa9caec8d05be.zip | |
preparation for persistant alarms, handle temperature spike, handle voltage hystersis
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c')
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c | 63 |
1 files changed, 50 insertions, 13 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 56b46c98c..e702d7072 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -1046,9 +1046,17 @@ uint32_t HeaterMaxTempCBFunction(uint32_t IfIndex, uint32_t readValue) } //int32_t readValue = MillisecGetTemperatures(HeaterId2PT100Id[index]); + if (readValue == 0) + { + ReportWithPackageFilter(HeatersFilter,"Read value 0 ignored",__FILE__,index,HeaterPreviousRead[index],RpWarning,readValue, index); + return 0xFFFFFFFF; + } if (abs(readValue - HeaterPreviousRead[index])>2000) { ReportWithPackageFilter(HeatersFilter,"Temperature Spike",__FILE__,index,HeaterPreviousRead[index],RpWarning,readValue, index); +#ifdef IGNORE_SPIKE + HeaterPreviousRead[index] = readValue; +#else if (HeaterSpikeRead[index] == 0) { HeaterSpikeRead[index] = readValue; @@ -1059,12 +1067,13 @@ uint32_t HeaterMaxTempCBFunction(uint32_t IfIndex, uint32_t readValue) HeaterPreviousRead[index] = HeaterSpikeRead[index]; HeaterSpikeRead[index] = 0; } - HeaterMaxTempFlag[index] = true; + //HeaterMaxTempFlag[index] = true; DeActivateHeater(HEATER_TYPE__DryerMainHeater); HeaterRecalculateSharedHeatersParams(HEATER_TYPE__DryerMainHeater,0); DeActivateHeater(HEATER_TYPE__DryerSecondaryHeater); HeaterRecalculateSharedHeatersParams(HEATER_TYPE__DryerSecondaryHeater,0); return ERROR; +#endif } HeaterPreviousRead[index] = readValue; if (index == HEATER_TYPE__DryerMainHeater) @@ -1309,9 +1318,18 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) //ReportWithPackageFilter(HeatersFilter, "unconfigured",__FILE__,__LINE__,0,RpError, 0,0); return ERROR; } + if (readValue == 0) + { + ReportWithPackageFilter(HeatersFilter,"Read value 0 ignored",__FILE__,index,HeaterPreviousRead[index],RpWarning,readValue, index); + return 0xFFFFFFFF; + } + if (abs(readValue - HeaterPreviousRead[index])>2000) { ReportWithPackageFilter(HeatersFilter,"AC Temperature Spike",__FILE__,index,HeaterPreviousRead[index],RpWarning,readValue, index); +#ifdef IGNORE_SPIKE + HeaterPreviousRead[index] = readValue; +#else if (readValue > HeaterCmd[index].targettemperatue) { /*if (HeaterSpikeRead[index] == 0) @@ -1340,6 +1358,7 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) } return ERROR; +#endif } if (HeaterDisasterCounter[index] >= DISASTER_COUNTER_LIMIT) { @@ -1549,9 +1568,18 @@ uint32_t DCHeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) ReportWithPackageFilter(HeatersFilter, "unconfigured",__FILE__,__LINE__,index,RpError, 0,0); return ERROR; } + if (readValue == 0) + { + ReportWithPackageFilter(HeatersFilter,"Read value 0 ignored",__FILE__,index,HeaterPreviousRead[index],RpWarning,readValue, index); + return 0xFFFFFFFF; + } + if (abs(readValue - HeaterPreviousRead[index])>2000) { ReportWithPackageFilter(HeatersFilter,"DC Temperature Spike",__FILE__,index,HeaterPreviousRead[index],RpWarning,readValue, index); +#ifdef IGNORE_SPIKE + HeaterPreviousRead[index] = readValue; +#else //if (readValue > HeaterCmd[index].targettemperatue) { DeActivateHeater(index); @@ -1567,6 +1595,7 @@ uint32_t DCHeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) HeaterSpikeRead[index] = 0; } } +#endif } HeaterPreviousRead[index] = readValue; if (HeaterDisasterCounter[index] >= DISASTER_COUNTER_LIMIT) @@ -1809,8 +1838,16 @@ double TotalCurrentLimit(double VAC) } } -uint8_t Histeresis = 0; - +#define VOLTAGE_HYSTERESIS 4 +uint8_t Hysteresis = 0, Voltage_Hysteresis = VOLTAGE_HYSTERESIS; +void Set_Voltage_Hysteresis (double Hysteresis) +{ + if ((Hysteresis>1)&&(Hysteresis<99)) + { + Voltage_Hysteresis = Hysteresis; + REPORT_MSG(Hysteresis , "Setting voltage hysteresis "); + } +} uint32_t DrierHeaterVoltageSetup(void) { double DrierAcVoltage = 0.0; @@ -1818,22 +1855,22 @@ uint32_t DrierHeaterVoltageSetup(void) bool tempDrier2 = UseSecondaryDrierHeater; double Z1Current = 0,Z2AssumedCurrent = 0,LimitCurrent = 0; - if ((Histeresis>0)&&(Histeresis<4)) + if ((Hysteresis >0)&&(Hysteresis <4)) { - Histeresis++; - REPORT_MSG(Histeresis, "AC handling Histeresis"); + Hysteresis ++; + REPORT_MSG(Hysteresis , "AC handling Hysteresis "); return OK; } - Histeresis = 0; + Hysteresis = 0; #ifndef VAC_TEST if (Head_Type > HEAD_TYPE_FLAT_WITHOUT_CARD) //rapid/pp machines #endif { DrierAcVoltage = ReadVAC(); - if (DrierAcVoltage<=180) + if ((DrierAcVoltage>120)&&(DrierAcVoltage<=180)) { - //AlarmHandlingSetAlarm(EVENT_TYPE__POWER_UP_BIT_FAILURE, true); - //ReportWithPackageFilter(HeatersFilter,"Power too low!!!!!", __FILE__,__LINE__,DrierAcVoltage, RpMessage, 0, 0); + AlarmHandlingSetAlarm(EVENT_TYPE__POWER_UP_BIT_FAILURE, true); + ReportWithPackageFilter(HeatersFilter,"Power too low!!!!!", __FILE__,__LINE__,DrierAcVoltage, RpMessage, 0, 0); } else if (DrierAcVoltage>264) { @@ -1844,11 +1881,11 @@ uint32_t DrierHeaterVoltageSetup(void) HeatersEnd(); //PowerOffPowerOff(); } - else if (DrierAcVoltage<205) + else if (DrierAcVoltage<(205-(Voltage_Hysteresis /2))) { UseSecondaryDrierHeater = true; } - else if (DrierAcVoltage>224) + else if (DrierAcVoltage>(224+(Voltage_Hysteresis /2))) { UseSecondaryDrierHeater = false; } @@ -1876,7 +1913,7 @@ uint32_t DrierHeaterVoltageSetup(void) #endif if (tempDrier2 != UseSecondaryDrierHeater) { - Histeresis = 1; + Hysteresis = 1; usnprintf(str, 100, "Changing Dryer 2 from %d to %d VAC %d D1 Current %d D2 assumed current %d limit %d" ,tempDrier2,UseSecondaryDrierHeater ,(int)DrierAcVoltage,(int)(Z1Current*100),(int)(Z2AssumedCurrent*100),(int)(abs(LimitCurrent)*100)); ReportWithPackageFilter(HeatersFilter,str, __FILE__,__LINE__,DrierAcVoltage, RpMessage, UseSecondaryDrierHeater, 0); |
