aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2019-12-04 16:27:16 +0200
committerShlomo Hecht <shlomo@twine-s.com>2019-12-04 16:27:16 +0200
commitc19fa7f39c4614307c6fbd80ce1de5bd7dd4db8b (patch)
treedf875d8f8f70c08a72173d673c5f819703a8cb7f /Software/Embedded_SW/Embedded/Modules
parentfeea57db6edf990f16333395d2639a61a1966a58 (diff)
downloadTango-c19fa7f39c4614307c6fbd80ce1de5bd7dd4db8b.tar.gz
Tango-c19fa7f39c4614307c6fbd80ce1de5bd7dd4db8b.zip
pressure handling in inactive dispensers
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c30
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c28
2 files changed, 42 insertions, 16 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c
index ab5f80af4..0e28ec736 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c
@@ -82,6 +82,8 @@ uint32_t InitialDispenserTimeout = INITIAL_DISPENSER_TIMEOUT_LIMIT;
uint32_t InitialDispenserTimeLag = INITIAL_DISPENSER_TIMEOUT;
uint32_t InitialDispenserSpeed = INITIAL_DISPENSER_SPEED;
+uint32_t ControlIdtoInactiveDispenserId [MAX_SYSTEM_DISPENSERS] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
+
uint32_t IDS_StopHomeDispenserBuildPressure (uint32_t deviceID);
AutoHoming_Config_enum AutoHoming_Config = AutoHoming_off;
@@ -487,6 +489,31 @@ uint32_t IDS_Dispenser_Alarm_Off (uint8_t DispenserId)
Report("IDS_Dispenser_Alarm_Off",__FILE__,millisecondCounter,(int)DispenserId,RpWarning,0,0);
return status;
}
+uint32_t IDS_Check_Pressure_Callback(uint32_t DispenserId, uint32_t ReadValue)
+{
+ TimerMotors_t HW_Motor_Id = DispenserIdToMotorId[DispenserId];
+ if (JobIsActive())
+ {
+ if (DispenserUsedInJob[DispenserId] == true)
+ {
+ //LOG_ERROR(DispenserId,"IDS_Check_Pressure_Callback active in a job");
+ return ERROR;
+ }
+ }
+ if ((HomingActive[DispenserId] == true)||(PrimingActive[DispenserId] == true))
+ {
+ //LOG_ERROR(DispenserId,"IDS_Check_Pressure_Callback active in a job");
+ return ERROR;
+ }
+
+ if (GetDispenserPressure(DispenserId)>3.0)
+ {
+ Report("Pulling dispenser down to reduce pressure",__FILE__,DispenserId,(int)(GetDispenserPressure(DispenserId)*100),RpWarning,200,0);
+ MotorMove(HW_Motor_Id,1-MotorsCfg[HW_Motor_Id].directionthreadwize,200);
+ }
+ return OK;
+}
+
void IDS_Dispenser_Init(uint8_t DispenserId)
{
@@ -497,4 +524,7 @@ 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
+ if (ControlIdtoInactiveDispenserId[DispenserId] == 0xFF)
+ ControlIdtoInactiveDispenserId[DispenserId] = AddControlCallback("IDS_Check_Pressure", IDS_Check_Pressure_Callback, eOneMinute,TemplateDataReadCBFunction ,0, 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 c241e3374..7815ea847 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
@@ -58,7 +58,6 @@ uint32_t IDSBrushStopRestartCallback(uint32_t IfIndex, uint32_t readValue);
/******************** GLOBAL PARAMETERS ********************************************/
DispenserControlConfig_t DispenserControlConfig[MAX_SYSTEM_DISPENSERS];
uint32_t ControlIdtoDispenserId [MAX_SYSTEM_DISPENSERS] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
-uint32_t ControlIdtoInactiveDispenserId [MAX_SYSTEM_DISPENSERS] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
int OriginalDispenserSpd_2PPS[MAX_SYSTEM_DISPENSERS] = {0,0,0,0,0,0,0,0};
bool DispenserPreSegmentReady[MAX_SYSTEM_DISPENSERS] = {true,true,true,true,true,true,true,true};
bool DispenserSegmentReady[MAX_SYSTEM_DISPENSERS] = {true,true,true,true,true,true,true,true};
@@ -169,7 +168,7 @@ JobDescriptionFileBrushStop *GetNextBrushStopFromJobFile();
void FreeBrushStopFileData(JobDescriptionFileBrushStop *BrushStop);
*/
-//shlomo JobDescriptionFileBrushStop *FirstBrushStop = NULL;
+JobDescriptionFileBrushStop *FirstBrushStop = NULL;
//********************************************************************************************************************
//************************** IDS JOB BUILDUP *************************************************************************
@@ -215,8 +214,8 @@ void FreeBrushStopFileData(JobDescriptionFileBrushStop *BrushStop);
BrushStop = GetNextBrushStopFromJobFile();
if (BrushStop)
{
-//shlomo if (FirstBrushStop == NULL)
-//shlomo FirstBrushStop = BrushStop;
+ if (FirstBrushStop == NULL)
+ FirstBrushStop = BrushStop;
if ((brushCounter % 100)==0)
{
SendJobProgress(0.0,0,false, "Processing file");
@@ -383,7 +382,7 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
{
if (AutoHoming_Config >= AutoHoming_JobEnd_PowerOn_off)
{
- if ((HomingActive[DispenserId] == false)&&(PrimingActive == false))
+ if ((HomingActive[DispenserId] == false)&&(PrimingActive[DispenserId] == false))
{
Report("Homing Inactive dispenser",__FILE__,DispenserId,HomingActive[DispenserId],RpWarning,PrimingActive[DispenserId],0);
IDS_HomeDispenser (DispenserId, 1000 , NULL);
@@ -411,7 +410,7 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
{
if (DispenserUsedInJob[i] == false)
{
- if ((HomingActive[i] == false)&&(PrimingActive == false))
+ if ((HomingActive[i] == false)&&(PrimingActive[i] == false))
{
Report("Inactive dispenser close valve",__FILE__,i,HomingActive[i],RpWarning,PrimingActive[i],0);
Control3WayValvesWithCallback (i, MidTank_Dispenser, InactiveDispenserHome); //direction: MidTank_Dispenser or Dispenser_Mixer
@@ -453,8 +452,8 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
DispenserBuildTimeCounter+=PRESSURE_READ_TIME_GAP;
-//shlomo if (pressureReady == false)
-//shlomo {
+ if (pressureReady == false)
+ {
if (DispenserBuildTimeCounter<(2*eOneSecond))
{
//REPORT_MSG(DispenserBuildTimeCounter,"waiting 2 seconds for pressure changes");
@@ -500,7 +499,7 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
pressureReady = true;
}
}
-/* //shlomo else if (endOfPrepareWCF == false)
+ else if (endOfPrepareWCF == false)
{
if ((0 == DispenserBuildTimeCounter)&&(FirstBrushStop))
{
@@ -576,10 +575,6 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
//start new stage
if (endOfPrepareWCF == true)
{
- */
- if (pressureReady == true)
- {
-
SafeRemoveControlCallback(DispenserPrepareControlId, IDS_Prepare_Callback );
DispenserPrepareControlId = 0xFF;
Report("IDS_Prepare_Callback SafeRemoveControlCallback",__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)NumOfActiveDispensers,0);
@@ -681,7 +676,7 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
{
/**/if (AutoHoming_Config >= AutoHoming_JobEnd_PowerOn_off)
{
- if ((HomingActive[i] == false)&&(PrimingActive == false))
+ if ((HomingActive[i] == false)&&(PrimingActive[i] == false))
{
Report("Homing Inactive dispenser",__FILE__,i,HomingActive[i],RpWarning,PrimingActive[i],0);
IDS_HomeDispenser (i, 1000 , NULL);
@@ -691,7 +686,7 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
Report("Inactive dispenser already homing",__FILE__,i,HomingActive[i],RpWarning,PrimingActive[i],0);
}
}/**/
- /*if ((HomingActive[i] == false)&&(PrimingActive == false))
+ /*if ((HomingActive[i] == false)&&(PrimingActive[i] == false))
{
Report("Inactive dispenser open valve",__FILE__,i,HomingActive[i],RpWarning,PrimingActive[i],0);
Control3WayValvesWithCallback (i, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer
@@ -703,7 +698,7 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
Report("Inactive dispenser already homing",__FILE__,i,HomingActive[i],RpWarning,PrimingActive[i],0);
}
}*/
- //if ((HomingActive[i] == false)&&(PrimingActive == false))
+ //if ((HomingActive[i] == false)&&(PrimingActive[i] == false))
//{
// Report("Inactive dispenser open valve",__FILE__,i,HomingActive[i],RpWarning,PrimingActive[i],0);
// Control3WayValvesWithCallback (i, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer
@@ -1393,6 +1388,7 @@ uint32_t IDSSegmentStateSetValve(uint32_t IfIndex, uint32_t BusyFlag)
SafeRemoveControlCallback(IDSValveControlId,IDSSegmentStateSetValve);
Valve_Set(VALVE_MIXCHIP_WASTECH, Mixer_Head);
Report("IDSSegmentState set valve after 1 second",__FILE__,__LINE__,(int)0,RpWarning,(int)0,0);
+ return OK;
}
#endif
//********************************************************************************************************************