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 | |
| 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')
15 files changed, 146 insertions, 179 deletions
diff --git a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c index 60707d0cb..4b1fec423 100644 --- a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c +++ b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c @@ -20,7 +20,7 @@ typedef struct } TangoVersion_t; -TangoVersion_t _gTangoVersion = {1,4,6,33}; +TangoVersion_t _gTangoVersion = {1,4,6,34}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index 4c74839a1..4b6bdc129 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -20,7 +20,7 @@ #define NO_INITIAL_HEATING #define MAX_STRING_LEN 255 //Embedded version + filter.c -//#define WATCHDOG +#define WATCHDOG //#define DISPESER_TEST //#define FPGA_WATCHDOG_DISABLE diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.c index d7f0c8277..0d767b864 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.c @@ -121,7 +121,7 @@ uint32_t Check_Head_Type_Via_EEPROM() if (status == 0xFF) { ACTIVITY_RED_LED_ON; - AlarmHandlingSetAlarm(EVENT_TYPE__POWER_UP_BIT_FAILURE, true); + //AlarmHandlingSetAlarm(EVENT_TYPE__POWER_UP_BIT_FAILURE, true); } if((Head_i2c_status == I2C_MASTER_ERR_ADDR_ACK)||(status == 0xFF)) diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Comm.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Comm.c index 8bd21b9b4..7c98b53da 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Comm.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Comm.c @@ -22,9 +22,9 @@ #include "i2c_fifo.h" #include "i2c.h" - - - +uint32_t LastReadI2C_BASE; unsigned char LastReadaddr; unsigned char* LastReaddata; unsigned int LastReadlen; +uint32_t LastWriteI2C_BASE; unsigned char LastWriteaddr; unsigned char *LastWritedata; unsigned int LastWritelen; +Task_Handle TaskId; uint32_t Arb_Loss_Count = 0; //***************************************************************************** //! Indicates whether or not the I2C bus has timed out. @@ -50,6 +50,7 @@ bool I2CMasterTimeout(uint32_t ui32Base) } } +char I2CErrMsg[181]; uint32_t I2C_WriteBuff(uint32_t I2C_BASE, unsigned char addr, unsigned char* data, unsigned int len) { uint32_t status = OK; @@ -212,11 +213,31 @@ uint32_t I2C_Write(uint32_t I2C_ID, uint32_t Slave_Add, uint32_t *I2C_Write_buf, //Byte2Write = Byte2Write & 0xFF; - /*if(No_BytesToWrite <= 2) { + status = I2C_WriteBuff(I2C_BASE, Slave_Add, I2C_Write_buf, No_BytesToWrite); + //status = I2C_WriteFifo(I2C_BASE, Slave_Add, buff, No_BytesToWrite); + /*if(No_BytesToWrite <= 2) + { status = I2C_WriteBuff(I2C_BASE, Slave_Add, I2C_Write_buf, No_BytesToWrite); - } else { + } + else + { status = I2C_WriteFifo(I2C_BASE, Slave_Add, buff, No_BytesToWrite); }*/ + if (status == OK) + { + //LastWriteI2C_BASE = I2C_BASE; + LastWriteaddr = Slave_Add; + LastWritedata = buff; + LastWritelen = No_BytesToWrite; + TaskId = Task_self(); + } + else + { + usnprintf(I2CErrMsg, 180, "I2C Err write 0x%x 0x%x, last good read 0x%x, %d, write 0x%x, %d, T 0x%x 0x%x",status,Slave_Add, + LastReadaddr, LastReadlen, + LastWriteaddr, LastWritelen, Task_self(),TaskId); + Report(I2CErrMsg, __FILE__, __LINE__, status, RpWarning, Slave_Add, 0); + } //uint32_t I2C_W_buf[256] = {0},i; @@ -225,7 +246,6 @@ uint32_t I2C_Write(uint32_t I2C_ID, uint32_t Slave_Add, uint32_t *I2C_Write_buf, // I2C_W_buf[i] = request->bytestwrite[i]; // } - status = I2C_WriteBuff(I2C_BASE, Slave_Add, I2C_Write_buf, No_BytesToWrite); if (status) { if (Arb_Loss_Count++ >= 5) @@ -289,6 +309,22 @@ uint32_t I2C_Read(uint32_t I2C_ID, uint32_t Slave_Add, uint32_t *I2C_Read_buf, u } } + if (status == OK) + { + //LastReadI2C_BASE = I2C_BASE; + LastReadaddr = Slave_Add; + LastReaddata = buff; + LastReadlen = No_BytesToRead; + TaskId = Task_self(); + } + else + { + usnprintf(I2CErrMsg, 180, "I2C Err read 0x%x 0x%x, last good read 0x%x, %d, write 0x%x, %d, T 0x%x 0x%x",status,Slave_Add, + LastReadaddr, LastReadlen, + LastWriteaddr, LastWritelen, Task_self(),TaskId); + Report(I2CErrMsg, __FILE__, __LINE__, status, RpWarning, Slave_Add, 0); + } + /*else { if (Arb_Loss_Count) diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/Cartridges/Cartridges.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/Cartridges/Cartridges.c deleted file mode 100644 index 8d11589be..000000000 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/Cartridges/Cartridges.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Cartridges.c - * - * Created on: Jun 29, 2020 - * Author: avi - */ -#include "include.h" -#include "DataDef.h" -#include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h" - -typedef enum -{ - UPPER_CART, - LOWER_CART, - UNKNOWN_CART,//at power up - NONE_CART,//NA -}WASTE_ID; - -//WASTE_ID Waste_Id; - -typedef enum -{ - CART_UNKNOWN,//after power-up... - CART_OUT, - CART_IN, - CART_SELECTED, -}CART_STATE; - -typedef enum -{ - CART_INIT,//unknown, acquire info, decide - CART_IDLE,//empty + valid (RFID tag OK), ready to use - CART_FULL, - CART_EMPTYING, - CART_EMPTYING_PAUSED, - CART_BLOCKED,//RFID FAILED ... -}CART_STATUS;// mode - -typedef struct -{ - CART_STATE State; - uint8_t RFID_Legality; - double Leval;//waste tank level mili litters - uint8_t Warnings;//empty / full / overflow - bool Emptying_Process;// YES / NO - uint8_t Emptying_Duration; //if Emptying_Process YES -}WASTE_HANDLING; - -typedef struct -{ - uint8_t Door; // OPEN / CLOSE / unknown - uint8_t Waste_Active; // CART_2 / CART_3 / NONE - WASTE_HANDLING Waste_Handling[2]; -}CART_HANDLING; - -CART_HANDLING Cart_Handling; - -void cartWaste_Init() -{ - //Initial state - OUT - Cart_Handling.Waste_Handling[UPPER_CART].State = CART_UNKNOWN; - Cart_Handling.Waste_Handling[LOWER_CART].State = CART_UNKNOWN; - - Pannel_Leds(CART_2,MODE_OFF); - Pannel_Leds(CART_3,MODE_OFF); - - Cart_Handling.Door = UNKNOWN; - Cart_Handling.Waste_Active = NONE_CART; -} - -void cartCart_door()//Polled by polling function. Notify waste. Poll each 1 second. During active filling poll each 100msec -{ - if(Get_COVER_1_State(CartridgesDoor))//to check the polarity - { - Cart_Handling.Door = OPEN; - } - else - { - Cart_Handling.Door = CLOSE; - } -} - -void cartCART_INSERTED(WASTE_ID CartId) //every 1 sec. -{ - switch(CartId) - { - case UPPER_CART: - if(Is_Cartridge_Present(CART_2) == true) - { - Cart_Handling.Waste_Handling[UPPER_CART].State = CART_IN; - Pannel_Leds(CART_2,MODE_ON); - } - break; - case LOWER_CART: - if(Is_Cartridge_Present(CART_3) == true) - { - Cart_Handling.Waste_Handling[LOWER_CART].State = CART_IN; - Pannel_Leds(CART_3,MODE_ON); - } - break; - default: - break; - } -} - -void cartCART_EXTRACTED(WASTE_ID CartId) -{ - if(Cart_Handling.Waste_Active == CART_SELECTED) - { - #warning notify waste module - } - - Cart_Handling.Waste_Handling[CartId].State = CART_OUT; - - switch(CartId) - { - case UPPER_CART: - if(Is_Cartridge_Present(CART_2) == false) - { - Pannel_Leds(CART_2,MODE_OFF); - } - break; - case LOWER_CART: - if(Is_Cartridge_Present(CART_3) == false) - { - Pannel_Leds(CART_3,MODE_OFF); - } - break; - default: - break; - } -} diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c index 3671ff4e0..db9ee1053 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c @@ -554,7 +554,7 @@ double CalculateWHSWasteTankLevelMiliLiter() waste_volume_milliliter = Vm_ml -LocalV0_ml; } //ReportWithPackageFilter(WasteFilter,"------------ waste_volume_ml -----------------", __FILE__, __LINE__, 0, RpMessage, (int)(waste_volume_milliliter), 0); - Report("------------ get waste level in ml -----------------", __FILE__, __LINE__, 0, RpMessage, (int)(waste_volume_milliliter), 0); + Report("------------ get waste level in ml -----------------", __FILE__, LocalV0_ml, Vm_ml, RpMessage, (int)(waste_volume_milliliter), 0); return waste_volume_milliliter; } @@ -578,13 +578,13 @@ bool waste_seq_cont() case Open_Valve: Set_WHS_valve(VOC_VALVE, OPEN, 0); Write_WHS_Valve_reg(); - Report("------------ waste level procedure open -----------------", __FILE__, WasteAverageIndex, OpenClose, RpMessage, (int)(waste_level_ml), 0); + //Report("------------ waste level procedure open -----------------", __FILE__, WasteAverageIndex, OpenClose, RpMessage, (int)(waste_level_ml), 0); OpenClose = Close_Valve; break; case Close_Valve: Set_WHS_valve(VOC_VALVE, CLOSE, 0); Write_WHS_Valve_reg(); - Report("------------ waste level procedure close ----------------", __FILE__, WasteAverageIndex, OpenClose, RpMessage, (int)(waste_level_ml), 0); + //Report("------------ waste level procedure close ----------------", __FILE__, WasteAverageIndex, OpenClose, RpMessage, (int)(waste_level_ml), 0); OpenClose = Read_Waste; break; case Read_Waste: @@ -607,7 +607,7 @@ bool waste_seq_cont() WasteCounter = 0; waste_level_ml = avg/8; - Report("------------ Avg waste level in ml -----------------", __FILE__, WasteAverageIndex, OpenClose, RpMessage, (int)(waste_level_ml), 0); + Report("------------ Avg waste level in ml -----------------", __FILE__, WasteAverageIndex, avg, RpMessage, (int)(waste_level_ml), 0); } return status; } @@ -673,7 +673,7 @@ bool waste_seq_step1_cont() Trigger_SetWHS_VOC_Valve(OPEN); - //WasteControlId = AddControlCallback(NULL, Trigger_ReadWHS_WasteContinouos, WASTE_PROCESS_TIME, TemplateDataReadCBFunction,0,0, 0 ); + WasteControlId = AddControlCallback(NULL, Trigger_ReadWHS_WasteContinouos, WASTE_PROCESS_TIME, TemplateDataReadCBFunction,0,0, 0 ); Report("------------ waste_seq_step1_cont -----------------", __FILE__, __LINE__, WasteControlId, RpMessage, 0, 0); return status; @@ -704,7 +704,7 @@ bool waste_seq_step1() WasteCounter = 0; OpenClose = CLOSE; - ReportWithPackageFilter(WasteFilter,"------------ open waste level Air valve -----------------", __FILE__, __LINE__, 0, RpMessage, 0, 0); + Report("------------ open waste level Air valve -----------------", __FILE__, __LINE__, WHS_Eeprom.bytes.Orifice_Waste_Level_V0_ml, RpMessage, 0, 0); Trigger_SetWHS_VOC_Valve(OPEN); ReportWithPackageFilter(WasteFilter,"------------ wait 1 second -----------------", __FILE__, __LINE__, 0, RpMessage, 0, 0); diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c index c5f8037aa..8618524d9 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c @@ -470,6 +470,7 @@ bool WHS_Set_Blower_Control_Closed_Loop(double Q_value) Valve_Set(IDS_Id_to_AirValve[midtank_cleared], Atm_MidTank_ON ); //Atm_MidTank_OFF/ON Valve_Set(IDS_Id_to_CartrideValve[midtank_cleared], Atm_MidTank_ON ); //Atm_MidTank_OFF/ON } + return OK; } else { @@ -634,9 +635,9 @@ uint32_t WHS_Pid_Testing_Func(double setParam,double measuredParam) calculated_speed = volt + 100; if (calculated_speed < (volt - 100)) calculated_speed = volt - 100;*/ - usnprintf(whs_str, 150, "WHS_Pid_Testing_Func meas %d avg %d set %d error %d integral %d blower %d", + /*usnprintf(whs_str, 150, "WHS_Pid_Testing_Func meas %d avg %d set %d error %d integral %d blower %d", (int)(measuredParam*100),(int)(avreageSampleValue*100),(int)(setParam*100),(int)(WHS_ControlData.m_calculatedError*100),(int)(WHS_ControlData.m_integral*100),(int)(calculated_speed)); - Report(whs_str, __FILE__,__LINE__, (int)(calculated_speed), RpMessage, (int)(volt), 0); + Report(whs_str, __FILE__,__LINE__, (int)(calculated_speed), RpMessage, (int)(volt), 0);*/ /*if (fabs(WHS_ControlData.m_calculatedError)>(WHS_ControlData.m_params.MAX/2)) { close_loop_time = 1; 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 ); diff --git a/Software/Embedded_SW/Embedded/Software Release Notes.txt b/Software/Embedded_SW/Embedded/Software Release Notes.txt index b53a7016f..a090a9612 100644 --- a/Software/Embedded_SW/Embedded/Software Release Notes.txt +++ b/Software/Embedded_SW/Embedded/Software Release Notes.txt @@ -1,3 +1,17 @@ +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 + Embedded SW Release note - Version 1.4.6.33 - Pack 2+ ============================================================= remove logs from I2C errors - show only summary. |
