|
@@ -1,23 +1,15 @@
|
|
-using System;
|
|
|
|
-using System.Collections.Generic;
|
|
|
|
-using System.Linq;
|
|
|
|
-using System.Reflection;
|
|
|
|
-using System.Text.RegularExpressions;
|
|
|
|
-using System.Xml;
|
|
|
|
-using Aitex.Common.Util;
|
|
|
|
-using Aitex.Core.Backend;
|
|
|
|
|
|
+using Aitex.Common.Util;
|
|
using Aitex.Core.RT.DataCenter;
|
|
using Aitex.Core.RT.DataCenter;
|
|
using Aitex.Core.RT.Device;
|
|
using Aitex.Core.RT.Device;
|
|
using Aitex.Core.RT.Device.Unit;
|
|
using Aitex.Core.RT.Device.Unit;
|
|
using Aitex.Core.RT.Event;
|
|
using Aitex.Core.RT.Event;
|
|
-using Aitex.Core.RT.IOCore;
|
|
|
|
using Aitex.Core.RT.Log;
|
|
using Aitex.Core.RT.Log;
|
|
using Aitex.Core.RT.OperationCenter;
|
|
using Aitex.Core.RT.OperationCenter;
|
|
using Aitex.Core.RT.SCCore;
|
|
using Aitex.Core.RT.SCCore;
|
|
using Aitex.Core.Util;
|
|
using Aitex.Core.Util;
|
|
-
|
|
|
|
using Aitex.Sorter.Common;
|
|
using Aitex.Sorter.Common;
|
|
using EFEM.RT.Devices.Aligner;
|
|
using EFEM.RT.Devices.Aligner;
|
|
|
|
+using EFEM.RT.Devices.Flipper;
|
|
using EFEM.RT.Devices.LoadPorts.Fortrend;
|
|
using EFEM.RT.Devices.LoadPorts.Fortrend;
|
|
using EFEM.RT.Devices.LoadPorts.JetOpenCst;
|
|
using EFEM.RT.Devices.LoadPorts.JetOpenCst;
|
|
using EFEM.RT.Devices.LoadPorts.SmartTagReader;
|
|
using EFEM.RT.Devices.LoadPorts.SmartTagReader;
|
|
@@ -29,22 +21,18 @@ using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.BufferStations;
|
|
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.CarrierIdReaders.CarrierIDReaderBase;
|
|
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.CarrierIdReaders.CarrierIDReaderBase;
|
|
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.CarrierIdReaders.OmronBarcode;
|
|
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.CarrierIdReaders.OmronBarcode;
|
|
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.CarrierIdReaders.OmronRFID;
|
|
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.CarrierIdReaders.OmronRFID;
|
|
-using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.CarrierIdReaders.OmronV640;
|
|
|
|
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.FFUs.AAF;
|
|
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.FFUs.AAF;
|
|
-using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts;
|
|
|
|
-using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts.HirataII;
|
|
|
|
|
|
|
|
//using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts.Fortrend;
|
|
//using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts.Fortrend;
|
|
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts.LoadPortBase;
|
|
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts.LoadPortBase;
|
|
-using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts.SMIF;
|
|
|
|
-using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts.TDK;
|
|
|
|
-using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.OcrReaders;
|
|
|
|
-using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robot;
|
|
|
|
-using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.JEL;
|
|
|
|
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.RobotBase;
|
|
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.RobotBase;
|
|
|
|
+using System;
|
|
|
|
+using System.Collections.Generic;
|
|
|
|
+using System.Linq;
|
|
|
|
+using System.Text.RegularExpressions;
|
|
|
|
+using System.Xml;
|
|
|
|
|
|
//using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.Rorze;
|
|
//using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.Rorze;
|
|
-using SorterCommon;
|
|
|
|
|
|
|
|
namespace EFEM.RT.Devices
|
|
namespace EFEM.RT.Devices
|
|
{
|
|
{
|
|
@@ -63,8 +51,10 @@ namespace EFEM.RT.Devices
|
|
private static readonly int LoadLockQuantity = DeviceDefineManager.Instance.GetValue<int>("LoadLockQuantity") ?? 0;
|
|
private static readonly int LoadLockQuantity = DeviceDefineManager.Instance.GetValue<int>("LoadLockQuantity") ?? 0;
|
|
private static readonly int BufferQuantity = DeviceDefineManager.Instance.GetValue<int>("BufferQuantity") ?? 0;
|
|
private static readonly int BufferQuantity = DeviceDefineManager.Instance.GetValue<int>("BufferQuantity") ?? 0;
|
|
private static readonly int LoadLockSlot = DeviceDefineManager.Instance.GetValue<int>("LoadLockSlot") ?? 0;
|
|
private static readonly int LoadLockSlot = DeviceDefineManager.Instance.GetValue<int>("LoadLockSlot") ?? 0;
|
|
|
|
+
|
|
//private static readonly int BufferSlot = DeviceDefineManager.Instance.GetValue<int>("BufferSlot") ?? 0;
|
|
//private static readonly int BufferSlot = DeviceDefineManager.Instance.GetValue<int>("BufferSlot") ?? 0;
|
|
private static readonly bool LoadLockDoorControlByStation = DeviceDefineManager.Instance.GetValue<bool>("LLDoorControlByStation") ?? false;
|
|
private static readonly bool LoadLockDoorControlByStation = DeviceDefineManager.Instance.GetValue<bool>("LLDoorControlByStation") ?? false;
|
|
|
|
+
|
|
//private static readonly bool DmcCardUsed = DeviceDefineManager.Instance.GetValue<bool>("DmcCardInstalled") ?? false;
|
|
//private static readonly bool DmcCardUsed = DeviceDefineManager.Instance.GetValue<bool>("DmcCardInstalled") ?? false;
|
|
private static readonly bool DisableSignalTower = DeviceDefineManager.Instance.GetValue<bool>("DisableSignalTower") ?? false;
|
|
private static readonly bool DisableSignalTower = DeviceDefineManager.Instance.GetValue<bool>("DisableSignalTower") ?? false;
|
|
|
|
|
|
@@ -77,11 +67,13 @@ namespace EFEM.RT.Devices
|
|
private static readonly bool PMBIsDisable = SC.ContainsItem("System.PMBDisable") ? SC.GetValue<bool>("System.PMBDisable") : true;
|
|
private static readonly bool PMBIsDisable = SC.ContainsItem("System.PMBDisable") ? SC.GetValue<bool>("System.PMBDisable") : true;
|
|
private static readonly bool CoolingBuffer1IsDisable = SC.ContainsItem("System.CoolingBuffer1Disable") ? SC.GetValue<bool>("System.CoolingBuffer1Disable") : true;
|
|
private static readonly bool CoolingBuffer1IsDisable = SC.ContainsItem("System.CoolingBuffer1Disable") ? SC.GetValue<bool>("System.CoolingBuffer1Disable") : true;
|
|
private static readonly bool CoolingBuffer2IsDisable = SC.ContainsItem("System.CoolingBuffer2Disable") ? SC.GetValue<bool>("System.CoolingBuffer2Disable") : true;
|
|
private static readonly bool CoolingBuffer2IsDisable = SC.ContainsItem("System.CoolingBuffer2Disable") ? SC.GetValue<bool>("System.CoolingBuffer2Disable") : true;
|
|
|
|
+ private static readonly bool FlipperIsDisable = SC.ContainsItem("System.FlipperDisable") ? SC.GetValue<bool>("System.FlipperDisable") : true;
|
|
private static readonly bool LoadPort1IsDisable = SC.ContainsItem("LoadPort.LP1.Disable") ? SC.GetValue<bool>("LoadPort.LP1.Disable") : true;
|
|
private static readonly bool LoadPort1IsDisable = SC.ContainsItem("LoadPort.LP1.Disable") ? SC.GetValue<bool>("LoadPort.LP1.Disable") : true;
|
|
private static readonly bool LoadPort2IsDisable = SC.ContainsItem("LoadPort.LP2.Disable") ? SC.GetValue<bool>("LoadPort.LP2.Disable") : true;
|
|
private static readonly bool LoadPort2IsDisable = SC.ContainsItem("LoadPort.LP2.Disable") ? SC.GetValue<bool>("LoadPort.LP2.Disable") : true;
|
|
|
|
|
|
private static readonly string RobotType = SC.ContainsItem("Robot.RobotType") ? SC.GetStringValue("Robot.RobotType") : "None";
|
|
private static readonly string RobotType = SC.ContainsItem("Robot.RobotType") ? SC.GetStringValue("Robot.RobotType") : "None";
|
|
public string[] CarrierIdReader => _carrierIdReader.Take(LoadPortQuantity).ToArray();
|
|
public string[] CarrierIdReader => _carrierIdReader.Take(LoadPortQuantity).ToArray();
|
|
|
|
+
|
|
private readonly string[] _carrierIdReader =
|
|
private readonly string[] _carrierIdReader =
|
|
{
|
|
{
|
|
"CarrierIdReader",
|
|
"CarrierIdReader",
|
|
@@ -97,6 +89,7 @@ namespace EFEM.RT.Devices
|
|
};
|
|
};
|
|
|
|
|
|
public string[] CarrierRfidReader => _carrierRfidReader.Take(LoadPortQuantity).ToArray();
|
|
public string[] CarrierRfidReader => _carrierRfidReader.Take(LoadPortQuantity).ToArray();
|
|
|
|
+
|
|
private readonly string[] _carrierRfidReader =
|
|
private readonly string[] _carrierRfidReader =
|
|
{
|
|
{
|
|
"RFID",
|
|
"RFID",
|
|
@@ -110,7 +103,9 @@ namespace EFEM.RT.Devices
|
|
"RFID",
|
|
"RFID",
|
|
"RFID"
|
|
"RFID"
|
|
};
|
|
};
|
|
|
|
+
|
|
public string[] BarcodeIdReaderName => _barcodeIdReaderName.Take(LoadPortQuantity).ToArray();
|
|
public string[] BarcodeIdReaderName => _barcodeIdReaderName.Take(LoadPortQuantity).ToArray();
|
|
|
|
+
|
|
private readonly string[] _barcodeIdReaderName = new[]
|
|
private readonly string[] _barcodeIdReaderName = new[]
|
|
{
|
|
{
|
|
"BarcodeReaderA",
|
|
"BarcodeReaderA",
|
|
@@ -124,9 +119,10 @@ namespace EFEM.RT.Devices
|
|
"BarcodeReaderI",
|
|
"BarcodeReaderI",
|
|
"BarcodeReaderJ",
|
|
"BarcodeReaderJ",
|
|
"BarcodeReaderK",
|
|
"BarcodeReaderK",
|
|
-
|
|
|
|
};
|
|
};
|
|
|
|
+
|
|
public string[] BufferNames => _bufferNames.Take(BufferQuantity).ToArray();
|
|
public string[] BufferNames => _bufferNames.Take(BufferQuantity).ToArray();
|
|
|
|
+
|
|
private readonly string[] _bufferNames =
|
|
private readonly string[] _bufferNames =
|
|
{
|
|
{
|
|
DeviceName.Buffer1,
|
|
DeviceName.Buffer1,
|
|
@@ -135,7 +131,9 @@ namespace EFEM.RT.Devices
|
|
DeviceName.Buffer4,
|
|
DeviceName.Buffer4,
|
|
DeviceName.Buffer5
|
|
DeviceName.Buffer5
|
|
};
|
|
};
|
|
|
|
+
|
|
public IEnumerable<ModuleName> LpNames => _lpNames.Take(LoadPortQuantity);
|
|
public IEnumerable<ModuleName> LpNames => _lpNames.Take(LoadPortQuantity);
|
|
|
|
+
|
|
private readonly ModuleName[] _lpNames =
|
|
private readonly ModuleName[] _lpNames =
|
|
{
|
|
{
|
|
ModuleName.LP1, ModuleName.LP2, ModuleName.LP3, ModuleName.LP4, ModuleName.LP5, ModuleName.LP6,
|
|
ModuleName.LP1, ModuleName.LP2, ModuleName.LP3, ModuleName.LP4, ModuleName.LP5, ModuleName.LP6,
|
|
@@ -143,6 +141,7 @@ namespace EFEM.RT.Devices
|
|
};
|
|
};
|
|
|
|
|
|
private string[] CarrierIdReaderPortScName => _carrierIdReaderPortScName.Take(LoadPortQuantity).ToArray();
|
|
private string[] CarrierIdReaderPortScName => _carrierIdReaderPortScName.Take(LoadPortQuantity).ToArray();
|
|
|
|
+
|
|
private readonly string[] _carrierIdReaderPortScName =
|
|
private readonly string[] _carrierIdReaderPortScName =
|
|
{
|
|
{
|
|
SorterCommon.ScPathName.LoadPort_LoadPort1CarrierIdReaderPortName,
|
|
SorterCommon.ScPathName.LoadPort_LoadPort1CarrierIdReaderPortName,
|
|
@@ -184,7 +183,7 @@ namespace EFEM.RT.Devices
|
|
EFEMSC.ScPathName.LoadPort_LoadPort9CarrierIdReaderPage,
|
|
EFEMSC.ScPathName.LoadPort_LoadPort9CarrierIdReaderPage,
|
|
EFEMSC.ScPathName.LoadPort_LoadPort10CarrierIdReaderPage
|
|
EFEMSC.ScPathName.LoadPort_LoadPort10CarrierIdReaderPage
|
|
};
|
|
};
|
|
-
|
|
|
|
|
|
+
|
|
private readonly string[] _rfidNames =
|
|
private readonly string[] _rfidNames =
|
|
{
|
|
{
|
|
DeviceName.RFIDReaderA,
|
|
DeviceName.RFIDReaderA,
|
|
@@ -197,9 +196,10 @@ namespace EFEM.RT.Devices
|
|
DeviceName.RFIDReaderH,
|
|
DeviceName.RFIDReaderH,
|
|
DeviceName.RFIDReaderI,
|
|
DeviceName.RFIDReaderI,
|
|
DeviceName.RFIDReaderJ
|
|
DeviceName.RFIDReaderJ
|
|
-
|
|
|
|
};
|
|
};
|
|
|
|
+
|
|
public string[] LpPortNameSc => _lpPortNameSc.Take(LoadPortQuantity).ToArray();
|
|
public string[] LpPortNameSc => _lpPortNameSc.Take(LoadPortQuantity).ToArray();
|
|
|
|
+
|
|
private readonly string[] _lpPortNameSc =
|
|
private readonly string[] _lpPortNameSc =
|
|
{
|
|
{
|
|
EFEMSC.ScPathName.LoadPort_LoadPort1PortName,
|
|
EFEMSC.ScPathName.LoadPort_LoadPort1PortName,
|
|
@@ -215,6 +215,7 @@ namespace EFEM.RT.Devices
|
|
};
|
|
};
|
|
|
|
|
|
public string[] LLNames => _llNames.Take(LoadLockQuantity).ToArray();
|
|
public string[] LLNames => _llNames.Take(LoadLockQuantity).ToArray();
|
|
|
|
+
|
|
private readonly string[] _llNames =
|
|
private readonly string[] _llNames =
|
|
{
|
|
{
|
|
DeviceName.LL1,
|
|
DeviceName.LL1,
|
|
@@ -226,9 +227,11 @@ namespace EFEM.RT.Devices
|
|
DeviceName.LL7,
|
|
DeviceName.LL7,
|
|
DeviceName.LL8
|
|
DeviceName.LL8
|
|
};
|
|
};
|
|
|
|
+
|
|
private char[] rfidInstallment;
|
|
private char[] rfidInstallment;
|
|
private char[] carrierIdInstallment;
|
|
private char[] carrierIdInstallment;
|
|
private char[] e84Support;
|
|
private char[] e84Support;
|
|
|
|
+
|
|
public bool IsAnyLPIdle()
|
|
public bool IsAnyLPIdle()
|
|
{
|
|
{
|
|
return LpNames.Any(moduleName => DEVICE.GetDevice<LoadPortBaseDevice>(moduleName.ToString()).IsIdle);
|
|
return LpNames.Any(moduleName => DEVICE.GetDevice<LoadPortBaseDevice>(moduleName.ToString()).IsIdle);
|
|
@@ -244,6 +247,7 @@ namespace EFEM.RT.Devices
|
|
var lp = LpNames.Select(lpName => DEVICE.GetDevice<LoadPortBaseDevice>(lpName.ToString())).ToList();
|
|
var lp = LpNames.Select(lpName => DEVICE.GetDevice<LoadPortBaseDevice>(lpName.ToString())).ToList();
|
|
return lp.ToArray();
|
|
return lp.ToArray();
|
|
}
|
|
}
|
|
|
|
+
|
|
public CIDReaderBaseDevice GetGeneralBarcodeReader(string lp)
|
|
public CIDReaderBaseDevice GetGeneralBarcodeReader(string lp)
|
|
{
|
|
{
|
|
string pattern = "[1-9]\\d*";
|
|
string pattern = "[1-9]\\d*";
|
|
@@ -256,6 +260,7 @@ namespace EFEM.RT.Devices
|
|
//var index = Array.IndexOf(LpNames.ToArray(), lp);
|
|
//var index = Array.IndexOf(LpNames.ToArray(), lp);
|
|
//return DEVICE.GetDevice<GeneralBarcodeReader>(lp + "." + _barcodeIdReaderName[index]);
|
|
//return DEVICE.GetDevice<GeneralBarcodeReader>(lp + "." + _barcodeIdReaderName[index]);
|
|
}
|
|
}
|
|
|
|
+
|
|
private OmronBarcodeReader GetBarcodeReader(string lp)
|
|
private OmronBarcodeReader GetBarcodeReader(string lp)
|
|
{
|
|
{
|
|
var index = Array.IndexOf(LpNames.ToArray(), lp);
|
|
var index = Array.IndexOf(LpNames.ToArray(), lp);
|
|
@@ -313,7 +318,7 @@ namespace EFEM.RT.Devices
|
|
DeviceModel.SensorRBNotExtendSIMF1,
|
|
DeviceModel.SensorRBNotExtendSIMF1,
|
|
DeviceModel.SensorRBNotExtendSIMF2,
|
|
DeviceModel.SensorRBNotExtendSIMF2,
|
|
};
|
|
};
|
|
- IoSensor[] GirdSensor=
|
|
|
|
|
|
+ IoSensor[] GirdSensor =
|
|
{
|
|
{
|
|
DeviceModel.SensorRBNotExtendSIMF1,
|
|
DeviceModel.SensorRBNotExtendSIMF1,
|
|
DeviceModel.SensorRBNotExtendSIMF2,
|
|
DeviceModel.SensorRBNotExtendSIMF2,
|
|
@@ -340,10 +345,9 @@ namespace EFEM.RT.Devices
|
|
DeviceModel.SensorCstDoorClosed,
|
|
DeviceModel.SensorCstDoorClosed,
|
|
DeviceModel.SensorRBNotExtendSIMF1,
|
|
DeviceModel.SensorRBNotExtendSIMF1,
|
|
DeviceModel.SensorRobotRemotetoEFEM,
|
|
DeviceModel.SensorRobotRemotetoEFEM,
|
|
-
|
|
|
|
},
|
|
},
|
|
};
|
|
};
|
|
-
|
|
|
|
|
|
+
|
|
var barcodeIdReaderName = new[]
|
|
var barcodeIdReaderName = new[]
|
|
{
|
|
{
|
|
"BarcodeReaderA",
|
|
"BarcodeReaderA",
|
|
@@ -357,7 +361,6 @@ namespace EFEM.RT.Devices
|
|
"BarcodeReaderI",
|
|
"BarcodeReaderI",
|
|
"BarcodeReaderJ",
|
|
"BarcodeReaderJ",
|
|
"BarcodeReaderK",
|
|
"BarcodeReaderK",
|
|
-
|
|
|
|
};
|
|
};
|
|
IoTrigger[][] LPTriggerArry =
|
|
IoTrigger[][] LPTriggerArry =
|
|
{
|
|
{
|
|
@@ -380,6 +383,7 @@ namespace EFEM.RT.Devices
|
|
robot = new RorzeRobot751(ModuleName.System.ToString(), DeviceName.Robot, "Robot", null, null);
|
|
robot = new RorzeRobot751(ModuleName.System.ToString(), DeviceName.Robot, "Robot", null, null);
|
|
AddCustomDevice(robot, "Robot", robot.GetType());
|
|
AddCustomDevice(robot, "Robot", robot.GetType());
|
|
break;
|
|
break;
|
|
|
|
+
|
|
default:
|
|
default:
|
|
robot = new RorzeRobot751(ModuleName.System.ToString(), DeviceName.Robot, "Robot", null, null);
|
|
robot = new RorzeRobot751(ModuleName.System.ToString(), DeviceName.Robot, "Robot", null, null);
|
|
AddCustomDevice(robot, "Robot", robot.GetType());
|
|
AddCustomDevice(robot, "Robot", robot.GetType());
|
|
@@ -388,8 +392,8 @@ namespace EFEM.RT.Devices
|
|
//LoadPort Device Initialize
|
|
//LoadPort Device Initialize
|
|
for (int i = 0; i < LoadPortMaxQuantity; i++)
|
|
for (int i = 0; i < LoadPortMaxQuantity; i++)
|
|
{
|
|
{
|
|
- if(!SC.ContainsItem($"LoadPort.LP{i + 1}.Disable")) continue;
|
|
|
|
- if(!SC.GetValue<bool>($"LoadPort.LP{i + 1}.Disable"))
|
|
|
|
|
|
+ if (!SC.ContainsItem($"LoadPort.LP{i + 1}.Disable")) continue;
|
|
|
|
+ if (!SC.GetValue<bool>($"LoadPort.LP{i + 1}.Disable"))
|
|
{
|
|
{
|
|
if (SC.GetValue<int>($"LoadPort.LP{i + 1}.CstType") == 0)
|
|
if (SC.GetValue<int>($"LoadPort.LP{i + 1}.CstType") == 0)
|
|
{
|
|
{
|
|
@@ -431,12 +435,13 @@ namespace EFEM.RT.Devices
|
|
switch (SC.GetValue<int>("Aligner.AlignerType"))
|
|
switch (SC.GetValue<int>("Aligner.AlignerType"))
|
|
{
|
|
{
|
|
case 1://Aligner with Pin
|
|
case 1://Aligner with Pin
|
|
-
|
|
|
|
|
|
+
|
|
break;
|
|
break;
|
|
|
|
+
|
|
default://Aligner without Pin
|
|
default://Aligner without Pin
|
|
AddCustomDevice(new MechanicalAligner(ModuleName.System, ModuleName.Aligner1, 1), "Aligner1", typeof(MechanicalAligner));
|
|
AddCustomDevice(new MechanicalAligner(ModuleName.System, ModuleName.Aligner1, 1), "Aligner1", typeof(MechanicalAligner));
|
|
break;
|
|
break;
|
|
- }
|
|
|
|
|
|
+ }
|
|
}
|
|
}
|
|
if (!Aligner2IsDisable)
|
|
if (!Aligner2IsDisable)
|
|
{
|
|
{
|
|
@@ -445,20 +450,12 @@ namespace EFEM.RT.Devices
|
|
case 1://Aligner with Pin
|
|
case 1://Aligner with Pin
|
|
//AddCustomDevice(new RorzePreAligner(ModuleName.System.ToString(), "Aligner2", "Aligner2", "", ""), "Aligner2", typeof(PreAligner));
|
|
//AddCustomDevice(new RorzePreAligner(ModuleName.System.ToString(), "Aligner2", "Aligner2", "", ""), "Aligner2", typeof(PreAligner));
|
|
break;
|
|
break;
|
|
|
|
+
|
|
default://Aligner without Pin
|
|
default://Aligner without Pin
|
|
AddCustomDevice(new MechanicalAligner(ModuleName.System, ModuleName.Aligner2, 1), "Aligner2", typeof(MechanicalAligner));
|
|
AddCustomDevice(new MechanicalAligner(ModuleName.System, ModuleName.Aligner2, 1), "Aligner2", typeof(MechanicalAligner));
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
- Singleton<WaferManager>.Instance.SubscribeLocation(ModuleName.Aligner2, 1);
|
|
|
|
- }
|
|
|
|
- //FFU Device Initialize
|
|
|
|
- if (DeviceDefineManager.Instance.GetValue<bool>("FfuMemoBusControl") ?? false)
|
|
|
|
- {
|
|
|
|
- var comPort = SC.GetStringValue("System.FFUComPortName");
|
|
|
|
- var ffu1 = new Ffu("","FFU1", "01", comPort);
|
|
|
|
- AddCustomDevice(ffu1, "FFU", typeof(Ffu));
|
|
|
|
- var ffu2 = new Ffu("","FFU2", "02", comPort);
|
|
|
|
- AddCustomDevice(ffu2, "FFU", typeof(Ffu));
|
|
|
|
|
|
+ Singleton<WaferManager>.Instance.SubscribeLocation(ModuleName.Aligner2, 1);
|
|
}
|
|
}
|
|
//PM Device Initialize
|
|
//PM Device Initialize
|
|
if (!PMAIsDisable)
|
|
if (!PMAIsDisable)
|
|
@@ -489,7 +486,16 @@ namespace EFEM.RT.Devices
|
|
BufferStation buffer = new Buffer("System", _bufferNames[1], Buffer2SlotCount, llDoorOpen[1]);//Normal Buffer
|
|
BufferStation buffer = new Buffer("System", _bufferNames[1], Buffer2SlotCount, llDoorOpen[1]);//Normal Buffer
|
|
AddCustomDevice(buffer, "BufferStation", buffer.GetType());
|
|
AddCustomDevice(buffer, "BufferStation", buffer.GetType());
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ //Flipper Device Initialize
|
|
|
|
+ if (FlipperIsDisable)
|
|
|
|
+ {
|
|
|
|
+ //JetFlipper jetFlipper = new JetFlipper(ModuleName.System.ToString(), "Flipper", "Flipper", null, null);
|
|
|
|
+ //AddCustomDevice(jetFlipper, "Flipper", typeof(JetFlipper));
|
|
|
|
+ }
|
|
|
|
+ //SignalTower Initialize
|
|
|
|
+ if (!DisableSignalTower)
|
|
|
|
+ {
|
|
|
|
+ }
|
|
//SignalTower Initialize
|
|
//SignalTower Initialize
|
|
if (DisableSignalTower)
|
|
if (DisableSignalTower)
|
|
{
|
|
{
|
|
@@ -501,16 +507,23 @@ namespace EFEM.RT.Devices
|
|
foreach (var nodeModelChild in DeviceModelNodes.ChildNodes)
|
|
foreach (var nodeModelChild in DeviceModelNodes.ChildNodes)
|
|
{
|
|
{
|
|
XmlElement nodeDevices = nodeModelChild as XmlElement;
|
|
XmlElement nodeDevices = nodeModelChild as XmlElement;
|
|
-
|
|
|
|
}
|
|
}
|
|
-
|
|
|
|
- var SorterFFU = new FfuAAF("FFU", "FFU", "System",1);
|
|
|
|
|
|
+ //FFU Initialize(in use)
|
|
|
|
+ var SorterFFU = new FfuAAF("FFU", "FFU", "System", 1);
|
|
SorterFFU.Initialize();
|
|
SorterFFU.Initialize();
|
|
-
|
|
|
|
|
|
+ //FFU12 Device Initialize
|
|
|
|
+ if (DeviceDefineManager.Instance.GetValue<bool>("FfuMemoBusControl") ?? false)
|
|
|
|
+ {
|
|
|
|
+ var comPort = SC.GetStringValue("System.FFUComPortName");
|
|
|
|
+ var ffu1 = new Ffu("", "FFU1", "01", comPort);
|
|
|
|
+ AddCustomDevice(ffu1, "FFU", typeof(Ffu));
|
|
|
|
+ var ffu2 = new Ffu("", "FFU2", "02", comPort);
|
|
|
|
+ AddCustomDevice(ffu2, "FFU", typeof(Ffu));
|
|
|
|
+ }
|
|
|
|
|
|
OP.Subscribe(OperationName.ResetDevice, InvokeResetDevice);
|
|
OP.Subscribe(OperationName.ResetDevice, InvokeResetDevice);
|
|
OP.Subscribe(OperationName.DeviceOperation, InvokeDeviceOperation);
|
|
OP.Subscribe(OperationName.DeviceOperation, InvokeDeviceOperation);
|
|
-
|
|
|
|
|
|
+
|
|
OP.Subscribe(OperationName.SetManualScanCode, InvokeSetManualScanCode);
|
|
OP.Subscribe(OperationName.SetManualScanCode, InvokeSetManualScanCode);
|
|
OP.Subscribe(OperationName.Scan, InvokeScan);
|
|
OP.Subscribe(OperationName.Scan, InvokeScan);
|
|
OP.Subscribe(OperationName.Write, InvokeWrite);
|
|
OP.Subscribe(OperationName.Write, InvokeWrite);
|
|
@@ -522,18 +535,18 @@ namespace EFEM.RT.Devices
|
|
robot.OnSlotMapRead += Robot_OnSlotMapRead;
|
|
robot.OnSlotMapRead += Robot_OnSlotMapRead;
|
|
|
|
|
|
return true;
|
|
return true;
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
|
|
private bool InvokeWrite(string arg1, object[] args)
|
|
private bool InvokeWrite(string arg1, object[] args)
|
|
{
|
|
{
|
|
- if (!(GetRfidReader(args[0].ToString()).Write(args[1].ToString(),out string reason)))
|
|
|
|
|
|
+ if (!(GetRfidReader(args[0].ToString()).Write(args[1].ToString(), out string reason)))
|
|
{
|
|
{
|
|
- EV.PostWarningLog(args[0].ToString(),$"fail to write RFID, {reason}");
|
|
|
|
|
|
+ EV.PostWarningLog(args[0].ToString(), $"fail to write RFID, {reason}");
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
private bool InvokeWriteRfid(string arg1, object[] arg2)
|
|
private bool InvokeWriteRfid(string arg1, object[] arg2)
|
|
{
|
|
{
|
|
if (!GetRfidReader(arg2[0].ToString()).Write(arg2[1].ToString(), out var reason))
|
|
if (!GetRfidReader(arg2[0].ToString()).Write(arg2[1].ToString(), out var reason))
|
|
@@ -554,17 +567,16 @@ namespace EFEM.RT.Devices
|
|
}
|
|
}
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
|
|
private bool InvokeScan(string arg1, object[] args)
|
|
private bool InvokeScan(string arg1, object[] args)
|
|
{
|
|
{
|
|
- if (SC.GetValue<bool>($"LoadPort.{args[0].ToString()}.ExternalSmartTagReader") && SC.GetValue<int>($"LoadPort.{args[0].ToString()}.CstType")==0)
|
|
|
|
|
|
+ if (SC.GetValue<bool>($"LoadPort.{args[0].ToString()}.ExternalSmartTagReader") && SC.GetValue<int>($"LoadPort.{args[0].ToString()}.CstType") == 0)
|
|
{
|
|
{
|
|
var lp = DEVICE.GetDevice<LoadPortBaseDevice>(args[0].ToString());
|
|
var lp = DEVICE.GetDevice<LoadPortBaseDevice>(args[0].ToString());
|
|
return lp.ReadCarrierID();//lp.ReadCarrierID(
|
|
return lp.ReadCarrierID();//lp.ReadCarrierID(
|
|
}
|
|
}
|
|
else
|
|
else
|
|
- {
|
|
|
|
|
|
+ {
|
|
var lp = DEVICE.GetDevice<LoadPortBaseDevice>(args[0].ToString());
|
|
var lp = DEVICE.GetDevice<LoadPortBaseDevice>(args[0].ToString());
|
|
return lp.ReadCarrierIDByIndex(new object[] { 0 });//lp.ReadCarrierID();
|
|
return lp.ReadCarrierIDByIndex(new object[] { 0 });//lp.ReadCarrierID();
|
|
}
|
|
}
|
|
@@ -573,7 +585,7 @@ namespace EFEM.RT.Devices
|
|
private bool InvokeSetManualScanCode(string arg1, object[] args)
|
|
private bool InvokeSetManualScanCode(string arg1, object[] args)
|
|
{
|
|
{
|
|
var lp = DEVICE.GetDevice<LoadPortBaseDevice>(args[0].ToString());
|
|
var lp = DEVICE.GetDevice<LoadPortBaseDevice>(args[0].ToString());
|
|
- lp.OnCarrierIdRead(args[1].ToString());
|
|
|
|
|
|
+ lp.OnCarrierIdRead(args[1].ToString());
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -603,10 +615,10 @@ namespace EFEM.RT.Devices
|
|
var func = "";
|
|
var func = "";
|
|
try
|
|
try
|
|
{
|
|
{
|
|
- name = (string) args[0];
|
|
|
|
- func = (string) args[1];
|
|
|
|
|
|
+ name = (string)args[0];
|
|
|
|
+ func = (string)args[1];
|
|
|
|
|
|
- if ((bool) DATA.Poll(ModuleName.System.ToString(), ParamName.IsMaintenanceMode))
|
|
|
|
|
|
+ if ((bool)DATA.Poll(ModuleName.System.ToString(), ParamName.IsMaintenanceMode))
|
|
{
|
|
{
|
|
EV.PostMessage("System", EventEnum.DefaultWarning,
|
|
EV.PostMessage("System", EventEnum.DefaultWarning,
|
|
string.Format("System in maintenance, can not execute {0}{1}", name, func));
|
|
string.Format("System in maintenance, can not execute {0}{1}", name, func));
|
|
@@ -633,7 +645,6 @@ namespace EFEM.RT.Devices
|
|
{
|
|
{
|
|
DeviceCmd(name, func, param);
|
|
DeviceCmd(name, func, param);
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
catch (Exception ex)
|
|
{
|
|
{
|
|
@@ -643,7 +654,6 @@ namespace EFEM.RT.Devices
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -658,6 +668,5 @@ namespace EFEM.RT.Devices
|
|
{
|
|
{
|
|
DEVICE.Do(string.Format("{0}.{1}", name, cmd), 0, true, args);
|
|
DEVICE.Do(string.Format("{0}.{1}", name, cmd), 0, true, args);
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|