aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-06-29 21:50:42 +0300
committerShlomo Hecht <shlomo@twine-s.com>2020-06-29 21:50:42 +0300
commitadebfb6bccfc75ae2057a538f5b028b45ac2d8b4 (patch)
treeddb9fb2c1147f7e7aedcb403405fcf5d31f01f56 /Software/Embedded_SW/Embedded/Modules
parent7707bbff3cf8d37d9cab419353ce8d6f28a482b0 (diff)
downloadTango-adebfb6bccfc75ae2057a538f5b028b45ac2d8b4.tar.gz
Tango-adebfb6bccfc75ae2057a538f5b028b45ac2d8b4.zip
Embedded SW Release note - Version 1.4.6.34 - Pack 2+
============================================================= Validate IFS and cartridge location on manual waste handling - bug #3033 better handling of powerstep01 configuration and motors clocks waste level: logs, fixed reading during waste filling, fix PT100 reading in WHS //important, OK improve diespensers reading in I2C timing //important OK alarm handling: fix report (mid tank empty) diagnostics - waste level in liters Heating and process - avoid activating all heaters at once. tested for flat head. Heating - remove alarms when colling dwn due to change of RML or idle mode Thread - improve feeder tension handling system: hold initalization process after 3 failures to enable code / parameters change and debugging
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c5
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c10
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/process.c6
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c25
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c6
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c10
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c46
7 files changed, 78 insertions, 30 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
index 356f192a3..1c2b6662d 100644
--- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
+++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
@@ -652,6 +652,9 @@ JobEndReasonEnum getEndReason(uint32_t AlarmId)
usnprintf(AlarmReasonStr, 100, "Alarm %d type %d caused a job stop",AlarmId,AlarmItem[AlarmId].EventType);
return JOB_OTHER_ALARM;
}
+ case ALARM_SOURCE_TYPE__FluidLevelAlarm:
+ usnprintf(AlarmReasonStr, 100, "Midtank %d is empty",AlarmItem[AlarmId].DeviceId);
+ return JOB_OUT_OF_DYE;
default:
usnprintf(AlarmReasonStr, 100, "Alarm %d type %d caused a job stop",AlarmId,AlarmItem[AlarmId].EventType);
return JOB_OTHER_ALARM;
@@ -993,6 +996,8 @@ JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob)
if (FoundReason != JOB_OK)
{
JobEndReason = getEndReason(AlarmId);
+ if (JobEndReason!=FoundReason)
+ ReportWithPackageFilter(AlarmFilter,"end reason mismatch!!!", __FILE__,AlarmId,JobEndReason, RpMessage, FoundReason, 0);
//AbortJob(AlarmReasonStr);
//PrepareReady(Module_Alarms,ModuleFail);
ReportWithPackageFilter(AlarmFilter,AlarmReasonStr, __FILE__,__LINE__,AlarmId, RpMessage, DEBUG_LOG_CATEGORY__Error, 0);
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
index 849d1cd9b..8e01fe18e 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
@@ -115,7 +115,7 @@ double dispenserinklevel[MAX_SYSTEM_DISPENSERS][1];
double midtankinklevel[MAX_SYSTEM_DISPENSERS][1];
double MidTankpressure[MAX_SYSTEM_DISPENSERS][1];
double HeadFlowMeter;
-double tempFlow = 0.0;
+//double tempFlow = 0.0;
double DrierFlowMeter;
double AcVoltage;
double WasteLevel = 0.0;
@@ -819,11 +819,11 @@ void DiagnosticOneMinuteCollection(void)
DiagnosticsMonitor.dryerairflow = &DrierFlowMeter;
HeadFlowMeter = GetWHSAirFlow(HEAD_FLOW_METER);
- if (fabs(tempFlow - HeadFlowMeter)>0.05)
+ /*if (fabs(tempFlow - HeadFlowMeter)>0.05)
{
Report("Head flow change 1m",__FILE__,(int)diagvoltage,(int)(tempFlow*1000),RpWarning,(int)(HeadFlowMeter*1000),0);
tempFlow = HeadFlowMeter;
- }
+ }*/
DiagnosticsMonitor.n_headairflow = 1;
DiagnosticsMonitor.headairflow = &HeadFlowMeter;
@@ -858,11 +858,11 @@ void DiagnosticOneSecCollection(void)
HeadFlowMeter = GetWHSAirFlow(HEAD_FLOW_METER);
DiagnosticsMonitor.n_headairflow = 1;
DiagnosticsMonitor.headairflow = &HeadFlowMeter;
- if (fabs(tempFlow - HeadFlowMeter)>0.25)
+ /*if (fabs(tempFlow - HeadFlowMeter)>0.25)
{
Report("Head flow change 1s",__FILE__,(int)diagvoltage,(int)(tempFlow*1000),RpWarning,(int)(HeadFlowMeter*1000),0);
tempFlow = HeadFlowMeter;
- }
+ }*/
WasteLevel = GetWHSWasteTankLevelMiliLiter()/1000;//change from ml to litter
static double InitCounter = 0;
if (GetMachineState()<MACHINE_STATE_NO_PROCESS_PARAMS)
diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c
index 968522e48..bf7d761dd 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/process.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/process.c
@@ -200,6 +200,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData)
}
if(Head_Type != HEAD_TYPE_STAPLE_SPUN)
{
+ Trigger_HeaterWriting();
if (ProcessParams->headzone4temp>1)
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4, true,ProcessParams->headzone4temp);
@@ -239,6 +240,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData)
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7, false,ProcessParams->headzone7temp);
}
+ Trigger_HeaterWriting();
if (ProcessParams->headzone8temp>1)
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ8, true,ProcessParams->headzone8temp);
@@ -263,6 +265,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData)
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ10, false,ProcessParams->headzone10temp);
}
+ Trigger_HeaterWriting();
if (ProcessParams->headzone11temp>1)
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ11, true,ProcessParams->headzone11temp);
@@ -282,6 +285,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData)
}
if(Head_Type == HEAD_TYPE_STAPLE_SPUN)
{
+ Trigger_HeaterWriting();
if (ProcessParams->rblowertemp>1)
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater1, true,ProcessParams->rblowertemp);
@@ -290,6 +294,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData)
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater1, false,ProcessParams->rblowertemp);
}
+ Trigger_HeaterWriting();
if (ProcessParams->lblowertemp>1)
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater2, true,ProcessParams->lblowertemp);
@@ -298,6 +303,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData)
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater2, false,ProcessParams->lblowertemp);
}
+ Trigger_HeaterWriting();
Trigger_Head_Fan_Control(HEAD_FAN_RIGHT,ProcessParams->rblowerflow);
Trigger_Head_Fan_Control(HEAD_FAN_LEFT,ProcessParams->lblowerflow);
}
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
index 309eada85..73da7924b 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
@@ -1110,6 +1110,7 @@ uint32_t DcHeaterMaxTempCBFunction(uint32_t IfIndex, uint32_t readValue)
}
return ERROR;
}
+bool IncreaseBlower = false;
uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
{
int index=HEATER_TYPE_MAX_HEATERS;
@@ -1259,23 +1260,29 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
ReportWithPackageFilter(HeatersFilter,"AC Ready",__FILE__,index,readValue,RpWarning,(HeaterCmd[index].targettemperatue), 0);
HeaterAtTemp[index] = true;
HeaterPrepareReady();
+ IncreaseBlower = false;
}
}
if ( (readValue > (HeaterCmd[index].targettemperatue * ((100-HeaterControl[index].outputproportionalband+2)/100)))
&& (readValue < (HeaterCmd[index].targettemperatue * ((100+HeaterControl[index].outputproportionalband)/100))))
{
- if (BlowerCfg.enabled == true)
+ if (IncreaseBlower == false)
{
- if(Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD)
- {
- WHS_Set_SetPoint_Q_value(headairflow);
- }
- else
+ IncreaseBlower = true;
+ if (BlowerCfg.enabled == true)
{
- Turn_the_Blower_On();//Turn on with the Default_Voltage
- if (BlowerCfg.voltage)
- Control_Voltage_To_Blower(BlowerCfg.voltage);
+ if(Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD)
+ {
+ WHS_Set_SetPoint_Q_value(headairflow);
+ }
+ else
+ {
+ Turn_the_Blower_On();//Turn on with the Default_Voltage
+ if (BlowerCfg.voltage)
+ Control_Voltage_To_Blower(BlowerCfg.voltage);
+ }
}
+
}
}
if(HeaterPIDConfig[index].m_isEnabled && (HeaterPIDConfig[index].m_SetParam != 0))
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
index 965ea30da..2b65ca806 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
@@ -863,7 +863,7 @@
uint32_t Thread_Load_Dryer_UnLoading(void)
{
uint32_t temp;
- REPORT_MSG(LoadStages, "Thread UnLoad State Machine step");
+ REPORT_MSG(LoadStages, "Thread Load State Machine step Dryer Unloading");
//LoadArmRounds = 0;
//uint32_t numberOfSteps = 0;
//Start Feeder Pid, Rotate Loading Arm Counter Thread Direction X Circles According To Rml. Feeder Speed Is 40
@@ -1258,7 +1258,7 @@ uint32_t ThreadLoadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue)
}
bool ThreadLoaded(void)
{
- uint32_t ReadValue;
+ /* uint32_t ReadValue;
int32_t PoolerValue,WinderValue,FeederValue;
//this function tests if there is a thread in the machine. all dancers are in lowermost position then there is no thread.
@@ -1280,7 +1280,7 @@ bool ThreadLoaded(void)
Report("Thread is out",__FILE__,(-1*PoolerValue),(-1*WinderValue),RpWarning,(-1*FeederValue),0);
return true;
}
- else
+ else*/
return false;
}
void ThreadLoadRequest(MessageContainer* requestContainer)
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
index 8a4960433..d762e507f 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
@@ -217,7 +217,7 @@ uint32_t ThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue)
}
}
- FeederSpeedStore[FeederSpeedIndex++] = length;
+ /*FeederSpeedStore[FeederSpeedIndex++] = length;
if (FeederSpeedIndex>=SPEED_STORE_SIZE)
{
FeederSpeedIndex = 0;
@@ -225,8 +225,8 @@ uint32_t ThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue)
for (Speed_i = 0;Speed_i<SPEED_STORE_SIZE;Speed_i++)
FeederSpeedAverage+=FeederSpeedStore[Speed_i];
FeederSpeedAverage = FeederSpeedAverage/SPEED_STORE_SIZE;
- ReportWithPackageFilter(ThreadFilter,"Average Speed 2 second",__FILE__,__LINE__,(int)(FeederSpeedAverage*100),RpWarning,(int)(PullerSpeedAverage*100),0);
- }
+ ReportWithPackageFilter(ThreadFilter,"Avg len 100ms last 2 sec",__FILE__,(int)PoolerTotalProcessedLength,(int)(FeederSpeedAverage*1000),RpWarning,(int)(PullerSpeedAverage*1000),0);
+ }*/
TotalProcessedLength += (length/100);
TempTotalProcessedLength = TotalProcessedLength;
#ifdef FEEDER_LENGTH_CALCULATION
@@ -317,7 +317,7 @@ uint32_t PoolerThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue)
length = 0;
}
- PullerSpeedStore[PullerSpeedIndex++] = length;
+ /*PullerSpeedStore[PullerSpeedIndex++] = length;
if (PullerSpeedIndex>=SPEED_STORE_SIZE)
{
PullerSpeedIndex = 0;
@@ -326,7 +326,7 @@ uint32_t PoolerThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue)
PullerSpeedAverage+=PullerSpeedStore[Speed_i];
PullerSpeedAverage = PullerSpeedAverage/SPEED_STORE_SIZE;
//ReportWithPackageFilter(ThreadFilter,"Average Speed 2 second",__FILE__,__LINE__,(int)(FeederSpeedAverage*100),RpWarning,(int)(PullerSpeedAverage*100),0);
- }
+ }**/
//}
diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c
index cf9fb3b7b..03ee73daf 100644
--- a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c
+++ b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c
@@ -20,6 +20,7 @@
#include <Drivers/I2C_Communication/I2C_Task.h>
#include <Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h>
#include <Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h>
+#include <Drivers/I2C_Communication/RFID_NFC/I2C_IFS_Mux.h>
//
//#define CARTRIDGE_INK_TIMEOUT 60
//#define CARTRIDGE_INK_TIMEOUTx2 120
@@ -231,11 +232,11 @@ bool RdCartridgeParam(cartridge_name cart_name)
{
case waste_cartridge1:
WHS_info.cartridge_1.serial_number = temp_funcion; //to do
- WHS_info.cartridge_1.status = temp_funcion; // to do
+ WHS_info.cartridge_1.status = WasteEmpty; // to do
break;
case waste_cartridge2:
WHS_info.cartridge_2.serial_number = temp_funcion;
- WHS_info.cartridge_2.status = temp_funcion;
+ WHS_info.cartridge_2.status = WasteEmpty;
break;
case INK_cartridge:
ReadCartridgeData(cart_name);
@@ -313,6 +314,12 @@ U8 set_cartridge_2(U8 cartridge_status)
bool SetWastePump( bool power)
{
+ if ((IFS_Availability[1] == IFS_RECOGNIZED)&&(IFS_Availability[2] == IFS_RECOGNIZED)) //ifs installed -check cartridges
+ {
+ if ((WHS_WasteCartridgeLowerPresent() == false)&&(WHS_WasteCartridgeMiddlePresent() == false))
+ return ERROR;
+ }
+
/*
set the waste pump on/off
off - :
@@ -415,6 +422,29 @@ U8 CartridgeWasteFilling(bool status)
SetWasteLevelEmptyingLimit(GetWHSWasteTankLevelMiliLiter());
waste_seq_step1_cont();
}
+ switch (WHS_info.active_cartridge)
+ {
+ case waste_cartridge1:
+ Pannel_Leds( CART_2, MODE_ON); //set led color
+ cart2.color = BLINK;
+ ReportWithPackageFilter(WasteFilter,"------------ WHS waste_cartridge1 is used please replace it -----------------", __FILE__, __LINE__, 0, RpMessage, 0, 0);
+ break;
+ case waste_cartridge2:
+ Pannel_Leds( CART_3, MODE_ON); //set led color
+ cart3.color = BLINK;
+ ReportWithPackageFilter(WasteFilter,"------------ WHS waste_cartridge2 is used please replace it -----------------", __FILE__, __LINE__, 0, RpMessage, 0, 0);
+ break;
+ case no_waste_cartridge:
+ ReportWithPackageFilter(WasteFilter,"------------ !!!!!WHS No waste cartridge !!!!! -----------------", __FILE__, __LINE__, 0, RpMessage, 0, 0);
+ ReportWithPackageFilter(WasteFilter,"------------ !!!! WHS insert cartridge!!!! -----------------", __FILE__, __LINE__, 0, RpMessage, 0, 0);
+ SetWastePump(CLOSE);
+ //WHS_info.WHS_pump.time = 0;
+ AlarmHandlingSetAlarm( EVENT_TYPE__NO_WASTE_CARTRIDGE_AVAILABLE, true);
+ ret = ERROR;
+ break;
+ default:
+ break;
+ }
ret=OK;
}
else // stop Waste cartridge filling
@@ -460,9 +490,9 @@ U8 CartridgeWasteFilling(bool status)
/* ------read waste tank sensors ----------- */
#define WASTE_CARTRIDGE_SIZE 1500
-#define WASTE_LEVEL_OVERFLOW 4000
-#define WASTE_LEVEL_FULL 3500
-#define WASTE_LEVEL_EMPTY 2100
+#define WASTE_LEVEL_OVERFLOW 2700
+#define WASTE_LEVEL_FULL 2300
+#define WASTE_LEVEL_EMPTY 900
double WasteLevelOverflow = WASTE_LEVEL_OVERFLOW;
double WasteLevelFull = WASTE_LEVEL_FULL;
double WasteLevelEmpty = WASTE_LEVEL_EMPTY;
@@ -727,7 +757,7 @@ bool WasteTankCBFunction()
ReportWithPackageFilter(WasteFilter,"------------ WHS, Cartridge cover open -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, WHS_info.WHS_sensors.cartridge_cover, 0);//popup message :"Cartridge cover open" //todo
if ( WHS_info.WHS_pump.status == OPEN)
{
- CartridgeWasteFilling(CLOSE);
+ CartridgeWasteFilling(OFF);
pump_on_flag = OPEN;
}
@@ -759,12 +789,12 @@ bool WasteTankCBFunction()
}
else // CLOSE
{
- //if (WHS_info.sttMachine == WHS_full) CartridgeWasteFilling(OPEN);
+ if (WHS_info.sttMachine == WHS_full) CartridgeWasteFilling(ON);
SetActiveWastCartridge();
if (pump_on_flag == OPEN )
{
WHS_info.WHS_sensors.waste_tank_full_sensor = SENSORnotFULL; // todo
- // CartridgeWasteFilling(OPEN);
+ CartridgeWasteFilling(OPEN);
pump_on_flag = CLOSE;
}
IFS_info.Cartridge_Ink_device_Id = RemoveControlCallback(IFS_info.Cartridge_Ink_device_Id , WasteTankCBFunction );