From 096bd938ce5a1c3643695bc8f6818e8e1fd3c064 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Wed, 19 Feb 2020 11:30:46 +0200 Subject: bug fixes before version 1.4.6.12 --- Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c') diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 2c7512129..dec526668 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -569,6 +569,7 @@ void setRapidPressureRead(bool value) } uint16_t PumpCounter = 0; +uint16_t realtimetest[101]; uint32_t MillisecLowLoop(uint32_t tick) { uint8_t Motor_i,Disp_i,temp; @@ -598,6 +599,7 @@ uint32_t MillisecLowLoop(uint32_t tick) Onesecond_Tick = (tick%eOneSecond == 0) ?true:false; OneMinute_Tick = (tick%eOneMinute == 0) ?true:false; OneHourTick = (tick%eOneHour == 0) ?true:false; + realtimetest[(tick%1000)/10]++; //gather Motor data from FPGA //ROM_IntMasterDisable(); int StartPT100 = 0; @@ -720,8 +722,8 @@ uint32_t MillisecLowLoop(uint32_t tick) } Trigger_WHS_PT100_Read_All(); Trigger_WHS_MAX11614_Read_allADC(); - WHS_Blower_Avarege_ORF1(); //drier - WHS_Blower_Avarege_ORF3(); //head + //WHS_Blower_Avarege_ORF1(); //drier + //WHS_Blower_Avarege_ORF3(); //head Trigger_WHSReadAllFanTacho (); } if (OneMinute_Tick) -- cgit v1.3.1 From 55953df8a7753da1477dcf1db5484db342b3c906 Mon Sep 17 00:00:00 2001 From: Shai Frieder Date: Wed, 19 Feb 2020 16:45:35 +0200 Subject: control the blower acording to Q value --- .../WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c | 50 ++++++++++++++++------ .../WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h | 7 ++- .../Embedded/Modules/Control/MillisecTask.c | 5 ++- .../Embedded/Modules/Stubs_Handler/Progress.c | 2 +- 4 files changed, 46 insertions(+), 18 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c') 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 384e3cd59..c68073238 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 @@ -28,6 +28,8 @@ double average_Q_orifice1; double average_Q_orifice3; bool ORF1_flageNewBlowerValue; bool ORF3_flageNewBlowerValue; +double SetPoint_Q = 0.0; +bool CofigurationFlow = 1; int32_t i2c_smbus_write_word_data(int i2cFileDescriptor, uint8_t command_regAddress, uint16_t regValue) { @@ -220,7 +222,7 @@ double WHS_Blower_Avarege_ORF1() i += 1; } sum_orifice_Q -= average_orf1_Q_buff[i]; - get_orf_1(&orifice_hex_value ); + //get_orf_1(&orifice_hex_value ); average_orf1_Q_buff[i] = get_Q(orifice_hex_value); sum_orifice_Q += average_orf1_Q_buff[i]; average_Q_orifice1 = sum_orifice_Q / ORF_BUFF_SIZE; @@ -269,6 +271,20 @@ double WHS_Blower_Avarege_ORF3() return average_Q_orifice3; } +double get_ORF1_Q() +{ + uint16_t tempu16 = 0; + get_orf_1(&tempu16); + return get_Q(tempu16); +} + +double get_ORF3_Q() +{ + uint16_t tempu16 = 0; + get_orf_3(&tempu16); + return get_Q(tempu16); +} + double get_average_ORF1_Q() { return average_Q_orifice1; @@ -298,8 +314,8 @@ bool Test_WHS_blower() return status; } #define SET_DYEING_HEAD_ORRIFFICE_SENSOR headairflow //todo -#define LARGE_STEP 10 //todo define the correct number -#define SMALL_STEP 1 //todo define the correct number +#define LARGE_STEP 100 //todo define the correct number +#define SMALL_STEP 10 //todo define the correct number bool WHS_Set_Blower_Control_Closed_Loop(double SetPoint_Q) { @@ -307,13 +323,15 @@ bool WHS_Set_Blower_Control_Closed_Loop(double SetPoint_Q) double current_dying_head_flow_Q = 0; uint16_t volt; - +double tmp = 0.0; current_dying_head_flow_Q = get_average_ORF3_Q(); ReportWithPackageFilter(WasteFilter,"------------ current_dying_head_flow_Q =-----------------", __FILE__,__LINE__, current_dying_head_flow_Q, RpMessage, 0, 0); ReportWithPackageFilter(WasteFilter,"------------ SET_DYEING_HEAD_ORRIFFICE_SENSOR =-----------------", __FILE__,__LINE__, SET_DYEING_HEAD_ORRIFFICE_SENSOR, RpMessage, current_dying_head_flow_Q, 0); - while (abs(current_dying_head_flow_Q - SetPoint_Q) > 0.2) + tmp = abs((current_dying_head_flow_Q*10) - (SetPoint_Q*10)); + + if (tmp > (0.2 * 10)) { - volt = getBlowerState(); + volt = g_MAX5805_device.CODE;//getBlowerState(); if (current_dying_head_flow_Q < SetPoint_Q) { if (( SetPoint_Q - current_dying_head_flow_Q) > 0.5) @@ -352,18 +370,21 @@ bool WHS_Set_Blower_Control_Closed_Loop(double SetPoint_Q) return OK; } -void WHS_Start_Blower_Control_Closed_Loop (double SetPoint_Q) +void WHS_Set_SetPoint_Q_value(double value) { - // use 0 to STOP -// uint16_t mVSetpoint = 0; + SetPoint_Q = value; + CofigurationFlow = 0; +} - if(SetPoint_Q) +void WHS_Start_Blower_Control_Closed_Loop () +{ + if(CofigurationFlow) { - WHS_Set_Blower_Control_Closed_Loop(SetPoint_Q); + WHS_Set_Blower_Control_Closed_Loop(headairflow); } else { - // blower off? + WHS_Set_Blower_Control_Closed_Loop(SetPoint_Q); } @@ -383,5 +404,8 @@ return value; } */ - +uint16_t WHS_Get_Volt_Blower_Control() +{ + return g_MAX5805_device.CODE; +} diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h index 9f79034bb..344932033 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h @@ -16,16 +16,19 @@ int16_t Write_Max5805_LDACn(bool value); bool WHS_init_Blower(void); bool WHS_Set_Volt_Blower_Control(uint16_t volt); +uint16_t WHS_Get_Volt_Blower_Control(void); bool Write_MAX5805_REF(void); bool Test_WHS_blower(void); double WHS_Blower_Avarege_ORF1(void); double WHS_Blower_Avarege_ORF3(void); double get_average_ORF1_Q(void); double get_average_ORF3_Q(void); +double get_ORF1_Q(); +double get_ORF3_Q(); bool WHS_Set_Blower_Control_Closed_Loop(double SetPoint); -void WHS_Start_Blower_Control_Closed_Loop (double SetPoint); +void WHS_Start_Blower_Control_Closed_Loop (); double WHS_Get_Blower_Control_Closed_Loop_SetPoint(void); - +void WHS_Set_SetPoint_Q_value(double value); extern double headairflow; /* from Blower.h diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index dec526668..fe350d78d 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -722,9 +722,10 @@ uint32_t MillisecLowLoop(uint32_t tick) } Trigger_WHS_PT100_Read_All(); Trigger_WHS_MAX11614_Read_allADC(); - //WHS_Blower_Avarege_ORF1(); //drier - //WHS_Blower_Avarege_ORF3(); //head + WHS_Blower_Avarege_ORF1(); //drier + WHS_Blower_Avarege_ORF3(); //head Trigger_WHSReadAllFanTacho (); + WHS_Start_Blower_Control_Closed_Loop (); } if (OneMinute_Tick) { diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index 98fb74ea7..68df2aa17 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -121,7 +121,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) { if (WHS_Type == WHS_TYPE_NEW) { - WHS_Set_Blower_Control_Closed_Loop (request->delay); + WHS_Set_SetPoint_Q_value((double) request->delay); response.progress = 0; response.has_progress = false; } -- cgit v1.3.1