|
@@ -1112,11 +1112,40 @@ namespace EFEM.RT.Routines
|
|
|
{
|
|
|
if(loadport.CassetteState!=LoadportCassetteState.Normal)// (DeviceModel.Sensor4InchCstPresence.Value&& DeviceModel.Sensor6InchCstPresence.Value&& DeviceModel.Sensor8InchCstPresence.Value)
|
|
|
{
|
|
|
- reason = string.Format("{0} Cst Presence signal is Off,Foup is not presence.", chamber.ToString());
|
|
|
+ reason = string.Format("{0} Cst Presence signal is Off,Foup is not presence.", chamber.ToString());
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+ else if (SC.GetValue<int>($"LoadPort.LP1.CstType") == 2)
|
|
|
+ {
|
|
|
+ if (!DeviceModel.SensorLP1FoupOpen.Value)
|
|
|
+ {
|
|
|
+ reason = string.Format("{0} SensorLP1FoupOpen signal is Off. Foup is not open.", chamber.ToString());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (!DeviceModel.SensorLP1FoupPlacement.Value)
|
|
|
+ {
|
|
|
+ reason = string.Format("{0} SensorLP1FoupPlacement signal is Off. Foup is not placed.", chamber.ToString());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (!DeviceModel.SensorLP1OperationStatus.Value)
|
|
|
+ {
|
|
|
+ reason = string.Format("{0} SensorLP1OperationStatus signal is Off. Foup is not in operation status.", chamber.ToString());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (!DeviceModel.SensorLP1Ready.Value)
|
|
|
+ {
|
|
|
+ reason = string.Format("{0} SensorLP1Ready signal is Off. Foup is not ready.", chamber.ToString());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (!DeviceModel.SensorLP1Presence.Value)
|
|
|
+ {
|
|
|
+ reason = string.Format("{0} SensorLP1Presence signal is Off. Foup is not present.", chamber.ToString());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if (slot + 1 > loadport.ValidSlotsNumber)
|
|
|
{
|
|
|
reason = string.Format("{0} ValidSlotsNumber less than {1}.", chamber.ToString(), slot + 1);
|
|
@@ -1152,6 +1181,34 @@ namespace EFEM.RT.Routines
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+ else if (SC.GetValue<int>($"LoadPort.LP2.CstType") == 2)
|
|
|
+ {
|
|
|
+ if (!DeviceModel.SensorLP2FoupOpen.Value)
|
|
|
+ {
|
|
|
+ reason = string.Format("{0} SensorLP2FoupOpen signal is Off. Foup is not open.", chamber.ToString());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (!DeviceModel.SensorLP2FoupPlacement.Value)
|
|
|
+ {
|
|
|
+ reason = string.Format("{0} SensorLP2FoupPlacement signal is Off. Foup is not placed.", chamber.ToString());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (!DeviceModel.SensorLP2OperationStatus.Value)
|
|
|
+ {
|
|
|
+ reason = string.Format("{0} SensorLP2OperationStatus signal is Off. Foup is not in operation status.", chamber.ToString());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (!DeviceModel.SensorLP2Ready.Value)
|
|
|
+ {
|
|
|
+ reason = string.Format("{0} SensorLP2Ready signal is Off. Foup is not ready.", chamber.ToString());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (!DeviceModel.SensorLP2Presence.Value)
|
|
|
+ {
|
|
|
+ reason = string.Format("{0} SensorLP2Presence signal is Off. Foup is not present.", chamber.ToString());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
if (slot + 1 > loadport.ValidSlotsNumber)
|
|
|
{
|
|
|
reason = string.Format("{0} ValidSlotsNumber less than {1}.", chamber.ToString(), slot + 1);
|
|
@@ -1164,14 +1221,14 @@ namespace EFEM.RT.Routines
|
|
|
if (ModuleHelper.IsLoadLock(chamber))
|
|
|
{
|
|
|
var ll = DEVICE.GetDevice<LoadLockDevice>(chamber.ToString());
|
|
|
- if (!ll.IsEnableTransferWafer(out reason))
|
|
|
+ if (ll != null && !ll.IsEnableTransferWafer(out reason))
|
|
|
return false;
|
|
|
return true;
|
|
|
}
|
|
|
if (ModuleHelper.IsBuffer(chamber))
|
|
|
{
|
|
|
var bufferStation = DEVICE.GetDevice<BufferStation>(chamber.ToString());
|
|
|
- if (!bufferStation.IsEnableTransferWafer(out reason))
|
|
|
+ if (bufferStation !=null && !bufferStation.IsEnableTransferWafer(out reason))
|
|
|
return false;
|
|
|
return true;
|
|
|
}
|