aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2020-10-25 13:37:47 +0200
committerAvi Levkovich <avi@twine-s.com>2020-10-25 13:37:47 +0200
commit14dabcafd0458b239aee0348dd60c626ee1699b4 (patch)
tree39b23cf0846c7c5deaabe4d544d281530a508ece /Software/Embedded_SW/Embedded
parent63f3186821cfa8db9770dcd6b305b385eb75ed6e (diff)
parente4be70dce32657332524a879aa1f04bc184f9890 (diff)
downloadTango-14dabcafd0458b239aee0348dd60c626ee1699b4.tar.gz
Tango-14dabcafd0458b239aee0348dd60c626ee1699b4.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded')
-rw-r--r--Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c2
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c18
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h1
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c19
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c14
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Waste/Waste_ex.h1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c15
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c2
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c4
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;