aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2020-11-22 11:31:17 +0200
committerAvi Levkovich <avi@twine-s.com>2020-11-22 11:31:17 +0200
commit712a01ddb6ba8e226d6532cdb834ad8e8b521cd5 (patch)
treed3f6744f637743fbe338ba7e68d627be1437f500 /Software/Embedded_SW
parent58d96d90f9422d390658d328d4f6eb3b86d168fa (diff)
parenta5776d0c00f131ec71b5e0300a0282b224530b0d (diff)
downloadTango-712a01ddb6ba8e226d6532cdb834ad8e8b521cd5.tar.gz
Tango-712a01ddb6ba8e226d6532cdb834ad8e8b521cd5.zip
merge conflict
Diffstat (limited to 'Software/Embedded_SW')
-rw-r--r--Software/Embedded_SW/Embedded/Common/Utilities/ustdlib.c2
-rw-r--r--Software/Embedded_SW/Embedded/Communication/Connection.c2
-rw-r--r--Software/Embedded_SW/Embedded/DataDef.h1
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/IO_Extender_Ports_TCA9555/WHS_IO.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c3
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.h1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c10
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_Blowers.c84
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c46
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c10
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c64
-rw-r--r--Software/Embedded_SW/Embedded/Software Release Notes.txt12
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c3
15 files changed, 174 insertions, 69 deletions
diff --git a/Software/Embedded_SW/Embedded/Common/Utilities/ustdlib.c b/Software/Embedded_SW/Embedded/Common/Utilities/ustdlib.c
index 420e1dbc3..749152b2e 100644
--- a/Software/Embedded_SW/Embedded/Common/Utilities/ustdlib.c
+++ b/Software/Embedded_SW/Embedded/Common/Utilities/ustdlib.c
@@ -819,7 +819,7 @@ usnprintf(char * restrict s, size_t n, const char * restrict format, ...)
//
// Call vsnprintf to perform the conversion.
//
- ret = uvsnprintf(s, n, format, arg);
+ ret = vsnprintf(s, n, format, arg);
//
// End the varargs processing.
diff --git a/Software/Embedded_SW/Embedded/Communication/Connection.c b/Software/Embedded_SW/Embedded/Communication/Connection.c
index 72108eeea..5396938fd 100644
--- a/Software/Embedded_SW/Embedded/Communication/Connection.c
+++ b/Software/Embedded_SW/Embedded/Communication/Connection.c
@@ -53,6 +53,7 @@ void StopRecurringReports(void)
PowerUpStopReporting();
MachineUpdateStopReporting();
PowerDownStopReporting();
+ HomingStopReporting();
KeepAliveActive = false;
}
@@ -159,6 +160,7 @@ void DisconnectionRequest(MessageContainer* requestContainer)
DiagnosticsStop();
JobStopReporting();
AlarmHandlingStop();
+ HomingStopReporting();
//UART_ResetBuffers();
//-------------------------------------------------------------------------------------------
uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer));
diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h
index 3cd3969be..9f13f65ce 100644
--- a/Software/Embedded_SW/Embedded/DataDef.h
+++ b/Software/Embedded_SW/Embedded/DataDef.h
@@ -659,7 +659,6 @@ Supports diagnostic <id> (--diag_suppress, - pds)
#define HEAD6_PT100 TEMP_SENSE_AN_ENCLOSURETEMP3
#define MIXER_PT100 TEMP_SENSE_ANALOG_MIXCHIP_TEMP
-//#define LUBRICANT_DISPENSER 7
#ifdef LIGHT_COLORS
#define LUBRICANT_DISPENSER 9
#define CLEANER_DISPENSER 9
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/IO_Extender_Ports_TCA9555/WHS_IO.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/IO_Extender_Ports_TCA9555/WHS_IO.c
index 3e36d3bba..ea45c89fe 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/IO_Extender_Ports_TCA9555/WHS_IO.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/IO_Extender_Ports_TCA9555/WHS_IO.c
@@ -689,7 +689,7 @@ bool WHS_Control_blub(bool value)
}
else
{
- #warning Add warning message
+ LOG_ERROR (WHS_HW_Ver, "wrong whs hw version");
status = ERROR;
}
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
index 5f6cdf1c6..8beab771d 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
@@ -540,7 +540,8 @@ int MillisecCalculateTemperatures (TEMPERATURE_SENSOR_ID_ENUM SensorId)
TemperatureSum[SensorId]-=TemperatureMax[SensorId];
TemperatureSum[SensorId]-=TemperatureMin[SensorId];
calc = TemperatureSum[SensorId] / (TemperatureCount[SensorId]-2);
-
+ if (abs(TemperatureMax[SensorId]-TemperatureMin[SensorId])>2000)
+ Report("Millisec Temp spike",__FILE__,SensorId,(int)TemperatureMax[SensorId],RpWarning,(int) TemperatureMin[SensorId],0);
TemperatureSum[SensorId] = 0;
TemperatureCount[SensorId] = 0;
TemperatureMin[SensorId] = 30000;
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
index 4122955b3..11a48b587 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
@@ -545,7 +545,7 @@ void CopyTemperaturesToMonitor(void)
headblowervoltage2 = HeadBlowersGetRPM(HEAD_FAN_LEFT);
DiagnosticsMonitor.headblowervoltage1 = &headblowervoltage1;
DiagnosticsMonitor.headblowervoltage2 = &headblowervoltage2;
-#warning machine to machine test
+//#warning machine to machine test
DiagnosticsMonitor.headzone4temperature =
HeaterTemperature[HEATER_TYPE__HeaterZone4];
DiagnosticsMonitor.headzone9temperature =
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.h b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.h
index 7ec1962f3..e0afad820 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.h
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.h
@@ -54,6 +54,7 @@ uint32_t SetBlowerStateRequestFunc(MessageContainer* requestContainer);
void DiaglosticChangeBlowerData();
+void HomingStopReporting(void);
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c
index 9a14cd1b8..086525bc1 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c
@@ -46,6 +46,16 @@ uint32_t Diagnostics_Dryer_UnLoading(void);
uint32_t Diagnostics_Dryer_Loading(void);
int kval_upper_value;
+void HomingStopReporting(void)
+{
+ int i;
+ for (i = 0; i< NUM_OF_MOTORS;i++)
+ {
+ HomingToken[i][0] == 0;
+ }
+ LOG_ERROR(0,"HomingStopReporting");
+}
+
/********************************************************************************
* Motor Homing
********************************************************************************/
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_Blowers.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_Blowers.c
index 5134e97aa..946958a08 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_Blowers.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_Blowers.c
@@ -212,108 +212,148 @@ uint32_t HeadBlowersOffGet()
ReportWithPackageFilter(HeatersFilter,"HeadBlowersOffGet",__FILE__,__LINE__,HeadBlowersEnable,RpError, 0,0);
return HeadBlowersEnable;
}
+static int8_t count1 = 0, count2 = 0, count3 = 0, count4 = 0, count5 = 0;
+static int8_t count6 = 0, count7 = 0, count8 = 0, count9 = 0, count10 = 0;
+void setArcHeadAlarms(uint32_t AlarmId, bool value)
+{
+ AlarmHandlingSetAlarm(AlarmId, value);
+ if (value == true)
+ {
+ switch(AlarmId)
+ {
+ /*case EVENT_TYPE__DYEING_HEAD_ARC_LID_IS_OPEN:
+ ReportWithPackageFilter(HeatersFilter,"ArcHeadAlarms on",__FILE__,AlarmId,count9,RpError, 0,0);
+ break;
+ case EVENT_TYPE__DYEING_HEAD_TUNNEL_LID_IS_OPEN:
+ ReportWithPackageFilter(HeatersFilter,"ArcHeadAlarms on",__FILE__,AlarmId,count9,RpError, 0,0);
+ break;
+ case EVENT_TYPE__DYEING_HEAD_BLOWER_1_FAN_STOPPED:
+ ReportWithPackageFilter(HeatersFilter,"ArcHeadAlarms on",__FILE__,AlarmId,count9,RpError, 0,0);
+ break;
+ case EVENT_TYPE__DYEING_HEAD_BLOWER_2_FAN_STOPPED:
+ ReportWithPackageFilter(HeatersFilter,"ArcHeadAlarms on",__FILE__,AlarmId,count9,RpError, 0,0);
+ break;*/
+ case EVENT_TYPE__DYEING_HEAD_BLOWER_1_FAN_RPM_TOO_LOW:
+ ReportWithPackageFilter(HeatersFilter,"ArcHeadAlarms on",__FILE__,AlarmId,count3,RpError, HeadBlowersGetRPM(HEAD_FAN_RIGHT),0);
+ break;
+ case EVENT_TYPE__DYEING_HEAD_BLOWER_2_FAN_RPM_TOO_LOW:
+ ReportWithPackageFilter(HeatersFilter,"ArcHeadAlarms on",__FILE__,AlarmId,count4,RpError, HeadBlowersGetRPM(HEAD_FAN_LEFT),0);
+ break;
+ case EVENT_TYPE__DYEING_HEAD_BLOWER_1_FLOW_TOO_HIGH:
+ ReportWithPackageFilter(HeatersFilter,"ArcHeadAlarms on",__FILE__,AlarmId,count5,RpError, PressureSensorGetPressure(HEAD_FAN_RIGHT),0);
+ break;
+ case EVENT_TYPE__DYEING_HEAD_BLOWER_2_FLOW_TOO_HIGH:
+ ReportWithPackageFilter(HeatersFilter,"ArcHeadAlarms on",__FILE__,AlarmId,count7,RpError, PressureSensorGetPressure(HEAD_FAN_LEFT),0);
+ break;
+ case EVENT_TYPE__DYEING_HEAD_BLOWER_1_FLOW_TOO_LOW:
+ ReportWithPackageFilter(HeatersFilter,"ArcHeadAlarms on",__FILE__,AlarmId,count6,RpError, PressureSensorGetPressure(HEAD_FAN_RIGHT),0);
+ break;
+ case EVENT_TYPE__DYEING_HEAD_BLOWER_2_FLOW_TOO_LOW:
+ ReportWithPackageFilter(HeatersFilter,"ArcHeadAlarms on",__FILE__,AlarmId,count8,RpError, PressureSensorGetPressure(HEAD_FAN_LEFT),0);
+ break;
+ }
+ }
+}
void ArcHeadAlarms(void)
{
double currentFlow = 0.0;
- static int8_t count1 = 0, count2 = 0, count3 = 0, count4 = 0, count5 = 0;
- static int8_t count6 = 0, count7 = 0, count8 = 0, count9 = 0, count10 = 0;
if (FPGA_Read_limit_Switches(I2C_HEADCARD_COVER_LS_ARC) != LIMIT) {
if (++count9 == ARC_ALARM_LIMIT)
- AlarmHandlingSetAlarm(EVENT_TYPE__DYEING_HEAD_ARC_LID_IS_OPEN, true);
+ setArcHeadAlarms(EVENT_TYPE__DYEING_HEAD_ARC_LID_IS_OPEN, true);
count9 = (count9 > ARC_ALARM_LIMIT)?(ARC_ALARM_LIMIT):(count9);
} else {
if (--count9 == 0)
- AlarmHandlingSetAlarm(EVENT_TYPE__DYEING_HEAD_ARC_LID_IS_OPEN, false);
+ setArcHeadAlarms(EVENT_TYPE__DYEING_HEAD_ARC_LID_IS_OPEN, false);
count9 = (count9 < 0)?(0):(count9);
}
if (FPGA_Read_limit_Switches(I2C_HEADCARD_COVER_LS_TUNNEL_ARC) != LIMIT) {
if (++count10 == ARC_ALARM_LIMIT)
- AlarmHandlingSetAlarm(EVENT_TYPE__DYEING_HEAD_TUNNEL_LID_IS_OPEN, true);
+ setArcHeadAlarms(EVENT_TYPE__DYEING_HEAD_TUNNEL_LID_IS_OPEN, true);
count10 = (count10 > ARC_ALARM_LIMIT)?(ARC_ALARM_LIMIT):(count10);
} else {
if (--count10 == 0)
- AlarmHandlingSetAlarm(EVENT_TYPE__DYEING_HEAD_TUNNEL_LID_IS_OPEN, false);
+ setArcHeadAlarms(EVENT_TYPE__DYEING_HEAD_TUNNEL_LID_IS_OPEN, false);
count10 = (count10 < 0)?(0):(count10);
}
if (Head_Fan_Tach[0] == 0x1FFE) {
if (++count1 == ARC_ALARM_LIMIT)
- AlarmHandlingSetAlarm(EVENT_TYPE__DYEING_HEAD_BLOWER_1_FAN_STOPPED, true);
+ setArcHeadAlarms(EVENT_TYPE__DYEING_HEAD_BLOWER_1_FAN_STOPPED, true);
count1 = (count1 > ARC_ALARM_LIMIT)?(ARC_ALARM_LIMIT):(count1);
} else {
if (--count1 == 0)
- AlarmHandlingSetAlarm(EVENT_TYPE__DYEING_HEAD_BLOWER_1_FAN_STOPPED, false);
+ setArcHeadAlarms(EVENT_TYPE__DYEING_HEAD_BLOWER_1_FAN_STOPPED, false);
count1 = (count1 < 0)?(0):(count1);
}
if (Head_Fan_Tach[1] == 0x1FFE) {
if (++count2 == ARC_ALARM_LIMIT)
- AlarmHandlingSetAlarm(EVENT_TYPE__DYEING_HEAD_BLOWER_2_FAN_STOPPED, true);
+ setArcHeadAlarms(EVENT_TYPE__DYEING_HEAD_BLOWER_2_FAN_STOPPED, true);
count2 = (count2 > ARC_ALARM_LIMIT)?(ARC_ALARM_LIMIT):(count2);
} else {
if (--count2 == 0)
- AlarmHandlingSetAlarm(EVENT_TYPE__DYEING_HEAD_BLOWER_2_FAN_STOPPED, false);
+ setArcHeadAlarms(EVENT_TYPE__DYEING_HEAD_BLOWER_2_FAN_STOPPED, false);
count2 = (count2 < 0)?(0):(count2);
}
if (HeadBlowersGetRPM(HEAD_FAN_RIGHT) < 2000) {
if (++count3 == ARC_ALARM_LIMIT)
- AlarmHandlingSetAlarm(EVENT_TYPE__DYEING_HEAD_BLOWER_1_FAN_RPM_TOO_LOW, true);
+ setArcHeadAlarms(EVENT_TYPE__DYEING_HEAD_BLOWER_1_FAN_RPM_TOO_LOW, true);
count3 = (count3 > ARC_ALARM_LIMIT)?(ARC_ALARM_LIMIT):(count3);
} else {
if (--count3 == 0)
- AlarmHandlingSetAlarm(EVENT_TYPE__DYEING_HEAD_BLOWER_1_FAN_RPM_TOO_LOW, false);
+ setArcHeadAlarms(EVENT_TYPE__DYEING_HEAD_BLOWER_1_FAN_RPM_TOO_LOW, false);
count3 = (count3 < 0)?(0):(count3);
}
if (HeadBlowersGetRPM(HEAD_FAN_LEFT) < 2000) {
if (++count4 == ARC_ALARM_LIMIT)
- AlarmHandlingSetAlarm(EVENT_TYPE__DYEING_HEAD_BLOWER_2_FAN_RPM_TOO_LOW, true);
+ setArcHeadAlarms(EVENT_TYPE__DYEING_HEAD_BLOWER_2_FAN_RPM_TOO_LOW, true);
count4 = (count4 > ARC_ALARM_LIMIT)?(ARC_ALARM_LIMIT):(count4);
} else {
if (--count4 == 0)
- AlarmHandlingSetAlarm(EVENT_TYPE__DYEING_HEAD_BLOWER_2_FAN_RPM_TOO_LOW, false);
+ setArcHeadAlarms(EVENT_TYPE__DYEING_HEAD_BLOWER_2_FAN_RPM_TOO_LOW, false);
count4 = (count4 < 0)?(0):(count4);
}
currentFlow = PressureSensorGetPressure(HEAD_FAN_RIGHT);
if (currentFlow > 5.0) {
if (++count5 == ARC_ALARM_LIMIT)
- AlarmHandlingSetAlarm(EVENT_TYPE__DYEING_HEAD_BLOWER_1_FLOW_TOO_HIGH, true);
+ setArcHeadAlarms(EVENT_TYPE__DYEING_HEAD_BLOWER_1_FLOW_TOO_HIGH, true);
count5 = (count5 > ARC_ALARM_LIMIT)?(ARC_ALARM_LIMIT):(count5);
} else {
if (--count5 == 0)
- AlarmHandlingSetAlarm(EVENT_TYPE__DYEING_HEAD_BLOWER_1_FLOW_TOO_HIGH, false);
+ setArcHeadAlarms(EVENT_TYPE__DYEING_HEAD_BLOWER_1_FLOW_TOO_HIGH, false);
count5 = (count5 < 0)?(0):(count5);
}
if (currentFlow < 1.0) {
if (++count6 == ARC_ALARM_LIMIT)
- AlarmHandlingSetAlarm(EVENT_TYPE__DYEING_HEAD_BLOWER_1_FLOW_TOO_LOW, true);
+ setArcHeadAlarms(EVENT_TYPE__DYEING_HEAD_BLOWER_1_FLOW_TOO_LOW, true);
count6 = (count6 > ARC_ALARM_LIMIT)?(ARC_ALARM_LIMIT):(count6);
} else {
if (--count6 == 0)
- AlarmHandlingSetAlarm(EVENT_TYPE__DYEING_HEAD_BLOWER_1_FLOW_TOO_LOW, false);
+ setArcHeadAlarms(EVENT_TYPE__DYEING_HEAD_BLOWER_1_FLOW_TOO_LOW, false);
count6 = (count6 < 0)?(0):(count6);
}
currentFlow = PressureSensorGetPressure(HEAD_FAN_LEFT);
if (currentFlow > 5.0) {
if (++count7 == ARC_ALARM_LIMIT)
- AlarmHandlingSetAlarm(EVENT_TYPE__DYEING_HEAD_BLOWER_2_FLOW_TOO_HIGH, true);
+ setArcHeadAlarms(EVENT_TYPE__DYEING_HEAD_BLOWER_2_FLOW_TOO_HIGH, true);
count7 = (count7 > ARC_ALARM_LIMIT)?(ARC_ALARM_LIMIT):(count7);
} else {
if (--count7 == 0)
- AlarmHandlingSetAlarm(EVENT_TYPE__DYEING_HEAD_BLOWER_2_FLOW_TOO_HIGH, false);
+ setArcHeadAlarms(EVENT_TYPE__DYEING_HEAD_BLOWER_2_FLOW_TOO_HIGH, false);
count7 = (count7 < 0)?(0):(count7);
}
if (currentFlow < 1.0) {
if (++count8 == ARC_ALARM_LIMIT)
- AlarmHandlingSetAlarm(EVENT_TYPE__DYEING_HEAD_BLOWER_2_FLOW_TOO_LOW, true);
+ setArcHeadAlarms(EVENT_TYPE__DYEING_HEAD_BLOWER_2_FLOW_TOO_LOW, true);
count8 = (count8 > ARC_ALARM_LIMIT)?(ARC_ALARM_LIMIT):(count8);
} else {
if (--count8 == 0)
- AlarmHandlingSetAlarm(EVENT_TYPE__DYEING_HEAD_BLOWER_2_FLOW_TOO_LOW, false);
+ setArcHeadAlarms(EVENT_TYPE__DYEING_HEAD_BLOWER_2_FLOW_TOO_LOW, false);
count8 = (count8 < 0)?(0):(count8);
}
}
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
index 84013add6..def9c5530 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
@@ -1053,7 +1053,7 @@ uint32_t HeaterMaxTempCBFunction(uint32_t IfIndex, uint32_t readValue)
}
if (abs(readValue - HeaterPreviousRead[index])>2000)
{
- ReportWithPackageFilter(HeatersFilter,"Temperature Spike",__FILE__,index,HeaterPreviousRead[index],RpWarning,readValue, index);
+ ReportWithPackageFilter(HeatersFilter,"Temperature Spike AC",__FILE__,index,HeaterPreviousRead[index],RpWarning,readValue, index);
#ifdef IGNORE_SPIKE
HeaterPreviousRead[index] = readValue;
#else
@@ -1345,18 +1345,18 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
DeActivateHeater(HEATER_TYPE__DryerMainHeater);
HeaterRecalculateSharedHeatersParams(HEATER_TYPE__DryerMainHeater,0);
HeaterRecalculateSharedHeatersParams(HEATER_TYPE__DryerSecondaryHeater,0);
- if (HeaterSpikeRead[index] == 0)
- {
- HeaterSpikeRead[index] = readValue;
- }
- else
- {
- ReportWithPackageFilter(HeatersFilter,"restoring read Temperature Spike",__FILE__,index,HeaterPreviousRead[index],RpWarning,HeaterSpikeRead[index], index);
- HeaterPreviousRead[index] = HeaterSpikeRead[index];
- HeaterSpikeRead[index] = 0;
- }
-
}
+ if (HeaterSpikeRead[index] == 0)
+ {
+ HeaterSpikeRead[index] = readValue;
+ }
+ else
+ {
+ ReportWithPackageFilter(HeatersFilter,"restoring read Temperature Spike",__FILE__,index,HeaterPreviousRead[index],RpWarning,HeaterSpikeRead[index], index);
+ HeaterPreviousRead[index] = HeaterSpikeRead[index];
+ HeaterSpikeRead[index] = 0;
+ }
+
return ERROR;
#endif
}
@@ -1580,20 +1580,20 @@ uint32_t DCHeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
#ifdef IGNORE_SPIKE
HeaterPreviousRead[index] = readValue;
#else
- //if (readValue > HeaterCmd[index].targettemperatue)
+ if (readValue > HeaterCmd[index].targettemperatue)
{
DeActivateHeater(index);
HeaterRecalculateHeaterParams(index, 0);
- if (HeaterSpikeRead[index] == 0)
- {
- HeaterSpikeRead[index] = readValue;
- }
- else
- {
- ReportWithPackageFilter(HeatersFilter,"restoring read Temperature Spike",__FILE__,index,HeaterPreviousRead[index],RpWarning,HeaterSpikeRead[index], index);
- HeaterPreviousRead[index] = HeaterSpikeRead[index];
- HeaterSpikeRead[index] = 0;
- }
+ }
+ if (HeaterSpikeRead[index] == 0)
+ {
+ HeaterSpikeRead[index] = readValue;
+ }
+ else
+ {
+ ReportWithPackageFilter(HeatersFilter,"restoring read Temperature Spike",__FILE__,index,HeaterPreviousRead[index],RpWarning,HeaterSpikeRead[index], index);
+ HeaterPreviousRead[index] = HeaterSpikeRead[index];
+ HeaterSpikeRead[index] = 0;
}
#endif
}
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c
index 0ae017c13..59b9a56be 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c
@@ -107,6 +107,16 @@ uint32_t IDS_Cleaning_Move_Actuators()
CleaningStageCounter++;
return OK;
}
+
+uint32_t IDS_Cleaning_stop_cleaner_motor()
+{
+ TimerMotors_t MotorId = HARDWARE_MOTOR_TYPE__MOTO_DH_LID;
+ if (Head_Type != HEAD_TYPE_ARC)
+ return OK;
+
+ MotorStop(MotorId,Soft_Stop);
+ return OK;
+}
/*uint32_t IDS_Cleaning_Move_Rockers (int LeftRockerSpeed,int RightRockerSpeed)
{
uint32_t status = OK;
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h
index 57d3ff5e2..0a8060496 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h
@@ -118,5 +118,6 @@ void DispenserDataRequestFunc(MessageContainer* requestContainer);
void IDS_Start_Pid_Testing(int DispenserId);
void IDS_Stop_Pid_Testing(int DispenserId);
uint32_t cleaningMotorCBFunction (uint32_t deviceID, uint32_t Parameter1);
+uint32_t IDS_Cleaning_stop_cleaner_motor();
#endif /* MODULES_IDS_IDS_EX_H_ */
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
index 367b36e38..a28d00a91 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
@@ -250,6 +250,7 @@ JobDescriptionFileBrushStop *FirstBrushStop = NULL;
DispenserUsedInJob[Dispenser_i] = false;
}
n_segments = 0;
+#ifndef LIGHT_COLORS
if (MotorsCfg[DispenserIdToMotorId[CLEANER_DISPENSER]].hardwaremotortype == DispenserIdToMotorId[CLEANER_DISPENSER])
{
DispenserUsedInJob[CLEANER_DISPENSER] = true;
@@ -260,7 +261,7 @@ JobDescriptionFileBrushStop *FirstBrushStop = NULL;
DispenserUsedInJob[CLEANER_DISPENSER] = false;
EnableCleaning = false;
}
-
+#endif
if (JobTicket->enablelubrication == true)
{
//DispenserUsedInJob[LUBRICANT_DISPENSER] = true;
@@ -521,7 +522,20 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
char IdMessage[100];
int SegmentPrepareWFCFCounter = 0;
bool pressureReady = false,endOfPrepareWCF = false;
-
+int BuildIdsJobPrintString(char *dest,char *desc, int info)
+{
+ int len = 0,i;
+ int DispenserSpeed[MAX_SYSTEM_DISPENSERS] = {0,0,0,0,0,0,0,0};
+ if (dest == NULL)
+ return 0;
+ for (i = 0; i<MAX_SYSTEM_DISPENSERS; i++)
+ {
+ if (DispenserUsedInJob[i])
+ DispenserSpeed[i] = CurrentDispenserSpeed[i];
+ }
+ len = usnprintf(dest, 80,"%s %d K %d,C %d,M %d,Y %d,TI %d",desc,(int)info,DispenserSpeed[0],DispenserSpeed[1],DispenserSpeed[2],DispenserSpeed[3],DispenserSpeed[4]);
+ return len;
+}
bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,double pressure)
{
TimerMotors_t HW_Motor_Id = DispenserIdToMotorId[DispenserId];
@@ -616,6 +630,7 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
else
DispenserReady[i] = true;
}
+#ifndef LIGHT_COLORS
pressure = GetDispenserPressure(CLEANER_DISPENSER);
if (pressure > 0.02)
{
@@ -625,7 +640,7 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
ReportWithPackageFilter(IDSFilter,"IDS stop cleaner",__FILE__,CLEANER_DISPENSER,(int)(pressure*100),RpWarning,(int)CurrentDispenserSpeed[CLEANER_DISPENSER] ,0);
CurrentDispenserSpeed[CLEANER_DISPENSER] = 0;
}
-
+#endif
if ((NumofReadyDispensers)&&(DispenserBuildTimeCounter%1000 == 0))
{
ReportWithPackageFilter(IDSFilter,"IDS_Prepare_Callback",__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)NumOfActiveDispensers,0);
@@ -737,9 +752,10 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
}
}
}//for
- usnprintf(IdMessage, 80,"WFCF %d K %d,C %d,M %d,Y %d,TI %d",WFCF,CurrentDispenserSpeed[0],
- CurrentDispenserSpeed[1],CurrentDispenserSpeed[2],CurrentDispenserSpeed[3],CurrentDispenserSpeed[4]);
- ReportWithPackageFilter(IDSFilter,IdMessage, __FILE__, __LINE__, DispenserBuildTimeCounter, RpWarning, WFCF, 0);
+ //usnprintf(IdMessage, 80,"WFCF %d K %d,C %d,M %d,Y %d,TI %d",WFCF,CurrentDispenserSpeed[0],
+ // CurrentDispenserSpeed[1],CurrentDispenserSpeed[2],CurrentDispenserSpeed[3],CurrentDispenserSpeed[4]);
+ if (BuildIdsJobPrintString(IdMessage,"WFCF ",WFCF))
+ ReportWithPackageFilter(IDSFilter,IdMessage, __FILE__, __LINE__, DispenserBuildTimeCounter, RpWarning, WFCF, 0);
}//if n_dis
}
@@ -761,6 +777,7 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
//start new stage
if (endOfPrepareWCF == true)
{
+#ifndef LIGHT_COLORS
if (CurrentDispenserSpeed[CLEANER_DISPENSER])
{
HW_Motor_Id = DispenserIdToMotorId[CLEANER_DISPENSER];
@@ -768,6 +785,7 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
CurrentDispenserSpeed[CLEANER_DISPENSER] = 0;
ReportWithPackageFilter(IDSFilter,"IDS stop cleaner",__FILE__,CLEANER_DISPENSER,(int)(pressure*100),RpWarning,(int)CurrentDispenserSpeed[CLEANER_DISPENSER] ,0);
}
+#endif
SafeRemoveControlCallback(DispenserPrepareControlId, IDS_Prepare_Callback );
DispenserPrepareControlId = 0xFF;
ReportWithPackageFilter(IDSFilter,"IDS_Prepare_Callback SafeRemoveControlCallback",__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)NumOfActiveDispensers,0);
@@ -885,6 +903,7 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
}
else
{
+ DispenserTotalPrepareSteps[i] = 0;
if (AutoHoming_Config >= AutoHoming_JobEnd_PowerOn_off)
{
if ((HomingActive[i] == false)&&(PrimingActive[i] == false))
@@ -941,11 +960,12 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
}*/
}
}
+#ifndef LIGHT_COLORS
TimerMotors_t HW_Motor_Id = DispenserIdToMotorId[CLEANER_DISPENSER];
MotorSetSpeed((TimerMotors_t)HW_Motor_Id,INITIAL_CLEANER_SPEED ); //set the dispenser to the
CurrentDispenserSpeed[CLEANER_DISPENSER] = INITIAL_CLEANER_SPEED;
ReportWithPackageFilter(IDSFilter,"IDS start cleaner",__FILE__,CLEANER_DISPENSER,(int)(GetDispenserPressure(CLEANER_DISPENSER)*100),RpWarning,(int)CurrentDispenserSpeed[CLEANER_DISPENSER] ,0);
-
+#endif
}
DispenserBuildTimeCounter = 0;
@@ -1088,9 +1108,10 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
}
}
}//for
- usnprintf(IdMessage, 80,"Presegment Prepare K %d,C %d,M %d,Y %d,TI %d",CurrentDispenserSpeed[0],
- CurrentDispenserSpeed[1],CurrentDispenserSpeed[2],CurrentDispenserSpeed[3],CurrentDispenserSpeed[4]);
- ReportWithPackageFilter(IDSFilter,IdMessage, __FILE__, __LINE__, Dispenser_i, RpWarning, segmentfirst_speed, 0);
+ //usnprintf(IdMessage, 80,"Presegment Prepare K %d,C %d,M %d,Y %d,TI %d",CurrentDispenserSpeed[0],
+ // CurrentDispenserSpeed[1],CurrentDispenserSpeed[2],CurrentDispenserSpeed[3],CurrentDispenserSpeed[4]);
+ if (BuildIdsJobPrintString(IdMessage,"Presegment Prepare ",0))
+ ReportWithPackageFilter(IDSFilter,IdMessage, __FILE__, __LINE__, Dispenser_i, RpWarning, segmentfirst_speed, 0);
DispenserBuildTimeCounter = 0;
//DispenserPrepareControlId = AddControlCallback( IDS_PreSegmentPrepare_Callback, IDS_PRESEGMENT_TIME_STEP,TemplateDataReadCBFunction ,0, 0, 0 );
@@ -1176,8 +1197,10 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback);
ReportWithPackageFilter(IDSFilter,"End of Pre-segment Handling",__FILE__,__LINE__,InterSegmentStepsCount,RpWarning,(int)lInterSegmentLength,0);
//PreSegmentReady(Module_IDS,ModuleDone);
SafeRemoveControlCallback(DispenserPreSegmentControlId,IDSPreSegmentStateCallbackRunner);
+#ifndef LIGHT_COLORS
if (CurrentDispenserSpeed[CLEANER_DISPENSER]>0)
IDS_Cleaning_Stop_Cleaning_Solution (NULL);
+#endif
setRapidPressureRead(false);
//if (JobEndSequence == true)
// DistanceToSpoolReady(Module_IDS,ModuleDone);
@@ -1290,9 +1313,10 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback);
//SendJobProgress(0.0, 0, false, IdsMessage);*/
}
}//for
- usnprintf(IdMessage, 80,"Presegment WFCF %d K %d,C %d,M %d,Y %d,TI %d",WFCF,CurrentDispenserSpeed[0],
- CurrentDispenserSpeed[1],CurrentDispenserSpeed[2],CurrentDispenserSpeed[3],CurrentDispenserSpeed[4]);
- ReportWithPackageFilter(IDSFilter,IdMessage, __FILE__, __LINE__, FileBrushStop->index, RpWarning, lInterSegmentLength, 0);
+ //usnprintf(IdMessage, 80,"Presegment WFCF %d K %d,C %d,M %d,Y %d,TI %d",WFCF,CurrentDispenserSpeed[0],
+ // CurrentDispenserSpeed[1],CurrentDispenserSpeed[2],CurrentDispenserSpeed[3],CurrentDispenserSpeed[4]);
+ if (BuildIdsJobPrintString(IdMessage,"Presegment WFCF ",WFCF))
+ ReportWithPackageFilter(IDSFilter,IdMessage, __FILE__, __LINE__, FileBrushStop->index, RpWarning, lInterSegmentLength, 0);
}
}
//startDispensersAtSegmentSpeed*1=WFCFClenerSpray(speed);
@@ -1617,9 +1641,10 @@ void IDS_StartBrushStop(int n_dispensers, JobDispenser** Dispensers)
}
} //for
}
- usnprintf(IdMessage, 80,"IDS_StartBrushStop %d/%d K %d,C %d,M %d,Y %d,TI %d",FileBrushStop->index,SegmentNumOfBrushStops,CurrentDispenserSpeed[0],
- CurrentDispenserSpeed[1],CurrentDispenserSpeed[2],CurrentDispenserSpeed[3],CurrentDispenserSpeed[4]);
- ReportWithPackageFilter(IDSFilter,IdMessage, __FILE__, SegmentNumOfBrushStops, FileBrushStop->index, RpWarning,(int)FileBrushStop->offsetmeters, 0);
+ //usnprintf(IdMessage, 80,"IDS_StartBrushStop %d/%d K %d,C %d,M %d,Y %d,TI %d",FileBrushStop->index,SegmentNumOfBrushStops,CurrentDispenserSpeed[0],
+ // CurrentDispenserSpeed[1],CurrentDispenserSpeed[2],CurrentDispenserSpeed[3],CurrentDispenserSpeed[4]);
+ if (BuildIdsJobPrintString(IdMessage,"IDS_StartBrushStop ",FileBrushStop->index))
+ ReportWithPackageFilter(IDSFilter,IdMessage, __FILE__, SegmentNumOfBrushStops, FileBrushStop->index, RpWarning,(int)FileBrushStop->offsetmeters, 0);
}
uint32_t IDSBrushStopRestartCallback(uint32_t IfIndex, uint32_t readValue)
@@ -1718,8 +1743,10 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId)
#else
Valve_Set(VALVE_MIXCHIP_WASTECH, Mixer_Head);
#endif
+#ifndef LIGHT_COLORS
if (CurrentDispenserSpeed[CLEANER_DISPENSER]>0)
IDS_Cleaning_Stop_Cleaning_Solution(NULL);
+#endif
SegmentNumOfBrushStops = Segment->n_brushstops;
BrushStopTime = Segment->length*1000/(double)SegmentNumOfBrushStops; //brushstop in meters //brushstop in millisecond
BrushStopTime = ((BrushStopTime*100)/dyeingspeed);//brushstop in seconds
@@ -1936,10 +1963,13 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId)
}
}
+#ifndef LIGHT_COLORS
if (CurrentDispenserSpeed[CLEANER_DISPENSER]>0)
IDS_Cleaning_Stop_Cleaning_Solution(NULL);
- IDS_StopLubrication();
+#endif
+ IDS_StopLubrication();
Init_CleaningStageCounter();//set the counter before relocating
+ IDS_Cleaning_stop_cleaner_motor();
HeadCard_Actuators_Relocate();
return OK;
}
diff --git a/Software/Embedded_SW/Embedded/Software Release Notes.txt b/Software/Embedded_SW/Embedded/Software Release Notes.txt
index 736f6e3be..9b3b4a919 100644
--- a/Software/Embedded_SW/Embedded/Software Release Notes.txt
+++ b/Software/Embedded_SW/Embedded/Software Release Notes.txt
@@ -1,3 +1,15 @@
+Embedded SW Release note - Version 1.5.2(3) - Pack 3
+=============================================================
+tweaks to the loading arm reset function (thread load, PPC request)
+main card EEPROM read fixed
+Fans - support for new component (arc head and whs)
+light colors preparation - suppressed
+fix cleaning stop on job abort
+Dancer middle point EEPROM support writing single dancer
+Change spikes handling (fix taking the different temperature after 2 seconds
+change and fix some arc head blowers alarm and logs
+
+
Embedded SW Release note - Version 1.5.2(1) - Pack 3
=============================================================
Rebuild Flash file system on Initialization failure.
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c
index 3a0c94e27..b5ebdee17 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c
@@ -275,9 +275,8 @@ uint32_t PowerOffHeatersOff(void)
if (HandleProcessParameters(&ProcessParametersClear,false)!= OK)
{
LOG_ERROR (PowerOffMachineState, "Turn Off Heaters failed");
- //return ERROR;
}
-
+ HeadBlowersOff(1);
PowerOffMachineState++;
return OK;