| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 | 
							- using System.Diagnostics;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- using Aitex.Core.RT.Fsm;
 
- using Aitex.Core.Util;
 
- using Aitex.Core.RT.SCCore;
 
- using Aitex.Sorter.Common;
 
- using MECF.Framework.Common.Equipment;
 
- using MECF.Framework.Common.Schedulers;
 
- using MECF.Framework.Common.SubstrateTrackings;
 
- using Venus_RT.Scheduler;
 
- namespace Venus_RT.Modules.Schedulers
 
- {
 
-     public class SchedulerAligner : SchedulerModule
 
-     {
 
-         public override bool IsAvailable
 
-         {
 
-             get { return /*_entity.IsIdle &&*//* _entity.IsOnline && */CheckTaskDone(); }
 
-         }
 
-         public override bool IsOnline
 
-         {
 
-             get { return _entity.IsOnline; }
 
-         }
 
-         public override bool IsError
 
-         {
 
-             get { return _entity.IsError; }
 
-         }
 
-         public override bool IsIdle
 
-         {
 
-             get { return _entity.IsIdle; }
 
-         }
 
-         private EfemEntity _entity = null;
 
-         private bool _isCooling;
 
-         private DeviceTimer _timerCooling = new DeviceTimer();
 
-         private float _paramCoolingTime = 0;
 
-         //private int _token;
 
-         private int _coolingDelayTime;
 
-         private Stopwatch _timerDelay = new Stopwatch();
 
-         private DeviceTimer _timerAligning = new DeviceTimer();
 
-         public SchedulerAligner(ModuleName chamber) : base(chamber.ToString())
 
-         {
 
-             _entity = Singleton<RouteManager>.Instance.EFEM;
 
-             _isCooling = chamber == ModuleName.Cooling1 || chamber == ModuleName.Cooling2;
 
-         }
 
-         public override bool IsReadyForPick(ModuleName robot, int slot, Hand blade)
 
-         {
 
-             return WaferManager.Instance.CheckHasWafer(ModuleHelper.Converter(_module), slot);
 
-         }
 
-         public override bool IsReadyForPlace(ModuleName robot, int slot, Hand blade)
 
-         {
 
-             return WaferManager.Instance.CheckNoWafer(ModuleHelper.Converter(_module), slot);
 
-         }
 
-         public override bool Cooling(int coolingTime)
 
-         {
 
-             _task = TaskType.Cooling;
 
-             LogTaskStart(_task, $"Cooling {coolingTime} seconds");
 
-             _coolingDelayTime = SC.GetValue<int>("EFEM.DelayTimeBeforeLiftDown");
 
-             _paramCoolingTime = coolingTime;
 
-             _timerDelay.Restart();
 
-             //_token = _efemEntity.InvokeCooling(Module.ToString(), time);
 
-             return true;//_token != (int)FSM_MSG.NONE;
 
-         }
 
-         public bool Monitor()
 
-         {
 
-             return true;
 
-         }
 
-         public override bool Align(float time) 
 
-         {
 
-             _task = TaskType.Align;
 
-  
 
-             LogTaskStart(_task, _isCooling ? $"Cooling {time} seconds": $"Aligning");
 
-             _paramCoolingTime = time;
 
-             _timerCooling.Start(_paramCoolingTime * 1000);
 
-             _timerDelay.Restart();
 
-             Singleton<RouteManager>.Instance.EFEM.EfemDevice.SetPinDown(Module);
 
-             //token = _entity.InvokeAlign(Module.ToString(), time);
 
-             return true;// _token != (int)FSM_MSG.NONE;
 
-         }
 
-         public override bool PostTransfer(ModuleName robot, EnumTransferType type, int slot)
 
-         {
 
-             StopWaitTransfer(robot);
 
-             if (type == EnumTransferType.Place)
 
-             {
 
-                 _task = TaskType.Align;
 
-                 LogTaskStart(_task, $"Waiting {_paramCoolingTime} seconds");
 
-                 _timerCooling.Start(_paramCoolingTime*1000);
 
-             }
 
-             return true;
 
-         }
 
-         public override bool PostTransfer(ModuleName robot)
 
-         {
 
-             StopWaitTransfer(robot);
 
-             return true;
 
-         }
 
-         public bool CheckTaskDone()
 
-         {
 
-             bool ret = false;
 
-             switch (_task)
 
-             {
 
-                 case TaskType.None:
 
-                     ret = true;
 
-                     break;
 
-                 case TaskType.Align:
 
-                     if (_timerDelay.IsRunning && _timerDelay.ElapsedMilliseconds > 1 * 1000)
 
-                     {
 
-                         _timerDelay.Stop();
 
-                     }
 
-                     ret = !_timerDelay.IsRunning && _timerCooling.IsTimeout() && /* _entity.CheckAcked(_token) &&*/ _entity.IsIdle /*&& !_entity.EfemDevice.IsBufferPinUp[Module]*/;
 
-                     break;
 
-                 case TaskType.Cooling:
 
-                     if (_timerDelay.IsRunning && _timerDelay.ElapsedMilliseconds > _coolingDelayTime * 1000)
 
-                     {
 
-                         _timerDelay.Stop();
 
-                         //_token = _efemEntity.InvokeLiftDown(Module.ToString());
 
-                         Singleton<RouteManager>.Instance.EFEM.EfemDevice.SetPinDown(Module);
 
-                         //lift pin down time = 2seconds
 
-                         _timerCooling.Start(_paramCoolingTime * 1000 + 2 * 1000);
 
-                         break;
 
-                     }
 
-                     ret = !_timerDelay.IsRunning && _timerCooling.IsTimeout() && _entity.IsIdle;
 
-                     break;
 
-             }
 
-             if (ret && _task != TaskType.None)
 
-             {
 
-                 LogTaskDone(_task, "");
 
-                 _task = TaskType.None;
 
-             }
 
-             return ret;
 
-         }
 
-     }
 
- }
 
 
  |