From 94fccc66fd2b8b6aed1371546dfd8cef68d5e60d Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Wed, 19 Feb 2020 10:29:19 +0200 Subject: Update Actuator + ControlLowLoop Stub: stubManager.Run("ProgressRequest" ,0xFEAD, 0xCAF101); //Actuators: ID, power, Direction (01 = UP) --- Software/Embedded_SW/Embedded/Modules/Control/control.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Control') diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.c b/Software/Embedded_SW/Embedded/Modules/Control/control.c index ba11ff58c..bea68e314 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/control.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/control.c @@ -585,7 +585,7 @@ uint32_t ControlLowLoop(uint32_t tick) { if (ControlArray[ControlLowDevice_i].ControlActive) { - if (tick == ControlArray[ControlLowDevice_i].StartTick) + if (tick - ControlArray[ControlLowDevice_i].StartTick<=skipped_ticks) continue; if (ControlArray[ControlLowDevice_i].ControlTiming == eOneMillisecond) continue; -- cgit v1.3.1 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 --- .../Embedded/Common/SWUpdate/FileSystem.c | 4 +- .../Embedded/Common/SWUpdate/FirmwareUpgrade.c | 2 + .../Embedded/Drivers/I2C_Communication/I2C_Task.c | 8 +++ Software/Embedded_SW/Embedded/Embedded.cfg | 4 +- Software/Embedded_SW/Embedded/Main.c | 3 +- .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 29 ++++++++-- .../Embedded/Modules/Control/MillisecTask.c | 6 ++- .../Embedded/Modules/Diagnostics/Diagnostics.c | 2 +- .../Embedded/Modules/General/GeneralHardware.c | 15 ++++++ .../Embedded/Modules/General/GeneralHardware.h | 2 + .../Embedded/Modules/Stubs_Handler/Progress.c | 63 ++++++++++++++++++++-- 11 files changed, 121 insertions(+), 17 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Control') diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c index e8d7f6f58..15e845527 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c @@ -49,7 +49,7 @@ FIL *UploadFileHandle = 0; //the system supports a single active file FIL *DownloadFileHandle = 0; //the system supports a single active file char FileHandleChar[5]; char ErrorMsg[100]; -#define MAX_CHUNK_LENGTH 5500 +#define MAX_CHUNK_LENGTH 4000 int32_t FileLength = 0; int32_t FileReceivedLength = 0; int32_t FileSentLength = 0; @@ -100,7 +100,7 @@ uint32_t FileUploadRequestFunc(MessageContainer* requestContainer) if (Semaphore_pend(FFS_Sem, BIOS_NO_WAIT)) { CommRxTaskHandle = Task_self(); - Task_setPri(CommRxTaskHandle, 3); + Task_setPri(CommRxTaskHandle, 2); // Report("Task_setPri", __FILE__, __LINE__, 4, RpWarning, (int)CommRxTaskHandle, 0); //Report("FileUploadRequestFunc 2", __FILE__, __LINE__, msec_millisecondCounter, RpWarning, (int)0, 0); Fresult = f_open(UploadFileHandle,request->path,FA_READ | FA_WRITE | FA_OPEN_ALWAYS | FA_CREATE_ALWAYS); diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c index 24f02f60c..4bbe44aea 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c @@ -165,6 +165,7 @@ uint32_t ActivateVersionRequestFunc(MessageContainer* requestContainer) usnprintf(FullPath, 50, "%s%s%s", request->path,"/", VersionPackage->filedescriptors[File_i]->filename); Fresult = f_unlink("//SYSINFO//PROCESSP.CFG"); Fresult |= f_rename (FullPath, "//SYSINFO//PROCESSP.CFG"); + LoadProcessParamsFromFile(); CurrentRunningFile++; break; case VERSION_FILE_DESTINATION__AlarmParams: @@ -180,6 +181,7 @@ uint32_t ActivateVersionRequestFunc(MessageContainer* requestContainer) usnprintf(FullPath, 50, "%s%s%s", request->path,"/", VersionPackage->filedescriptors[File_i]->filename); Fresult = f_unlink("//SYSINFO//GENHWCFG.CFG"); Fresult |= f_rename (FullPath, "//SYSINFO//GENHWCFG.CFG"); + HWConfigurationLoadFile(); CurrentRunningFile++; break; default: diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c index c6b8dbf39..40f6fce5e 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c @@ -396,9 +396,17 @@ void Trigger_WHS_I2C_EEprom_Read(uint32_t address, uint16_t size, uint8_t *p_dat Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } +void I2C_ReadingTask(UArg arg0, UArg arg1); void I2C_ReadingTask_Init(void) { + Task_Params taskParams; + I2C_ReadingMsgQ = Mailbox_create(sizeof(I2C_ReadingMessageStruc), 40, NULL,NULL); + Task_Params_init(&taskParams); + taskParams.instance->name = "I2C_Reading"; + taskParams.priority = 8; + taskParams.stackSize = 2048; + I2C_Task_Handle = Task_create((Task_FuncPtr)I2C_ReadingTask, &taskParams, NULL); } void I2C_ReadingTask(UArg arg0, UArg arg1) diff --git a/Software/Embedded_SW/Embedded/Embedded.cfg b/Software/Embedded_SW/Embedded/Embedded.cfg index 734902ce7..a9a958a55 100644 --- a/Software/Embedded_SW/Embedded/Embedded.cfg +++ b/Software/Embedded_SW/Embedded/Embedded.cfg @@ -132,12 +132,12 @@ ProcessTaskParams.stackSize = 4096; ProcessTaskParams.priority = 9; Program.global.process = Task.create("&jobTask", ProcessTaskParams); -var I2C_Reading = new Task.Params(); +/*var I2C_Reading = new Task.Params(); I2C_Reading.instance.name = "I2C_Reading"; I2C_Reading.stackSize = 2048; I2C_Reading.priority = 8; Program.global.I2C_Reading = Task.create("&I2C_ReadingTask", I2C_Reading); - +*/ var HeaterControlTaskParams = new Task.Params(); HeaterControlTaskParams.instance.name = "HeatersControl"; HeaterControlTaskParams.priority = 7; diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index 803a22cc4..604fc73fb 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -300,7 +300,8 @@ int main(void) //ActivateHeadMagnet(); Set_Speed_Sensor_TypeII_Registers(10,5);//set default values #endif - I2C_ReadingTask_Init(); + if ((Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD)||(WHS_Type == WHS_TYPE_NEW)) + I2C_ReadingTask_Init(); //EMAC_initEMAC(); ControlInit(); diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index e06e908bd..22cc33822 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -1566,7 +1566,7 @@ void SendEventNotifications(void) } EventsResponse.n_events = 0; - UInt Key = Task_disable(); + //UInt Key = Task_disable(); for (i = 0;i EventsResponse.n_events) + { + ReportWithPackageFilter(AlarmFilter,"Error in alarm numbers - large ", __FILE__,__LINE__,EventsResponse.n_events, RpFatalError, e, 0); + break; + } } } } + if (e!=EventsResponse.n_events) + { + ReportWithPackageFilter(AlarmFilter,"Error in alarm numbers - small ", __FILE__,__LINE__,EventsResponse.n_events, RpFatalError, e, 0); + EventsResponse.n_events = e; + } } else { LOG_ERROR(EventsResponse.n_events,"events malloc error"); - Task_restore(Key); + //Task_restore(Key); return; } } @@ -1609,7 +1619,7 @@ void SendEventNotifications(void) { EventsResponse.events = NULL; } - Task_restore(Key); + //Task_restore(Key); responseContainer = createAllocatedContainer(MESSAGE_TYPE__StartEventsNotificationResponse, AlarmHandlingToken, false, &EventsResponse, &start_events_notification_response__pack, &start_events_notification_response__get_packed_size,&alarm_response_buffer); responseContainer.has_continuous = true; responseContainer.continuous = true; @@ -1670,11 +1680,22 @@ uint32_t StartEventsNotificationRequestFunc(MessageContainer* requestContainer) // ReportInitParams InitParams; //ControlStart(); EventsNotificationRequestAccepted = true; - //AlarmHandlingStart(); + AlarmHandlingStart(); + MessageContainer responseContainer; + + StartEventsNotificationResponse response = START_EVENTS_NOTIFICATION_RESPONSE__INIT; StartEventsNotificationRequest* request = start_events_notification_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); ustrncpy (AlarmHandlingToken, requestContainer->token,36); start_events_notification_request__free_unpacked(request,NULL); + + responseContainer = createContainer(MESSAGE_TYPE__StartEventsNotificationResponse, AlarmHandlingToken, false, &response, &start_events_notification_response__pack, &start_events_notification_response__get_packed_size); + responseContainer.has_continuous = true; + responseContainer.continuous = true; + uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); + size_t container_size = message_container__pack(&responseContainer, container_buffer); + my_free(responseContainer.data.data); + SendChars(container_buffer, container_size); return status; } uint32_t StopEventsNotificationRequestFunc(MessageContainer* requestContainer) 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) diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index 63fe510c4..0764b2028 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -446,7 +446,7 @@ void DiagnosticOneMinuteCollection(void) } DiagnosticsMonitor.n_overalltemperature = 1; OverallTemperature = max(MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP1),MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP2)); - OverallTemperature = ((int)(MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP1))*10 + (int)(MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP2)/100)); + OverallTemperature = ((int)(MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP1)/100)*1000 + (int)(MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP2)/100)); DiagnosticsMonitor.overalltemperature = &OverallTemperature; DiagnosticsMonitor.n_midtank1level = 1; diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index 4f6a40c90..e4667a95f 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -717,6 +717,21 @@ uint32_t LoadConfigurationParamsFromFile(bool Initialize) } return Fresult; } +void HWConfigurationLoadFile(void) +{ + FRESULT Fresult = FR_OK; + uint8_t* buffer = NULL; + uint32_t Bytes = 0; + buffer = HWConfigurationLoadFromFile(&Bytes); //load hardware config + if (buffer) + { + ReadAppAndProgram(GENHWCFG_MAP_IN_FLASH, 4,&Bytes); + ReadAppAndProgram(GENHWCFG_MAP_IN_FLASH+4, Bytes, buffer); + free (buffer); + FlashInitResults[0] = true; + } + Report("Hardware Initialized", __FILE__,__LINE__,Bytes, RpMessage, GENHWCFG_MAP_IN_FLASH, 0); +} void FlashInitAndLoad(void) { FRESULT Fresult = FR_OK; diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h index 76e4d4414..55490a140 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h @@ -17,6 +17,8 @@ extern void HWSystemResetRequest(MessageContainer* requestContainer); uint32_t HWConfigurationInit(void); void FlashInitAndLoad(void); uint32_t LoadConfigurationParamsFromFile(bool); +void HWConfigurationLoadFile(void); + extern HardwareBlower BlowerCfg; extern bool DataUpdated; diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index d3a97bf3a..98fb74ea7 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -126,13 +126,25 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) response.has_progress = false; } } + else + if (request->amount == 0x3E6) // get WHS Blower speed by Q value + { + if (WHS_Type == WHS_TYPE_NEW) + { + response.progress = WHS_Get_Volt_Blower_Control(); + //response.progress = 0; + response.has_progress = true; + } + } + // WHS_Get_Volt_Blower_Control else if(request->amount == 0x3EA) { uint16_t tempu16 = 0; + double temp_double = 0.0; if (WHS_Type == WHS_TYPE_NEW) { - switch(request->delay )// set WHS Blower speed 0x00-0xfff + switch(request->delay )// get A2D { case 0: get_orf_1(&tempu16); @@ -161,12 +173,53 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) case 8: tempu16 = 0; //get_cur_vlv2(&tempu16); break; + case 10: + temp_double = get_ORF1_Q(); + break; + case 12: + temp_double = get_ORF3_Q(); + break; + case 20: + temp_double = get_average_ORF1_Q(); + break; + case 22: + temp_double = get_average_ORF3_Q(); + break; + + case 11: + //get_orf_2(&tempu16); + break; + case 13: + //get_vlev1(&tempu16); + break; + case 14: + //get_vlev2(&tempu16); + break; + case 15: + //get_gas_out(&tempu16); + break; + case 16: + //get_cur_fan(&tempu16); + break; + case 17: + //get_cur_vlv1(&tempu16); + break; + case 18: + //tempu16 = 0; //get_cur_vlv2(&tempu16); + break; default : tempu16 = 0x500; //get_cur_vlv2(&tempu16); break; } } - response.progress = (double)tempu16; + if ((request->delay)<10) + { + response.progress = (double)tempu16; + } + else + { + response.progress = temp_double; + } response.has_progress = true; } else // @@ -392,8 +445,8 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) if((request -> delay & 0xFFF000) == 0xCAF000)//Actuator { - HeadCard_Actuators_Control((ACTUATORS)(((request -> delay) & 0x100)>>8), /*(bool)((request -> delay & 0x10)>>4), */(bool)((request -> delay & 0x01)));//Actuators: ID, power, Direction - //Trigger_Head_Actuators_Control((ACTUATORS)(((request -> delay) & 0x100)>>8), (bool)((request -> delay & 0x10)>>4), (bool)((request -> delay & 0x01)));//Actuators: ID, power, Direction + //HeadCard_Actuators_Control((ACTUATORS)(((request -> delay) & 0x100)>>8), /*(bool)((request -> delay & 0x10)>>4), */(bool)((request -> delay & 0x01)));//Actuators: ID, power, Direction + Trigger_Head_Actuators_Control((ACTUATORS)(((request -> delay) & 0x100)>>8), (bool)((request -> delay & 0x10)>>4), (bool)((request -> delay & 0x01)));//Actuators: ID, power, Direction //response.progress = HeadCard_Actuators_Status((ACTUATORS)((request -> delay) & 0x100)>>8); response.has_progress = true; } @@ -511,7 +564,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) else if((request->amount == 0x0CE) && (request->delay == 0x0CE)) //Get Gas Sensor { - LOG_ERROR(request->delay,"FlashInitAndLoad"); + LOG_ERROR(request->delay,"FlashInit"); FlashInit(); response.progress = (double)OK; response.has_progress = true; -- 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') 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