diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2019-12-04 16:27:16 +0200 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2019-12-04 16:27:16 +0200 |
| commit | c19fa7f39c4614307c6fbd80ce1de5bd7dd4db8b (patch) | |
| tree | df875d8f8f70c08a72173d673c5f819703a8cb7f /Software/Embedded_SW/Embedded/Modules | |
| parent | feea57db6edf990f16333395d2639a61a1966a58 (diff) | |
| download | Tango-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.c | 30 | ||||
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 28 |
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 //******************************************************************************************************************** |
