aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2020-08-03 17:58:24 +0300
committerAvi Levkovich <avi@twine-s.com>2020-08-03 17:58:24 +0300
commit29367e183afdf3ffa17cb9ec4d3869b93cb4764d (patch)
tree1883755f661a800b54972a608652e6fab6eea7af /Software/Embedded_SW/Embedded
parent563541739f0e49e29e3848376964f36519839148 (diff)
downloadTango-29367e183afdf3ffa17cb9ec4d3869b93cb4764d.tar.gz
Tango-29367e183afdf3ffa17cb9ec4d3869b93cb4764d.zip
Update the actuator cleaning and relocate logic
Diffstat (limited to 'Software/Embedded_SW/Embedded')
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c3
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c18
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c16
5 files changed, 30 insertions, 13 deletions
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c
index 7a99b154f..d9fca9f4d 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c
@@ -12,6 +12,7 @@
#include <Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.h>
#include <Drivers/I2C_Communication/I2C_Task.h>
#include "modules/control/control.h"
+#include "modules/ids/ids.h"
/*
GPIO TCA9555RTWR
@@ -749,7 +750,7 @@ uint32_t HeadCard_Actuators_Relocate_callback(uint32_t IfIndex, uint32_t BusyFla
case ActuatorIdle:
break;
case ActuatorMoveDown:
- if (count_time <=1)
+ if ((count_time <=1) && (CleaningStageCounter >1))
Trigger_Head_Actuators_Stub(ACTIN, ENABLE, DOWN);
if (count_time > 10)
{
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h
index a48e0df0c..ee308ce62 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h
@@ -54,4 +54,6 @@ uint32_t IDS_Cleaning_Move_Actuators(void);
uint32_t IDS_Cleaning_Spray_Cleaning_Solution (int dispenserSpeed,callback_fptr callback);
uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback);
+void Init_CleaningStageCounter();
+extern int CleaningStageCounter;
#endif //MODULES_IDS_IDS_H_
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c
index 26ba52d76..abfb5f229 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c
@@ -46,8 +46,13 @@ t delay2 – 2 sec
*/
CleaningStageEnum CleaningStage = CleaningStageIdle;
-int CleaningStageCounter = 0;
-int Tup = 4,Tdelay1 = 9,Tdelay2 = 29;
+int Tup = 4,Tdelay1 = 9,Tdelay2 = 29;//set CleaningStageCounter to Tdelay1 - 1
+int CleaningStageCounter = 8;//Tdelay1 - 1 to start with stage moving down
+
+void Init_CleaningStageCounter()
+{
+ CleaningStageCounter = Tdelay1 - 1;
+}
uint32_t IDS_Cleaning_Move_Actuators()
{
@@ -55,25 +60,26 @@ uint32_t IDS_Cleaning_Move_Actuators()
return OK;
if (CleaningStageCounter == 1)
{
- Trigger_Head_Actuators_Stub(ACTIN, true, true);
+ Trigger_Head_Actuators_Stub(ACTIN, ENABLE, UP);
//Trigger_Head_Actuators_Control(ACTIN, LOW,true);
Report("IDS_Cleaning_Move_ActuatorUp", __FILE__, __LINE__, 1, RpWarning, CleaningStageCounter, 0);
}
else if (CleaningStageCounter == Tup)
{
- Trigger_Head_Actuators_Stub(ACTIN, false, false);
+ Trigger_Head_Actuators_Stub(ACTIN, DISABLE, DONTCARE);
//Trigger_Head_Actuators_Disable();
Report("IDS_Cleaning_Stop_Actuator", __FILE__, __LINE__, Tup, RpWarning, CleaningStageCounter, 0);
}
else if (CleaningStageCounter == Tdelay1)
{
- Trigger_Head_Actuators_Stub(ACTIN, true, false);
+ Trigger_Head_Actuators_Stub(ACTIN, ENABLE, DOWN);
//Trigger_Head_Actuators_Control(ACTIN, LOW,false);
Report("IDS_Cleaning_MoveDown", __FILE__, __LINE__, Tdelay1, RpWarning, CleaningStageCounter, 0);
}
else if (CleaningStageCounter == Tdelay2)
{
CleaningStageCounter = 0;
+ Trigger_Head_Actuators_Stub(ACTIN, DISABLE, DONTCARE);
Report("IDS_Cleaning_Stop_delay", __FILE__, __LINE__, Tdelay2, RpWarning, CleaningStageCounter, 0);
}
@@ -129,7 +135,7 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback)
status = IDS_Dispenser_Close_Valve_And_Stop_Motor(CLEANER_DISPENSER,callback);
Report("IDS_Cleaning_Stop_Cleaning_Solution", __FILE__, __LINE__, CLEANER_DISPENSER, RpWarning, status, 0);
HeadCard_Actuators_Relocate();
- CleaningStageCounter = 0;
+ Init_CleaningStageCounter();
CleaningStage = CleaningStageIdle;
Report("IDS_Cleaning_Stop_Cleaning_Solution actuator relocate", __FILE__, __LINE__, CleaningStage, RpWarning, CleaningStageCounter, 0);
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
index c8e3d267e..d68c1c783 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
@@ -1811,7 +1811,9 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId)
}
IDS_StopLubrication();
- return OK;
+ Init_CleaningStageCounter();//set the counter before relocating
+ HeadCard_Actuators_Relocate();
+ return OK;
}
uint32_t IDS_StartLubrication(void)
{
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
index f61eebfa8..c83b01dd0 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
@@ -89,11 +89,17 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
if(request->amount == 0xacc1e)
- {
- response.progress = IDS_Cleaning_Move_Actuators();
- response.has_progress = true;
- }
- else
+ {
+ response.progress = IDS_Cleaning_Move_Actuators();
+ response.has_progress = true;
+ }
+ else
+ if(request->amount == 0xacc1ea)
+ {
+ response.progress = HeadCard_Actuators_Relocate();
+ response.has_progress = true;
+ }
+ else
if(request->amount == 0xC04f)
{