diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2020-06-29 21:50:42 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2020-06-29 21:50:42 +0300 |
| commit | adebfb6bccfc75ae2057a538f5b028b45ac2d8b4 (patch) | |
| tree | ddb9fb2c1147f7e7aedcb403405fcf5d31f01f56 /Software/Embedded_SW/Embedded/Modules | |
| parent | 7707bbff3cf8d37d9cab419353ce8d6f28a482b0 (diff) | |
| download | Tango-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')
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 ); |
