aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/Heaters
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-11-02 16:38:19 +0200
committerShlomo Hecht <shlomo@twine-s.com>2020-11-02 16:38:19 +0200
commit9b3914f2aa4bb0dc50ee27321f7fa9caec8d05be (patch)
tree7a83927793e6c3e05131c39ca7cbcb92449a3980 /Software/Embedded_SW/Embedded/Modules/Heaters
parentf83a99d14efab540c664a4bed826caf213e7074d (diff)
downloadTango-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')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c63
2 files changed, 51 insertions, 13 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
index e85694c48..2c675606b 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
@@ -29,6 +29,7 @@ bool HeaterCheckReady(void);
bool isHeaterReady(uint8_t HeaterId);
bool HeaterGetOverTemperatureState(uint8_t HeaterId);
+void Set_Voltage_Hysteresis (double Hysteresis);
void LoadHeaterState(HeaterType HeaterType,HeaterState *HeaterState);
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);