| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading;
 
- using System.Threading.Tasks;
 
- using System.Xml;
 
- using Aitex.Core.RT.Device;
 
- using Aitex.Core.RT.Log;
 
- using Aitex.Sorter.Common;
 
- using Aitex.Core.Common;
 
- using MECF.Framework.Common.Equipment;
 
- using Venus_RT.Devices;
 
- using Venus_RT.Devices.YASKAWA;
 
- using Venus_Core;
 
- using MECF.Framework.Common.CommonData;
 
- namespace Venus_RT.Devices.EFEM
 
- {
 
-     public abstract class EfemBase : BaseDevice, IDevice
 
-     {
 
-         public virtual ILoadport this[ModuleName mod] => throw new ApplicationException();
 
-         // Properties
 
-         //
 
-         public new ModuleName Module { get; set; }
 
-         public OnlineFlag OnlineFlag { get; set; }
 
-         public bool CommunicationConnected { get; protected set; }
 
-         protected object _lockerAction = new object();
 
-         public string GripStateBlade1
 
-         {
 
-             get;
 
-             set;
 
-         }
 
-         public string GripStateBlade2
 
-         {
 
-             get;
 
-             set;
 
-         }
 
-         protected EfemBase()
 
-         {
 
-         }
 
-         protected bool CheckEfemStatus()
 
-         {
 
-             if (Status == RState.Init)
 
-             {
 
-                 LOG.Write(eEvent.ERR_EFEM_ROBOT, ModuleName.EFEM, "EFEM is not homed, please home first.");
 
-                 return false;
 
-             }
 
-             else if (Status == RState.Running)
 
-             {
 
-                 LOG.Write(eEvent.ERR_EFEM_ROBOT, ModuleName.EFEM, "EFEM is busy, please wait a minute");
 
-                 return false;
 
-             }
 
-             else if (Status == RState.Failed || Status == RState.Timeout)
 
-             {
 
-                 LOG.Write(eEvent.ERR_EFEM_ROBOT, ModuleName.EFEM, "EFEM has a error, please check and fix the hardware issue and home it");
 
-                 return false;
 
-             }
 
-             return true;
 
-         }
 
-         public virtual bool Initialize()
 
-         {
 
-             return true;
 
-         }
 
-         public abstract void Monitor();
 
-         public abstract void Terminate();
 
-         public abstract void Reset();
 
-         public abstract void SetOnline(bool online);
 
-         public abstract void SetOnline(ModuleName mod, bool online);
 
-         public abstract void SetBusy(ModuleName mod, bool online);
 
-         public virtual RState Status { get; }
 
-         public virtual RobotMoveInfo TMRobotMoveInfo { get; }
 
-         public virtual bool IsHomed { get; }
 
-         public virtual bool LiftIsUp { get; }
 
-         public virtual bool LiftIsDown { get; }
 
-         public abstract bool HomeAll();
 
-         public abstract bool Home(ModuleName mod);
 
-         public abstract bool OriginalSearch(ModuleName mod);
 
-         public abstract bool CheckWaferPresence();
 
-         public abstract string GetWaferPresence();
 
-         public abstract bool Halt();
 
-         public abstract bool ClearError();
 
-         public abstract bool PickExtend(ModuleName chamber, int slot, Hand hand);
 
-         public abstract bool PickRetract(ModuleName chamber, int slot, Hand hand);
 
-         public abstract bool PlaceExtend(ModuleName chamber, int slot, Hand hand);
 
-         public abstract bool PlaceRetract(ModuleName chamber, int slot, Hand hand);
 
-         public abstract bool Pick(ModuleName station, int slot, Hand hand);
 
-         public abstract bool Place(ModuleName station, int slot, Hand hand);
 
-         public abstract bool Goto(ModuleName station, Hand hand);
 
-         public abstract bool Grip(Hand blade, bool isGrip);
 
-         public abstract bool Map(ModuleName mod);
 
-         public abstract bool SetPinUp(ModuleName mod);
 
-         public abstract bool SetPinDown(ModuleName mod);
 
-         public abstract bool Align(ModuleName mod, double angle,float delayTime, WaferSize size);
 
-         public abstract bool SetLamp(LightType light, LightStatus status);
 
-         public abstract bool Load(ModuleName mod);
 
-         public abstract bool Unload(ModuleName mod);
 
-         public abstract bool ReadCarrierId(ModuleName mod);
 
-         public abstract bool WriteCarrierId(ModuleName mod, string id);
 
-         public abstract bool ReadTagData(ModuleName mod);
 
-         public abstract bool WriteTagData(ModuleName mod, string tagData);
 
-         public abstract bool Dock(ModuleName mod);
 
-         public abstract bool Undock(ModuleName mod);
 
-         public abstract bool Clamp(ModuleName mod, bool isUnloadClamp);
 
-         public abstract bool Unclamp(ModuleName mod);
 
-         public abstract bool SetThickness(ModuleName mod, string thickness);
 
-         public abstract void SetRobotMovingInfo(RobotAction action, Hand hand, ModuleName target);
 
-     }
 
- }
 
 
  |