diff options
| author | Avi Levkovich <avi@twine-s.com> | 2020-10-25 13:37:47 +0200 |
|---|---|---|
| committer | Avi Levkovich <avi@twine-s.com> | 2020-10-25 13:37:47 +0200 |
| commit | 14dabcafd0458b239aee0348dd60c626ee1699b4 (patch) | |
| tree | 39b23cf0846c7c5deaabe4d544d281530a508ece /Software/Embedded_SW/Embedded | |
| parent | 63f3186821cfa8db9770dcd6b305b385eb75ed6e (diff) | |
| parent | e4be70dce32657332524a879aa1f04bc184f9890 (diff) | |
| download | Tango-14dabcafd0458b239aee0348dd60c626ee1699b4.tar.gz Tango-14dabcafd0458b239aee0348dd60c626ee1699b4.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded')
11 files changed, 57 insertions, 21 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 cd2c9589b..585170666 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,5,0,2}; +TangoVersion_t _gTangoVersion = {1,5,0,3}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; 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 4484f1932..ce6b34dd9 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 @@ -406,11 +406,19 @@ void WHS_Set_IFS_Clearing_Suction (int midtank) } Report("------------ WHS_Set_IFS_Clearing_Suction :-----------------", __FILE__,__LINE__, (int) IFS_Clearing_Suction, RpMessage, (int)JobIsActive(), 0); } -#define JobEndSuctionTime 30 +#define JOB_END_SUCTION_TIME 30 +int SublimationBlowTime = JOB_END_SUCTION_TIME; +void setSublimationBlowTime(int Time) +{ + SublimationBlowTime = Time; +} void WHS_Set_JobEndSuction (void) { - JobEndSuction = true; - Report("------------ WHS_Set_JobEndSuction :-----------------", __FILE__,__LINE__, (int) JobEndSuction, RpMessage, (int)JobIsActive(), 0); + if (SublimationBlowTime) + { + JobEndSuction = true; + } + Report("------------ WHS_Set_JobEndSuction :-----------------", __FILE__,SublimationBlowTime, (int) JobEndSuction, RpMessage, (int)JobIsActive(), 0); } #define MAX_ALLOWED_BLOWER_VOLTAGE 4300 @@ -492,9 +500,9 @@ bool WHS_Set_Blower_Control_Closed_Loop(double Q_value) if (JobEndSuction == true) { JobEndSuction = false; - Report("------------ Job end Clearing Suction -----------------", __FILE__,__LINE__, (int)4000, RpMessage, (int)JobEndSuctionTime, 0); + Report("------------ Job end Clearing Suction -----------------", __FILE__,__LINE__, (int)4000, RpMessage, (int)SublimationBlowTime, 0); Control_Voltage_To_Blower(4000); - close_loop_time = JobEndSuctionTime; + close_loop_time = SublimationBlowTime; return OK; } volt = getBlowerState(); 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 3033d6d06..391aa6185 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 @@ -29,6 +29,7 @@ bool WHS_Set_Blower_Control_Closed_Loop(double Q_value); void WHS_Start_Blower_Control_Closed_Loop (void); void WHS_Set_IFS_Clearing_Suction (int midtank); void WHS_Set_JobEndSuction (void); +void setSublimationBlowTime(int Time); double WHS_Get_Blower_Control_Closed_Loop_SetPoint(void); void WHS_Set_SetPoint_Q_value(double value); diff --git a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c index 5d58c2cdf..748eb79c7 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c +++ b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c @@ -250,6 +250,7 @@ void Valve_Command(Valves_t Valve_Id) //1 - OPEN, 0 - CLOSE break; case VALVE_DISPENSER_8: Dispenser_Valve_GPO_Reg.bits.F2_DISPENSER_VALVE_C1_8_C2_8= ValveRequest[Valve_Id].Direction; + REPORT_MSG(ValveRequest[Valve_Id].Direction,"Dispenser 8 Set valve direction"); break; default: diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 24d97407e..d668657b5 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -47,7 +47,6 @@ #include "modules/Diagnostics/Diagnostics.h" #include "Modules/General/MachineStatus.h" -#include "drivers/Flash_Memory/Flash_Memory.h" #include "drivers/Flash_Memory/fatfs/ff.h" #include "drivers/Flash_ram/FlashProgram.h" diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index 25a51edfa..1defda43c 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -245,8 +245,8 @@ void LoadConfigurationParameters(ConfigurationParameters *Params) EmbeddedParameters->has_startheatingoninitsequence = true; EmbeddedParameters->startheatingoninitsequence = true; //set to true shlomo 14/5/2019 - EmbeddedParameters->n_generalparameters = 9; - EmbeddedParameters->generalparameters = malloc (sizeof(double)*10); + EmbeddedParameters->n_generalparameters = 12; + EmbeddedParameters->generalparameters = malloc (sizeof(double)*13); if (EmbeddedParameters->generalparameters) { EmbeddedParameters->generalparameters[0] = 1.0; //CheckHardLimitAlarms @@ -257,7 +257,10 @@ void LoadConfigurationParameters(ConfigurationParameters *Params) EmbeddedParameters->generalparameters[5] = 1000.0; //Dispenser initial pressure speed EmbeddedParameters->generalparameters[6] = Diagnostic_Extended_Mode; //Diagnostic Mode SetDiagnosticMode EmbeddedParameters->generalparameters[7] = AutoHoming_JobEnd_PowerOn_off; // - EmbeddedParameters->generalparameters[8] = false; // + EmbeddedParameters->generalparameters[8] = false; //PowerOffDisableCleaning + EmbeddedParameters->generalparameters[9] = 30; // sublimation + EmbeddedParameters->generalparameters[10] = 0.07; // AllowedRangeForHeadBlowerDeviation; + EmbeddedParameters->generalparameters[11] = 0.2; // AllowedRangeForWasteBlowerDeviation = WasteLimit; } EmbeddedParameters->has_currentalarmlowlimit = true; @@ -399,9 +402,17 @@ uint32_t EmbeddedParametersInit(void) } if (EmbeddedParameters->n_generalparameters >= 9) { - if (EmbeddedParameters->generalparameters[9]< 0.5) setPowerOffDisableCleaning(false); + if (EmbeddedParameters->generalparameters[8]< 0.5) setPowerOffDisableCleaning(false); else setPowerOffDisableCleaning(true); } + if (EmbeddedParameters->n_generalparameters >= 10) + { + setSublimationBlowTime(EmbeddedParameters->generalparameters[9]); + } + if (EmbeddedParameters->n_generalparameters >= 12) + { + setWastePrepareValues(EmbeddedParameters->generalparameters[10],EmbeddedParameters->generalparameters[11]); + } PowerIdleSetParameters(EmbeddedParameters->switchtoidletimeinseconds,EmbeddedParameters->idledriertemperature,EmbeddedParameters->idleheadtemperature,EmbeddedParameters->idlemixertemperature); return Fresult; diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 1cf53fd07..462165ee7 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -880,7 +880,8 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl if ((HomingActive[i] == false)&&(PrimingActive[i] == false)) { ReportWithPackageFilter(IDSFilter,"Homing Inactive dispenser",__FILE__,i,HomingActive[i],RpWarning,PrimingActive[i],0); - IDS_HomeDispenser (i, 1000 , NULL); + if (IDS_HomeDispenser (i, 1000 , NULL) == ERROR) + Control3WayValvesWithCallback (i, MidTank_Dispenser, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer; } else { @@ -1852,10 +1853,11 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) //MotorStop(HW_Motor_Id,Hard_Hiz); if (AutoHoming_Config >= AutoHoming_JobEnd_PowerOn_off) { - ReportWithPackageFilter(IDSFilter,"IDS_Valve_EndValveReady start homing",__FILE__,deviceID,(int)AutoHoming_Config,RpWarning,(int)AutoHoming_JobEnd_PowerOn_off,0); - if (deviceID!=LUBRICANT_DISPENSER) + { + ReportWithPackageFilter(IDSFilter,"IDS_Valve_EndValveReady start homing",__FILE__,deviceID,(int)AutoHoming_Config,RpWarning,(int)AutoHoming_JobEnd_PowerOn_off,0); IDS_HomeDispenser (deviceID, 1000 , NULL); + } } return OK; } @@ -1936,10 +1938,12 @@ uint32_t IDS_StartLubrication(void) } uint32_t IDS_StopLubrication(void) { + REPORT_MSG (lubricant_speed, "IDS_StopLubrication and home dispenser"); Lubricant_2Way_Valve (STOP); - IDS_Dispenser_Close_Valve_And_Stop_Motor(LUBRICANT_DISPENSER,IDS_Valve_EndValveReady); + //IDS_Dispenser_Close_Valve_And_Stop_Motor(LUBRICANT_DISPENSER,IDS_Valve_EndValveReady); + TimerMotors_t HW_Motor_Id = DispenserIdToMotorId[LUBRICANT_DISPENSER]; + MotorStop(HW_Motor_Id,Hard_Hiz); CurrentDispenserSpeed[LUBRICANT_DISPENSER] = 0; IDS_HomeDispenser (LUBRICANT_DISPENSER, 1000 , NULL); - REPORT_MSG (lubricant_speed, "IDS_StopLubrication and home dispenser"); return OK; } diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_ex.h b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_ex.h index cebfba762..8a075bfd4 100644 --- a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_ex.h @@ -47,6 +47,7 @@ bool WHS_IsEmptying(); uint32_t Waste_CheckState(void); uint32_t Waste_Prepare(void); bool WHS_IsVocPpmOverAlarmLimit(); +void setWastePrepareValues(float HeadLimit,float WasteLimit); extern bool ReadingVocEverySec; diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c index 267a4e7be..c87dc88c3 100644 --- a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c +++ b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c @@ -532,25 +532,34 @@ uint32_t Waste_CheckState(void) } bool WHS_FlowReady = false,HeadIn_FlowReady = false,HeadOut_FlowReady = false; uint32_t WasteReadyControlId = 0xFF; +float AllowedRangeForHeadBlowerDeviation = 0.07,AllowedRangeForWasteBlowerDeviation = 0.20; +void setWastePrepareValues(float HeadLimit,float WasteLimit) +{ + AllowedRangeForHeadBlowerDeviation = HeadLimit; + AllowedRangeForWasteBlowerDeviation = WasteLimit; +} uint32_t Waste_PrepareCallbak(uint32_t IfIndex, uint32_t ReadValue) { bool ready = false, headready = false,whsready = false; double HeadFlow = GetWHSAirFlow(HEAD_FLOW_METER); double HeadIn_Flow = PressureSensorGetPressure(HEAD_PT100_ZONE_5_0X84_0); double HeadOut_Flow = PressureSensorGetPressure(HEAD_PT100_ZONE_7_0X86_0); - if ((HeadFlow<(headairflow*1.07))&&(HeadFlow>(headairflow*0.93))) + if ((HeadFlow<(headairflow*(1+AllowedRangeForWasteBlowerDeviation))) + &&(HeadFlow>(headairflow*(1-AllowedRangeForWasteBlowerDeviation)))) { if (WHS_FlowReady == false) Report("Module waste WHS_FlowReady ready", __FILE__, __LINE__, (int)(HeadFlow*100), RpMessage, WHS_FlowReady, 0); WHS_FlowReady = true; } - if ((HeadIn_Flow<(headBlowersFlow[0]*1.07))&&(HeadIn_Flow>(headBlowersFlow[0]*0.93))) + if ((HeadIn_Flow<(headBlowersFlow[0]*(1+AllowedRangeForHeadBlowerDeviation))) + &&(HeadIn_Flow>(headBlowersFlow[0]*(1-AllowedRangeForHeadBlowerDeviation)))) { if (HeadIn_FlowReady == false) Report("Module waste HeadIn_FlowReady ready", __FILE__, __LINE__, (int)(HeadIn_Flow*100), RpMessage, HeadIn_FlowReady, 0); HeadIn_FlowReady = true; } - if ((HeadOut_Flow<(headBlowersFlow[1]*1.07))&&(HeadOut_Flow>(headBlowersFlow[1]*0.93))) + if ((HeadOut_Flow<(headBlowersFlow[1]*(1+AllowedRangeForHeadBlowerDeviation))) + &&(HeadOut_Flow>(headBlowersFlow[1]*(1-AllowedRangeForHeadBlowerDeviation)))) { if (HeadOut_FlowReady == false) Report("Module waste HeadOut_FlowReady ready", __FILE__, __LINE__, (int)(HeadOut_Flow*100), RpMessage, WHS_FlowReady, 0); diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c index 8d11b75a3..ca859f390 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c @@ -1413,7 +1413,6 @@ Void jobTask(UArg arg0, UArg arg1) CurrentJob = NULL; if (IFS_Clearing_SuctionWaiting == true) WHS_Set_IFS_Clearing_Suction(NUM_OF_MIDTANKS); - WHS_Set_JobEndSuction(); SuspendLargeMessages = false; Report("Job Ended PrintingResultsOk",__FILE__,__LINE__, 4,RpMessage,0,0); //DiagnosticsStart(); @@ -1430,7 +1429,6 @@ Void jobTask(UArg arg0, UArg arg1) SuspendLargeMessages = false; if (IFS_Clearing_SuctionWaiting == true) WHS_Set_IFS_Clearing_Suction(NUM_OF_MIDTANKS); - WHS_Set_JobEndSuction(); Report("Job Ended PrintingResultsFail",__FILE__,__LINE__, 4,RpError,JobEndReason,0); //send message data as a validation error message to host ExitState(Message.messageData); diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c index d65dbadd9..3b0844934 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c @@ -645,6 +645,10 @@ uint32_t EndState(void *JobDetails, char *Message) CloseJobFile(); //ROM_IntMasterEnable(); SendJobProgress(0.0,0,true,Message); + if ((JoggingJobActive==false)&&(CleaningJobActive == false)) + { + WHS_Set_JobEndSuction(); + } if (JoggingJobActive == true) { JoggingJobActive = false; |
