2023-03-03 15:42:13 +08:00
|
|
|
|
using Aitex.Core.RT.Fsm;
|
|
|
|
|
using Aitex.Core.Util;
|
|
|
|
|
using SicRT.Scheduler;
|
|
|
|
|
using MECF.Framework.Common.Equipment;
|
|
|
|
|
using MECF.Framework.Common.SubstrateTrackings;
|
2023-04-13 15:35:13 +08:00
|
|
|
|
using SicModules.Cassettes;
|
2023-03-03 15:42:13 +08:00
|
|
|
|
using SicRT.Equipments;
|
|
|
|
|
using SicRT.Equipments.Systems;
|
|
|
|
|
|
|
|
|
|
namespace SicRT.Modules.Schedulers
|
|
|
|
|
{
|
|
|
|
|
public class SchedulerCassette : SchedulerModule
|
|
|
|
|
{
|
|
|
|
|
public override bool IsAvailable
|
|
|
|
|
{
|
|
|
|
|
get { return _cass.IsOnline; }
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
public override bool IsOnline
|
|
|
|
|
{
|
|
|
|
|
get { return _cass.IsOnline; }
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
public override bool IsError
|
|
|
|
|
{
|
|
|
|
|
get { return _cass.IsError; }
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private CassetteModule _cass = null;
|
|
|
|
|
|
|
|
|
|
public SchedulerCassette(ModuleName module) : base(module.ToString())
|
|
|
|
|
{
|
|
|
|
|
_module = module.ToString();
|
|
|
|
|
_cass = Singleton<EquipmentManager>.Instance.Modules[module] as CassetteModule;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool Monitor()
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override bool IsReadyForPlace(ModuleName robot, int slot)
|
|
|
|
|
{
|
|
|
|
|
return WaferManager.Instance.CheckNoWafer(_cass.Module, slot) && WaferManager.Instance.CheckNoTray(ModuleHelper.Converter(_cass.Module), slot);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override bool IsReadyForPick(ModuleName robot, int slot)
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool CheckTaskDone()
|
|
|
|
|
{
|
|
|
|
|
var taskSucceed = false;
|
|
|
|
|
switch (_task)
|
|
|
|
|
{
|
|
|
|
|
case TaskType.None:
|
|
|
|
|
taskSucceed = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return SuperCheckTaskDone(taskSucceed, _cass.IsIdle | _cass.IsError);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|