2022-07-26 09:41:07 +08:00
|
|
|
|
using SicRT.Scheduler;
|
|
|
|
|
using MECF.Framework.Common.Equipment;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
|
|
|
|
namespace SicRT.Modules.Schedulers
|
|
|
|
|
{
|
|
|
|
|
public class SchedulerModuleFactory
|
|
|
|
|
{
|
2023-02-07 20:02:23 +08:00
|
|
|
|
#region Variables
|
2022-07-26 09:41:07 +08:00
|
|
|
|
|
2023-02-07 20:02:23 +08:00
|
|
|
|
|
|
|
|
|
protected SchedulerTMRobot SchTmRobot;
|
|
|
|
|
protected SchedulerWaferRobot SchWaferRobot;
|
|
|
|
|
protected SchedulerTrayRobot SchTrayRobot;
|
2022-07-26 09:41:07 +08:00
|
|
|
|
|
2023-02-07 20:02:23 +08:00
|
|
|
|
protected SchedulerBuffer SchBuffer;
|
|
|
|
|
protected SchedulerLoadLock SchLoadLock;
|
|
|
|
|
protected SchedulerUnLoad SchUnLoad;
|
|
|
|
|
protected SchedulerAligner SchAligner;
|
|
|
|
|
protected SchedulerPM SchPm1;
|
2022-07-26 09:41:07 +08:00
|
|
|
|
//protected SchedulerPM _pm2 = new SchedulerPM(ModuleName.PM2);
|
|
|
|
|
|
2023-02-07 20:02:23 +08:00
|
|
|
|
protected SchedulerCassette SchCassAL;
|
|
|
|
|
protected SchedulerCassette SchCassAR;
|
|
|
|
|
protected SchedulerCassette SchCassBL;
|
2022-07-26 09:41:07 +08:00
|
|
|
|
|
2023-02-07 20:02:23 +08:00
|
|
|
|
protected List<SchedulerPM> LstPmSchedulers;
|
|
|
|
|
protected List<SchedulerCassette> LstCassetteSchedulers;
|
|
|
|
|
protected List<SchedulerModule> LstAllSchedulers;
|
|
|
|
|
|
|
|
|
|
#endregion
|
2022-07-26 09:41:07 +08:00
|
|
|
|
|
|
|
|
|
protected SchedulerModuleFactory()
|
|
|
|
|
{
|
2023-02-07 20:02:23 +08:00
|
|
|
|
SchTmRobot = new SchedulerTMRobot();
|
|
|
|
|
SchWaferRobot = new SchedulerWaferRobot();
|
|
|
|
|
SchTrayRobot = new SchedulerTrayRobot();
|
|
|
|
|
SchBuffer = new SchedulerBuffer();
|
|
|
|
|
SchLoadLock = new SchedulerLoadLock();
|
|
|
|
|
SchUnLoad = new SchedulerUnLoad();
|
|
|
|
|
SchAligner = new SchedulerAligner();
|
|
|
|
|
SchPm1 = new SchedulerPM(ModuleName.PM1);
|
|
|
|
|
SchCassAL = new SchedulerCassette(ModuleName.CassAL);
|
|
|
|
|
SchCassAR = new SchedulerCassette(ModuleName.CassAR);
|
|
|
|
|
SchCassBL = new SchedulerCassette(ModuleName.CassBL);
|
2022-07-26 09:41:07 +08:00
|
|
|
|
|
2023-02-07 20:02:23 +08:00
|
|
|
|
LstPmSchedulers = new List<SchedulerPM>(new[] { SchPm1 });
|
|
|
|
|
LstCassetteSchedulers = new List<SchedulerCassette>(new[] { SchCassAL, SchCassAR, SchCassBL });
|
|
|
|
|
LstAllSchedulers = new List<SchedulerModule>(new SchedulerModule[]
|
|
|
|
|
{
|
|
|
|
|
SchTmRobot,
|
|
|
|
|
SchWaferRobot,
|
|
|
|
|
SchTrayRobot,
|
|
|
|
|
SchBuffer,
|
|
|
|
|
SchLoadLock,
|
|
|
|
|
SchUnLoad,
|
|
|
|
|
SchAligner,
|
|
|
|
|
SchPm1,
|
|
|
|
|
SchCassAL,
|
|
|
|
|
SchCassAR,
|
|
|
|
|
SchCassBL
|
|
|
|
|
});
|
2022-07-26 09:41:07 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected SchedulerModule GetModule(string name)
|
|
|
|
|
{
|
2023-02-07 20:02:23 +08:00
|
|
|
|
var module = ModuleHelper.Converter(name);
|
|
|
|
|
return GetModule(module);
|
2022-07-30 08:50:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected SchedulerModule GetModule(ModuleName name)
|
|
|
|
|
{
|
|
|
|
|
switch (name)
|
|
|
|
|
{
|
|
|
|
|
case ModuleName.Buffer:
|
2023-02-07 20:02:23 +08:00
|
|
|
|
return SchBuffer;
|
2022-07-30 08:50:44 +08:00
|
|
|
|
case ModuleName.TMRobot:
|
2023-02-07 20:02:23 +08:00
|
|
|
|
return SchTmRobot;
|
2022-07-26 09:41:07 +08:00
|
|
|
|
case ModuleName.WaferRobot:
|
2023-02-07 20:02:23 +08:00
|
|
|
|
return SchWaferRobot;
|
2022-07-26 09:41:07 +08:00
|
|
|
|
case ModuleName.TrayRobot:
|
2023-02-07 20:02:23 +08:00
|
|
|
|
return SchTrayRobot;
|
2022-07-26 09:41:07 +08:00
|
|
|
|
case ModuleName.PM1:
|
2023-02-07 20:02:23 +08:00
|
|
|
|
return SchPm1;
|
2022-07-26 09:41:07 +08:00
|
|
|
|
case ModuleName.CassAL:
|
2023-02-07 20:02:23 +08:00
|
|
|
|
return SchCassAL;
|
2022-07-26 09:41:07 +08:00
|
|
|
|
case ModuleName.CassAR:
|
2023-02-07 20:02:23 +08:00
|
|
|
|
return SchCassAR;
|
2022-07-26 09:41:07 +08:00
|
|
|
|
case ModuleName.CassBL:
|
2023-02-07 20:02:23 +08:00
|
|
|
|
return SchCassBL;
|
2022-07-26 09:41:07 +08:00
|
|
|
|
case ModuleName.LoadLock:
|
2023-02-07 20:02:23 +08:00
|
|
|
|
return SchLoadLock;
|
2022-07-26 09:41:07 +08:00
|
|
|
|
case ModuleName.UnLoad:
|
2023-02-07 20:02:23 +08:00
|
|
|
|
return SchUnLoad;
|
2022-07-26 09:41:07 +08:00
|
|
|
|
case ModuleName.Aligner:
|
2023-02-07 20:02:23 +08:00
|
|
|
|
return SchAligner;
|
2022-07-26 09:41:07 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Reset()
|
|
|
|
|
{
|
2023-02-07 20:02:23 +08:00
|
|
|
|
SchTmRobot.ResetTask();
|
|
|
|
|
foreach (var pm in LstPmSchedulers)
|
2022-07-26 09:41:07 +08:00
|
|
|
|
{
|
|
|
|
|
pm.ResetTask();
|
|
|
|
|
}
|
|
|
|
|
|
2023-02-07 20:02:23 +08:00
|
|
|
|
SchBuffer.ResetTask();
|
2022-07-26 09:41:07 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|