aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorVictoria Plitt <Victoria.Plitt@twine-s.com>2020-04-01 14:05:26 +0200
committerVictoria Plitt <Victoria.Plitt@twine-s.com>2020-04-01 14:05:26 +0200
commit44c91de2b71d128d9b47e240ee6f4e58b6b8544e (patch)
tree631ceb852328908d3a8295683e3bd3e0ab980410 /Software/Embedded_SW/Embedded/Modules
parent69a8c4d6b902d866a7a7e2ff8f70b25637cd8196 (diff)
parent91fde2b410712c7866b9d3d139d97ee8db008223 (diff)
downloadTango-44c91de2b71d128d9b47e240ee6f4e58b6b8544e.tar.gz
Tango-44c91de2b71d128d9b47e240ee6f4e58b6b8544e.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c9
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h3
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c22
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c185
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c27
5 files changed, 156 insertions, 90 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c
index 1176d3132..98b3704ce 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c
@@ -54,10 +54,11 @@ void IDS_Dispenser_SetPrepareValues( uint32_t DispenserBuildPressureSpeed,
}
void IDS_Dispenser_SetTimeOutValues(uint32_t CloseTimeout, uint32_t OpenTimeout)
{
-#ifndef SPECIAL_DISPENSERS
- CloseValveTimeout = CloseTimeout;
- OpenValveTimeout = OpenTimeout;
-#endif
+ if (Special_Dispensers == false)
+ {
+ CloseValveTimeout = CloseTimeout;
+ OpenValveTimeout = OpenTimeout;
+ }
Report("IDS_Dispenser_SetTimeOutValues ",__FILE__,__LINE__,OpenValveTimeout,RpWarning,(int)CloseValveTimeout,0);
}
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h
index 89892801b..ad1d5b5c4 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h
@@ -94,6 +94,9 @@ void IDS_Dispenser_SetPreSegmentWFCFValues(double dispenserpresegmentwfcf, doubl
void IDS_Dispenser_SetPreSegmentCleaningValues(double ids_cleaningspeed,double ids_cleaningstartspraypresegmenttime ,double ids_cleaningstopbeforesegmenttime,double ids_leftcleaningmotorspeed,double ids_rightcleaningmotorspeed);
void IDS_Dispenser_SetAutoHoming_Config(AutoHoming_Config_enum Config);
+double Get_WFCF(void);
+double Get_WFCF_Time(void);
+
bool Set_Check_Pressure_Bypass(int);
uint32_t IDS_Dispenser_Close_Valve_And_Stop_Motor(int DispenserId, callback_fptr callback);
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c
index 107fd425b..1fe5968e6 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c
@@ -90,11 +90,14 @@ AutoHoming_Config_enum AutoHoming_Config = AutoHoming_off;
void IDS_Dispenser_SetAutoHoming_Config(AutoHoming_Config_enum Config)
{
Report("IDS_Dispenser_SetAutoHoming_Config ",__FILE__,__LINE__,Config,RpWarning,AutoHoming_Config,0);
-#ifdef SPECIAL_DISPENSERS
- AutoHoming_Config = AutoHoming_off;
-#else
- AutoHoming_Config = Config;
-#endif
+ if (Special_Dispensers == false)
+ {
+ AutoHoming_Config = Config;
+ }
+ else
+ {
+ AutoHoming_Config = AutoHoming_off;
+ }
}
void IDS_Dispenser_SetBackLashValues(double initialdispenserpressure, uint32_t initialdispensertimeout, uint32_t initialdispensertimelag, uint32_t initialdispenserspeed)
@@ -548,8 +551,9 @@ void IDS_Dispenser_Init(uint8_t DispenserId)
PrimingActive[DispenserId]= false;
Valve_Set(IDS_Id_to_AirValve[DispenserId], Atm_MidTank_OFF);
Control3WayValvesWithCallback ((Valves_t)DispenserId, MidTank_Dispenser, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer
-#ifdef SPECIAL_DISPENSERS
- if (ControlIdtoInactiveDispenserId[DispenserId] == 0xFF)
- ControlIdtoInactiveDispenserId[DispenserId] = AddControlCallback("IDS_Check_Pressure", IDS_Check_Pressure_Callback, eOneMinute,TemplateDataReadCBFunction ,DispenserId, 0, 0 );
-#endif
+ if (Special_Dispensers == true)
+ {
+ if (ControlIdtoInactiveDispenserId[DispenserId] == 0xFF)
+ ControlIdtoInactiveDispenserId[DispenserId] = AddControlCallback("IDS_Check_Pressure", IDS_Check_Pressure_Callback, eOneMinute,TemplateDataReadCBFunction ,DispenserId, 0, 0 );
+ }
}
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
index a34594d56..213774270 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
@@ -51,6 +51,8 @@ HardwarePidControlType ThreadDispenserIdToControlId[MAX_SYSTEM_DISPENSERS] = {
JobUploadStrategy uploadstrategy = JOB_UPLOAD_STRATEGY__Default;
bool DispenserReady[MAX_SYSTEM_DISPENSERS] = {true};
bool IDS_Active = false;
+
+bool Special_Dispensers = false;
/******************** STRUCTURES AND ENUMs ********************************************/
uint32_t IDS_Valve_DistanceToSpoolReady(uint32_t deviceID, uint32_t ReadValue);
uint32_t IDS_Valve_PresegmentReady(uint32_t deviceID, uint32_t ReadValue);
@@ -82,7 +84,15 @@ int lInterSegmentLength = 0;
uint32_t WFCF = 80;
bool EnableCleaning = true;
bool JobEndSequence = false;
- void IDS_Dispenser_SetPreSegmentWFCFValues(double dispenserpresegmentwfcf, double ids_presegment_wfcf_timebeforesegment)
+double Get_WFCF(void)
+{
+ return WFCF;
+}
+double Get_WFCF_Time(void)
+{
+ return InterSegmentStartWFCFDispensers;
+}
+void IDS_Dispenser_SetPreSegmentWFCFValues(double dispenserpresegmentwfcf, double ids_presegment_wfcf_timebeforesegment)
{
if (ids_presegment_wfcf_timebeforesegment)
InterSegmentStartWFCFDispensers = ids_presegment_wfcf_timebeforesegment;
@@ -506,13 +516,14 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
if (pressureReady == false)
{
-#ifndef SPECIAL_DISPENSERS
- if (DispenserBuildTimeCounter<(2*eOneSecond))
+ if (Special_Dispensers == false)
{
- //REPORT_MSG(DispenserBuildTimeCounter,"waiting 2 seconds for pressure changes");
- return OK;
+ if (DispenserBuildTimeCounter<(2*eOneSecond))
+ {
+ //REPORT_MSG(DispenserBuildTimeCounter,"waiting 2 seconds for pressure changes");
+ return OK;
+ }
}
-#endif
for (i = 0; i < MAX_DYE_DISPENSERS; i++)
{
//IDS_StopHomeDispenser(i);
@@ -522,33 +533,36 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
if (GetDispenserPressure(i) > DispenserPreparePressure*1.05)
{
NumofReadyDispensers++;
-#ifdef SPECIAL_DISPENSERS
- MotorStop(HW_Motor_Id, Hard_Hiz);
- CurrentDispenserSpeed[i] = 0;
+ if (Special_Dispensers == true)
+ {
+ MotorStop(HW_Motor_Id, Hard_Hiz);
+ CurrentDispenserSpeed[i] = 0;
//Report("IDS stopped ready",__FILE__,i,(int)(DispenserPreparePressure*100),RpWarning,(int)NumofReadyDispensers,0);
-#else
- tempSpeed = CurrentDispenserSpeed[i];
- updatedSpeed = (tempSpeed*0.992>100)?tempSpeed*0.992:100;
- MotorSetSpeed(HW_Motor_Id, updatedSpeed);
- CurrentDispenserSpeed[i] = updatedSpeed;
- //Report("IDS reduce speed",__FILE__,i,(int)tempSpeed,RpWarning,(int)updatedSpeed,0);
-#endif
+ }
+ else
+ {
+ tempSpeed = CurrentDispenserSpeed[i];
+ updatedSpeed = (tempSpeed*0.992>100)?tempSpeed*0.992:100;
+ MotorSetSpeed(HW_Motor_Id, updatedSpeed);
+ CurrentDispenserSpeed[i] = updatedSpeed;
+ //Report("IDS reduce speed",__FILE__,i,(int)tempSpeed,RpWarning,(int)updatedSpeed,0);
+ }
}
else
{
-#ifdef SPECIAL_DISPENSERS
- tempSpeed = (DispenserPreparePressure-GetDispenserPressure(i))*InitialDispenserSpeed;
- if (tempSpeed<300)
- tempSpeed = 300;
-#else
- tempSpeed = CurrentDispenserSpeed[i];
-#endif
+ if (Special_Dispensers == true)
+ {
+ tempSpeed = (DispenserPreparePressure-GetDispenserPressure(i))*InitialDispenserSpeed;
+ if (tempSpeed<300)
+ tempSpeed = 300;
+ }
+ else
+ {
+ tempSpeed = CurrentDispenserSpeed[i];
+ }
updatedSpeed = (tempSpeed*1.03<InitialDispenserSpeed)?tempSpeed*1.03:InitialDispenserSpeed;
MotorSetSpeed(HW_Motor_Id, updatedSpeed);
CurrentDispenserSpeed[i] = updatedSpeed;
-#ifdef SPECIAL_DISPENSERS
- //Report("IDS accelerate speed",__FILE__,i,(int)tempSpeed,RpWarning,(int)updatedSpeed,0);
-#endif
}
}
}
@@ -569,7 +583,6 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
Report("pressureReady = true or timeout;",__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)NumOfActiveDispensers,0);
}
}
-//#ifndef SPECIAL_DISPENSERS
else if (endOfPrepareWCF == false)
{
if ((DispenserBuildTimeCounter == PRESSURE_READ_TIME_GAP)&&(FirstBrushStop))
@@ -614,11 +627,14 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
segmentfirst_speed /= 100;
DispenserSegmentReady[DispenserId] = false;
//Control3WayValvesWithCallback (DispenserId, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer
-#ifdef SPECIAL_DISPENSERS
- IDS_Dispenser_Start_Motor_and_Open_Valve(DispenserId,segmentfirst_speed,NULL);
-#else
- MotorSetSpeed(HW_Motor_Id, segmentfirst_speed);
-#endif
+ if (Special_Dispensers == true)
+ {
+ IDS_Dispenser_Start_Motor_and_Open_Valve(DispenserId,segmentfirst_speed,NULL);
+ }
+ else
+ {
+ MotorSetSpeed(HW_Motor_Id, segmentfirst_speed);
+ }
CurrentDispenserSpeed[Dispenser_i] = segmentfirst_speed;
usnprintf(IdMessage, 80,
@@ -660,13 +676,8 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
}
}
-/*#endif
-#ifdef SPECIAL_DISPENSERS
- if (pressureReady == true)
-#else*/
//start new stage
if (endOfPrepareWCF == true)
-//#endif
{
SafeRemoveControlCallback(DispenserPrepareControlId, IDS_Prepare_Callback );
DispenserPrepareControlId = 0xFF;
@@ -791,9 +802,10 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
for (i = 0; i < MAX_DYE_DISPENSERS; i++)
{
dispenserspeed = DispenserPrepareSpeed;
-#ifdef SPECIAL_DISPENSERS
- dispenserspeed = 300;
-#endif
+ if (Special_Dispensers == true)
+ {
+ dispenserspeed = 300;
+ }
TimerMotors_t HW_Motor_Id = DispenserIdToMotorId[i];
if (DispenserUsedInJob[i] == true) //we actually should check for all dispensers
@@ -802,11 +814,14 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
{
Report("Prepare Speed",__FILE__,HomingActive[i],i,RpWarning,(int)dispenserspeed,0);
MotorSetDirection((TimerMotors_t)HW_Motor_Id,MotorsCfg[HW_Motor_Id].directionthreadwize); //set the dispenser to the
-#ifdef SPECIAL_DISPENSERS
- MotorSetSpeed((TimerMotors_t)HW_Motor_Id,dispenserspeed); //set the dispenser to the
-#else
- IDS_Dispenser_Start_Motor_and_Open_Valve(i,dispenserspeed, NULL);
-#endif
+ if (Special_Dispensers == true)
+ {
+ MotorSetSpeed((TimerMotors_t)HW_Motor_Id,dispenserspeed); //set the dispenser to the
+ }
+ else
+ {
+ IDS_Dispenser_Start_Motor_and_Open_Valve(i,dispenserspeed, NULL);
+ }
}
/*else
{
@@ -943,11 +958,14 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
{
if (DispenserUsedInJob[DispenserId] == true)
{
-#ifdef SPECIAL_DISPENSERS
- IDS_Dispenser_Close_Valve_And_Stop_Motor(DispenserId,NULL);
-#else
- MotorStop(HW_Motor_Id, Hard_Hiz);
-#endif
+ if (Special_Dispensers == true)
+ {
+ IDS_Dispenser_Close_Valve_And_Stop_Motor(DispenserId,NULL);
+ }
+ else
+ {
+ MotorStop(HW_Motor_Id, Hard_Hiz);
+ }
CurrentDispenserSpeed[Dispenser_i] = 0;
usnprintf(IdsMessage, 80,"Presegment Prepare Dispenser %d stopped",DispenserId,(int) segmentfirst_speed);
Report(IdsMessage, __FILE__, __LINE__, Dispenser_i, RpWarning, segmentfirst_speed, 0);
@@ -1069,7 +1087,6 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback);
//cleaning
return OK;
}
-//#ifndef SPECIAL_DISPENSERS
if ((InterSegmentStartWFCFDispensers > 12000)&&(InterSegmentStartWFCFDispensers == (InterSegmentStepsCount+12000)))
{
//start prepare 4 seconds before wcf
@@ -1150,7 +1167,6 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback);
//close waste valve one second before segment - trial
Valve_Set(VALVE_MIXCHIP_WASTECH, Mixer_Head);
}
-//#endif
return OK;
}
uint32_t IDSCheckSegmentData(void *SegmentDetails, int SegmentId)
@@ -1336,11 +1352,14 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId)
{
if (DispenserUsedInJob[DispenserId] == true)
{
-#ifdef SPECIAL_DISPENSERS
- IDS_Dispenser_Close_Valve_And_Stop_Motor(DispenserId,NULL);
-#else
- MotorStop(HW_Motor_Id,Soft_Hiz); //26/03/19 test without valves
-#endif
+ if (Special_Dispensers == true)
+ {
+ IDS_Dispenser_Close_Valve_And_Stop_Motor(DispenserId,NULL);
+ }
+ else
+ {
+ MotorStop(HW_Motor_Id,Soft_Hiz); //26/03/19 test without valves
+ }
CurrentDispenserSpeed[DispenserId] = 0;
//MotorSetSpeed(HW_Motor_Id, 5);
//CurrentDispenserSpeed[Dispenser_i] = 5;
@@ -1406,11 +1425,14 @@ void IDS_StartBrushStop(int n_dispensers, JobDispenser** Dispensers)
segmentfirst_speed,
NULL);*/
//Control3WayValvesWithCallback (DispenserId, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer
-#ifdef SPECIAL_DISPENSERS
- IDS_Dispenser_Start_Motor_and_Open_Valve(DispenserId,segmentfirst_speed, NULL);
-#else
- MotorSetSpeed(HW_Motor_Id, segmentfirst_speed);
-#endif
+ if (Special_Dispensers == true)
+ {
+ IDS_Dispenser_Start_Motor_and_Open_Valve(DispenserId,segmentfirst_speed, NULL);
+ }
+ else
+ {
+ MotorSetSpeed(HW_Motor_Id, segmentfirst_speed);
+ }
CurrentDispenserSpeed[DispenserId] = segmentfirst_speed;
usnprintf(IdsMessage, 80,
"Dispenser %d nl/sec %d nl/pulse %d Pulse/sec %d speed %d steps %d/%d",
@@ -1429,11 +1451,14 @@ void IDS_StartBrushStop(int n_dispensers, JobDispenser** Dispensers)
//IDS_Dispenser_Close_Valve_And_Stop_Motor(DispenserId,NULL);*/
if (DispenserUsedInJob[DispenserId] == true)
{
-#ifdef SPECIAL_DISPENSERS
- IDS_Dispenser_Close_Valve_And_Stop_Motor(DispenserId,NULL);
-#else
- MotorStop(HW_Motor_Id, Hard_Hiz);
-#endif
+ if (Special_Dispensers == true)
+ {
+ IDS_Dispenser_Close_Valve_And_Stop_Motor(DispenserId,NULL);
+ }
+ else
+ {
+ MotorStop(HW_Motor_Id, Hard_Hiz);
+ }
CurrentDispenserSpeed[DispenserId] = 0;
}
//Report("inActive dispenser stopped", __FILE__, __LINE__, DispenserId, RpWarning, segmentfirst_speed, 0);
@@ -1615,11 +1640,14 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId)
if (DispenserUsedInJob[Dispenser_i]==true)//unconfigured dispenser
{
DispenserDistanceToSpoolReady[Dispenser_i] = false;
- #ifdef SPECIAL_DISPENSERS
- IDS_Dispenser_Close_Valve_And_Stop_Motor(Dispenser_i,NULL);
- #else
- MotorStop(DispenserIdToMotorId[Dispenser_i],Hard_Hiz);
- #endif
+ if (Special_Dispensers == true)
+ {
+ IDS_Dispenser_Close_Valve_And_Stop_Motor(Dispenser_i,NULL);
+ }
+ else
+ {
+ MotorStop(DispenserIdToMotorId[Dispenser_i],Hard_Hiz);
+ }
Control3WayValvesWithCallback ((Valves_t)Dispenser_i, MidTank_Dispenser, IDS_Valve_DistanceToSpoolValveReady); //direction: MidTank_Dispenser or Dispenser_Mixer
CurrentDispenserSpeed[Dispenser_i] = 0;
//IDS_Dispenser_Close_Valve_And_Stop_Motor(Dispenser_i,IDS_Valve_DistanceToSpoolValveReady);
@@ -1700,11 +1728,14 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId)
{
if (DispenserUsedInJob[Dispenser_i] == true)
{
-#ifdef SPECIAL_DISPENSERS
- IDS_Dispenser_Close_Valve_And_Stop_Motor(Dispenser_i,NULL);
-#else
- MotorStop(DispenserIdToMotorId[Dispenser_i],Hard_Hiz);
-#endif
+ if (Special_Dispensers == true)
+ {
+ IDS_Dispenser_Close_Valve_And_Stop_Motor(Dispenser_i,NULL);
+ }
+ else
+ {
+ MotorStop(DispenserIdToMotorId[Dispenser_i],Hard_Hiz);
+ }
Control3WayValvesWithCallback (Dispenser_i, MidTank_Dispenser, IDS_Valve_EndValveReady); //direction: MidTank_Dispenser or Dispenser_Mixer
CurrentDispenserSpeed[Dispenser_i] = 0;
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
index 7a9b66a0b..ed15b74bf 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
@@ -685,6 +685,33 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
response.has_progress = true;
}
else
+ if(request->amount == 0xE3) //fast refresh for pressure
+ {
+ Report("Set WFCF Value ",__FILE__,__LINE__,request->delay,RpWarning,(int)Get_WFCF_Time(),0);
+ IDS_Dispenser_SetPreSegmentWFCFValues((double) request->delay, Get_WFCF_Time());
+ response.progress = (double)OK;
+ response.has_progress = true;
+ }
+ else
+ if(request->amount == 0xE4) //fast refresh for pressure
+ {
+ Report("Set WFCF build to waste Time Value ",__FILE__,__LINE__,request->delay,RpWarning,(int)Get_WFCF(),0);
+ IDS_Dispenser_SetPreSegmentWFCFValues(Get_WFCF(),(double) request->delay);
+ response.progress = (double)OK;
+ response.has_progress = true;
+ }
+ else
+ if(request->amount == 0xE5) //fast refresh for pressure
+ {
+ if (request->delay<=1)
+ {
+ Report("Set special dispensers ",__FILE__,__LINE__,request->delay,RpWarning,Special_Dispensers,0);
+ Special_Dispensers = request->delay;
+ }
+ response.progress = (double)OK;
+ response.has_progress = true;
+ }
+ else
if(request->amount == 0xB1) //fast refresh for pressure
{
LOG_ERROR(request->delay,"Set loading arm center");