123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- 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 CyberX8_RT.Devices;
- using CyberX8_RT.Devices.YASKAWA;
- using CyberX8_Core;
- using MECF.Framework.Common.CommonData;
- namespace CyberX8_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; } = ModuleName.EFEM;
- 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 CloseBuzzer();
- 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,string updown="UP");
- public abstract bool Grip(Hand blade, bool isGrip);
- public abstract bool GotoMap(ModuleName mod, Hand hand,string extend="EX");
- public abstract bool Map(ModuleName mod);
- public abstract bool RequestMapResult(ModuleName mod);
- public abstract bool Vacuum(ModuleName mod,bool VacuumState);
- public abstract bool SetPinUp(ModuleName mod);
- public abstract bool SetPinDown(ModuleName mod);
- public abstract bool SetAlignAngle(ModuleName mod,double angle);
- public abstract bool SetRobotSpeed(ModuleName mod,int speed);
- public abstract bool RobotPowerOn(ModuleName mod,bool status);
- 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);
- public abstract bool GetWaferSize(ModuleName mod);
- public abstract bool SetWaferSize(ModuleName mod,int WaferSize);
- }
- }
|