SicMultiplate/SicRT/Equipments/Schedulers/SchedulerModuleFactory.cs

133 lines
4.1 KiB
C#

using SicRT.Scheduler;
using System.Collections.Generic;
using Aitex.Core.RT.SCCore;
namespace SicRT.Modules.Schedulers
{
public class SchedulerModuleFactory
{
protected SchedulerTMRobot _tmRobot = new();
protected SchedulerWaferRobot _waferRobot;
protected SchedulerTrayRobot _trayRobot;
protected SchedulerBuffer _buffer = new(ModuleName.Buffer);
protected SchedulerLoadLock _load = new(ModuleName.LoadLock);
protected SchedulerUnLoad _unload = new(ModuleName.UnLoad);
protected SchedulerAligner _aligner;
protected SchedulerPM _pm1 = new(ModuleName.PM1);
protected SchedulerPM _pm2 = new(ModuleName.PM2);
protected SchedulerCassette _cassetteAL;
protected SchedulerCassette _cassetteAR;
protected SchedulerCassette _cassetteBL;
protected List<SchedulerPM> _lstPms = new();
protected List<SchedulerCassette> _lstWaferCassettes = new();
protected SchedulerModuleFactory()
{
_lstPms.AddRange(new[] { _pm1 ,_pm2});
if (SC.GetValue<bool>($"System.SetUp.IsEFEMInstalled"))
{
_waferRobot = new();
_trayRobot = new();
_aligner = new(ModuleName.Aligner);
_cassetteAL = new(ModuleName.CassAL);
_cassetteAR = new(ModuleName.CassAR);
_cassetteBL = new(ModuleName.CassBL);
_lstWaferCassettes.AddRange(new[] { _cassetteAL, _cassetteAR });
}
}
protected SchedulerModule GetModule(string name)
{
switch (ModuleHelper.Converter(name))
{
case ModuleName.Buffer:
return _buffer;
case ModuleName.TMRobot:
return _tmRobot;
case ModuleName.WaferRobot:
return _waferRobot;
case ModuleName.TrayRobot:
return _trayRobot;
case ModuleName.PM1:
return _pm1;
case ModuleName.PM2:
return _pm2;
case ModuleName.CassAL:
return _cassetteAL;
case ModuleName.CassAR:
return _cassetteAR;
case ModuleName.CassBL:
return _cassetteBL;
case ModuleName.LoadLock:
return _load;
case ModuleName.UnLoad:
return _unload;
case ModuleName.Aligner:
return _aligner;
}
return null;
}
protected SchedulerModule GetModule(ModuleName name)
{
switch (name)
{
case ModuleName.Buffer:
return _buffer;
case ModuleName.TMRobot:
return _tmRobot;
case ModuleName.WaferRobot:
return _waferRobot;
case ModuleName.TrayRobot:
return _trayRobot;
case ModuleName.PM1:
return _pm1;
case ModuleName.PM2:
return _pm2;
case ModuleName.CassAL:
return _cassetteAL;
case ModuleName.CassAR:
return _cassetteAR;
case ModuleName.CassBL:
return _cassetteBL;
case ModuleName.LoadLock:
return _load;
case ModuleName.Load:
return _load;
case ModuleName.UnLoad:
return _unload;
case ModuleName.Aligner:
return _aligner;
}
return null;
}
public void Reset()
{
_tmRobot.ResetTask();
_waferRobot.ResetTask();
_trayRobot.ResetTask();
foreach (var pm in _lstPms)
{
pm.ResetTask();
}
_buffer.ResetTask();
}
}
}