Sic.Framework-Nanjing-Baishi/MECF.Framework.RT.Equipment.../LogicUnits/PMs/PMModuleBase.cs

110 lines
4.1 KiB
C#
Raw Normal View History

2023-04-13 11:51:03 +08:00
using Aitex.Core.RT.Device;
using Aitex.Sorter.Common;
using MECF.Framework.Common.Equipment;
using MECF.Framework.Common.Fsm;
using MECF.Framework.Common.Schedulers;
using MECF.Framework.Common.SubstrateTrackings;
using MECF.Framework.RT.EquipmentLibrary.LogicUnits;
using System.Collections.Generic;
namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.PMs
{
public abstract class PMModuleBase : ModuleFsmDevice, ITransferTarget, IModuleDevice
{
private int _slot = 1;
public PMModuleBase(int slot)
{
_slot = slot;
}
public override bool Initialize()
{
WaferManager.Instance.SubscribeLocation(Module, _slot);
return base.Initialize();
}
public abstract double ChamberPressure { get; }
public abstract bool IsIdle { get; }
public abstract bool IsProcessIdle { get; }
public abstract bool CheckAcked(int entityTaskToken);
//Initialize
public abstract bool Home();
//Transfer
public abstract bool IsPrepareTransferReady(ModuleName robot, EnumTransferType pick, int slot);
public abstract int InvokePrepareTransfer(ModuleName robot, EnumTransferType type, int slot);
public abstract bool InvokeCheckHeaterDisable();
public abstract int InvokeSetHeatDisable();
public abstract bool IsReady { get; }
public abstract bool IsError { get; }
public abstract bool IsInit { get; }
public abstract bool IsService { get; }
public abstract bool Home(out string reason);
//ITransferTarget
public abstract bool PrepareTransfer(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType, out string reason);
public abstract bool TransferHandoff(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType, out string reason);
public abstract bool PostTransfer(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType, out string reason);
public abstract bool CheckReadyForTransfer(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType, out string reason);
public abstract void NoteTransferStart(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType);
public abstract void NoteTransferStop(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType);
//Process
public abstract int InvokeProcess(string recipeName, bool isCleanRecipe, bool withWafer);
public abstract int InvokeCleanProcess(string recipeName);
public abstract bool IsProcessed();
//Pump
public abstract bool PreparePump(out string reason);
public abstract bool CheckPreparePump();
public abstract bool SlowPump(int tvPosition, out string reason);
public abstract bool FastPump(int tvPosition, out string reason);
public abstract bool TurnOnPump(out string reason);
public abstract bool CheckPumpIsOn();
public abstract bool ShutDownPump(out string reason);
public abstract bool AbortPump();
//Vent
public abstract bool PrepareVent(out string reason);
public abstract bool CheckPrepareVent();
public abstract bool Vent(out string reason);
public abstract bool StopVent(out string reason);
public abstract bool CheckSlitValveClose();
//Lid
public abstract bool CheckLidClosed();
// PreProcess
public abstract bool CheckPreProcessCondition(Dictionary<string, string> recipeCommands, out string reason);
// 2704
public abstract bool CloseHeaterEnable(out string reason);
public abstract bool ClosePSUEnable(out string reason);
public abstract bool CloseSCREnable(out string reason);
2023-04-13 11:51:03 +08:00
public abstract bool EnableHeater(bool enable, out string reason);
public abstract bool CheckHeaterEnable();
public abstract bool CheckPickFromPMTemp();
public abstract bool CheckPlacetoPMTemp();
public abstract bool SetRotationEnable(bool enable, out string reason);
public abstract bool CheckRotationEnable();
}
}