diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2020-11-25 12:08:51 +0200 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2020-11-25 12:08:51 +0200 |
| commit | 2dacdcac10595cc138458dfa6988951e71172f46 (patch) | |
| tree | 0d4941786d4068728cd7693e8a21744066784a97 /Software/Embedded_SW/Embedded/Modules | |
| parent | 978439fe882ef59b63fb1b1450bd615f707214c9 (diff) | |
| parent | 97beabc887778926570c286bcedbb2480fd59921 (diff) | |
| download | Tango-2dacdcac10595cc138458dfa6988951e71172f46.tar.gz Tango-2dacdcac10595cc138458dfa6988951e71172f46.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
5 files changed, 89 insertions, 5 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_Blowers.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_Blowers.c index 946958a08..d98af2097 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_Blowers.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_Blowers.c @@ -28,6 +28,7 @@ #include "../control/MillisecTask.h" #include "../Ids/Ids_ex.h" #include "../General/process.h" +#include "../Waste/Waste_ex.h" #include <ti/sysbios/knl/Task.h> #include <driverlib/timer.h> @@ -42,13 +43,14 @@ #include "Drivers/I2C_Communication/I2C.h" #include <Drivers/I2C_Communication/I2C_Task.h> #include <Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h> - +#include "drivers/Flash_ram/MCU_E2Prom.h" #include "StateMachines/Initialization/InitSequence.h" /******************** Data Structures ********************************************/ #define MIN_ALLOWED_PWM 0 #define MAX_ALLOWED_PWM 255 #define ARC_ALARM_LIMIT 3 +#define V0_INIT_STOP_FAN_TIME 5 #define PRESSURE_SENSOR_CP 0.269 #define PRESSURE_SENSOR_B 0.45 @@ -57,10 +59,12 @@ extern uint16_t Head_Fan_Tach[2]; extern uint8_t Head_Fan_PWM_Command[2]; -uint32_t PressureSensorV0[2] = {0, 0}; +uint32_t PressureSensorV0[2] = {1100, 1100}; uint8_t HeadBlowersCloseLoopTime[2] = {2, 2}; uint8_t HeadBlowersEnable = 1; uint8_t BlowerIdToSensorId[2] = {HEAD_PT100_ZONE_7_0X86_0, HEAD_PT100_ZONE_5_0X84_0}; //HEAD_FAN_RIGHT, HEAD_FAN_LEFT +uint32_t HeadBlowersInitControlId = 0xFF; +uint32_t HeadBlowersV0InitCount = 0; typedef struct { @@ -455,3 +459,70 @@ uint32_t HeadBlowerCommandRequestMessage(int blowerId, float flow) headBlowersFlow[blowerId] = flow; return OK; } + +uint32_t HeadBlowerAirflowCalibration(void) +{ + uint32_t V0[2]; + + V0[0] = PressureSensorInit(0); + V0[1] = PressureSensorInit(1); + ReportWithPackageFilter(HeatersFilter,"read pressure sensor v0[0],v0[1]", __FILE__,__LINE__, (int)V0[0], RpMessage, (int)V0[1], 0); + if ((V0[0] > 1000) && (V0[0] < 1200)) { + MCU_E2PromProgram(EEPROM_PRESSURE_SENSOR_V0_0, V0[0]); + ReportWithPackageFilter(InitFilter,"store pressure sensor v0[0]", __FILE__,__LINE__, (int)V0[0], RpMessage, 0, 0); + } else { + MCU_E2PromRead(EEPROM_PRESSURE_SENSOR_V0_0, &V0[0]); + ReportWithPackageFilter(HeatersFilter,"load from EEPROM", __FILE__,__LINE__, (int)V0[0], RpMessage, 0, 0); + } + if ((V0[1] > 1000) && (V0[1] < 1200)) { + MCU_E2PromProgram(EEPROM_PRESSURE_SENSOR_V0_1, V0[1]); + ReportWithPackageFilter(HeatersFilter,"store pressure sensor v0[1]", __FILE__,__LINE__, (int)V0[1], RpMessage, 0, 0); + } else { + MCU_E2PromRead(EEPROM_PRESSURE_SENSOR_V0_1, &V0[1]); + ReportWithPackageFilter(HeatersFilter,"load from EEPROM", __FILE__,__LINE__, (int)V0[1], RpMessage, 0, 0); + } + + if ((V0[0] > 1000) && (V0[0] < 1200)) { + PressureSensorV0[0] = V0[0]; + } + if ((V0[1] > 1000) && (V0[1] < 1200)) { + PressureSensorV0[1] = V0[1]; + } + return OK; +} + +uint32_t HeadBlowersInitCallbak(uint32_t IfIndex, uint32_t ReadValue) +{ + + if (HeadBlowersV0InitCount++ >= V0_INIT_STOP_FAN_TIME) + { + SafeRemoveControlCallback(HeadBlowersInitControlId,HeadBlowersInitCallbak); + HeadBlowersInitControlId = 0xFF; + HeadBlowerAirflowCalibration(); + HeadBlowersOff(0); + Report("Head Blowers V0 calculated", __FILE__, __LINE__, PressureSensorV0[0], RpMessage, PressureSensorV0[1], 0); + Waste_Check_Flows(); + } + Report("Head Blowers calculate V0", __FILE__, __LINE__, 0, RpMessage, 0, 0); + return OK; +} + +uint32_t HeadBlowersV0Init(void) +{ + if (Head_Type != HEAD_TYPE_ARC) + return OK; + + if (HeadBlowersInitControlId != 0xFF) + RemoveControlCallback(HeadBlowersInitControlId,HeadBlowersInitCallbak); + + //set Head Blowers to minimum rpm + HeadBlowersOff(1); + Trigger_Head_Fan_Control(HEAD_FAN_RIGHT, 0); + Trigger_Head_Fan_Control(HEAD_FAN_LEFT, 0); + + //init Head Blowers V0 + HeadBlowersV0InitCount = 0; + HeadBlowersInitControlId = AddControlCallback("Head Blowers V0 init", HeadBlowersInitCallbak, eOneSecond, TemplateDataReadCBFunction, 0, 0, 0); + Report("Head Blowers V0 init", __FILE__, __LINE__, Head_Type, RpMessage, 0, 0); + return OK; +} diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h index ee60a75cc..b5242bae2 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h @@ -54,4 +54,5 @@ void HeadBlowersControlLoop (); uint32_t HeadBlowerCommandRequestMessage(int blowerId, float flow); void HeadBlowersOff(int off); uint32_t HeadBlowersOffGet(); +uint32_t HeadBlowersV0Init(void); diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index def9c5530..6345ff201 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -1016,6 +1016,7 @@ void HeaterPrepareReady(void) } PrepareReady(Module_Heaters,ModuleDone); IDSPrepareStart(); + HeadBlowersV0Init(); } /* * HeaterControlCBFunction diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_ex.h b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_ex.h index db15a9ffd..5a3207551 100644 --- a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_ex.h @@ -46,6 +46,7 @@ bool WHS_WasteCartridgeMiddlePresent(); bool WHS_IsEmptying(); uint32_t Waste_CheckState(int *AlarmId); uint32_t Waste_Prepare(void); +uint32_t Waste_Check_Flows(void); bool WHS_IsVocPpmOverAlarmLimit(); void setWastePrepareValues(float HeadLimit,float WasteLimit); diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c index 490a0c0a5..665e8f83c 100644 --- a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c +++ b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c @@ -645,15 +645,25 @@ uint32_t Waste_PrepareCallbak(uint32_t IfIndex, uint32_t ReadValue) Report("Module waste prepare", __FILE__, __LINE__, headready, RpMessage, whsready, 0); return OK; } -uint32_t Waste_Prepare(void) +uint32_t Waste_Check_Flows(void) { - WHS_FlowReady = false;HeadIn_FlowReady = false;HeadOut_FlowReady = false; + WHS_FlowReady = false;HeadIn_FlowReady = false;HeadOut_FlowReady = false; + if (WasteReadyControlId != 0xFF) RemoveControlCallback(WasteReadyControlId,Waste_PrepareCallbak); Waste_Prepare_Timeout = 0; //check that blowers are within 10% of designated flow: WHS, head blowers WasteReadyControlId = AddControlCallback("Cartridge Cover Door", Waste_PrepareCallbak, eOneSecond, TemplateDataReadCBFunction, 0, 0, 0); - Report("Module waste prepare", __FILE__, __LINE__, Head_Type, RpMessage, WHS_Type, 0); + Report("Waste_Check_Flows prepare", __FILE__, __LINE__, Head_Type, RpMessage, WHS_Type, 0); + return OK; +} +uint32_t Waste_Prepare(void) +{ + if (HeaterCheckReady() == true) + { + HeadBlowersV0Init(); + } + Report("Module waste prepare", __FILE__, HeaterCheckReady(), Head_Type, RpMessage, WHS_Type, 0); return OK; } |
