| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 | 
							- using Aitex.Core.Common.DeviceData;
 
- using Aitex.Core.Util;
 
- using MECF.Framework.Common.Equipment;
 
- using MECF.Framework.Common.SubstrateTrackings;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- using Aitex.Core.RT.Device;
 
- using Aitex.Core.RT.Event;
 
- using Aitex.Core.RT.Log;
 
- using Aitex.Sorter.Common;
 
- using VirgoRT.Modules;
 
- using MECF.Framework.Common.Schedulers;
 
- using VirgoRT.Devices;
 
- using Aitex.Core.Common;
 
- namespace VirgoRT.Scheduler
 
- {
 
-     public class WaferMoveArgs : EventArgs
 
-     {
 
-         public ModuleName SrcModule
 
-         {
 
-             get; set;
 
-         }
 
-         public int SrcSlot
 
-         {
 
-             get; set;
 
-         }
 
-         public ModuleName DstModule
 
-         {
 
-             get; set;
 
-         }
 
-         public int DstSlot
 
-         {
 
-             get; set;
 
-         }
 
-         public WaferMoveArgs(ModuleName sourceModule, int sourceSlot, ModuleName dstModule, int dstSlot)
 
-         {
 
-             SrcModule = sourceModule;
 
-             SrcSlot = sourceSlot;
 
-             DstModule = dstModule;
 
-             DstSlot = dstSlot;
 
-         }
 
-     }
 
-     public class SchedulerModule
 
-     {
 
-         public enum TaskType
 
-         {
 
-             None,
 
-             PrepareTransfer,
 
-             Pick,
 
-             Place,
 
-             PickAndPlace,
 
-             PostTransfer,
 
-             Preprocess,
 
-             Process,
 
-             PostProcess,
 
-             IdlePurgeProcess,
 
-             IdleCleanProcess,
 
-             PreJobProcess,
 
-             CompleteJobProcess,
 
-             OpenCover,
 
-             CloseCover,
 
-             Load,
 
-             Unload,
 
-             Align,
 
-             TransferTarget,
 
-             Cooling,
 
-             Heating,
 
-             Map,
 
-             Goto,
 
-             Flip,
 
-         }
 
-         public ModuleName Module
 
-         {
 
-             get { return ModuleHelper.Converter(_module); }
 
-         }
 
-         public virtual bool IsAvailable { get; }
 
-         public virtual bool IsOnline { get; }
 
-         public virtual bool IsError { get; }
 
-         public int InTransferSlot
 
-         {
 
-             get
 
-             {
 
-                 return _inTransferSlot;
 
-             }
 
-         }
 
-         protected string _module;
 
-         protected TaskType _task = TaskType.None;
 
-         protected EnumTransferType _inTransferType;
 
-         protected int _inTransferSlot;
 
-         protected ModuleName _inProcessRobot;
 
-         public Dictionary<int, long> WaferArriveTicks { get; set; }
 
-         public EventHandler<WaferMoveArgs> EventWaferArrived;
 
-         public EventHandler<WaferMoveArgs> EventWaferLeaved;
 
-         
 
-         public SchedulerModule(string module)
 
-         {
 
-             _module = module;
 
-             WaferArriveTicks = new Dictionary<int, long>();
 
-             WaferArriveTicks[0] = DateTime.Now.Ticks;
 
-             WaferArriveTicks[1] = WaferArriveTicks[0];
 
-         }
 
-         protected void LogTaskStart(TaskType cmd, string message)
 
-         {
 
-             EV.PostInfoLog("Scheduler", $"Task start:{_module}, {cmd}, {message}");
 
-         }
 
-         protected void LogTaskDone(TaskType cmd, string message)
 
-         {
 
-             EV.PostInfoLog("Scheduler", $"Task done:{_module}, {cmd}, {message}");
 
-         }
 
-         public void ResetTask()
 
-         {
 
-             _task = TaskType.None;
 
-         }
 
-         public bool WaitTransfer(ModuleName robot, EnumTransferType transferType, int slot)
 
-         {
 
-             _task = TaskType.TransferTarget;
 
-             _inProcessRobot = robot;
 
-             _inTransferType = transferType;
 
-             _inTransferSlot = slot;
 
-             LogTaskStart(_task, $"Note {robot} in transfer");
 
-             return true;
 
-         }
 
-         public bool IsWaitTransfer(ModuleName robot)
 
-         {
 
-             return _task == TaskType.TransferTarget && _inProcessRobot == robot;
 
-         }
 
-         public bool IsWaitTransfer(ModuleName robot, EnumTransferType transferType)
 
-         {
 
-             return _task == TaskType.TransferTarget && _inProcessRobot == robot && _inTransferType==transferType;
 
-         }
 
-         public virtual bool StopWaitTransfer(ModuleName robot)
 
-         {
 
-             LogTaskDone(_task, $"Note {robot} transfer complete");
 
-             _inProcessRobot = ModuleName.System;
 
-             _task = TaskType.None;
 
-             WaferArriveTicks[_inTransferSlot] = DateTime.Now.Ticks;
 
-             return true;
 
-         }
 
-         public bool HasWafer(int slot)
 
-         {
 
-             return WaferManager.Instance.CheckHasWafer(ModuleHelper.Converter(_module), slot);
 
-         }
 
-         public bool NoWafer(int slot)
 
-         {
 
-             return WaferManager.Instance.CheckNoWafer(ModuleHelper.Converter(_module), slot);
 
-         }
 
-         public virtual bool IsReadyForPick(ModuleName robot, int slot, Hand blade)
 
-         {
 
-             return true;
 
-         }
 
-         public virtual bool IsReadyForPlace(ModuleName robot, int slot, Hand blade)
 
-         {
 
-             return true;
 
-         }
 
-         public virtual bool PrepareTransfer(ModuleName robot, EnumTransferType type, int slot)
 
-         {
 
-             return true;
 
-         }
 
-         public virtual bool PostTransfer(ModuleName robot, EnumTransferType type, int slot)
 
-         {
 
-             StopWaitTransfer(robot);
 
-             return true;
 
-         }
 
-         public virtual bool PostTransfer(ModuleName robot )
 
-         {
 
-             StopWaitTransfer(robot);
 
-             return true;
 
-         }
 
-         public virtual bool Process(string recipeName, bool isCleanRecipe, bool withDummyWafer, WaferInfo wafer)
 
-         {
 
-             return true;
 
-         }
 
-         public virtual bool Cooling(int coolingTime)
 
-         {
 
-             return true;
 
-         }
 
-         public virtual bool Align(float time)
 
-         {
 
-             return true;
 
-         }
 
-         public virtual bool Align(ModuleName aligner, float time)
 
-         {
 
-             return true;
 
-         }
 
-         public virtual bool Preheating(float temperature)
 
-         {
 
-             return true;
 
-         }
 
-         #region Virgo_T
 
-         // 传片序列
 
-         // 1. 每个槽(Slot)具有三种状态, 根据槽的状态, 决定wafer是否可以 前行
 
-         // 2. 每个可以前行的wafer, 再跟聚下一个 槽是否 ReadyIn, 决定是否把命令压栈
 
-         // preheat 序列
 
-         // prepare transfer 序列
 
-         // flipper 序列
 
-         
 
-         public enum SlotStatus
 
-         {
 
-             ReadyIn,
 
-             ReadOut,
 
-             Busy,
 
-         }
 
-         public virtual SlotItem GetReadyOutSlot()
 
-         {
 
-             return new SlotItem(ModuleName.System, -1);
 
-         }
 
-         public virtual SlotItem GetReadyInSlot()
 
-         {
 
-             return new SlotItem(ModuleName.System, -1);
 
-         }
 
-         public virtual int GetTimeToReady()
 
-         {
 
-             return 0;
 
-         }
 
-         #endregion
 
-     }
 
- }
 
 
  |