From e7e69b517ded1f9be03fc5de8d78e40e5701cb4c Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Mon, 13 Jul 2020 19:00:14 +0300 Subject: merge --- .../Drivers/I2C_Communication/DAC/Blower.c | 2 +- .../WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c | 40 ++++++++++++++++++---- .../WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c | 2 +- .../Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 19 ++++++---- 4 files changed, 48 insertions(+), 15 deletions(-) (limited to 'Software/Embedded_SW') diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c index 16641d1de..31cf5d0da 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c @@ -182,7 +182,7 @@ uint32_t Control_Voltage_To_Blower(uint32_t mV) else //new WHS { Trigger_SetWHSBlowerVoltage(mV); - Report("------------ Set Blower Voltage:-----------------", __FILE__,__LINE__, mV, RpMessage, (int)headairflow, 0); + //Report("------------ Set Blower Voltage:-----------------", __FILE__,__LINE__, mV, RpMessage, (int)headairflow, 0); } voltage = mV; DiaglosticChangeBlowerData(); 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 f7d734536..bb41e1af3 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 @@ -22,6 +22,7 @@ #include "drivers/Flash_ram/MCU_E2Prom.h" #include #include "modules/control/control.h" +#include "modules/General/process.h" uint16_t Orf_zero_value[DRIER_FLOW_METER+1] = {1112,0,1040}; @@ -540,7 +541,7 @@ double CalculateWHSWasteTankLevelMiliLiter() get_vlev1(&Vm_mv);//mV (VREF = 4.096V 12bit so 1bit is 1mV) - Report("***** get waste level in mV ********", __FILE__, __LINE__, 0, RpMessage, (int)(Vm_mv), 0); + //Report("***** get waste level in mV ********", __FILE__, __LINE__, 0, RpMessage, (int)(Vm_mv), 0); Vm_ml = Vm_mv * 1500/mvfor1500mL; @@ -554,11 +555,12 @@ 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__, LocalV0_ml, Vm_ml, 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; } uint32_t WasteControlId = 0xFF; +bool ContinouosWaste = false, regularWaste = false; typedef enum { Open_Valve, @@ -566,6 +568,7 @@ typedef enum Read_Waste }Waste_Tank_Procedure_Enum; int nop = 0; +int FirstInSequence = true; Waste_Tank_Procedure_Enum OpenClose = Open_Valve; bool waste_seq_cont() { @@ -592,7 +595,7 @@ bool waste_seq_cont() if (WasteAverageIndex >= 8) WasteAverageIndex = 0; WasteCounter++; - Report("------------ waste level procedure read -----------------", __FILE__, WasteAverageIndex, OpenClose, RpMessage, (int)(WasteAverageContent[WasteAverageIndex-1]), 0); + //Report("------------ waste level procedure read -----------------", __FILE__, WasteAverageIndex, OpenClose, RpMessage, (int)(WasteAverageContent[WasteAverageIndex-1]), 0); OpenClose = Open_Valve; break; } @@ -609,6 +612,17 @@ bool waste_seq_cont() Report("------------ Avg waste level in ml -----------------", __FILE__, WasteAverageIndex, avg, RpMessage, (int)(waste_level_ml), 0); } + if (FirstInSequence == false) + { + if (WasteCounter == 4) + { + for (i = 0; i<8;i++) + { + avg+=WasteAverageContent[i]; + } + waste_level_ml = avg/8; + } + } return status; } @@ -624,19 +638,19 @@ bool waste_seq_step2() 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: WasteAverageContent[WasteAverageIndex++] = CalculateWHSWasteTankLevelMiliLiter(); WasteCounter++; - Report("------------ waste level procedure read -----------------", __FILE__, WasteAverageIndex, OpenClose, RpMessage, (int)(WasteAverageContent[WasteAverageIndex-1]), 0); + //Report("------------ waste level procedure read -----------------", __FILE__, WasteAverageIndex, OpenClose, RpMessage, (int)(WasteAverageContent[WasteAverageIndex-1]), 0); OpenClose = Open_Valve; break; } @@ -656,11 +670,14 @@ bool waste_seq_step2() WasteCounter = 0; waste_level_ml = avg/8; + regularWaste = false; + if (ContinouosWaste == true) + waste_seq_step1_cont(); + Report("------------ Avg waste level in ml -----------------", __FILE__, WasteCounter, OpenClose, RpMessage, (int)(waste_level_ml), 0); } return status; } -bool ContinouosWaste = false; #define WASTE_PROCESS_TIME 1000 bool waste_seq_step1_cont() { @@ -671,6 +688,9 @@ bool waste_seq_step1_cont() ContinouosWaste = true; + if (regularWaste == true) + return status; + Trigger_SetWHS_VOC_Valve(OPEN); WasteControlId = AddControlCallback(NULL, Trigger_ReadWHS_WasteContinouos, WASTE_PROCESS_TIME, TemplateDataReadCBFunction,0,0, 0 ); @@ -690,11 +710,16 @@ bool waste_seq_cont_stop(void) //else // Report("Remove control callback failed",__FILE__,__LINE__,(int)WasteControlId,RpWarning,(int)waste_seq_step2,0); + return OK; } bool waste_seq_step1() { bool status = OK; + if (MachineReadyForHeating == false) + { + return OK; + } if (ContinouosWaste == true) { Report("------- periodic waste called while emptying ------------", __FILE__, __LINE__, 0, RpMessage, 0, 0); @@ -703,6 +728,7 @@ bool waste_seq_step1() WasteAverageIndex = 0; WasteCounter = 0; OpenClose = CLOSE; + regularWaste = true; Report("------------ open waste level Air valve -----------------", __FILE__, __LINE__, WHS_Eeprom.bytes.Orifice_Waste_Level_V0_ml, RpMessage, 0, 0); Trigger_SetWHS_VOC_Valve(OPEN); 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 92f24e083..c51ff6d96 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 @@ -543,7 +543,7 @@ bool WHS_Set_Blower_Control_Closed_Loop(double Q_value) } } } - Report("------------ Blower Control :-----------------", __FILE__,Orf_zero_value[HEAD_FLOW_METER], (int)(current_dying_head_flow_Q*100), RpMessage, (int)(Q_value*100), 0); + //Report("------------ Blower Control :-----------------", __FILE__,Orf_zero_value[HEAD_FLOW_METER], (int)(current_dying_head_flow_Q*100), RpMessage, (int)(Q_value*100), 0); return OK; } diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index b4442c996..c444c7017 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -590,7 +590,7 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue) Report("pressureReady = true or timeout;",__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)NumOfActiveDispensers,0); } } - else if (endOfPrepareWCF == false) + else if ((endOfPrepareWCF == false)&&(NumOfActiveDispensers)) { if ((DispenserBuildTimeCounter == PRESSURE_READ_TIME_GAP)&&(FirstBrushStop)) { @@ -683,6 +683,13 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue) } } + else if (NumOfActiveDispensers == 0) + { + endOfPrepareWCF = true; + FreeBrushStopFileData(FirstBrushStop); + FirstBrushStop =NULL; + Report("endOfPrepareWCF = true;",__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)NumOfActiveDispensers,0); + } //start new stage if (endOfPrepareWCF == true) { @@ -1027,7 +1034,7 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue) //******************************************************************************************************************** - +#define IDS_PRESEGMENT_TIME_STEP 50 uint32_t IDSPreSegmentStateCallbackRunner(uint32_t IfIndex, uint32_t ReadValue) { JobDispenser **Dispensers; @@ -1065,7 +1072,7 @@ uint32_t IDS_Cleaning_Spray_Cleaning_Solution (int dispenserSpeed,callback_fptr uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback); */ //InterSegmentStepsLimit = lInterSegmentLength*10;//100 millisec steps - InterSegmentStepsCount+=100; + InterSegmentStepsCount+=IDS_PRESEGMENT_TIME_STEP; if (InterSegmentStepsCount >= lInterSegmentLength) { //IDS_Valve_PresegmentReady(1,0); @@ -1259,7 +1266,7 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId) lInterSegmentLength = ((IntersegmentLength*100)*1000/dyeingspeed); lInterSegmentLength-=(lInterSegmentLength%100); //round to a 100 multiplication InterSegmentStepsCount = 0; - DispenserPreSegmentControlId = AddControlCallback(NULL,IDSPreSegmentStateCallbackRunner, 100,TemplateDataReadCBFunction ,0, 0, 0 ); + DispenserPreSegmentControlId = AddControlCallback(NULL,IDSPreSegmentStateCallbackRunner, IDS_PRESEGMENT_TIME_STEP,TemplateDataReadCBFunction ,0, 0, 0 ); if (DispenserPreSegmentControlId == 0xFF) { Report("Add control callback failed",__FILE__,__LINE__,(int)100,RpWarning,(int)0,0); @@ -1292,7 +1299,7 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId) lInterSegmentLength = (dryerbufferCentimeters*1000/dyeingspeed); lInterSegmentLength-=(lInterSegmentLength%100); //round to a 100 multiplication InterSegmentStepsCount = 0; - DispenserPreSegmentControlId = AddControlCallback( IDSPreSegmentStateCallbackRunner, 100,TemplateDataReadCBFunction ,0, 0, 0 ); + DispenserPreSegmentControlId = AddControlCallback( IDSPreSegmentStateCallbackRunner, IDS_PRESEGMENT_TIME_STEP,TemplateDataReadCBFunction ,0, 0, 0 ); if (DispenserPreSegmentControlId == 0xFF) { Report("Add control callback failed",__FILE__,__LINE__,(int)100,RpWarning,(int)0,0); @@ -1695,7 +1702,7 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) lInterSegmentLength = (dryerbufferCentimeters*1000/dyeingspeed); lInterSegmentLength-=(lInterSegmentLength%100); //round to a 100 multiplication InterSegmentStepsCount = 0; - DispenserPreSegmentControlId = AddControlCallback("IDS DTS", IDSPreSegmentStateCallbackRunner, 100,TemplateDataReadCBFunction ,0, 0, 0 ); + DispenserPreSegmentControlId = AddControlCallback("IDS DTS", IDSPreSegmentStateCallbackRunner, IDS_PRESEGMENT_TIME_STEP,TemplateDataReadCBFunction ,0, 0, 0 ); if (DispenserPreSegmentControlId == 0xFF) { Report("Add control callback failed",__FILE__,__LINE__,(int)100,RpWarning,(int)0,0); -- cgit v1.3.1