Update from Svn。
This commit is contained in:
parent
b268f20a0e
commit
094210f65b
|
@ -34,6 +34,14 @@ namespace Aitex.Core.RT.Device.Devices
|
|||
}
|
||||
}
|
||||
|
||||
public double Resistance
|
||||
{
|
||||
get
|
||||
{
|
||||
return OutputArmsFeedBack == 0 ? 0 : ((int)(OutputVoltageFeedBack / OutputArmsFeedBack * 1000)) / 1000.0;
|
||||
}
|
||||
}
|
||||
|
||||
public float OutputPowerFeedBack
|
||||
{
|
||||
get
|
||||
|
@ -102,8 +110,6 @@ namespace Aitex.Core.RT.Device.Devices
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private bool _isFloatAioType = false;
|
||||
private AIAccessor _aiOutputVoltage = null;
|
||||
private AIAccessor _aiOutputArms = null;
|
||||
|
@ -135,13 +141,14 @@ namespace Aitex.Core.RT.Device.Devices
|
|||
|
||||
private R_TRIG _trigVoltage = new R_TRIG();
|
||||
private R_TRIG _trigCurrent = new R_TRIG();
|
||||
private R_TRIG _trigResistance = new R_TRIG();
|
||||
|
||||
private DeviceTimer _timer = new DeviceTimer();
|
||||
private SCConfigItem _AETempEnable;
|
||||
|
||||
public Func<bool, bool> FuncCheckInterLock;
|
||||
private DeviceTimer _timerResistance = new DeviceTimer();
|
||||
|
||||
|
||||
public Func<bool, bool> FuncCheckInterLock;
|
||||
|
||||
public IoPSU(string module, XmlElement node, string ioModule = "")
|
||||
{
|
||||
|
@ -181,6 +188,7 @@ namespace Aitex.Core.RT.Device.Devices
|
|||
DATA.Subscribe($"{Module}.{Name}.OutputVoltageFeedBack", () => OutputVoltageFeedBack);
|
||||
DATA.Subscribe($"{Module}.{Name}.OutputArmsFeedBack", () => OutputArmsFeedBack);
|
||||
DATA.Subscribe($"{Module}.{Name}.OutputPowerFeedBack", () => OutputPowerFeedBack);
|
||||
DATA.Subscribe($"{Module}.{Name}.Resistance", () => Resistance);
|
||||
DATA.Subscribe($"{Module}.{Name}.StatusFeedBack", () => StatusFeedBack);
|
||||
DATA.Subscribe($"{Module}.{Name}.SimVoltageFeedBack", () => SimVoltageFeedBack);
|
||||
DATA.Subscribe($"{Module}.{Name}.SimArmsFeedBack", () => SimArmsFeedBack);
|
||||
|
@ -330,44 +338,24 @@ namespace Aitex.Core.RT.Device.Devices
|
|||
|
||||
private void MonitorAlarm()
|
||||
{
|
||||
|
||||
object temp2 = DATA.Poll($"{Module}.Status");
|
||||
if (temp2 == null) return;
|
||||
if (temp2.ToString() == "ProcessIdle" || temp2.ToString() == "Process")
|
||||
//检查电阻值是否在合理范围
|
||||
double dbResistorMax = SC.GetValue<double>($"PM.{Module}.Heater.{Name}ResistanceMax");
|
||||
|
||||
if (Resistance > dbResistorMax && _timerResistance.IsIdle())
|
||||
{
|
||||
//_alarmTrig.CLK = _diAlarm != null && _diAlarm.Value && !String.IsNullOrEmpty(_infoText);
|
||||
//if (_alarmTrig.Q)
|
||||
//{
|
||||
// EV.PostAlarmLog(Module, _infoText);
|
||||
//}
|
||||
|
||||
//_commAlarmTrig.CLK = _diCommunicationError != null && _diCommunicationError.Value && !String.IsNullOrEmpty(_commInfoText);
|
||||
//if (_commAlarmTrig.Q)
|
||||
//{
|
||||
// EV.PostWarningLog(Module, _commInfoText);
|
||||
//}
|
||||
|
||||
#region 监控电压和电流范围
|
||||
double dbVoltageHL = SC.ContainsItem("PM." + Module + ".Heater.PSUVoltageHighLimit") ? SC.GetValue<double>("PM." + Module + ".Heater.PSUVoltageHighLimit") : 2000;
|
||||
double dbVoltageLL = SC.ContainsItem("PM." + Module + ".Heater.PSUVoltageLowLimit") ? SC.GetValue<double>("PM." + Module + ".Heater.PSUVoltageLowLimit") : 0;
|
||||
double dbCurrentHL = SC.ContainsItem("PM." + Module + ".Heater.PSUCurrentHighLimit") ? SC.GetValue<double>("PM." + Module + ".Heater.PSUCurrentHighLimit") : 2000;
|
||||
double dbCurrentLL = SC.ContainsItem("PM." + Module + ".Heater.PSUCurrentLowLimit") ? SC.GetValue<double>("PM." + Module + ".Heater.PSUCurrentLowLimit") : 0;
|
||||
|
||||
_trigVoltage.CLK = (this.OutputVoltageFeedBack > dbVoltageHL || this.OutputVoltageFeedBack < dbVoltageLL);
|
||||
if (_trigVoltage.Q)
|
||||
{
|
||||
EV.PostAlarmLog(Module, "PSU Voltage is out of gauge. It should be in range " + dbVoltageLL.ToString() + " - " + dbVoltageHL.ToString() + " V.");
|
||||
//LOG.Write("PSU Voltage is out of gauge. It should be in range " + dbVoltageLL.ToString() + " - " + dbVoltageHL.ToString() + " V.");
|
||||
}
|
||||
_trigCurrent.CLK = (this.OutputArmsFeedBack > dbCurrentHL || this.OutputArmsFeedBack < dbCurrentLL);
|
||||
if (_trigCurrent.Q)
|
||||
{
|
||||
EV.PostAlarmLog(Module, "PSU Current is out of gauge. It should be in range " + dbCurrentLL.ToString() + " - " + dbCurrentHL.ToString() + " A.");
|
||||
//LOG.Write("PSU Current is out of gauge. It should be in range " + dbCurrentLL.ToString() + " - " + dbCurrentHL.ToString() + " A.");
|
||||
}
|
||||
#endregion
|
||||
_timerResistance.Start(3000);
|
||||
}
|
||||
|
||||
if (Resistance <= dbResistorMax)
|
||||
{
|
||||
_timerResistance.Stop();
|
||||
}
|
||||
|
||||
_trigResistance.CLK = _timerResistance.IsTimeout();
|
||||
if (_trigResistance.Q)
|
||||
{
|
||||
EV.PostAlarmLog(Module, $"{Name} Resistance is out of range.Current Resistance is {Resistance}");
|
||||
}
|
||||
}
|
||||
|
||||
private bool isActiveRecord = false;
|
||||
|
@ -375,7 +363,6 @@ namespace Aitex.Core.RT.Device.Devices
|
|||
{
|
||||
if (base.Name == "PSU2")
|
||||
{
|
||||
//_enableTrig.CLK = AETemp2 < 650 && !_diHeatEnable.Value;
|
||||
_enableTrig.CLK = !_diHeatEnable.Value;
|
||||
if (_enableTrig.Q)
|
||||
{
|
||||
|
@ -385,7 +372,6 @@ namespace Aitex.Core.RT.Device.Devices
|
|||
}
|
||||
}
|
||||
|
||||
//_enableTrig2.CLK = AETemp2 > 650 || _diHeatEnable.Value;
|
||||
_enableTrig2.CLK = _diHeatEnable.Value;
|
||||
if (_enableTrig2.Q)
|
||||
{
|
||||
|
@ -395,34 +381,15 @@ namespace Aitex.Core.RT.Device.Devices
|
|||
}
|
||||
}
|
||||
|
||||
public double AETemp2
|
||||
public double AETemp
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_AETempEnable.BoolValue && base.Name == "PSU2")
|
||||
{
|
||||
try
|
||||
{
|
||||
object temp2;
|
||||
if (Module == "PM1")
|
||||
{
|
||||
temp2 = DATA.Poll($"AETemp.PM1Middle");
|
||||
}
|
||||
else
|
||||
{
|
||||
temp2 = DATA.Poll($"AETemp.PM2Middle");
|
||||
}
|
||||
object temp = DATA.Poll($"AETemp.{Module}Middle");
|
||||
|
||||
return temp2 == null ? 0 : (double)temp2;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return temp == null ? 0 : (double)temp;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,6 @@ namespace Aitex.Core.RT.Device.Devices
|
|||
{
|
||||
public class IoSCR : BaseDevice, IDevice
|
||||
{
|
||||
|
||||
public float VoltageFeedBack
|
||||
{
|
||||
get
|
||||
|
@ -30,6 +29,14 @@ namespace Aitex.Core.RT.Device.Devices
|
|||
}
|
||||
}
|
||||
|
||||
public double Resistance
|
||||
{
|
||||
get
|
||||
{
|
||||
return ArmsFeedBack == 0 ? 0 : ((int)(VoltageFeedBack / ArmsFeedBack * 1000)) / 1000.0;
|
||||
}
|
||||
}
|
||||
|
||||
public float PowerFeedBack
|
||||
{
|
||||
get
|
||||
|
@ -65,7 +72,10 @@ namespace Aitex.Core.RT.Device.Devices
|
|||
|
||||
private R_TRIG _trigVoltage = new R_TRIG();
|
||||
private R_TRIG _trigCurrent = new R_TRIG();
|
||||
|
||||
private R_TRIG _trigResistance = new R_TRIG();
|
||||
|
||||
private DeviceTimer _timerResistance = new DeviceTimer();
|
||||
|
||||
public IoSCR(string module, XmlElement node, string ioModule = "")
|
||||
{
|
||||
var attrModule = node.GetAttribute("module");
|
||||
|
@ -93,6 +103,7 @@ namespace Aitex.Core.RT.Device.Devices
|
|||
{
|
||||
DATA.Subscribe($"{Module}.{Name}.VoltageFeedBack", () => VoltageFeedBack);
|
||||
DATA.Subscribe($"{Module}.{Name}.ArmsFeedBack", () => ArmsFeedBack);
|
||||
DATA.Subscribe($"{Module}.{Name}.Resistance", () => Resistance);
|
||||
DATA.Subscribe($"{Module}.{Name}.PowerFeedBack", () => PowerFeedBack);
|
||||
DATA.Subscribe($"{Module}.{Name}.StatusFeedBack", () => StatusFeedBack);
|
||||
|
||||
|
@ -185,34 +196,34 @@ namespace Aitex.Core.RT.Device.Devices
|
|||
|
||||
private void MonitorAlarm()
|
||||
{
|
||||
//检查电阻值是否在合理范围
|
||||
double dbResistorMax = SC.GetValue<double>($"PM.{Module}.Heater.{Name}ResistanceMax");
|
||||
|
||||
object temp2 = DATA.Poll($"{Module}.Status");
|
||||
if (temp2 == null) return;
|
||||
if (temp2.ToString() == "ProcessIdle" || temp2.ToString() == "Process")
|
||||
if (Resistance > dbResistorMax && _timerResistance.IsIdle())
|
||||
{
|
||||
|
||||
#region 监控电压和电流范围
|
||||
double dbVoltageHL = SC.ContainsItem("PM." + Module + ".Heater.SCRVoltageHighLimit") ? SC.GetValue<double>("PM." + Module + ".Heater.SCRVoltageHighLimit") : 2000;
|
||||
double dbVoltageLL = SC.ContainsItem("PM." + Module + ".Heater.SCRVoltageLowLimit") ? SC.GetValue<double>("PM." + Module + ".Heater.SCRVoltageLowLimit") : 0;
|
||||
double dbCurrentHL = SC.ContainsItem("PM." + Module + ".Heater.SCRCurrentHighLimit") ? SC.GetValue<double>("PM." + Module + ".Heater.SCRCurrentHighLimit") : 2000;
|
||||
double dbCurrentLL = SC.ContainsItem("PM." + Module + ".Heater.SCRCurrentLowLimit") ? SC.GetValue<double>("PM." + Module + ".Heater.SCRCurrentLowLimit") : 0;
|
||||
|
||||
_trigVoltage.CLK = (this.VoltageFeedBack > dbVoltageHL || this.VoltageFeedBack < dbVoltageLL);
|
||||
if (_trigVoltage.Q)
|
||||
{
|
||||
EV.PostAlarmLog(Module, "SCR Voltage is out of gauge. It should be in range " + dbVoltageLL.ToString() + " - " + dbVoltageHL.ToString() + " V.");
|
||||
//LOG.Write("SCR Voltage is out of gauge. It should be in range " + dbVoltageLL.ToString() + " - " + dbVoltageHL.ToString() + " V.");
|
||||
}
|
||||
|
||||
_trigCurrent.CLK = (this.ArmsFeedBack > dbCurrentHL || this.ArmsFeedBack < dbCurrentLL);
|
||||
if (_trigCurrent.Q)
|
||||
{
|
||||
EV.PostAlarmLog(Module, "SCR Current is out of gauge. It should be in range " + dbCurrentLL.ToString() + " - " + dbCurrentHL.ToString() + " A.");
|
||||
//LOG.Write("SCR Current is out of gauge. It should be in range " + dbCurrentLL.ToString() + " - " + dbCurrentHL.ToString() + " A.");
|
||||
}
|
||||
#endregion
|
||||
_timerResistance.Start(3000);
|
||||
}
|
||||
|
||||
if (Resistance <= dbResistorMax)
|
||||
{
|
||||
_timerResistance.Stop();
|
||||
}
|
||||
|
||||
_trigResistance.CLK = _timerResistance.IsTimeout();
|
||||
if (_trigResistance.Q)
|
||||
{
|
||||
EV.PostAlarmLog(Module, $"{Name} Resistance is out of range.Current Resistance is {Resistance}");
|
||||
}
|
||||
}
|
||||
|
||||
public double AETemp
|
||||
{
|
||||
get
|
||||
{
|
||||
object temp = DATA.Poll($"AETemp.{Module}Middle");
|
||||
|
||||
return temp == null ? 0 : (double)temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ using Aitex.Core.RT.OperationCenter;
|
|||
using Aitex.Core.RT.SCCore;
|
||||
using Aitex.Core.Util;
|
||||
using Hardcodet.Wpf.TaskbarNotification.Interop;
|
||||
using static Aitex.Core.RT.Device.PmDevices.DicMode;
|
||||
|
||||
namespace Aitex.Core.RT.Device.Devices
|
||||
{
|
||||
|
@ -622,6 +623,58 @@ namespace Aitex.Core.RT.Device.Devices
|
|||
TCPyroModeSetPoint = 1;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
strHeaterMode = "PyroAuto";
|
||||
if (L1LoopModeSetPoint == 1)
|
||||
{
|
||||
_rampTimerL1.Stop();
|
||||
//L2TargetSPSetPoint = L1InputTempSetPoint;
|
||||
}
|
||||
if (L2LoopModeSetPoint == 1)
|
||||
{
|
||||
_rampTimerL2.Stop();
|
||||
//L2TargetSPSetPoint = L2InputTempSetPoint;
|
||||
}
|
||||
if (L3LoopModeSetPoint == 1)
|
||||
{
|
||||
_rampTimerL3.Stop();
|
||||
L3TargetSPSetPoint = L3InputTempSetPoint;
|
||||
}
|
||||
L1LoopModeSetPoint = 1;
|
||||
L2LoopModeSetPoint = 0;
|
||||
//L3LoopModeSetPoint = 1;
|
||||
|
||||
L3LoopModeSetPoint = 0;
|
||||
|
||||
TCPyroModeSetPoint = 1;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
strHeaterMode = "PyroFollow";
|
||||
if (L1LoopModeSetPoint == 1)
|
||||
{
|
||||
_rampTimerL1.Stop();
|
||||
//L2TargetSPSetPoint = L1InputTempSetPoint;
|
||||
}
|
||||
if (L2LoopModeSetPoint == 1)
|
||||
{
|
||||
_rampTimerL2.Stop();
|
||||
//L2TargetSPSetPoint = L2InputTempSetPoint;
|
||||
}
|
||||
if (L3LoopModeSetPoint == 1)
|
||||
{
|
||||
_rampTimerL3.Stop();
|
||||
L3TargetSPSetPoint = L3InputTempSetPoint;
|
||||
}
|
||||
L1LoopModeSetPoint = 1;
|
||||
L2LoopModeSetPoint = 0;
|
||||
//L3LoopModeSetPoint = 1;
|
||||
|
||||
L3LoopModeSetPoint = 1;
|
||||
|
||||
TCPyroModeSetPoint = 1;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
//TC1切换模式时,需要把PV的值设置到设定值
|
||||
|
@ -911,7 +964,8 @@ namespace Aitex.Core.RT.Device.Devices
|
|||
{
|
||||
if (Name == "TC1")
|
||||
{
|
||||
if (HeaterModeSetPoint == 1 || HeaterModeSetPoint == 2) //Pyro和TC
|
||||
//if (HeaterModeSetPoint == 1 || HeaterModeSetPoint == 2)
|
||||
if (HeaterModeSetPoint == (float)HeaterControlMode.PyroFollow)
|
||||
{
|
||||
L2TargetOPSetPoint = L2WorkingOPFeedBack;
|
||||
float l1 = L2RatioSetPoint > 0 ? (float)(L2WorkingOPFeedBack * L1RatioSetPoint / L2RatioSetPoint) : 0;
|
||||
|
|
|
@ -24,9 +24,11 @@ namespace Aitex.Core.RT.Device.PmDevices
|
|||
|
||||
public enum HeaterControlMode
|
||||
{
|
||||
Power,
|
||||
Power = 0,
|
||||
Pyro,
|
||||
Hold
|
||||
Hold,
|
||||
PyroAuto,
|
||||
PyroFollow
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -750,7 +750,7 @@ namespace MECF.Framework.UI.Client.CenterViews.Editors.Sequence
|
|||
var bret = wm.ShowDialog(dialog);
|
||||
if ((bool)bret)
|
||||
{
|
||||
param.Value = $"Sic\\{param.PrefixPath}\\" + dialog.DialogResult;
|
||||
param.Value = dialog.DialogResult;
|
||||
|
||||
var path = param.Value;
|
||||
var index = path.LastIndexOf("\\");
|
||||
|
|
|
@ -12,6 +12,7 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Mainframe.Buffers
|
||||
|
@ -204,8 +205,8 @@ namespace Mainframe.Buffers
|
|||
OP.Subscribe($"{Name}.Reset", (string cmd, object[] args) => CheckToPostMessage((int)MSG.Reset));
|
||||
OP.Subscribe($"{Name}.Abort", (string cmd, object[] args) => CheckToPostMessage((int)MSG.Abort));
|
||||
|
||||
OP.Subscribe($"{Module}.SetOnline", (string cmd, object[] args) => CheckToPostMessage((int)MSG.SetOnline));
|
||||
OP.Subscribe($"{Module}.SetOffline", (string cmd, object[] args) => CheckToPostMessage((int)MSG.SetOffline));
|
||||
OP.Subscribe($"{Module}.SetOnline", (string cmd, object[] args) => PutOnline());
|
||||
OP.Subscribe($"{Module}.SetOffline", (string cmd, object[] args) => PutOffline());
|
||||
|
||||
OP.Subscribe($"{Name}.Cooling", (string cmd, object[] args) =>{ return CheckToPostMessage((int)MSG.Cooling, args); });
|
||||
|
||||
|
@ -406,16 +407,41 @@ namespace Mainframe.Buffers
|
|||
return true;
|
||||
}
|
||||
|
||||
private bool PutOnline()
|
||||
{
|
||||
IsOnline = true;
|
||||
//NotifyModuleOfflineCancellation.Cancel();
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool PutOffline()
|
||||
{
|
||||
IsOnline = false;
|
||||
//NotifyModuleOfflineCancellation?.Dispose();
|
||||
//NotifyModuleOfflineCancellation = new CancellationTokenSource();
|
||||
//NotifyModuleOfflineTask(5 * 60 * 1000);//5min
|
||||
return true;
|
||||
}
|
||||
|
||||
public void InvokeOffline()
|
||||
{
|
||||
PostMsg((int)MSG.SetOffline);
|
||||
PutOffline();
|
||||
}
|
||||
|
||||
public void InvokeOnline()
|
||||
{
|
||||
PostMsg((int)MSG.SetOnline);
|
||||
PutOnline();
|
||||
}
|
||||
|
||||
private CancellationTokenSource NotifyModuleOfflineCancellation = new CancellationTokenSource();
|
||||
private Task NotifyModuleOfflineTask(int delayTime)
|
||||
{
|
||||
var t1 = Task.Run(async () =>
|
||||
{
|
||||
await Task.Delay(delayTime, NotifyModuleOfflineCancellation.Token).ContinueWith(x => EV.PostWarningLog(Module, $"{Module} is still in offline"), NotifyModuleOfflineCancellation.Token);
|
||||
});
|
||||
return t1;
|
||||
}
|
||||
|
||||
|
||||
public override int InvokeCooling(bool coolingTypeIsTime, int time)
|
||||
|
|
|
@ -16,6 +16,7 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Mainframe.LLs
|
||||
|
@ -358,8 +359,8 @@ namespace Mainframe.LLs
|
|||
return CheckToPostMessage((int)MSG.Abort);
|
||||
});
|
||||
|
||||
OP.Subscribe($"{Module}.SetOnline", (string cmd, object[] args) => CheckToPostMessage((int)MSG.SetOnline));
|
||||
OP.Subscribe($"{Module}.SetOffline", (string cmd, object[] args) => CheckToPostMessage((int)MSG.SetOffline));
|
||||
OP.Subscribe($"{Module}.SetOnline", (string cmd, object[] args) => PutOnline());
|
||||
OP.Subscribe($"{Module}.SetOffline", (string cmd, object[] args) => PutOffline());
|
||||
}
|
||||
|
||||
private void InitData()
|
||||
|
@ -785,14 +786,36 @@ namespace Mainframe.LLs
|
|||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
private bool PutOnline()
|
||||
{
|
||||
IsOnline = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool PutOffline()
|
||||
{
|
||||
IsOnline = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
public void InvokeOffline()
|
||||
{
|
||||
PostMsg((int)MSG.SetOffline);
|
||||
PutOffline();
|
||||
}
|
||||
|
||||
public void InvokeOnline()
|
||||
{
|
||||
PostMsg((int)MSG.SetOnline);
|
||||
PutOnline();
|
||||
}
|
||||
|
||||
private CancellationTokenSource NotifyModuleOfflineCancellation = new CancellationTokenSource();
|
||||
private Task NotifyModuleOfflineTask(int delayTime)
|
||||
{
|
||||
var t1 = Task.Run(async () =>
|
||||
{
|
||||
await Task.Delay(delayTime, NotifyModuleOfflineCancellation.Token).ContinueWith(x => EV.PostWarningLog(Module, $"{Module} is still in offline"), NotifyModuleOfflineCancellation.Token);
|
||||
});
|
||||
return t1;
|
||||
}
|
||||
|
||||
public override int InvokeGroupWaferTray()
|
||||
|
|
|
@ -147,11 +147,6 @@ namespace Mainframe.TMs
|
|||
_leakSpec = SC.GetValue<double>("TM.LeakCheck.LeakSpec");
|
||||
_purgeCount = SC.GetValue<int>("TM.LeakCheck.CyclePurgeCount");
|
||||
|
||||
if (!_ll.SetFastPumpValve(false, out reason))
|
||||
{
|
||||
EV.PostAlarmLog(Module, $"Can not leakCheck,LL fastPump can not close");
|
||||
return Result.FAIL;
|
||||
}
|
||||
if (!_bufferLid.Value)
|
||||
{
|
||||
EV.PostAlarmLog(Module, $"Can not leakCheck,Buffer lid is not open");
|
||||
|
|
|
@ -21,6 +21,7 @@ using System.Collections.Generic;
|
|||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using SicAds = Mainframe.Devices.SicAds;
|
||||
|
||||
|
@ -543,15 +544,8 @@ namespace Mainframe.TMs
|
|||
return CheckToPostMessage((int)MSG.RobotRetract, args[0], args[1], args[2]);
|
||||
});
|
||||
|
||||
OP.Subscribe($"{Module}.SetOnline", (string cmd, object[] args) =>
|
||||
{
|
||||
return CheckToPostMessage((int)MSG.SetOnline);
|
||||
});
|
||||
|
||||
OP.Subscribe($"{Module}.SetOffline", (string cmd, object[] args) =>
|
||||
{
|
||||
return CheckToPostMessage((int)MSG.SetOffline);
|
||||
});
|
||||
OP.Subscribe($"{Module}.SetOnline", (string cmd, object[] args) => PutOnline());
|
||||
OP.Subscribe($"{Module}.SetOffline", (string cmd, object[] args) => PutOffline());
|
||||
}
|
||||
|
||||
private void InitData()
|
||||
|
@ -1064,14 +1058,40 @@ namespace Mainframe.TMs
|
|||
}
|
||||
}
|
||||
|
||||
private bool PutOnline()
|
||||
{
|
||||
IsOnline = true;
|
||||
//NotifyModuleOfflineCancellation.Cancel();
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool PutOffline()
|
||||
{
|
||||
IsOnline = false;
|
||||
//NotifyModuleOfflineCancellation?.Dispose();
|
||||
//NotifyModuleOfflineCancellation = new CancellationTokenSource();
|
||||
//NotifyModuleOfflineTask(5 * 60 * 1000);//5min
|
||||
return true;
|
||||
}
|
||||
|
||||
public void InvokeOffline()
|
||||
{
|
||||
PostMsg((int)MSG.SetOffline);
|
||||
PutOffline();
|
||||
}
|
||||
|
||||
public void InvokeOnline()
|
||||
{
|
||||
PostMsg((int)MSG.SetOnline);
|
||||
PutOnline();
|
||||
}
|
||||
|
||||
private CancellationTokenSource NotifyModuleOfflineCancellation = new CancellationTokenSource();
|
||||
private Task NotifyModuleOfflineTask(int delayTime)
|
||||
{
|
||||
var t1 = Task.Run(async () =>
|
||||
{
|
||||
await Task.Delay(delayTime, NotifyModuleOfflineCancellation.Token).ContinueWith(x => EV.PostWarningLog(Module, $"{Module} is still in offline"), NotifyModuleOfflineCancellation.Token);
|
||||
});
|
||||
return t1;
|
||||
}
|
||||
|
||||
public int InvokeError()
|
||||
|
|
|
@ -129,11 +129,6 @@ namespace Mainframe.TMs
|
|||
}
|
||||
}
|
||||
|
||||
if (!_ll.SetFastPumpValve(false, out reason))
|
||||
{
|
||||
EV.PostAlarmLog(Module, $"Can not pump,LL fastPump can not close");
|
||||
return Result.FAIL;
|
||||
}
|
||||
if (!_bufferLid.Value)
|
||||
{
|
||||
EV.PostAlarmLog(Module, $"Can not pump,Buffer lid is not closed");
|
||||
|
|
|
@ -123,11 +123,6 @@ namespace Mainframe.TMs
|
|||
}
|
||||
}
|
||||
|
||||
if (!_ll.SetFastPumpValve(false, out string reason))
|
||||
{
|
||||
EV.PostAlarmLog(Module, $"Can not Purge,LL fastPump can not close");
|
||||
return Result.FAIL;
|
||||
}
|
||||
if (!_bufferLid.Value)
|
||||
{
|
||||
EV.PostAlarmLog(Module, $"Can not Purge,Buffer lid is not open");
|
||||
|
@ -148,7 +143,7 @@ namespace Mainframe.TMs
|
|||
EV.PostAlarmLog(Module, $"can not Purge,TM pump is not running");
|
||||
return Result.FAIL;
|
||||
}
|
||||
if (!_tmIoInterLock.SetTMPurgeRoutineRunning(true, out reason))
|
||||
if (!_tmIoInterLock.SetTMPurgeRoutineRunning(true, out string reason))
|
||||
{
|
||||
EV.PostAlarmLog(Module, $"can not Purge,{reason}");
|
||||
return Result.FAIL;
|
||||
|
|
|
@ -67,22 +67,12 @@ namespace Mainframe.TMs
|
|||
{
|
||||
try
|
||||
{
|
||||
//RobotSetCommunication((int)RoutineStep.SetCommunication, RobotDevice, _homeTimeout);
|
||||
|
||||
//RobotSetLoad((int)RoutineStep.SetLoadArm1, RobotDevice, RobotArmEnum.Blade1, _isPriArmWaferPresent, _homeTimeout);
|
||||
|
||||
//RobotSetLoad((int)RoutineStep.SetLoadArm2, RobotDevice, RobotArmEnum.Blade2, _isSecArmWaferPresent, _homeTimeout);
|
||||
|
||||
RobotHome((int)RoutineStep.Home, RobotDevice, _homeTimeout);
|
||||
|
||||
RobotCheckLoad((int)RoutineStep.CheckLoad1, RobotDevice, RobotArmEnum.Blade1, _homeTimeout);
|
||||
|
||||
//RobotCheckLoad((int)RoutineStep.CheckLoad2, RobotDevice, RobotArmEnum.Blade2, _homeTimeout);
|
||||
|
||||
RobotRequestWaferPresent((int)RoutineStep.RequestWaferPresent1, RobotDevice, RobotArmEnum.Blade1, _homeTimeout);
|
||||
|
||||
//RobotRequestWaferPresent((int)RoutineStep.RequestWaferPresent2, RobotDevice, RobotArmEnum.Blade2, _homeTimeout);
|
||||
|
||||
UpdateWaferInfoByRobotSensor((int)RoutineStep.UpdateWaferInfoByRobotSensor, RobotDevice);
|
||||
}
|
||||
catch (RoutineBreakException)
|
||||
|
|
|
@ -147,11 +147,7 @@ namespace Mainframe.TMs
|
|||
_ventBasePressure = SC.GetValue<double>("TM.Vent.VentBasePressure");
|
||||
_ventDelayTime = SC.GetValue<int>("TM.Vent.VentDelayTime");
|
||||
}
|
||||
if (!_ll.SetFastPumpValve(false, out reason))
|
||||
{
|
||||
EV.PostAlarmLog(Module, $"Can not vent,LL fastPump can not close");
|
||||
return Result.FAIL;
|
||||
}
|
||||
|
||||
if (!_bufferLid.Value)
|
||||
{
|
||||
EV.PostAlarmLog(Module, $"Can not vent,Buffer lid is not open");
|
||||
|
|
|
@ -193,7 +193,7 @@
|
|||
<IoSensor id="SensorUPS1LowBattery" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_UPS1LowBattery" infoText="" warningText="" alarmText="Alarm43 UPS1.LowBattery [DI-84]" />
|
||||
<IoSensor id="SensorUPS2LowBattery" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_UPS2LowBattery" infoText="" warningText="" alarmText="Alarm44 UPS2.LowBattery [DI-85]" />
|
||||
<IoSensor id="SensorGBWaterLeakSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_GBWaterLeakSW" infoText="" warningText="Warning7 Gas Box Water Leak [DI-60]" alarmText="" />
|
||||
<IoSensor id="SensorDryPump1Warning" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_DryPump1Warning" infoText="" warningText="Warning10 PM1DryPump1 Warning [DI-67]" alarmText="" />
|
||||
<IoSensor id="SensorDryPump1Warning" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_DryPump1Warning" infoText="" warningText="Warning10 DryPump1 Warning [DI-67]" alarmText="" />
|
||||
<IoSensor id="SensorEMOStatusSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_EMOStatusSW" infoText="" warningText="" alarmText="Alarm37 EMOStatus [DI-70]" />
|
||||
<IoSensor id="SensorPRWaterLeakSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_PowerRackWaterLeakSW" infoText="" warningText="Warning11 Power Rack Water Leak [DI-77]" alarmText="" />
|
||||
<IoSensor id="SensorSHLidClosed" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_SHLidClosed" infoText="" warningText="Warning13 SH Lid Opened [DI-106]" alarmText="" />
|
||||
|
@ -243,7 +243,7 @@
|
|||
<IoSensor id="SensorGBHCLDetectorSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_GBHCLDetectorSW" infoText="" warningText="" alarmText="Alarm20 Gasbox HCL Leak Detect [DI-31]" />
|
||||
<IoSensor id="SensorGBExhaustDPSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_GBExhaustDPSW" infoText="" warningText="" alarmText="Alarm21 Gasbox Exhaust DP Error [DI-32]" />
|
||||
<IoSensor id="SensorGasPipeTempCtrlAlarm" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_GasPipeTempCtrlAlarm" infoText="" warningText="Warning4 GasPipeTempCtrl.Alarm [DI-35]" alarmText="" />
|
||||
<IoSensor id="SensorDryPumpAlarm" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_DryPumpAlarm" infoText="" warningText="" alarmText="Alarm22 PM1DryPump.Alarm [DI-36]" />
|
||||
<IoSensor id="SensorDryPumpAlarm" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_DryPumpAlarm" infoText="" warningText="" alarmText="Alarm22 DryPump.Alarm [DI-36]" />
|
||||
<IoSensor id="SensorPumpExhaustPressSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_PumpExhaustPressSW" infoText="" warningText="" alarmText="Alarm23 Pump Exhaust Pressure Abnormal [DI-38]" />
|
||||
<IoSensor id="SensorPMAExhaustDPSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_PMAExhaustDPSW" infoText="" warningText="" alarmText="Alarm24 PM Exhaust DP Error [DI-39]" />
|
||||
<IoSensor id="SensorPumpExhaustDPSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_PumpExhaustDPSW" infoText="" warningText="" alarmText="Alarm25 Pump Exhaust DP Error [DI-40]" />
|
||||
|
@ -254,7 +254,7 @@
|
|||
<IoSensor id="SensorArInletPressSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_ArInletPressSW" infoText="" warningText="" alarmText="Alarm33 Gasbox Ar Pressure Low [DI-56]" />
|
||||
<IoSensor id="SensorH2PressureSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_H2PressureSW" infoText="" warningText="" alarmText="Alarm34 Gasbox H2 Pressure Low [DI-57]" />
|
||||
<IoSensor id="SensorGBH2DetectorSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_GBH2DetectorSW" infoText="" warningText="" alarmText="Alarm35 Gasbox H2 Leak Detect [DI-59]" />
|
||||
<IoSensor id="SensorDryPump1Running" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_DryPump1Running" infoText="" warningText="" alarmText="Alarm36 PM1DryPump1 Not Running [DI-65]" />
|
||||
<IoSensor id="SensorDryPump1Running" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_DryPump1Running" infoText="" warningText="" alarmText="Alarm36 DryPump1 Not Running [DI-65]" />
|
||||
<IoSensor id="SensorFacilityWarningSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_FacilityWarningSW" infoText="" warningText="" alarmText="Alarm38 Facility Equipment Alarm [DI-72]" />
|
||||
<IoSensor id="SensorMainCBStatusSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_MainCBStatusSW" infoText="" warningText="" alarmText="Alarm39 Main CB Status Off [DI-76]" />
|
||||
<IoSensor id="SensorProcessStopSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_ProcessStopSW" infoText="" warningText="" alarmText="Alarm42 Process Stop [DI-81]" />
|
||||
|
|
|
@ -37,8 +37,9 @@
|
|||
<Catalog DisplayName="StepInfo">
|
||||
<Group DisplayName="Temperature -> Control Mode">
|
||||
<Step ModuleName="" DeviceType="" InputType="ReadOnlySelection" DisplayName="8. PSU Control Mode" UnitName="" ControlName="TC1.SetHeaterMode" Description="">
|
||||
<Item DisplayName="PyroAuto" ControlName="PyroAuto" />
|
||||
<Item DisplayName="PyroFollow" ControlName="PyroFollow" />
|
||||
<Item DisplayName="Power" ControlName="Power" />
|
||||
<Item DisplayName="Pyro" ControlName="Pyro" />
|
||||
</Step>
|
||||
<Step ModuleName="" DeviceType="" InputType="ReadOnlySelection" DisplayName="9. PSU Set Mode" UnitName="" ControlName="SusHeaterSetMode" Description="">
|
||||
<Item DisplayName="Ramp" ControlName="Ramp" />
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
<DI_ITEM Index="65" Name="DI_DryPump1Running" BufferOffset="65" Addr="65" Description="" />
|
||||
<DI_ITEM Index="67" Name="DI_DryPump1Warning" BufferOffset="67" Addr="67" Description="" />
|
||||
<DI_ITEM Index="70" Name="DI_EMOStatusSW" BufferOffset="70" Addr="70" Description="" />
|
||||
<DI_ITEM Index="71" Name="DI_PumpCabDoorClosed" BufferOffset="71" Addr="71" Description="" />
|
||||
<DI_ITEM Index="72" Name="DI_FacilityWarningSW" BufferOffset="72" Addr="72" Description="" />
|
||||
<DI_ITEM Index="76" Name="DI_MainCBStatusSW" BufferOffset="76" Addr="76" Description="" />
|
||||
<DI_ITEM Index="77" Name="DI_PowerRackWaterLeakSW" BufferOffset="77" Addr="77" Description="" />
|
||||
|
@ -164,11 +165,11 @@
|
|||
<DI_ITEM Index="265" Name="DI_TowerRedFB" BufferOffset="265" Addr="265" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="266" Name="DI_BuzzerFB" BufferOffset="266" Addr="266" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="271" Name="DI_ConfinementRingDrvRstFB" BufferOffset="271" Addr="271" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="272" Name="DI_InnerGasFinalFB(V89)" BufferOffset="272" Addr="272" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="273" Name="DI_MiddleGasFinalFB(V90)" BufferOffset="273" Addr="273" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="274" Name="DI_OpticPurgeFinalFB(V91)" BufferOffset="274" Addr="274" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="275" Name="DI_GasRingPurgeFinalFB(V92)" BufferOffset="275" Addr="275" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="276" Name="DI_ChamberPurgeFinalFB(V93)" BufferOffset="276" Addr="276" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="272" Name="DI_InnerGasFinalFB(V89)" BufferOffset="272" Addr="272" Description="" Visible ="true"/>
|
||||
<DI_ITEM Index="273" Name="DI_MiddleGasFinalFB(V90)" BufferOffset="273" Addr="273" Description="" Visible ="true"/>
|
||||
<DI_ITEM Index="274" Name="DI_OpticPurgeFinalFB(V91)" BufferOffset="274" Addr="274" Description="" Visible ="true"/>
|
||||
<DI_ITEM Index="275" Name="DI_GasRingPurgeFinalFB(V92)" BufferOffset="275" Addr="275" Description="" Visible ="true"/>
|
||||
<DI_ITEM Index="276" Name="DI_ChamberPurgeFinalFB(V93)" BufferOffset="276" Addr="276" Description="" Visible ="true"/>
|
||||
<DI_ITEM Index="277" Name="DI_RotationUpPurgeFinalFB(V94)" BufferOffset="277" Addr="277" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="278" Name="DI_ConfinementRingFinalFB(V95)" BufferOffset="278" Addr="278" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="279" Name="DI_HeaterWFFinalFB(V96)" BufferOffset="279" Addr="279" Description="" Visible ="false"/>
|
||||
|
|
|
@ -1139,6 +1139,7 @@
|
|||
<Limit do="PM1.DO_TMPump1FlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-205"/>
|
||||
<Limit do="PM1.DO_TransformerFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-206"/>
|
||||
</Action>
|
||||
|
||||
<Action do="PM1.DO_InnerHeaterEnable" value="true" tip="" tip.zh-CN="" tip.en-US="DO-57">
|
||||
<Limit di="PM1.DI_ChamLidClosed" value="true" tip="" tip.zh-CN="" tip.en-US="DI-0"/>
|
||||
<Limit di="PM1.DI_ChamPressAboveATMSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-4"/>
|
||||
|
@ -2320,4 +2321,177 @@
|
|||
<Limit di="PM1.DI_UPS1LowBattery" value="false" tip="" tip.zh-CN="" tip.en-US="DI-84"/>
|
||||
<Limit di="PM1.DI_UPS2LowBattery" value="false" tip="" tip.zh-CN="" tip.en-US="DI-85"/>
|
||||
</Action>
|
||||
|
||||
<Action do="PM1.DO_SCR1Enable" value="true" tip="DO_SCR1Enable" tip.zh-CN="" tip.en-US="DO-134">
|
||||
<Limit di="PM1.DI_ChamLidClosed" value="true" tip="" tip.zh-CN="" tip.en-US="DI-0" />
|
||||
<Limit di="PM1.DI_ChamMiddleFlow2SW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-8" />
|
||||
<Limit di="PM1.DI_ChamPressAboveATMSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-9" />
|
||||
<Limit di="PM1.DI_HeaterTempUpLimitSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-10" />
|
||||
<Limit di="PM1.DI_SHFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-15" />
|
||||
<Limit di="PM1.DI_ChamTopFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-16" />
|
||||
<Limit di="PM1.DI_ChamMiddleFlow1SW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-17" />
|
||||
<Limit di="PM1.DI_ChamBottomFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-18" />
|
||||
<Limit di="PM1.DI_PowerRod1FlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-20" />
|
||||
<Limit di="PM1.DI_PowerRod2FlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-21" />
|
||||
<Limit di="PM1.DI_ForelineFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-22" />
|
||||
<Limit di="PM1.DI_ElectrodeWFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-23" />
|
||||
<Limit di="PM1.DI_TransformerFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-25" />
|
||||
<Limit di="PM1.DI_InletTotalFlowLowSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-27" />
|
||||
<Limit di="PM1.DI_PMH2DetectorSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-30" />
|
||||
<Limit di="PM1.DI_GBHCLDetectorSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-31" />
|
||||
<Limit di="PM1.DI_GBExhaustDPSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-32" />
|
||||
<Limit di="PM1.DI_DryPumpAlarm" value="true" tip="" tip.zh-CN="" tip.en-US="DI-36" />
|
||||
<Limit di="PM1.DI_PumpExhaustPressSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-38" />
|
||||
<Limit di="PM1.DI_PMAExhaustDPSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-39" />
|
||||
<Limit di="PM1.DI_PumpExhaustDPSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-40" />
|
||||
<Limit di="PM1.DI_ScrubberIntlkSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-41" />
|
||||
<Limit di="PM1.DI_FacilityIntlkSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-42" />
|
||||
<Limit di="PM1.DI_ServoDriverFaultSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-45" />
|
||||
<Limit di="PM1.DI_GN2InletPressSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-55" />
|
||||
<Limit di="PM1.DI_ArInletPressSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-56" />
|
||||
<Limit di="PM1.DI_H2PressureSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-57" />
|
||||
<Limit di="PM1.DI_GBH2DetectorSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-59" />
|
||||
<Limit di="PM1.DI_DryPump1Running" value="true" tip="" tip.zh-CN="" tip.en-US="DI-65" />
|
||||
<Limit di="PM1.DI_FacilityWarningSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-72" />
|
||||
<Limit di="PM1.DI_ProcessStopSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-81" />
|
||||
<Limit di="PM1.DI_PSU1Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-320" />
|
||||
<Limit di="PM1.DI_PSU2Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-321" />
|
||||
<Limit di="PM1.DI_PSU3Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-322" />
|
||||
<Limit di="PM1.DI_SCR1Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-323" />
|
||||
<Limit di="PM1.DI_SCR2Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-324" />
|
||||
<Limit di="PM1.DI_SCR3Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-325"/>
|
||||
<Limit do="PM1.DO_ReactorPressRisingRateFast" value="true" tip="" tip.zh-CN="" tip.en-US="DO-192" />
|
||||
<Limit di="PM1.DI_UPS1Enable" value="false" tip="" tip.zh-CN="" tip.en-US="DI-78" />
|
||||
<Limit di="PM1.DI_UPS1LowBattery" value="false" tip="" tip.zh-CN="" tip.en-US="DI-84" />
|
||||
<Limit do="PM1.DO_ChamMiddleFlow2Temp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-195" />
|
||||
<Limit do="PM1.DO_SHFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-196" />
|
||||
<Limit do="PM1.DO_ChamTopFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-197" />
|
||||
<Limit do="PM1.DO_ChamMiddleFlow1Temp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-198" />
|
||||
<Limit do="PM1.DO_ChamBottomFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-199" />
|
||||
<Limit do="PM1.DO_SpareFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-200" />
|
||||
<Limit do="PM1.DO_PowerRod1FlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-201" />
|
||||
<Limit do="PM1.DO_PowerRod2FlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-202" />
|
||||
<Limit do="PM1.DO_ForelineFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-203" />
|
||||
<Limit do="PM1.DO_ElectrodeWFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-204" />
|
||||
<Limit do="PM1.DO_TransformerFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-206" />
|
||||
<Limit do="PM1.DO_PyroCommunicationError" value="false" tip="" tip.zh-CN="" tip.en-US="DO-220" />
|
||||
<Limit do="PM1.DO_TC1PyroWarmMaxDiff" value="false" tip="" tip.zh-CN="" tip.en-US="DO-230" />
|
||||
<Limit do="PM1.DO_TC1AETempRasisingFast" value="false" tip="" tip.zh-CN="" tip.en-US="DO-231" />
|
||||
</Action>
|
||||
|
||||
<Action do="PM1.DO_SCR2Enable" value="true" tip="DO_SCR2Enable" tip.zh-CN="" tip.en-US="DO-135">
|
||||
<Limit di="PM1.DI_ChamLidClosed" value="true" tip="" tip.zh-CN="" tip.en-US="DI-0" />
|
||||
<Limit di="PM1.DI_ChamMiddleFlow2SW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-8" />
|
||||
<Limit di="PM1.DI_ChamPressAboveATMSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-9" />
|
||||
<Limit di="PM1.DI_HeaterTempUpLimitSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-10" />
|
||||
<Limit di="PM1.DI_SHFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-15" />
|
||||
<Limit di="PM1.DI_ChamTopFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-16" />
|
||||
<Limit di="PM1.DI_ChamMiddleFlow1SW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-17" />
|
||||
<Limit di="PM1.DI_ChamBottomFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-18" />
|
||||
<Limit di="PM1.DI_PowerRod1FlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-20" />
|
||||
<Limit di="PM1.DI_PowerRod2FlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-21" />
|
||||
<Limit di="PM1.DI_ForelineFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-22" />
|
||||
<Limit di="PM1.DI_ElectrodeWFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-23" />
|
||||
<Limit di="PM1.DI_TransformerFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-25" />
|
||||
<Limit di="PM1.DI_InletTotalFlowLowSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-27" />
|
||||
<Limit di="PM1.DI_PMH2DetectorSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-30" />
|
||||
<Limit di="PM1.DI_GBHCLDetectorSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-31" />
|
||||
<Limit di="PM1.DI_GBExhaustDPSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-32" />
|
||||
<Limit di="PM1.DI_DryPumpAlarm" value="true" tip="" tip.zh-CN="" tip.en-US="DI-36" />
|
||||
<Limit di="PM1.DI_PumpExhaustPressSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-38" />
|
||||
<Limit di="PM1.DI_PMAExhaustDPSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-39" />
|
||||
<Limit di="PM1.DI_PumpExhaustDPSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-40" />
|
||||
<Limit di="PM1.DI_ScrubberIntlkSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-41" />
|
||||
<Limit di="PM1.DI_FacilityIntlkSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-42" />
|
||||
<Limit di="PM1.DI_ServoDriverFaultSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-45" />
|
||||
<Limit di="PM1.DI_GN2InletPressSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-55" />
|
||||
<Limit di="PM1.DI_ArInletPressSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-56" />
|
||||
<Limit di="PM1.DI_H2PressureSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-57" />
|
||||
<Limit di="PM1.DI_GBH2DetectorSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-59" />
|
||||
<Limit di="PM1.DI_DryPump1Running" value="true" tip="" tip.zh-CN="" tip.en-US="DI-65" />
|
||||
<Limit di="PM1.DI_FacilityWarningSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-72" />
|
||||
<Limit di="PM1.DI_ProcessStopSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-81" />
|
||||
<Limit di="PM1.DI_PSU1Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-320" />
|
||||
<Limit di="PM1.DI_PSU2Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-321" />
|
||||
<Limit di="PM1.DI_PSU3Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-322" />
|
||||
<Limit di="PM1.DI_SCR1Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-323" />
|
||||
<Limit di="PM1.DI_SCR2Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-324" />
|
||||
<Limit di="PM1.DI_SCR3Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-325"/>
|
||||
<Limit do="PM1.DO_ReactorPressRisingRateFast" value="true" tip="" tip.zh-CN="" tip.en-US="DO-192" />
|
||||
<Limit di="PM1.DI_UPS1Enable" value="false" tip="" tip.zh-CN="" tip.en-US="DI-78" />
|
||||
<Limit di="PM1.DI_UPS1LowBattery" value="false" tip="" tip.zh-CN="" tip.en-US="DI-84" />
|
||||
<Limit do="PM1.DO_ChamMiddleFlow2Temp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-195" />
|
||||
<Limit do="PM1.DO_SHFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-196" />
|
||||
<Limit do="PM1.DO_ChamTopFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-197" />
|
||||
<Limit do="PM1.DO_ChamMiddleFlow1Temp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-198" />
|
||||
<Limit do="PM1.DO_ChamBottomFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-199" />
|
||||
<Limit do="PM1.DO_SpareFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-200" />
|
||||
<Limit do="PM1.DO_PowerRod1FlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-201" />
|
||||
<Limit do="PM1.DO_PowerRod2FlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-202" />
|
||||
<Limit do="PM1.DO_ForelineFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-203" />
|
||||
<Limit do="PM1.DO_ElectrodeWFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-204" />
|
||||
<Limit do="PM1.DO_TransformerFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-206" />
|
||||
<Limit do="PM1.DO_PyroCommunicationError" value="false" tip="" tip.zh-CN="" tip.en-US="DO-220" />
|
||||
<Limit do="PM1.DO_TC1PyroWarmMaxDiff" value="false" tip="" tip.zh-CN="" tip.en-US="DO-230" />
|
||||
<Limit do="PM1.DO_TC1AETempRasisingFast" value="false" tip="" tip.zh-CN="" tip.en-US="DO-231" />
|
||||
</Action>
|
||||
|
||||
<Action do="PM1.DO_SCR3Enable" value="true" tip="DO_SCR3Enable" tip.zh-CN="" tip.en-US="DO-136">
|
||||
<Limit di="PM1.DI_ChamLidClosed" value="true" tip="" tip.zh-CN="" tip.en-US="DI-0" />
|
||||
<Limit di="PM1.DI_ChamMiddleFlow2SW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-8" />
|
||||
<Limit di="PM1.DI_ChamPressAboveATMSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-9" />
|
||||
<Limit di="PM1.DI_HeaterTempUpLimitSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-10" />
|
||||
<Limit di="PM1.DI_SHFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-15" />
|
||||
<Limit di="PM1.DI_ChamTopFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-16" />
|
||||
<Limit di="PM1.DI_ChamMiddleFlow1SW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-17" />
|
||||
<Limit di="PM1.DI_ChamBottomFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-18" />
|
||||
<Limit di="PM1.DI_PowerRod1FlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-20" />
|
||||
<Limit di="PM1.DI_PowerRod2FlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-21" />
|
||||
<Limit di="PM1.DI_ForelineFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-22" />
|
||||
<Limit di="PM1.DI_ElectrodeWFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-23" />
|
||||
<Limit di="PM1.DI_TransformerFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-25" />
|
||||
<Limit di="PM1.DI_InletTotalFlowLowSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-27" />
|
||||
<Limit di="PM1.DI_PMH2DetectorSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-30" />
|
||||
<Limit di="PM1.DI_GBHCLDetectorSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-31" />
|
||||
<Limit di="PM1.DI_GBExhaustDPSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-32" />
|
||||
<Limit di="PM1.DI_DryPumpAlarm" value="true" tip="" tip.zh-CN="" tip.en-US="DI-36" />
|
||||
<Limit di="PM1.DI_PumpExhaustPressSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-38" />
|
||||
<Limit di="PM1.DI_PMAExhaustDPSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-39" />
|
||||
<Limit di="PM1.DI_PumpExhaustDPSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-40" />
|
||||
<Limit di="PM1.DI_ScrubberIntlkSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-41" />
|
||||
<Limit di="PM1.DI_FacilityIntlkSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-42" />
|
||||
<Limit di="PM1.DI_ServoDriverFaultSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-45" />
|
||||
<Limit di="PM1.DI_GN2InletPressSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-55" />
|
||||
<Limit di="PM1.DI_ArInletPressSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-56" />
|
||||
<Limit di="PM1.DI_H2PressureSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-57" />
|
||||
<Limit di="PM1.DI_GBH2DetectorSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-59" />
|
||||
<Limit di="PM1.DI_DryPump1Running" value="true" tip="" tip.zh-CN="" tip.en-US="DI-65" />
|
||||
<Limit di="PM1.DI_FacilityWarningSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-72" />
|
||||
<Limit di="PM1.DI_ProcessStopSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-81" />
|
||||
<Limit di="PM1.DI_PSU1Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-320" />
|
||||
<Limit di="PM1.DI_PSU2Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-321" />
|
||||
<Limit di="PM1.DI_PSU3Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-322" />
|
||||
<Limit di="PM1.DI_SCR1Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-323" />
|
||||
<Limit di="PM1.DI_SCR2Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-324" />
|
||||
<Limit di="PM1.DI_SCR3Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-325"/>
|
||||
<Limit do="PM1.DO_ReactorPressRisingRateFast" value="true" tip="" tip.zh-CN="" tip.en-US="DO-192" />
|
||||
<Limit di="PM1.DI_UPS1Enable" value="false" tip="" tip.zh-CN="" tip.en-US="DI-78" />
|
||||
<Limit di="PM1.DI_UPS1LowBattery" value="false" tip="" tip.zh-CN="" tip.en-US="DI-84" />
|
||||
<Limit do="PM1.DO_ChamMiddleFlow2Temp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-195" />
|
||||
<Limit do="PM1.DO_SHFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-196" />
|
||||
<Limit do="PM1.DO_ChamTopFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-197" />
|
||||
<Limit do="PM1.DO_ChamMiddleFlow1Temp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-198" />
|
||||
<Limit do="PM1.DO_ChamBottomFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-199" />
|
||||
<Limit do="PM1.DO_SpareFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-200" />
|
||||
<Limit do="PM1.DO_PowerRod1FlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-201" />
|
||||
<Limit do="PM1.DO_PowerRod2FlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-202" />
|
||||
<Limit do="PM1.DO_ForelineFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-203" />
|
||||
<Limit do="PM1.DO_ElectrodeWFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-204" />
|
||||
<Limit do="PM1.DO_TransformerFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-206" />
|
||||
<Limit do="PM1.DO_PyroCommunicationError" value="false" tip="" tip.zh-CN="" tip.en-US="DO-220" />
|
||||
<Limit do="PM1.DO_TC1PyroWarmMaxDiff" value="false" tip="" tip.zh-CN="" tip.en-US="DO-230" />
|
||||
<Limit do="PM1.DO_TC1AETempRasisingFast" value="false" tip="" tip.zh-CN="" tip.en-US="DO-231" />
|
||||
</Action>
|
||||
|
||||
|
||||
</Interlock>
|
||||
|
|
|
@ -541,6 +541,12 @@ namespace SicPM1
|
|||
|
||||
private bool PutOnline()
|
||||
{
|
||||
if(IsService)
|
||||
{
|
||||
EV.PostWarningLog(Module, $"{Module} is Service State,do not Online");
|
||||
return false;
|
||||
}
|
||||
|
||||
IsOnline = true;
|
||||
NotifyModuleOfflineCancellation.Cancel();
|
||||
return true;
|
||||
|
@ -1554,13 +1560,11 @@ namespace SicPM1
|
|||
public void InvokeOffline()
|
||||
{
|
||||
PutOffline();
|
||||
//PostMsg((int)MSG.SetOffline);
|
||||
}
|
||||
|
||||
public void InvokeOnline()
|
||||
{
|
||||
PutOnline();
|
||||
//PostMsg((int)MSG.SetOnline);
|
||||
}
|
||||
|
||||
private CancellationTokenSource NotifyModuleOfflineCancellation = new CancellationTokenSource();
|
||||
|
|
|
@ -58,6 +58,7 @@ namespace SicPM1.RecipeExecutions
|
|||
SetTC2Ratio,
|
||||
SetTC2Ratio1,
|
||||
CloseTC2,
|
||||
WaitRotation1,
|
||||
|
||||
TimeDelay1,
|
||||
TimeDelay2,
|
||||
|
@ -233,7 +234,7 @@ namespace SicPM1.RecipeExecutions
|
|||
SetSCREnable((int)RoutineStep.CloseTC2, false, 5);
|
||||
}
|
||||
|
||||
WaitRotationValve((int)RoutineStep.SetRotation2, _rotationSpeed, true, _rotationSpeed / 2);
|
||||
WaitRotationValve((int)RoutineStep.WaitRotation1, _rotationSpeed, true, _rotationSpeed / 2);
|
||||
}
|
||||
|
||||
catch (RoutineBreakException)
|
||||
|
|
|
@ -376,12 +376,12 @@ namespace SicPM1.RecipeExecutions
|
|||
if (IsCmdSkip(recipeCmd)) // 不是注册的方法,需要跳过
|
||||
continue;
|
||||
|
||||
if (!OP.CanDoOperation($"{Module}.{recipeCmd}", out reason, PmDevice.RecipeRunningInfo.RecipeStepList[_currentStepNumber].RecipeCommands[recipeCmd]))
|
||||
{
|
||||
EV.PostAlarmLog(Module, $"Can not execute {recipeCmd}, {reason}");
|
||||
return Result.FAIL;
|
||||
}
|
||||
else
|
||||
//if (!OP.CanDoOperation($"{Module}.{recipeCmd}", out reason, PmDevice.RecipeRunningInfo.RecipeStepList[_currentStepNumber].RecipeCommands[recipeCmd]))
|
||||
//{
|
||||
// EV.PostAlarmLog(Module, $"Can not execute {recipeCmd}, {reason}");
|
||||
// return Result.FAIL;
|
||||
//}
|
||||
//else
|
||||
{
|
||||
int time = (int)(PmDevice.RecipeRunningInfo.RecipeStepList[_currentStepNumber].StepTime * 1000 - _curStepElpasedTimeBeforePaused);// (int)PMDevice.RecipeRunningInfo.RecipeStepList[_currentStepNumber].StepTime * 1000;
|
||||
|
||||
|
|
|
@ -1574,7 +1574,7 @@ namespace SicPM1.Routines
|
|||
},
|
||||
() =>
|
||||
{
|
||||
return Math.Abs(_IoThrottle.PressureSetpoint - pressure) <= 0.1;
|
||||
return Math.Abs(_IoThrottle.PressureSetpoint - pressure) <= 1;
|
||||
},
|
||||
timeout * 1000);
|
||||
|
||||
|
|
|
@ -25,7 +25,8 @@ namespace SicPM1.Routines
|
|||
SetBlockOff,
|
||||
EnableRotation,
|
||||
EnableHeater,
|
||||
SetRotation1,
|
||||
SetRotation1,
|
||||
WaitRotation1,
|
||||
SetTC1Mode,
|
||||
SetTC1Ratio,
|
||||
SetTC1Ref,
|
||||
|
@ -138,13 +139,16 @@ namespace SicPM1.Routines
|
|||
{
|
||||
try
|
||||
{
|
||||
EnableRotation((int)RoutineStep.EnableRotation, 5);
|
||||
SetRotationValveAndNoWait((int)RoutineStep.SetRotation1, _rotationSpeed);
|
||||
|
||||
TimeDelay((int)RoutineStep.TimeDelay1, 5);
|
||||
|
||||
if (!hasWafer)
|
||||
{
|
||||
SetConfinementRingUpAndWait((int)RoutineStep.SetServoUp, 30);
|
||||
}
|
||||
|
||||
EnableRotation((int)RoutineStep.EnableRotation, 5);
|
||||
SetRotationValveAndNoWait((int)RoutineStep.SetRotation1, _rotationSpeed);
|
||||
ExecuteRoutine((int)RoutineStep.SetChamberPressure, _pmServoToPressure);
|
||||
|
||||
TimeDelay((int)RoutineStep.TimeDelay8, 1);
|
||||
|
@ -169,7 +173,7 @@ namespace SicPM1.Routines
|
|||
SetSCRHeatRatio((int)RoutineStep.SetTC2Ratio, _scrL1Ratio, _scrL2Ratio, _scrL3Ratio);
|
||||
}
|
||||
|
||||
//SetRotationValve((int)RoutineStep.SetRotation1, _rotationSpeed, true, _rotationSpeed/2);
|
||||
WaitRotationValve((int)RoutineStep.WaitRotation1, _rotationSpeed, true, _rotationSpeed / 2);
|
||||
}
|
||||
catch (RoutineBreakException)
|
||||
{
|
||||
|
|
|
@ -31,6 +31,10 @@ namespace SicPM1.Routines
|
|||
SetGroupK,
|
||||
SetGroupD,
|
||||
SetGroupG,
|
||||
VentPumpClose,
|
||||
SetGroupV25,
|
||||
|
||||
TimeDelay1,
|
||||
}
|
||||
|
||||
private int _heatTimeOut = 5;
|
||||
|
@ -87,6 +91,9 @@ namespace SicPM1.Routines
|
|||
//所有PC设定为默认值
|
||||
SetPcToDefault((int)RoutineStep.SetPC, _lstPcList);
|
||||
|
||||
//等待MFC等流量
|
||||
TimeDelay((int)RoutineStep.TimeDelay1, Math.Max(_mfc2to40RampTime, _mfc1to16RampTime));
|
||||
|
||||
//打开V32
|
||||
SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout);
|
||||
|
||||
|
@ -105,11 +112,12 @@ namespace SicPM1.Routines
|
|||
SetIoValueByGroup((int)RoutineStep.SetGroupD, IoGroupName.D, true, _IoValueOpenCloseTimeout);
|
||||
SetIoValueByGroup((int)RoutineStep.SetGroupG, IoGroupName.G, true, _IoValueOpenCloseTimeout);
|
||||
|
||||
////打开V65
|
||||
//SetIoValueByGroup((int)RoutineStep.SetV65, IoGroupName.V65, true, _IoValueOpenCloseTimeout);
|
||||
|
||||
//打开V68
|
||||
SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout);
|
||||
|
||||
//关闭V72,打开V25
|
||||
SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout);
|
||||
SetIoValueByGroup((int)RoutineStep.SetGroupV25, IoGroupName.V25, true, _IoValueOpenCloseTimeout);
|
||||
}
|
||||
|
||||
catch (RoutineBreakException)
|
||||
|
|
|
@ -100,6 +100,7 @@ namespace SicPM1.Routines
|
|||
EnableRotation,
|
||||
EnableHeater,
|
||||
SetRotation1,
|
||||
WaitRotation1,
|
||||
SetTC1Mode,
|
||||
SetTC1Ratio,
|
||||
SetTC1RatioTo0,
|
||||
|
@ -408,7 +409,7 @@ namespace SicPM1.Routines
|
|||
SetSCREnable((int)RoutineStep.CloseTC2, false, 5);
|
||||
}
|
||||
|
||||
WaitRotationValve((int)RoutineStep.SetRotation2, _rotationSpeed, true, _rotationSpeed / 2);
|
||||
WaitRotationValve((int)RoutineStep.WaitRotation1, _rotationSpeed, true, _rotationSpeed / 2);
|
||||
}
|
||||
|
||||
catch (RoutineBreakException)
|
||||
|
|
|
@ -138,8 +138,8 @@ namespace SicPM1.Routines
|
|||
_pmPressureMaxDiff = SC.GetValue<double>($"PM.{Module}.ThrottlePressureMaxDiff");
|
||||
_throttleTimeout = SC.GetValue<int>($"PM.{Module}.ThrottlePressureTimeout");
|
||||
|
||||
_vacPumpBasePressure = SC.GetValue<double>($"PM.{Module}.VacIdle.PumpPressure");
|
||||
_routineTimeOut = SC.GetValue<int>($"PM.{Module}.VacIdle.RoutineTimeOut");
|
||||
_vacPumpBasePressure = SC.GetValue<double>($"PM.{Module}.Pump.PumpPressure");
|
||||
_routineTimeOut = SC.GetValue<int>($"PM.{Module}.Pump.RoutineTimeOut");
|
||||
|
||||
if (!_pmIoInterLock.SetPMVacIdleRountingRunning(true, out var reason))
|
||||
{
|
||||
|
|
|
@ -32,8 +32,9 @@
|
|||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="MECF.Framework.Common">
|
||||
<HintPath>..\..\FrameworkLocal\MECF.Framework.Common.dll</HintPath>
|
||||
<Reference Include="MECF.Framework.Common, Version=1.0.8361.29945, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\ThirdParty\dlls\MECF.Framework.Common.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
|
|
|
@ -189,7 +189,7 @@
|
|||
<IoSensor id="SensorUPS1LowBattery" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_UPS1LowBattery" infoText="" warningText="" alarmText="Alarm43 UPS1.LowBattery [DI-84]" />
|
||||
<IoSensor id="SensorUPS2LowBattery" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_UPS2LowBattery" infoText="" warningText="" alarmText="Alarm44 UPS2.LowBattery [DI-85]" />
|
||||
<IoSensor id="SensorGBWaterLeakSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_GBWaterLeakSW" infoText="" warningText="Warning7 Gas Box Water Leak [DI-60]" alarmText="" />
|
||||
<IoSensor id="SensorDryPump1Warning" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_DryPump1Warning" infoText="" warningText="Warning10 PM1DryPump1 Warning [DI-67]" alarmText="" />
|
||||
<IoSensor id="SensorDryPump1Warning" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_DryPump1Warning" infoText="" warningText="Warning10 DryPump1 Warning [DI-67]" alarmText="" />
|
||||
<IoSensor id="SensorEMOStatusSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_EMOStatusSW" infoText="" warningText="" alarmText="Alarm37 EMOStatus [DI-70]" />
|
||||
<IoSensor id="SensorPRWaterLeakSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_PowerRackWaterLeakSW" infoText="" warningText="Warning11 Power Rack Water Leak [DI-77]" alarmText="" />
|
||||
<IoSensor id="SensorSHLidClosed" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_SHLidClosed" infoText="" warningText="Warning13 SH Lid Opened [DI-106]" alarmText="" />
|
||||
|
@ -239,7 +239,7 @@
|
|||
<IoSensor id="SensorGBHCLDetectorSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_GBHCLDetectorSW" infoText="" warningText="" alarmText="Alarm20 Gasbox HCL Leak Detect [DI-31]" />
|
||||
<IoSensor id="SensorGBExhaustDPSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_GBExhaustDPSW" infoText="" warningText="" alarmText="Alarm21 Gasbox Exhaust DP Error [DI-32]" />
|
||||
<IoSensor id="SensorGasPipeTempCtrlAlarm" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_GasPipeTempCtrlAlarm" infoText="" warningText="Warning4 GasPipeTempCtrl.Alarm [DI-35]" alarmText="" />
|
||||
<IoSensor id="SensorDryPumpAlarm" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_DryPumpAlarm" infoText="" warningText="" alarmText="Alarm22 PM1DryPump.Alarm [DI-36]" />
|
||||
<IoSensor id="SensorDryPumpAlarm" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_DryPumpAlarm" infoText="" warningText="" alarmText="Alarm22 DryPump.Alarm [DI-36]" />
|
||||
<IoSensor id="SensorPumpExhaustPressSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_PumpExhaustPressSW" infoText="" warningText="" alarmText="Alarm23 Pump Exhaust Pressure Abnormal [DI-38]" />
|
||||
<IoSensor id="SensorPMAExhaustDPSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_PMAExhaustDPSW" infoText="" warningText="" alarmText="Alarm24 PM Exhaust DP Error [DI-39]" />
|
||||
<IoSensor id="SensorPumpExhaustDPSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_PumpExhaustDPSW" infoText="" warningText="" alarmText="Alarm25 Pump Exhaust DP Error [DI-40]" />
|
||||
|
@ -250,7 +250,7 @@
|
|||
<IoSensor id="SensorArInletPressSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_ArInletPressSW" infoText="" warningText="" alarmText="Alarm33 Gasbox Ar Pressure Low [DI-56]" />
|
||||
<IoSensor id="SensorH2PressureSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_H2PressureSW" infoText="" warningText="" alarmText="Alarm34 Gasbox H2 Pressure Low [DI-57]" />
|
||||
<IoSensor id="SensorGBH2DetectorSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_GBH2DetectorSW" infoText="" warningText="" alarmText="Alarm35 Gasbox H2 Leak Detect [DI-59]" />
|
||||
<IoSensor id="SensorDryPump1Running" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_DryPump1Running" infoText="" warningText="" alarmText="Alarm36 PM1DryPump1 Not Running [DI-65]" />
|
||||
<IoSensor id="SensorDryPump1Running" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_DryPump1Running" infoText="" warningText="" alarmText="Alarm36 DryPump1 Not Running [DI-65]" />
|
||||
<IoSensor id="SensorFacilityWarningSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_FacilityWarningSW" infoText="" warningText="" alarmText="Alarm38 Facility Equipment Alarm [DI-72]" />
|
||||
<IoSensor id="SensorMainCBStatusSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_MainCBStatusSW" infoText="" warningText="" alarmText="Alarm39 Main CB Status Off [DI-76]" />
|
||||
<IoSensor id="SensorProcessStopSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_ProcessStopSW" infoText="" warningText="" alarmText="Alarm42 Process Stop [DI-81]" />
|
||||
|
|
|
@ -37,8 +37,9 @@
|
|||
<Catalog DisplayName="StepInfo">
|
||||
<Group DisplayName="Temperature -> Control Mode">
|
||||
<Step ModuleName="" DeviceType="" InputType="ReadOnlySelection" DisplayName="8. PSU Control Mode" UnitName="" ControlName="TC1.SetHeaterMode" Description="">
|
||||
<Item DisplayName="PyroAuto" ControlName="PyroAuto" />
|
||||
<Item DisplayName="PyroFollow" ControlName="PyroFollow" />
|
||||
<Item DisplayName="Power" ControlName="Power" />
|
||||
<Item DisplayName="Pyro" ControlName="Pyro" />
|
||||
</Step>
|
||||
<Step ModuleName="" DeviceType="" InputType="ReadOnlySelection" DisplayName="9. PSU Set Mode" UnitName="" ControlName="SusHeaterSetMode" Description="">
|
||||
<Item DisplayName="Ramp" ControlName="Ramp" />
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
<DI_ITEM Index="65" Name="DI_DryPump1Running" BufferOffset="65" Addr="65" Description="" />
|
||||
<DI_ITEM Index="67" Name="DI_DryPump1Warning" BufferOffset="67" Addr="67" Description="" />
|
||||
<DI_ITEM Index="70" Name="DI_EMOStatusSW" BufferOffset="70" Addr="70" Description="" />
|
||||
<DI_ITEM Index="71" Name="DI_PumpCabDoorClosed" BufferOffset="71" Addr="71" Description="" />
|
||||
<DI_ITEM Index="72" Name="DI_FacilityWarningSW" BufferOffset="72" Addr="72" Description="" />
|
||||
<DI_ITEM Index="76" Name="DI_MainCBStatusSW" BufferOffset="76" Addr="76" Description="" />
|
||||
<DI_ITEM Index="77" Name="DI_PowerRackWaterLeakSW" BufferOffset="77" Addr="77" Description="" />
|
||||
|
@ -164,11 +165,11 @@
|
|||
<DI_ITEM Index="265" Name="DI_TowerRedFB" BufferOffset="265" Addr="265" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="266" Name="DI_BuzzerFB" BufferOffset="266" Addr="266" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="271" Name="DI_ConfinementRingDrvRstFB" BufferOffset="271" Addr="271" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="272" Name="DI_InnerGasFinalFB(V89)" BufferOffset="272" Addr="272" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="273" Name="DI_MiddleGasFinalFB(V90)" BufferOffset="273" Addr="273" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="274" Name="DI_OpticPurgeFinalFB(V91)" BufferOffset="274" Addr="274" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="275" Name="DI_GasRingPurgeFinalFB(V92)" BufferOffset="275" Addr="275" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="276" Name="DI_ChamberPurgeFinalFB(V93)" BufferOffset="276" Addr="276" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="272" Name="DI_InnerGasFinalFB(V89)" BufferOffset="272" Addr="272" Description="" Visible ="true"/>
|
||||
<DI_ITEM Index="273" Name="DI_MiddleGasFinalFB(V90)" BufferOffset="273" Addr="273" Description="" Visible ="true"/>
|
||||
<DI_ITEM Index="274" Name="DI_OpticPurgeFinalFB(V91)" BufferOffset="274" Addr="274" Description="" Visible ="true"/>
|
||||
<DI_ITEM Index="275" Name="DI_GasRingPurgeFinalFB(V92)" BufferOffset="275" Addr="275" Description="" Visible ="true"/>
|
||||
<DI_ITEM Index="276" Name="DI_ChamberPurgeFinalFB(V93)" BufferOffset="276" Addr="276" Description="" Visible ="true"/>
|
||||
<DI_ITEM Index="277" Name="DI_RotationUpPurgeFinalFB(V94)" BufferOffset="277" Addr="277" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="278" Name="DI_ConfinementRingFinalFB(V95)" BufferOffset="278" Addr="278" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="279" Name="DI_HeaterWFFinalFB(V96)" BufferOffset="279" Addr="279" Description="" Visible ="false"/>
|
||||
|
|
|
@ -2376,4 +2376,176 @@
|
|||
<Limit di="PM2.DI_UPS1LowBattery" value="false" tip="" tip.zh-CN="" tip.en-US="DI-84"/>
|
||||
<Limit di="PM2.DI_UPS2LowBattery" value="false" tip="" tip.zh-CN="" tip.en-US="DI-85"/>
|
||||
</Action>
|
||||
|
||||
<Action do="PM2.DO_SCR1Enable" value="true" tip="DO_SCR1Enable" tip.zh-CN="" tip.en-US="DO-134">
|
||||
<Limit di="PM2.DI_ChamLidClosed" value="true" tip="" tip.zh-CN="" tip.en-US="DI-0" />
|
||||
<Limit di="PM2.DI_ChamMiddleFlow2SW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-8" />
|
||||
<Limit di="PM2.DI_ChamPressAboveATMSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-9" />
|
||||
<Limit di="PM2.DI_HeaterTempUpLimitSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-10" />
|
||||
<Limit di="PM2.DI_SHFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-15" />
|
||||
<Limit di="PM2.DI_ChamTopFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-16" />
|
||||
<Limit di="PM2.DI_ChamMiddleFlow1SW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-17" />
|
||||
<Limit di="PM2.DI_ChamBottomFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-18" />
|
||||
<Limit di="PM2.DI_PowerRod1FlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-20" />
|
||||
<Limit di="PM2.DI_PowerRod2FlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-21" />
|
||||
<Limit di="PM2.DI_ForelineFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-22" />
|
||||
<Limit di="PM2.DI_ElectrodeWFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-23" />
|
||||
<Limit di="PM2.DI_TransformerFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-25" />
|
||||
<Limit di="PM2.DI_InletTotalFlowLowSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-27" />
|
||||
<Limit di="PM2.DI_PMH2DetectorSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-30" />
|
||||
<Limit di="PM2.DI_GBHCLDetectorSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-31" />
|
||||
<Limit di="PM2.DI_GBExhaustDPSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-32" />
|
||||
<Limit di="PM2.DI_DryPumpAlarm" value="true" tip="" tip.zh-CN="" tip.en-US="DI-36" />
|
||||
<Limit di="PM2.DI_PumpExhaustPressSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-38" />
|
||||
<Limit di="PM2.DI_PMAExhaustDPSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-39" />
|
||||
<Limit di="PM2.DI_PumpExhaustDPSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-40" />
|
||||
<Limit di="PM2.DI_ScrubberIntlkSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-41" />
|
||||
<Limit di="PM2.DI_FacilityIntlkSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-42" />
|
||||
<Limit di="PM2.DI_ServoDriverFaultSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-45" />
|
||||
<Limit di="PM2.DI_GN2InletPressSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-55" />
|
||||
<Limit di="PM2.DI_ArInletPressSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-56" />
|
||||
<Limit di="PM2.DI_H2PressureSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-57" />
|
||||
<Limit di="PM2.DI_GBH2DetectorSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-59" />
|
||||
<Limit di="PM2.DI_DryPump1Running" value="true" tip="" tip.zh-CN="" tip.en-US="DI-65" />
|
||||
<Limit di="PM2.DI_FacilityWarningSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-72" />
|
||||
<Limit di="PM2.DI_ProcessStopSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-81" />
|
||||
<Limit di="PM2.DI_PSU1Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-320" />
|
||||
<Limit di="PM2.DI_PSU2Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-321" />
|
||||
<Limit di="PM2.DI_PSU3Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-322" />
|
||||
<Limit di="PM2.DI_SCR1Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-323" />
|
||||
<Limit di="PM2.DI_SCR2Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-324" />
|
||||
<Limit di="PM2.DI_SCR3Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-325"/>
|
||||
<Limit do="PM2.DO_ReactorPressRisingRateFast" value="true" tip="" tip.zh-CN="" tip.en-US="DO-192" />
|
||||
<Limit di="PM2.DI_UPS2Enable" value="false" tip="" tip.zh-CN="" tip.en-US="DI-79" />
|
||||
<Limit di="PM2.DI_UPS2LowBattery" value="false" tip="" tip.zh-CN="" tip.en-US="DI-85" />
|
||||
<Limit do="PM2.DO_ChamMiddleFlow2Temp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-195" />
|
||||
<Limit do="PM2.DO_SHFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-196" />
|
||||
<Limit do="PM2.DO_ChamTopFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-197" />
|
||||
<Limit do="PM2.DO_ChamMiddleFlow1Temp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-198" />
|
||||
<Limit do="PM2.DO_ChamBottomFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-199" />
|
||||
<Limit do="PM2.DO_SpareFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-200" />
|
||||
<Limit do="PM2.DO_PowerRod1FlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-201" />
|
||||
<Limit do="PM2.DO_PowerRod2FlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-202" />
|
||||
<Limit do="PM2.DO_ForelineFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-203" />
|
||||
<Limit do="PM2.DO_ElectrodeWFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-204" />
|
||||
<Limit do="PM2.DO_TransformerFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-206" />
|
||||
<Limit do="PM2.DO_PyroCommunicationError" value="false" tip="" tip.zh-CN="" tip.en-US="DO-220" />
|
||||
<Limit do="PM2.DO_TC1PyroWarmMaxDiff" value="false" tip="" tip.zh-CN="" tip.en-US="DO-230" />
|
||||
<Limit do="PM2.DO_TC1AETempRasisingFast" value="false" tip="" tip.zh-CN="" tip.en-US="DO-231" />
|
||||
</Action>
|
||||
|
||||
<Action do="PM2.DO_SCR2Enable" value="true" tip="DO_SCR2Enable" tip.zh-CN="" tip.en-US="DO-135">
|
||||
<Limit di="PM2.DI_ChamLidClosed" value="true" tip="" tip.zh-CN="" tip.en-US="DI-0" />
|
||||
<Limit di="PM2.DI_ChamMiddleFlow2SW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-8" />
|
||||
<Limit di="PM2.DI_ChamPressAboveATMSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-9" />
|
||||
<Limit di="PM2.DI_HeaterTempUpLimitSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-10" />
|
||||
<Limit di="PM2.DI_SHFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-15" />
|
||||
<Limit di="PM2.DI_ChamTopFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-16" />
|
||||
<Limit di="PM2.DI_ChamMiddleFlow1SW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-17" />
|
||||
<Limit di="PM2.DI_ChamBottomFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-18" />
|
||||
<Limit di="PM2.DI_PowerRod1FlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-20" />
|
||||
<Limit di="PM2.DI_PowerRod2FlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-21" />
|
||||
<Limit di="PM2.DI_ForelineFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-22" />
|
||||
<Limit di="PM2.DI_ElectrodeWFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-23" />
|
||||
<Limit di="PM2.DI_TransformerFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-25" />
|
||||
<Limit di="PM2.DI_InletTotalFlowLowSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-27" />
|
||||
<Limit di="PM2.DI_PMH2DetectorSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-30" />
|
||||
<Limit di="PM2.DI_GBHCLDetectorSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-31" />
|
||||
<Limit di="PM2.DI_GBExhaustDPSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-32" />
|
||||
<Limit di="PM2.DI_DryPumpAlarm" value="true" tip="" tip.zh-CN="" tip.en-US="DI-36" />
|
||||
<Limit di="PM2.DI_PumpExhaustPressSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-38" />
|
||||
<Limit di="PM2.DI_PMAExhaustDPSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-39" />
|
||||
<Limit di="PM2.DI_PumpExhaustDPSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-40" />
|
||||
<Limit di="PM2.DI_ScrubberIntlkSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-41" />
|
||||
<Limit di="PM2.DI_FacilityIntlkSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-42" />
|
||||
<Limit di="PM2.DI_ServoDriverFaultSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-45" />
|
||||
<Limit di="PM2.DI_GN2InletPressSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-55" />
|
||||
<Limit di="PM2.DI_ArInletPressSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-56" />
|
||||
<Limit di="PM2.DI_H2PressureSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-57" />
|
||||
<Limit di="PM2.DI_GBH2DetectorSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-59" />
|
||||
<Limit di="PM2.DI_DryPump1Running" value="true" tip="" tip.zh-CN="" tip.en-US="DI-65" />
|
||||
<Limit di="PM2.DI_FacilityWarningSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-72" />
|
||||
<Limit di="PM2.DI_ProcessStopSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-81" />
|
||||
<Limit di="PM2.DI_PSU1Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-320" />
|
||||
<Limit di="PM2.DI_PSU2Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-321" />
|
||||
<Limit di="PM2.DI_PSU3Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-322" />
|
||||
<Limit di="PM2.DI_SCR1Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-323" />
|
||||
<Limit di="PM2.DI_SCR2Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-324" />
|
||||
<Limit di="PM2.DI_SCR3Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-325"/>
|
||||
<Limit do="PM2.DO_ReactorPressRisingRateFast" value="true" tip="" tip.zh-CN="" tip.en-US="DO-192" />
|
||||
<Limit di="PM2.DI_UPS2Enable" value="false" tip="" tip.zh-CN="" tip.en-US="DI-79" />
|
||||
<Limit di="PM2.DI_UPS2LowBattery" value="false" tip="" tip.zh-CN="" tip.en-US="DI-85" />
|
||||
<Limit do="PM2.DO_ChamMiddleFlow2Temp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-195" />
|
||||
<Limit do="PM2.DO_SHFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-196" />
|
||||
<Limit do="PM2.DO_ChamTopFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-197" />
|
||||
<Limit do="PM2.DO_ChamMiddleFlow1Temp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-198" />
|
||||
<Limit do="PM2.DO_ChamBottomFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-199" />
|
||||
<Limit do="PM2.DO_SpareFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-200" />
|
||||
<Limit do="PM2.DO_PowerRod1FlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-201" />
|
||||
<Limit do="PM2.DO_PowerRod2FlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-202" />
|
||||
<Limit do="PM2.DO_ForelineFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-203" />
|
||||
<Limit do="PM2.DO_ElectrodeWFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-204" />
|
||||
<Limit do="PM2.DO_TransformerFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-206" />
|
||||
<Limit do="PM2.DO_PyroCommunicationError" value="false" tip="" tip.zh-CN="" tip.en-US="DO-220" />
|
||||
<Limit do="PM2.DO_TC1PyroWarmMaxDiff" value="false" tip="" tip.zh-CN="" tip.en-US="DO-230" />
|
||||
<Limit do="PM2.DO_TC1AETempRasisingFast" value="false" tip="" tip.zh-CN="" tip.en-US="DO-231" />
|
||||
</Action>
|
||||
|
||||
<Action do="PM2.DO_SCR3Enable" value="true" tip="DO_SCR3Enable" tip.zh-CN="" tip.en-US="DO-136">
|
||||
<Limit di="PM2.DI_ChamLidClosed" value="true" tip="" tip.zh-CN="" tip.en-US="DI-0" />
|
||||
<Limit di="PM2.DI_ChamMiddleFlow2SW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-8" />
|
||||
<Limit di="PM2.DI_ChamPressAboveATMSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-9" />
|
||||
<Limit di="PM2.DI_HeaterTempUpLimitSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-10" />
|
||||
<Limit di="PM2.DI_SHFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-15" />
|
||||
<Limit di="PM2.DI_ChamTopFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-16" />
|
||||
<Limit di="PM2.DI_ChamMiddleFlow1SW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-17" />
|
||||
<Limit di="PM2.DI_ChamBottomFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-18" />
|
||||
<Limit di="PM2.DI_PowerRod1FlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-20" />
|
||||
<Limit di="PM2.DI_PowerRod2FlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-21" />
|
||||
<Limit di="PM2.DI_ForelineFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-22" />
|
||||
<Limit di="PM2.DI_ElectrodeWFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-23" />
|
||||
<Limit di="PM2.DI_TransformerFlowSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-25" />
|
||||
<Limit di="PM2.DI_InletTotalFlowLowSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-27" />
|
||||
<Limit di="PM2.DI_PMH2DetectorSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-30" />
|
||||
<Limit di="PM2.DI_GBHCLDetectorSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-31" />
|
||||
<Limit di="PM2.DI_GBExhaustDPSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-32" />
|
||||
<Limit di="PM2.DI_DryPumpAlarm" value="true" tip="" tip.zh-CN="" tip.en-US="DI-36" />
|
||||
<Limit di="PM2.DI_PumpExhaustPressSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-38" />
|
||||
<Limit di="PM2.DI_PMAExhaustDPSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-39" />
|
||||
<Limit di="PM2.DI_PumpExhaustDPSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-40" />
|
||||
<Limit di="PM2.DI_ScrubberIntlkSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-41" />
|
||||
<Limit di="PM2.DI_FacilityIntlkSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-42" />
|
||||
<Limit di="PM2.DI_ServoDriverFaultSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-45" />
|
||||
<Limit di="PM2.DI_GN2InletPressSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-55" />
|
||||
<Limit di="PM2.DI_ArInletPressSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-56" />
|
||||
<Limit di="PM2.DI_H2PressureSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-57" />
|
||||
<Limit di="PM2.DI_GBH2DetectorSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-59" />
|
||||
<Limit di="PM2.DI_DryPump1Running" value="true" tip="" tip.zh-CN="" tip.en-US="DI-65" />
|
||||
<Limit di="PM2.DI_FacilityWarningSW" value="true" tip="" tip.zh-CN="" tip.en-US="DI-72" />
|
||||
<Limit di="PM2.DI_ProcessStopSW" value="false" tip="" tip.zh-CN="" tip.en-US="DI-81" />
|
||||
<Limit di="PM2.DI_PSU1Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-320" />
|
||||
<Limit di="PM2.DI_PSU2Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-321" />
|
||||
<Limit di="PM2.DI_PSU3Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-322" />
|
||||
<Limit di="PM2.DI_SCR1Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-323" />
|
||||
<Limit di="PM2.DI_SCR2Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-324" />
|
||||
<Limit di="PM2.DI_SCR3Alarm" value="false" tip="" tip.zh-CN="" tip.en-US="DI-325"/>
|
||||
<Limit do="PM2.DO_ReactorPressRisingRateFast" value="true" tip="" tip.zh-CN="" tip.en-US="DO-192" />
|
||||
<Limit di="PM2.DI_UPS2Enable" value="false" tip="" tip.zh-CN="" tip.en-US="DI-79" />
|
||||
<Limit di="PM2.DI_UPS2LowBattery" value="false" tip="" tip.zh-CN="" tip.en-US="DI-85" />
|
||||
<Limit do="PM2.DO_ChamMiddleFlow2Temp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-195" />
|
||||
<Limit do="PM2.DO_SHFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-196" />
|
||||
<Limit do="PM2.DO_ChamTopFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-197" />
|
||||
<Limit do="PM2.DO_ChamMiddleFlow1Temp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-198" />
|
||||
<Limit do="PM2.DO_ChamBottomFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-199" />
|
||||
<Limit do="PM2.DO_SpareFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-200" />
|
||||
<Limit do="PM2.DO_PowerRod1FlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-201" />
|
||||
<Limit do="PM2.DO_PowerRod2FlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-202" />
|
||||
<Limit do="PM2.DO_ForelineFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-203" />
|
||||
<Limit do="PM2.DO_ElectrodeWFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-204" />
|
||||
<Limit do="PM2.DO_TransformerFlowTemp" value="true" tip="" tip.zh-CN="" tip.en-US="DO-206" />
|
||||
<Limit do="PM2.DO_PyroCommunicationError" value="false" tip="" tip.zh-CN="" tip.en-US="DO-220" />
|
||||
<Limit do="PM2.DO_TC1PyroWarmMaxDiff" value="false" tip="" tip.zh-CN="" tip.en-US="DO-230" />
|
||||
<Limit do="PM2.DO_TC1AETempRasisingFast" value="false" tip="" tip.zh-CN="" tip.en-US="DO-231" />
|
||||
</Action>
|
||||
|
||||
</Interlock>
|
||||
|
|
|
@ -541,6 +541,12 @@ namespace SicPM2
|
|||
|
||||
private bool PutOnline()
|
||||
{
|
||||
if (IsService)
|
||||
{
|
||||
EV.PostWarningLog(Module, $"{Module} is Service State,do not Online");
|
||||
return false;
|
||||
}
|
||||
|
||||
IsOnline = true;
|
||||
NotifyModuleOfflineCancellation.Cancel();
|
||||
return true;
|
||||
|
|
|
@ -47,6 +47,7 @@ namespace SicPM2.RecipeExecutions
|
|||
EnableRotation,
|
||||
SetRotation1,
|
||||
SetRotation2,
|
||||
WaitRotation1,
|
||||
EnableTC1,
|
||||
SetTC1Mode,
|
||||
SetTC1Ratio,
|
||||
|
@ -233,7 +234,7 @@ namespace SicPM2.RecipeExecutions
|
|||
SetSCREnable((int)RoutineStep.CloseTC2, false, 5);
|
||||
}
|
||||
|
||||
WaitRotationValve((int)RoutineStep.SetRotation2, _rotationSpeed, true, _rotationSpeed / 2);
|
||||
WaitRotationValve((int)RoutineStep.WaitRotation1, _rotationSpeed, true, _rotationSpeed / 2);
|
||||
}
|
||||
|
||||
catch (RoutineBreakException)
|
||||
|
|
|
@ -372,12 +372,12 @@ namespace SicPM2.RecipeExecutions
|
|||
if (IsCmdSkip(recipeCmd)) // 不是注册的方法,需要跳过
|
||||
continue;
|
||||
|
||||
if (!OP.CanDoOperation($"{Module}.{recipeCmd}", out reason, PmDevice.RecipeRunningInfo.RecipeStepList[_currentStepNumber].RecipeCommands[recipeCmd]))
|
||||
{
|
||||
EV.PostAlarmLog(Module, $"Can not execute {recipeCmd}, {reason}");
|
||||
return Result.FAIL;
|
||||
}
|
||||
else
|
||||
// if (!OP.CanDoOperation($"{Module}.{recipeCmd}", out reason, PmDevice.RecipeRunningInfo.RecipeStepList[_currentStepNumber].RecipeCommands[recipeCmd]))
|
||||
// {
|
||||
// EV.PostAlarmLog(Module, $"Can not execute {recipeCmd}, {reason}");
|
||||
// return Result.FAIL;
|
||||
// }
|
||||
// else
|
||||
{
|
||||
int time = (int)(PmDevice.RecipeRunningInfo.RecipeStepList[_currentStepNumber].StepTime * 1000 - _curStepElpasedTimeBeforePaused);// (int)PMDevice.RecipeRunningInfo.RecipeStepList[_currentStepNumber].StepTime * 1000;
|
||||
|
||||
|
|
|
@ -1573,7 +1573,7 @@ namespace SicPM2.Routines
|
|||
},
|
||||
() =>
|
||||
{
|
||||
return Math.Abs(_IoThrottle.PressureSetpoint - pressure) <= 0.1;
|
||||
return Math.Abs(_IoThrottle.PressureSetpoint - pressure) <= 1;
|
||||
},
|
||||
timeout * 1000);
|
||||
|
||||
|
|
|
@ -25,7 +25,8 @@ namespace SicPM2.Routines
|
|||
SetBlockOff,
|
||||
EnableRotation,
|
||||
EnableHeater,
|
||||
SetRotation1,
|
||||
SetRotation1,
|
||||
WaitRotation1,
|
||||
SetTC1Mode,
|
||||
SetTC1Ratio,
|
||||
SetTC1Ref,
|
||||
|
@ -138,14 +139,16 @@ namespace SicPM2.Routines
|
|||
{
|
||||
try
|
||||
{
|
||||
EnableRotation((int)RoutineStep.EnableRotation, 5);
|
||||
SetRotationValveAndNoWait((int)RoutineStep.SetRotation1, _rotationSpeed);
|
||||
|
||||
TimeDelay((int)RoutineStep.TimeDelay1, 5);
|
||||
|
||||
if (!hasWafer)
|
||||
{
|
||||
SetConfinementRingUpAndWait((int)RoutineStep.SetServoUp, 30);
|
||||
}
|
||||
|
||||
SetRotationValveAndNoWait((int)RoutineStep.SetRotation1, _rotationSpeed);
|
||||
ExecuteRoutine((int)RoutineStep.SetChamberPressure, _pmServoToPressure);
|
||||
|
||||
TimeDelay((int)RoutineStep.TimeDelay8, 1);
|
||||
|
||||
if (_psuHeatEnable && _needEnableHeat)
|
||||
|
@ -168,7 +171,7 @@ namespace SicPM2.Routines
|
|||
SetSCRHeatRatio((int)RoutineStep.SetTC2Ratio, _scrL1Ratio, _scrL2Ratio, _scrL3Ratio);
|
||||
}
|
||||
|
||||
//SetRotationValve((int)RoutineStep.SetRotation1, _rotationSpeed, true, _rotationSpeed/2);
|
||||
WaitRotationValve((int)RoutineStep.WaitRotation1, _rotationSpeed, true, _rotationSpeed / 2);
|
||||
}
|
||||
catch (RoutineBreakException)
|
||||
{
|
||||
|
|
|
@ -31,6 +31,10 @@ namespace SicPM2.Routines
|
|||
SetGroupK,
|
||||
SetGroupD,
|
||||
SetGroupG,
|
||||
VentPumpClose,
|
||||
SetGroupV25,
|
||||
|
||||
TimeDelay1,
|
||||
}
|
||||
|
||||
private int _heatTimeOut = 5;
|
||||
|
@ -87,6 +91,9 @@ namespace SicPM2.Routines
|
|||
//所有PC设定为默认值
|
||||
SetPcToDefault((int)RoutineStep.SetPC, _lstPcList);
|
||||
|
||||
//等待MFC等流量
|
||||
TimeDelay((int)RoutineStep.TimeDelay1, Math.Max(_mfc2to40RampTime, _mfc1to16RampTime));
|
||||
|
||||
//打开V32
|
||||
SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout);
|
||||
|
||||
|
@ -105,11 +112,12 @@ namespace SicPM2.Routines
|
|||
SetIoValueByGroup((int)RoutineStep.SetGroupD, IoGroupName.D, true, _IoValueOpenCloseTimeout);
|
||||
SetIoValueByGroup((int)RoutineStep.SetGroupG, IoGroupName.G, true, _IoValueOpenCloseTimeout);
|
||||
|
||||
////打开V65
|
||||
//SetIoValueByGroup((int)RoutineStep.SetV65, IoGroupName.V65, true, _IoValueOpenCloseTimeout);
|
||||
|
||||
//打开V68
|
||||
SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout);
|
||||
|
||||
//关闭V72,打开V25
|
||||
SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout);
|
||||
SetIoValueByGroup((int)RoutineStep.SetGroupV25, IoGroupName.V25, true, _IoValueOpenCloseTimeout);
|
||||
}
|
||||
|
||||
catch (RoutineBreakException)
|
||||
|
|
|
@ -121,6 +121,7 @@ namespace SicPM2.Routines
|
|||
CheckFinal2Open,
|
||||
CheckTvOpen,
|
||||
SetRotation2,
|
||||
WaitRotation1,
|
||||
SetGroupV25,
|
||||
SetScrReset,
|
||||
CheckEpv2Open,
|
||||
|
@ -409,7 +410,7 @@ namespace SicPM2.Routines
|
|||
SetSCREnable((int)RoutineStep.CloseTC2, false, 5);
|
||||
}
|
||||
|
||||
WaitRotationValve((int)RoutineStep.SetRotation2, _rotationSpeed, true, 300);
|
||||
WaitRotationValve((int)RoutineStep.WaitRotation1, _rotationSpeed, true, 300);
|
||||
}
|
||||
|
||||
catch (RoutineBreakException)
|
||||
|
|
|
@ -138,8 +138,8 @@ namespace SicPM2.Routines
|
|||
_pmPressureMaxDiff = SC.GetValue<double>($"PM.{Module}.ThrottlePressureMaxDiff");
|
||||
_throttleTimeout = SC.GetValue<int>($"PM.{Module}.ThrottlePressureTimeout");
|
||||
|
||||
_vacPumpBasePressure = SC.GetValue<double>($"PM.{Module}.VacIdle.PumpPressure");
|
||||
_routineTimeOut = SC.GetValue<int>($"PM.{Module}.VacIdle.RoutineTimeOut");
|
||||
_vacPumpBasePressure = SC.GetValue<double>($"PM.{Module}.Pump.PumpPressure");
|
||||
_routineTimeOut = SC.GetValue<int>($"PM.{Module}.Pump.RoutineTimeOut");
|
||||
|
||||
if (!_pmIoInterLock.SetPMVacIdleRountingRunning(true, out var reason))
|
||||
{
|
||||
|
|
|
@ -3,109 +3,109 @@
|
|||
<roles>
|
||||
<!--2:read and write-->
|
||||
<roleItem id="0" name="Manager" autologout="1" logouttime="20">
|
||||
Header,3;Overview,3;TM,3;EFEM,3;Device,3;ioPlatform,3;LeakCheck,3;Sequence,3;Recipe,3;EventLog,3;
|
||||
RealTimeCharting,3;WaferHistory,1;DataHistory,3;Charting,1;Config,3;Account,3;Role,3;Runtime,3;Alarm,3;mainPM1,3;processPM1,3;ioPM1,3;motionPM1,3;heaterPM1,3;
|
||||
alarmPM1,3;MFCFlowPM1,3;mainPM2,3;processPM2,3;ioPM2,3;motionPM2,3;heaterPM2,3;alarmPM2,3;MFCFlowPM2,3;
|
||||
Step,3;Name,3;Time,3;Growth Rate,3;1. Ar/H2 Switch,3;2. SH Total Flow,3;3. Carray Gas Flow (M40),3;4. SH Total Flow Split Ratio,3;5. Flow Set Mode,3;6. Pressure Set,3;7. Rotation Set,3;
|
||||
8. PSU Control Mode,3;9. PSU Set Mode,3;10. SCR Control Mode,3;11. SCR Set Mode,3;12. PSU Inner Temp Set,3;13. PSU Middle Temp Set,3;14. PSU Outer Temp Set,3;
|
||||
15. SCR Temp Set,3;16. PSU Inner Ratio Set,3;17. PSU Middle Ratio Set,3;18. PSU Outer Ratio Set,3;19. SCR Upper Ratio Set,3;20. SCR Middle Ratio Set,3;21. SCR Lower Ratio Set,3;
|
||||
22. Si Source Total Flow,3;23. SiH4 Flow Mode,3;24. SiH4 Flow (M14),3;25. TCS Flow Mode,3;26. TCS Bubb Low Flow (M11),3;27. TCS Bubb High Flow (M10),3;
|
||||
28. TCS Push Flow (M12),3;29. TCS Bubb Pressure (PC3),3;30. HCl Flow Mode,3;31. HCl Flow (M13),3;32. Si Source Split Ratio,3;33. Si Source Push Pressure (PC6),3;
|
||||
34. Si Source Inner Flow (M23),3;35. Si Source Middle Flow (M22),3;36. Si Source Outer Flow (M9),3;37. C Source Total Flow,3;38. C2H4 Flow Mode,3;39. C2H4 Flow (M16),3;
|
||||
42. C Source Split Ratio,3;43. C Source Push Pressure (PC7),3;44. C Source Inner Flow (M26),3;45. C Source Middle Flow (M25),3;46. C Source Outer Flow (M15),3;
|
||||
47. Dope Total Flow,3;48. N2 Flow Mode,3;49. N2 Actual Flow,3;50. N2 Low Flow (M4),3;51. Dilut Flow For N2 (M3),3;52. Diluted N2 Flow (M6),3;
|
||||
53. N2 Post Dilut Pressure (PC1),3;54. N2 High Flow Mode,3;55. N2 High Flow (M5),3;56. TMA Flow Mode,3;57. TMA Bubb Flow (M7),3;58. TMA Push Flow (M8),3;
|
||||
59. TMA Bubb Pressure (PC2),3;60. Dope Split Ratio,3;61. Dope Push Pressure (PC5),3;62. Dope Inner Flow (M20),3;63. Dope Middle Flow (M19),3;64. Dope Outer Flow (M2),3;
|
||||
65. SH Push Total Flow,3;66. SH Inner Flow,3;67. SH Middle Flow,3;68. SH Outer Flow,3;69. Inner Push Flow (M29),3;70. Middle Push Flow (M31),3;
|
||||
71. Outer Push Flow (M28),3;72. SH Purge Flow (M27),3;73. Optic Purge Flow (M33),3;74. GasRing Purge Flow (M32),3;75. Chamber Purge Flow (M35),3;
|
||||
76. Rotation-Up Purge Flow (M36),3;77. Shutter Purge Flow (M37),3;78. Heater-WF Purge Flow (M38),3;79. Total Vent Flow,3;80. Vent Push Flow (M1),3;
|
||||
81. Vent Pre-Exhaust Pressure (PC4),3;
|
||||
Operation.Overview.Operation,3;Operation.Overview.RunningMode,3;PM1.Main.ReactorStatus,3;PM1.Main.ReactorService,3;PM1.Process.Steps,3;Platform.Mainframe.PM1,3;
|
||||
Platform.Mainframe.Buffer,3;Platform.Mainframe.LL,3;Platform.Mainframe.TM,3;Platform.Mainframe.PreHeat,3;
|
||||
Recipe.Behaviour.AllowEditCellAccessPerm,3;Recipe.Behaviour.ShowValuesInRecipeEditor,3;Recipe.Behaviour.ShowValueInProcessView,3;Recipe.Behaviour.AllowSaveInProcessView,3;Recipe.Behaviour.AllowRipInProcessView,3;
|
||||
Step1,3;Step2,3;Step3,3;Step4,3;Step5,3;Step6,3;Step7,3;Step8,3;
|
||||
Step9,3;Step10,3;Step11,3;Step12,3;Step13,3;Step14,3;Step15,3;Step16,3;Step17,3;Step18,3;Step19,3;Step20,3;Step21,3;Step22,3;Step23,3;Step24,3;Step25,3;Step26,3;Step27,3;
|
||||
Step28,3;Step29,3;Step30,3;Step31,3;Step32,3;Step33,3;Step34,3;Step35,3;Step36,3;Step37,3;Step38,3;Step39,3;Step40,3;Step41,3;Step42,3;Step43,3;Step44,3;Step45,3;Step46,3;
|
||||
Step47,3;Step48,3;Step49,3;Step50,3;
|
||||
</roleItem>
|
||||
Header,3;Overview,3;TM,3;Device,3;ioPlatform,3;LeakCheck,3;Sequence,3;Recipe,3;EventLog,3;ProcessHistory,3;RealTimeCharting,3;DataHistory,3;JobList,3;
|
||||
Charting,3;Config,3;Account,3;Role,3;Runtime,3;Alarm,3;mainPM1,3;processPM1,3;ioPM1,3;motionPM1,3;heaterPM1,3;alarmPM1,3;MFCFlowPM1,3;mainPM2,3;
|
||||
processPM2,3;ioPM2,3;motionPM2,3;heaterPM2,3;alarmPM2,3;MFCFlowPM2,3;Uid,3;Step,3;Name,3;Time,3;Growth Rate,3;1. Ar/H2 Switch,3;2. SH Total Flow,3;
|
||||
3. Carray Gas Flow (M40),3;4. SH Total Flow Split Ratio,3;5. Flow Set Mode,3;6. Pressure Set,3;7. Rotation Set,3;8. PSU Control Mode,3;9. PSU Set Mode,3;
|
||||
10. SCR Control Mode,3;11. SCR Set Mode,3;12. PSU Inner Temp Set,3;13. PSU Middle Temp Set,3;14. PSU Outer Temp Set,3;15. SCR Temp Set,3;
|
||||
16. PSU Inner Ratio Set,3;17. PSU Middle Ratio Set,3;18. PSU Outer Ratio Set,3;19. SCR Upper Ratio Set,3;20. SCR Middle Ratio Set,3;21. SCR Lower Ratio Set,3;
|
||||
22. Si Source Total Flow,3;23. SiH4 Flow Mode,3;24. SiH4 Flow (M14),3;25. TCS Flow Mode,3;26. TCS Bubb Low Flow (M11),3;27. TCS Bubb High Flow (M10),3;
|
||||
28. TCS Push Flow (M12),3;29. TCS Bubb Pressure (PC3),3;30. HCl Flow Mode,3;31. HCl Flow (M13),3;32. Si Source Split Ratio,3;33. Si Source Push Pressure (PC6),3;
|
||||
34. Si Source Inner Flow (M23),3;35. Si Source Middle Flow (M22),3;36. Si Source Outer Flow (M9),3;37. C Source Total Flow,3;38. C2H4 Flow Mode,3;
|
||||
39. C2H4 Flow (M16),3;42. C Source Split Ratio,3;43. C Source Push Pressure (PC7),3;44. C Source Inner Flow (M26),3;45. C Source Middle Flow (M25),3;
|
||||
46. C Source Outer Flow (M15),3;47. Dope Total Flow,3;48. N2 Flow Mode,3;49. N2 Actual Flow,3;50. N2 Low Flow (M4),3;51. Dilut Flow For N2 (M3),3;
|
||||
52. Diluted N2 Flow (M6),3;53. N2 Post Dilut Pressure (PC1),3;54. N2 High Flow Mode,3;55. N2 High Flow (M5),3;56. TMA Flow Mode,3;57. TMA Bubb Flow (M7),3;
|
||||
58. TMA Push Flow (M8),3;59. TMA Bubb Pressure (PC2),3;60. Dope Split Ratio,3;61. Dope Push Pressure (PC5),3;62. Dope Inner Flow (M20),3;
|
||||
63. Dope Middle Flow (M19),3;64. Dope Outer Flow (M2),3;65. SH Push Total Flow,3;66. SH Inner Flow,3;67. SH Middle Flow,3;68. SH Outer Flow,3;
|
||||
69. Inner Push Flow (M29),3;70. Middle Push Flow (M31),3;71. Outer Push Flow (M28),3;72. SH Purge Flow (M27),3;73. Optic Purge Flow (M33),3;
|
||||
74. GasRing Purge Flow (M32),3;75. Chamber Purge Flow (M35),3;76. Rotation-Up Purge Flow (M36),3;77. Shutter Purge Flow (M37),3;
|
||||
78. Heater-WF Purge Flow (M38),3;79. Total Vent Flow,3;80. Vent Push Flow (M1),3;81. Vent Pre-Exhaust Pressure (PC4),3;Operation.Overview.Operation,3;
|
||||
Operation.Overview.RunningMode,3;PM1.Main.ReactorStatus,3;PM1.Main.ReactorService,3;PM1.Process.Steps,3;Platform.Mainframe.PM1,3;
|
||||
Platform.Mainframe.Buffer,3;Platform.Mainframe.LL,3;Platform.Mainframe.TM,3;Platform.Mainframe.PreHeat,3;Recipe.Behaviour.AllowEditCellAccessPerm,3;
|
||||
Recipe.Behaviour.ShowValuesInRecipeEditor,3;Recipe.Behaviour.ShowValueInProcessView,3;Recipe.Behaviour.AllowSaveInProcessView,3;
|
||||
Recipe.Behaviour.AllowRipInProcessView,3;Step1,3;Step2,3;Step3,3;Step4,3;Step5,3;Step6,3;Step7,3;Step8,3;Step9,3;Step10,3;Step11,3;Step12,3;Step13,3;Step14,3;
|
||||
Step15,3;Step16,3;Step17,3;Step18,3;Step19,3;Step20,3;Step21,3;Step22,3;Step23,3;Step24,3;Step25,3;Step26,3;Step27,3;Step28,3;Step29,3;Step30,3;Step31,3;
|
||||
Step32,3;Step33,3;Step34,3;Step35,3;Step36,3;Step37,3;Step38,3;Step39,3;Step40,3;Step41,3;Step42,3;Step43,3;Step44,3;Step45,3;Step46,3;Step47,3;Step48,3;
|
||||
Step49,3;Step50,3;
|
||||
</roleItem>
|
||||
<roleItem id="1" name="Engineer" autologout="1" logouttime="20">
|
||||
Header,3;Overview,3;TM,3;EFEM,3;Device,3;ioPlatform,3;LeakCheck,3;Sequence,3;Recipe,3;EventLog,3;
|
||||
RealTimeCharting,3;WaferHistory,1;DataHistory,3;Charting,1;Config,3;Account,3;Role,3;Runtime,3;Alarm,3;mainPM1,3;processPM1,3;ioPM1,3;motionPM1,3;heaterPM1,3;
|
||||
alarmPM1,3;MFCFlowPM1,3;mainPM2,3;processPM2,3;ioPM2,3;motionPM2,3;heaterPM2,3;alarmPM2,3;MFCFlowPM2,3;
|
||||
Step,3;Name,3;Time,3;Growth Rate,3;1. Ar/H2 Switch,3;2. SH Total Flow,3;3. Carray Gas Flow (M40),3;4. SH Total Flow Split Ratio,3;5. Flow Set Mode,3;6. Pressure Set,3;7. Rotation Set,3;
|
||||
8. PSU Control Mode,3;9. PSU Set Mode,3;10. SCR Control Mode,3;11. SCR Set Mode,3;12. PSU Inner Temp Set,3;13. PSU Middle Temp Set,3;14. PSU Outer Temp Set,3;
|
||||
15. SCR Temp Set,3;16. PSU Inner Ratio Set,3;17. PSU Middle Ratio Set,3;18. PSU Outer Ratio Set,3;19. SCR Upper Ratio Set,3;20. SCR Middle Ratio Set,3;21. SCR Lower Ratio Set,3;
|
||||
22. Si Source Total Flow,3;23. SiH4 Flow Mode,3;24. SiH4 Flow (M14),3;25. TCS Flow Mode,3;26. TCS Bubb Low Flow (M11),3;27. TCS Bubb High Flow (M10),3;
|
||||
28. TCS Push Flow (M12),3;29. TCS Bubb Pressure (PC3),3;30. HCl Flow Mode,3;31. HCl Flow (M13),3;32. Si Source Split Ratio,3;33. Si Source Push Pressure (PC6),3;
|
||||
34. Si Source Inner Flow (M23),3;35. Si Source Middle Flow (M22),3;36. Si Source Outer Flow (M9),3;37. C Source Total Flow,3;38. C2H4 Flow Mode,3;39. C2H4 Flow (M16),3;
|
||||
42. C Source Split Ratio,3;43. C Source Push Pressure (PC7),3;44. C Source Inner Flow (M26),3;45. C Source Middle Flow (M25),3;46. C Source Outer Flow (M15),3;
|
||||
47. Dope Total Flow,3;48. N2 Flow Mode,3;49. N2 Actual Flow,3;50. N2 Low Flow (M4),3;51. Dilut Flow For N2 (M3),3;52. Diluted N2 Flow (M6),3;
|
||||
53. N2 Post Dilut Pressure (PC1),3;54. N2 High Flow Mode,3;55. N2 High Flow (M5),3;56. TMA Flow Mode,3;57. TMA Bubb Flow (M7),3;58. TMA Push Flow (M8),3;
|
||||
59. TMA Bubb Pressure (PC2),3;60. Dope Split Ratio,3;61. Dope Push Pressure (PC5),3;62. Dope Inner Flow (M20),3;63. Dope Middle Flow (M19),3;64. Dope Outer Flow (M2),3;
|
||||
65. SH Push Total Flow,3;66. SH Inner Flow,3;67. SH Middle Flow,3;68. SH Outer Flow,3;69. Inner Push Flow (M29),3;70. Middle Push Flow (M31),3;
|
||||
71. Outer Push Flow (M28),3;72. SH Purge Flow (M27),3;73. Optic Purge Flow (M33),3;74. GasRing Purge Flow (M32),3;75. Chamber Purge Flow (M35),3;
|
||||
76. Rotation-Up Purge Flow (M36),3;77. Shutter Purge Flow (M37),3;78. Heater-WF Purge Flow (M38),3;79. Total Vent Flow,3;80. Vent Push Flow (M1),3;
|
||||
81. Vent Pre-Exhaust Pressure (PC4),3;
|
||||
Operation.Overview.Operation,3;Operation.Overview.RunningMode,3;PM1.Main.ReactorStatus,3;PM1.Main.ReactorService,3;PM1.Process.Steps,3;Platform.Mainframe.PM1,3;
|
||||
Platform.Mainframe.Buffer,3;Platform.Mainframe.LL,3;Platform.Mainframe.TM,3;Platform.Mainframe.PreHeat,3;
|
||||
Recipe.Behaviour.AllowEditCellAccessPerm,3;Recipe.Behaviour.ShowValuesInRecipeEditor,3;Recipe.Behaviour.ShowValueInProcessView,3;Recipe.Behaviour.AllowSaveInProcessView,3;Recipe.Behaviour.AllowRipInProcessView,3;
|
||||
Step1,3;Step2,3;Step3,3;Step4,3;Step5,3;Step6,3;Step7,3;Step8,3;
|
||||
Step9,3;Step10,3;Step11,3;Step12,3;Step13,3;Step14,3;Step15,3;Step16,3;Step17,3;Step18,3;Step19,3;Step20,3;Step21,3;Step22,3;Step23,3;Step24,3;Step25,3;Step26,3;Step27,3;
|
||||
Step28,3;Step29,3;Step30,3;Step31,3;Step32,3;Step33,3;Step34,3;Step35,3;Step36,3;Step37,3;Step38,3;Step39,3;Step40,3;Step41,3;Step42,3;Step43,3;Step44,3;Step45,3;Step46,3;
|
||||
Step47,3;Step48,3;Step49,3;Step50,3;
|
||||
</roleItem>
|
||||
Header,3;Overview,3;TM,3;Device,3;ioPlatform,3;LeakCheck,3;Sequence,3;Recipe,3;EventLog,3;ProcessHistory,3;RealTimeCharting,3;DataHistory,3;JobList,3;
|
||||
Charting,3;Config,3;Account,3;Role,3;Runtime,3;Alarm,3;mainPM1,3;processPM1,3;ioPM1,3;motionPM1,3;heaterPM1,3;alarmPM1,3;MFCFlowPM1,3;mainPM2,3;
|
||||
processPM2,3;ioPM2,3;motionPM2,3;heaterPM2,3;alarmPM2,3;MFCFlowPM2,3;Uid,3;Step,3;Name,3;Time,3;Growth Rate,3;1. Ar/H2 Switch,3;2. SH Total Flow,3;
|
||||
3. Carray Gas Flow (M40),3;4. SH Total Flow Split Ratio,3;5. Flow Set Mode,3;6. Pressure Set,3;7. Rotation Set,3;8. PSU Control Mode,3;9. PSU Set Mode,3;
|
||||
10. SCR Control Mode,3;11. SCR Set Mode,3;12. PSU Inner Temp Set,3;13. PSU Middle Temp Set,3;14. PSU Outer Temp Set,3;15. SCR Temp Set,3;
|
||||
16. PSU Inner Ratio Set,3;17. PSU Middle Ratio Set,3;18. PSU Outer Ratio Set,3;19. SCR Upper Ratio Set,3;20. SCR Middle Ratio Set,3;21. SCR Lower Ratio Set,3;
|
||||
22. Si Source Total Flow,3;23. SiH4 Flow Mode,3;24. SiH4 Flow (M14),3;25. TCS Flow Mode,3;26. TCS Bubb Low Flow (M11),3;27. TCS Bubb High Flow (M10),3;
|
||||
28. TCS Push Flow (M12),3;29. TCS Bubb Pressure (PC3),3;30. HCl Flow Mode,3;31. HCl Flow (M13),3;32. Si Source Split Ratio,3;33. Si Source Push Pressure (PC6),3;
|
||||
34. Si Source Inner Flow (M23),3;35. Si Source Middle Flow (M22),3;36. Si Source Outer Flow (M9),3;37. C Source Total Flow,3;38. C2H4 Flow Mode,3;
|
||||
39. C2H4 Flow (M16),3;42. C Source Split Ratio,3;43. C Source Push Pressure (PC7),3;44. C Source Inner Flow (M26),3;45. C Source Middle Flow (M25),3;
|
||||
46. C Source Outer Flow (M15),3;47. Dope Total Flow,3;48. N2 Flow Mode,3;49. N2 Actual Flow,3;50. N2 Low Flow (M4),3;51. Dilut Flow For N2 (M3),3;
|
||||
52. Diluted N2 Flow (M6),3;53. N2 Post Dilut Pressure (PC1),3;54. N2 High Flow Mode,3;55. N2 High Flow (M5),3;56. TMA Flow Mode,3;57. TMA Bubb Flow (M7),3;
|
||||
58. TMA Push Flow (M8),3;59. TMA Bubb Pressure (PC2),3;60. Dope Split Ratio,3;61. Dope Push Pressure (PC5),3;62. Dope Inner Flow (M20),3;
|
||||
63. Dope Middle Flow (M19),3;64. Dope Outer Flow (M2),3;65. SH Push Total Flow,3;66. SH Inner Flow,3;67. SH Middle Flow,3;68. SH Outer Flow,3;
|
||||
69. Inner Push Flow (M29),3;70. Middle Push Flow (M31),3;71. Outer Push Flow (M28),3;72. SH Purge Flow (M27),3;73. Optic Purge Flow (M33),3;
|
||||
74. GasRing Purge Flow (M32),3;75. Chamber Purge Flow (M35),3;76. Rotation-Up Purge Flow (M36),3;77. Shutter Purge Flow (M37),3;
|
||||
78. Heater-WF Purge Flow (M38),3;79. Total Vent Flow,3;80. Vent Push Flow (M1),3;81. Vent Pre-Exhaust Pressure (PC4),3;Operation.Overview.Operation,3;
|
||||
Operation.Overview.RunningMode,3;PM1.Main.ReactorStatus,3;PM1.Main.ReactorService,3;PM1.Process.Steps,3;Platform.Mainframe.PM1,3;
|
||||
Platform.Mainframe.Buffer,3;Platform.Mainframe.LL,3;Platform.Mainframe.TM,3;Platform.Mainframe.PreHeat,3;Recipe.Behaviour.AllowEditCellAccessPerm,3;
|
||||
Recipe.Behaviour.ShowValuesInRecipeEditor,3;Recipe.Behaviour.ShowValueInProcessView,3;Recipe.Behaviour.AllowSaveInProcessView,3;
|
||||
Recipe.Behaviour.AllowRipInProcessView,3;Step1,3;Step2,3;Step3,3;Step4,3;Step5,3;Step6,3;Step7,3;Step8,3;Step9,3;Step10,3;Step11,3;Step12,3;Step13,3;Step14,3;
|
||||
Step15,3;Step16,3;Step17,3;Step18,3;Step19,3;Step20,3;Step21,3;Step22,3;Step23,3;Step24,3;Step25,3;Step26,3;Step27,3;Step28,3;Step29,3;Step30,3;Step31,3;
|
||||
Step32,3;Step33,3;Step34,3;Step35,3;Step36,3;Step37,3;Step38,3;Step39,3;Step40,3;Step41,3;Step42,3;Step43,3;Step44,3;Step45,3;Step46,3;Step47,3;Step48,3;
|
||||
Step49,3;Step50,3;
|
||||
</roleItem>
|
||||
<roleItem id="2" name="Technician" autologout="1" logouttime="20">
|
||||
Header,3;Overview,3;TM,3;EFEM,3;Device,3;ioPlatform,3;LeakCheck,3;Sequence,3;Recipe,3;EventLog,3;
|
||||
RealTimeCharting,3;WaferHistory,1;DataHistory,3;Charting,1;Config,3;Account,3;Role,3;Runtime,3;Alarm,3;mainPM1,3;processPM1,3;ioPM1,3;motionPM1,3;heaterPM1,3;
|
||||
alarmPM1,3;MFCFlowPM1,3;mainPM2,3;processPM2,3;ioPM2,3;motionPM2,3;heaterPM2,3;alarmPM2,3;MFCFlowPM2,3;
|
||||
Step,3;Name,3;Time,3;Growth Rate,3;1. Ar/H2 Switch,3;2. SH Total Flow,3;3. Carray Gas Flow (M40),3;4. SH Total Flow Split Ratio,3;5. Flow Set Mode,3;6. Pressure Set,3;7. Rotation Set,3;
|
||||
8. PSU Control Mode,3;9. PSU Set Mode,3;10. SCR Control Mode,3;11. SCR Set Mode,3;12. PSU Inner Temp Set,3;13. PSU Middle Temp Set,3;14. PSU Outer Temp Set,3;
|
||||
15. SCR Temp Set,3;16. PSU Inner Ratio Set,3;17. PSU Middle Ratio Set,3;18. PSU Outer Ratio Set,3;19. SCR Upper Ratio Set,3;20. SCR Middle Ratio Set,3;21. SCR Lower Ratio Set,3;
|
||||
22. Si Source Total Flow,3;23. SiH4 Flow Mode,3;24. SiH4 Flow (M14),3;25. TCS Flow Mode,3;26. TCS Bubb Low Flow (M11),3;27. TCS Bubb High Flow (M10),3;
|
||||
28. TCS Push Flow (M12),3;29. TCS Bubb Pressure (PC3),3;30. HCl Flow Mode,3;31. HCl Flow (M13),3;32. Si Source Split Ratio,3;33. Si Source Push Pressure (PC6),3;
|
||||
34. Si Source Inner Flow (M23),3;35. Si Source Middle Flow (M22),3;36. Si Source Outer Flow (M9),3;37. C Source Total Flow,3;38. C2H4 Flow Mode,3;39. C2H4 Flow (M16),3;
|
||||
42. C Source Split Ratio,3;43. C Source Push Pressure (PC7),3;44. C Source Inner Flow (M26),3;45. C Source Middle Flow (M25),3;46. C Source Outer Flow (M15),3;
|
||||
47. Dope Total Flow,3;48. N2 Flow Mode,3;49. N2 Actual Flow,3;50. N2 Low Flow (M4),3;51. Dilut Flow For N2 (M3),3;52. Diluted N2 Flow (M6),3;
|
||||
53. N2 Post Dilut Pressure (PC1),3;54. N2 High Flow Mode,3;55. N2 High Flow (M5),3;56. TMA Flow Mode,3;57. TMA Bubb Flow (M7),3;58. TMA Push Flow (M8),3;
|
||||
59. TMA Bubb Pressure (PC2),3;60. Dope Split Ratio,3;61. Dope Push Pressure (PC5),3;62. Dope Inner Flow (M20),3;63. Dope Middle Flow (M19),3;64. Dope Outer Flow (M2),3;
|
||||
65. SH Push Total Flow,3;66. SH Inner Flow,3;67. SH Middle Flow,3;68. SH Outer Flow,3;69. Inner Push Flow (M29),3;70. Middle Push Flow (M31),3;
|
||||
71. Outer Push Flow (M28),3;72. SH Purge Flow (M27),3;73. Optic Purge Flow (M33),3;74. GasRing Purge Flow (M32),3;75. Chamber Purge Flow (M35),3;
|
||||
76. Rotation-Up Purge Flow (M36),3;77. Shutter Purge Flow (M37),3;78. Heater-WF Purge Flow (M38),3;79. Total Vent Flow,3;80. Vent Push Flow (M1),3;
|
||||
81. Vent Pre-Exhaust Pressure (PC4),3;
|
||||
Operation.Overview.Operation,3;Operation.Overview.RunningMode,3;PM1.Main.ReactorStatus,3;PM1.Main.ReactorService,3;PM1.Process.Steps,3;Platform.Mainframe.PM1,3;
|
||||
Platform.Mainframe.Buffer,3;Platform.Mainframe.LL,3;Platform.Mainframe.TM,3;Platform.Mainframe.PreHeat,3;
|
||||
Recipe.Behaviour.AllowEditCellAccessPerm,3;Recipe.Behaviour.ShowValuesInRecipeEditor,3;Recipe.Behaviour.ShowValueInProcessView,3;Recipe.Behaviour.AllowSaveInProcessView,3;Recipe.Behaviour.AllowRipInProcessView,3;
|
||||
Step1,3;Step2,3;Step3,3;Step4,3;Step5,3;Step6,3;Step7,3;Step8,3;
|
||||
Step9,3;Step10,3;Step11,3;Step12,3;Step13,3;Step14,3;Step15,3;Step16,3;Step17,3;Step18,3;Step19,3;Step20,3;Step21,3;Step22,3;Step23,3;Step24,3;Step25,3;Step26,3;Step27,3;
|
||||
Step28,3;Step29,3;Step30,3;Step31,3;Step32,3;Step33,3;Step34,3;Step35,3;Step36,3;Step37,3;Step38,3;Step39,3;Step40,3;Step41,3;Step42,3;Step43,3;Step44,3;Step45,3;Step46,3;
|
||||
Step47,3;Step48,3;Step49,3;Step50,3;
|
||||
</roleItem>
|
||||
Header,3;Overview,3;TM,3;Device,3;ioPlatform,3;LeakCheck,3;Sequence,3;Recipe,3;EventLog,3;ProcessHistory,3;RealTimeCharting,3;DataHistory,3;JobList,3;
|
||||
Charting,3;Config,3;Account,3;Role,3;Runtime,3;Alarm,3;mainPM1,3;processPM1,3;ioPM1,3;motionPM1,3;heaterPM1,3;alarmPM1,3;MFCFlowPM1,3;mainPM2,3;
|
||||
processPM2,3;ioPM2,3;motionPM2,3;heaterPM2,3;alarmPM2,3;MFCFlowPM2,3;Uid,3;Step,3;Name,3;Time,3;Growth Rate,3;1. Ar/H2 Switch,3;2. SH Total Flow,3;
|
||||
3. Carray Gas Flow (M40),3;4. SH Total Flow Split Ratio,3;5. Flow Set Mode,3;6. Pressure Set,3;7. Rotation Set,3;8. PSU Control Mode,3;9. PSU Set Mode,3;
|
||||
10. SCR Control Mode,3;11. SCR Set Mode,3;12. PSU Inner Temp Set,3;13. PSU Middle Temp Set,3;14. PSU Outer Temp Set,3;15. SCR Temp Set,3;
|
||||
16. PSU Inner Ratio Set,3;17. PSU Middle Ratio Set,3;18. PSU Outer Ratio Set,3;19. SCR Upper Ratio Set,3;20. SCR Middle Ratio Set,3;21. SCR Lower Ratio Set,3;
|
||||
22. Si Source Total Flow,3;23. SiH4 Flow Mode,3;24. SiH4 Flow (M14),3;25. TCS Flow Mode,3;26. TCS Bubb Low Flow (M11),3;27. TCS Bubb High Flow (M10),3;
|
||||
28. TCS Push Flow (M12),3;29. TCS Bubb Pressure (PC3),3;30. HCl Flow Mode,3;31. HCl Flow (M13),3;32. Si Source Split Ratio,3;33. Si Source Push Pressure (PC6),3;
|
||||
34. Si Source Inner Flow (M23),3;35. Si Source Middle Flow (M22),3;36. Si Source Outer Flow (M9),3;37. C Source Total Flow,3;38. C2H4 Flow Mode,3;
|
||||
39. C2H4 Flow (M16),3;42. C Source Split Ratio,3;43. C Source Push Pressure (PC7),3;44. C Source Inner Flow (M26),3;45. C Source Middle Flow (M25),3;
|
||||
46. C Source Outer Flow (M15),3;47. Dope Total Flow,3;48. N2 Flow Mode,3;49. N2 Actual Flow,3;50. N2 Low Flow (M4),3;51. Dilut Flow For N2 (M3),3;
|
||||
52. Diluted N2 Flow (M6),3;53. N2 Post Dilut Pressure (PC1),3;54. N2 High Flow Mode,3;55. N2 High Flow (M5),3;56. TMA Flow Mode,3;57. TMA Bubb Flow (M7),3;
|
||||
58. TMA Push Flow (M8),3;59. TMA Bubb Pressure (PC2),3;60. Dope Split Ratio,3;61. Dope Push Pressure (PC5),3;62. Dope Inner Flow (M20),3;
|
||||
63. Dope Middle Flow (M19),3;64. Dope Outer Flow (M2),3;65. SH Push Total Flow,3;66. SH Inner Flow,3;67. SH Middle Flow,3;68. SH Outer Flow,3;
|
||||
69. Inner Push Flow (M29),3;70. Middle Push Flow (M31),3;71. Outer Push Flow (M28),3;72. SH Purge Flow (M27),3;73. Optic Purge Flow (M33),3;
|
||||
74. GasRing Purge Flow (M32),3;75. Chamber Purge Flow (M35),3;76. Rotation-Up Purge Flow (M36),3;77. Shutter Purge Flow (M37),3;
|
||||
78. Heater-WF Purge Flow (M38),3;79. Total Vent Flow,3;80. Vent Push Flow (M1),3;81. Vent Pre-Exhaust Pressure (PC4),3;Operation.Overview.Operation,3;
|
||||
Operation.Overview.RunningMode,3;PM1.Main.ReactorStatus,3;PM1.Main.ReactorService,3;PM1.Process.Steps,3;Platform.Mainframe.PM1,3;
|
||||
Platform.Mainframe.Buffer,3;Platform.Mainframe.LL,3;Platform.Mainframe.TM,3;Platform.Mainframe.PreHeat,3;Recipe.Behaviour.AllowEditCellAccessPerm,3;
|
||||
Recipe.Behaviour.ShowValuesInRecipeEditor,3;Recipe.Behaviour.ShowValueInProcessView,3;Recipe.Behaviour.AllowSaveInProcessView,3;
|
||||
Recipe.Behaviour.AllowRipInProcessView,3;Step1,3;Step2,3;Step3,3;Step4,3;Step5,3;Step6,3;Step7,3;Step8,3;Step9,3;Step10,3;Step11,3;Step12,3;Step13,3;Step14,3;
|
||||
Step15,3;Step16,3;Step17,3;Step18,3;Step19,3;Step20,3;Step21,3;Step22,3;Step23,3;Step24,3;Step25,3;Step26,3;Step27,3;Step28,3;Step29,3;Step30,3;Step31,3;
|
||||
Step32,3;Step33,3;Step34,3;Step35,3;Step36,3;Step37,3;Step38,3;Step39,3;Step40,3;Step41,3;Step42,3;Step43,3;Step44,3;Step45,3;Step46,3;Step47,3;Step48,3;
|
||||
Step49,3;Step50,3;
|
||||
</roleItem>
|
||||
<roleItem id="3" name="Operator" autologout="1" logouttime="20">
|
||||
Header,3;Overview,3;TM,3;EFEM,3;Device,3;ioPlatform,3;LeakCheck,3;Sequence,3;Recipe,3;EventLog,3;
|
||||
RealTimeCharting,3;WaferHistory,1;DataHistory,3;Charting,1;Config,3;Account,3;Role,3;Runtime,3;Alarm,3;mainPM1,3;processPM1,3;ioPM1,3;motionPM1,3;heaterPM1,3;
|
||||
alarmPM1,3;MFCFlowPM1,3;mainPM2,3;processPM2,3;ioPM2,3;motionPM2,3;heaterPM2,3;alarmPM2,3;MFCFlowPM2,3;
|
||||
Step,3;Name,3;Time,3;Growth Rate,3;1. Ar/H2 Switch,3;2. SH Total Flow,3;3. Carray Gas Flow (M40),3;4. SH Total Flow Split Ratio,3;5. Flow Set Mode,3;6. Pressure Set,3;7. Rotation Set,3;
|
||||
8. PSU Control Mode,3;9. PSU Set Mode,3;10. SCR Control Mode,3;11. SCR Set Mode,3;12. PSU Inner Temp Set,3;13. PSU Middle Temp Set,3;14. PSU Outer Temp Set,3;
|
||||
15. SCR Temp Set,3;16. PSU Inner Ratio Set,3;17. PSU Middle Ratio Set,3;18. PSU Outer Ratio Set,3;19. SCR Upper Ratio Set,3;20. SCR Middle Ratio Set,3;21. SCR Lower Ratio Set,3;
|
||||
22. Si Source Total Flow,3;23. SiH4 Flow Mode,3;24. SiH4 Flow (M14),3;25. TCS Flow Mode,3;26. TCS Bubb Low Flow (M11),3;27. TCS Bubb High Flow (M10),3;
|
||||
28. TCS Push Flow (M12),3;29. TCS Bubb Pressure (PC3),3;30. HCl Flow Mode,3;31. HCl Flow (M13),3;32. Si Source Split Ratio,3;33. Si Source Push Pressure (PC6),3;
|
||||
34. Si Source Inner Flow (M23),3;35. Si Source Middle Flow (M22),3;36. Si Source Outer Flow (M9),3;37. C Source Total Flow,3;38. C2H4 Flow Mode,3;39. C2H4 Flow (M16),3;
|
||||
42. C Source Split Ratio,3;43. C Source Push Pressure (PC7),3;44. C Source Inner Flow (M26),3;45. C Source Middle Flow (M25),3;46. C Source Outer Flow (M15),3;
|
||||
47. Dope Total Flow,3;48. N2 Flow Mode,3;49. N2 Actual Flow,3;50. N2 Low Flow (M4),3;51. Dilut Flow For N2 (M3),3;52. Diluted N2 Flow (M6),3;
|
||||
53. N2 Post Dilut Pressure (PC1),3;54. N2 High Flow Mode,3;55. N2 High Flow (M5),3;56. TMA Flow Mode,3;57. TMA Bubb Flow (M7),3;58. TMA Push Flow (M8),3;
|
||||
59. TMA Bubb Pressure (PC2),3;60. Dope Split Ratio,3;61. Dope Push Pressure (PC5),3;62. Dope Inner Flow (M20),3;63. Dope Middle Flow (M19),3;64. Dope Outer Flow (M2),3;
|
||||
65. SH Push Total Flow,3;66. SH Inner Flow,3;67. SH Middle Flow,3;68. SH Outer Flow,3;69. Inner Push Flow (M29),3;70. Middle Push Flow (M31),3;
|
||||
71. Outer Push Flow (M28),3;72. SH Purge Flow (M27),3;73. Optic Purge Flow (M33),3;74. GasRing Purge Flow (M32),3;75. Chamber Purge Flow (M35),3;
|
||||
76. Rotation-Up Purge Flow (M36),3;77. Shutter Purge Flow (M37),3;78. Heater-WF Purge Flow (M38),3;79. Total Vent Flow,3;80. Vent Push Flow (M1),3;
|
||||
81. Vent Pre-Exhaust Pressure (PC4),3;
|
||||
Operation.Overview.Operation,3;Operation.Overview.RunningMode,3;PM1.Main.ReactorStatus,3;PM1.Main.ReactorService,3;PM1.Process.Steps,3;Platform.Mainframe.PM1,3;
|
||||
Platform.Mainframe.Buffer,3;Platform.Mainframe.LL,3;Platform.Mainframe.TM,3;Platform.Mainframe.PreHeat,3;
|
||||
Recipe.Behaviour.AllowEditCellAccessPerm,3;Recipe.Behaviour.ShowValuesInRecipeEditor,3;Recipe.Behaviour.ShowValueInProcessView,3;Recipe.Behaviour.AllowSaveInProcessView,3;Recipe.Behaviour.AllowRipInProcessView,3;
|
||||
Step1,3;Step2,3;Step3,3;Step4,3;Step5,3;Step6,3;Step7,3;Step8,3;
|
||||
Step9,3;Step10,3;Step11,3;Step12,3;Step13,3;Step14,3;Step15,3;Step16,3;Step17,3;Step18,3;Step19,3;Step20,3;Step21,3;Step22,3;Step23,3;Step24,3;Step25,3;Step26,3;Step27,3;
|
||||
Step28,3;Step29,3;Step30,3;Step31,3;Step32,3;Step33,3;Step34,3;Step35,3;Step36,3;Step37,3;Step38,3;Step39,3;Step40,3;Step41,3;Step42,3;Step43,3;Step44,3;Step45,3;Step46,3;
|
||||
Step47,3;Step48,3;Step49,3;Step50,3;
|
||||
</roleItem>
|
||||
Header,3;Overview,3;TM,3;Device,3;ioPlatform,3;LeakCheck,3;Sequence,3;Recipe,3;EventLog,3;ProcessHistory,3;RealTimeCharting,3;DataHistory,3;JobList,3;
|
||||
Charting,3;Config,3;Account,3;Role,3;Runtime,3;Alarm,3;mainPM1,3;processPM1,3;ioPM1,3;motionPM1,3;heaterPM1,3;alarmPM1,3;MFCFlowPM1,3;mainPM2,3;
|
||||
processPM2,3;ioPM2,3;motionPM2,3;heaterPM2,3;alarmPM2,3;MFCFlowPM2,3;Uid,3;Step,3;Name,3;Time,3;Growth Rate,3;1. Ar/H2 Switch,3;2. SH Total Flow,3;
|
||||
3. Carray Gas Flow (M40),3;4. SH Total Flow Split Ratio,3;5. Flow Set Mode,3;6. Pressure Set,3;7. Rotation Set,3;8. PSU Control Mode,3;9. PSU Set Mode,3;
|
||||
10. SCR Control Mode,3;11. SCR Set Mode,3;12. PSU Inner Temp Set,3;13. PSU Middle Temp Set,3;14. PSU Outer Temp Set,3;15. SCR Temp Set,3;
|
||||
16. PSU Inner Ratio Set,3;17. PSU Middle Ratio Set,3;18. PSU Outer Ratio Set,3;19. SCR Upper Ratio Set,3;20. SCR Middle Ratio Set,3;21. SCR Lower Ratio Set,3;
|
||||
22. Si Source Total Flow,3;23. SiH4 Flow Mode,3;24. SiH4 Flow (M14),3;25. TCS Flow Mode,3;26. TCS Bubb Low Flow (M11),3;27. TCS Bubb High Flow (M10),3;
|
||||
28. TCS Push Flow (M12),3;29. TCS Bubb Pressure (PC3),3;30. HCl Flow Mode,3;31. HCl Flow (M13),3;32. Si Source Split Ratio,3;33. Si Source Push Pressure (PC6),3;
|
||||
34. Si Source Inner Flow (M23),3;35. Si Source Middle Flow (M22),3;36. Si Source Outer Flow (M9),3;37. C Source Total Flow,3;38. C2H4 Flow Mode,3;
|
||||
39. C2H4 Flow (M16),3;42. C Source Split Ratio,3;43. C Source Push Pressure (PC7),3;44. C Source Inner Flow (M26),3;45. C Source Middle Flow (M25),3;
|
||||
46. C Source Outer Flow (M15),3;47. Dope Total Flow,3;48. N2 Flow Mode,3;49. N2 Actual Flow,3;50. N2 Low Flow (M4),3;51. Dilut Flow For N2 (M3),3;
|
||||
52. Diluted N2 Flow (M6),3;53. N2 Post Dilut Pressure (PC1),3;54. N2 High Flow Mode,3;55. N2 High Flow (M5),3;56. TMA Flow Mode,3;57. TMA Bubb Flow (M7),3;
|
||||
58. TMA Push Flow (M8),3;59. TMA Bubb Pressure (PC2),3;60. Dope Split Ratio,3;61. Dope Push Pressure (PC5),3;62. Dope Inner Flow (M20),3;
|
||||
63. Dope Middle Flow (M19),3;64. Dope Outer Flow (M2),3;65. SH Push Total Flow,3;66. SH Inner Flow,3;67. SH Middle Flow,3;68. SH Outer Flow,3;
|
||||
69. Inner Push Flow (M29),3;70. Middle Push Flow (M31),3;71. Outer Push Flow (M28),3;72. SH Purge Flow (M27),3;73. Optic Purge Flow (M33),3;
|
||||
74. GasRing Purge Flow (M32),3;75. Chamber Purge Flow (M35),3;76. Rotation-Up Purge Flow (M36),3;77. Shutter Purge Flow (M37),3;
|
||||
78. Heater-WF Purge Flow (M38),3;79. Total Vent Flow,3;80. Vent Push Flow (M1),3;81. Vent Pre-Exhaust Pressure (PC4),3;Operation.Overview.Operation,3;
|
||||
Operation.Overview.RunningMode,3;PM1.Main.ReactorStatus,3;PM1.Main.ReactorService,3;PM1.Process.Steps,3;Platform.Mainframe.PM1,3;
|
||||
Platform.Mainframe.Buffer,3;Platform.Mainframe.LL,3;Platform.Mainframe.TM,3;Platform.Mainframe.PreHeat,3;Recipe.Behaviour.AllowEditCellAccessPerm,3;
|
||||
Recipe.Behaviour.ShowValuesInRecipeEditor,3;Recipe.Behaviour.ShowValueInProcessView,3;Recipe.Behaviour.AllowSaveInProcessView,3;
|
||||
Recipe.Behaviour.AllowRipInProcessView,3;Step1,3;Step2,3;Step3,3;Step4,3;Step5,3;Step6,3;Step7,3;Step8,3;Step9,3;Step10,3;Step11,3;Step12,3;Step13,3;Step14,3;
|
||||
Step15,3;Step16,3;Step17,3;Step18,3;Step19,3;Step20,3;Step21,3;Step22,3;Step23,3;Step24,3;Step25,3;Step26,3;Step27,3;Step28,3;Step29,3;Step30,3;Step31,3;
|
||||
Step32,3;Step33,3;Step34,3;Step35,3;Step36,3;Step37,3;Step38,3;Step39,3;Step40,3;Step41,3;Step42,3;Step43,3;Step44,3;Step45,3;Step46,3;Step47,3;Step48,3;
|
||||
Step49,3;Step50,3;
|
||||
</roleItem>
|
||||
</roles>
|
||||
|
||||
<users>
|
||||
|
|
|
@ -138,7 +138,7 @@
|
|||
|
||||
<configs name="Temperature_ControlMode">
|
||||
<configs name="PSUControlMode">
|
||||
<config default="Pyro" name="Default" description="Default Value" max="" min="" paramter="Pyro;Power" tag="ReadOnlySelection" unit="" type="String" visible="true"/>
|
||||
<config default="PyroAuto" name="Default" description="Default Value" max="" min="" paramter="PyroAuto;PyroFollow;Power" tag="ReadOnlySelection" unit="" type="String"/>
|
||||
</configs>
|
||||
|
||||
<configs name="PSUSetMode">
|
||||
|
@ -638,11 +638,11 @@
|
|||
<config default="Sic\Routine\Isolation" name="IsolationFileName" description="Isolation Routine文件路径" max="" min="" paramter="" tag="" visible="false" unit="" type="String" />
|
||||
<config default="Sic\Routine\LeakCheck" name="LeakCheckFileName" description="LeakCheck Routine文件路径" max="" min="" paramter="" tag="" visible="false" unit="" type="String" />
|
||||
<config default="Sic\Routine\Abort" name="AbortFileName" description="Abort Routine文件路径" max="" min="" paramter="" tag="" visible="false" unit="" type="String" />
|
||||
<config default="" name="OpenLidCountDownTime" description="临时保存开腔倒计时开始时间" max="" min="" paramter="" tag="" visible="true" unit="" type="String" />
|
||||
<config default="" name="OpenLidCountDownTime" description="临时保存开腔倒计时开始时间" max="" min="" paramter="" tag="" visible="true" unit="" type="String"/>
|
||||
<config default="false" name="TMAEnable" description="TMA是否选装" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
|
||||
<configs name="Heater">
|
||||
<config default="false" name="PSUOuterAutoEnable" description="PSU Outer是否为Auto控制" max="" min="" paramter="" tag="" unit="" visible="true" type="Bool" />
|
||||
<config default="false" name="PSUOuterAutoEnable" description="PSU Outer是否为Auto控制" max="" min="" paramter="" tag="" unit="" type="Bool" visible="false"/>
|
||||
<config default="10" name="TempRampRate" description="TC温度每秒调节速率(℃/每秒)" max="100" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
<config default="0.1" name="AmpereRampRate" description="TC1功率每秒调节速率(%/每秒)" max="100" min="0" paramter="" tag="" unit="%" type="Double" />
|
||||
<config default="0.1" name="KWRampRate" description="TC2功率每秒调节速率(%/每秒)" max="100" min="0" paramter="" tag="" unit="%" type="Double" />
|
||||
|
@ -658,17 +658,13 @@
|
|||
<config default="1600" name="SCRTempHighLimit" description="SCR Temp High Limit(℃)" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
<config default="600" name="SCRTempLowLimit" description="SCR Temp Low Limit(℃)" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
|
||||
<config default="1600" name="PSUVoltageHighLimit" description="PSU Voltage High Limit(V)" max="2000" min="0" paramter="" tag="" unit="V" type="Double" />
|
||||
<config default="-100" name="PSUVoltageLowLimit" description="PSU Voltage Low Limit(V)" max="2000" min="-100" paramter="" tag="" unit="V" type="Double" />
|
||||
<config default="1600" name="SCRVoltageHighLimit" description="SCR Voltage High Limit(V)" max="2000" min="0" paramter="" tag="" unit="V" type="Double" />
|
||||
<config default="-100" name="SCRVoltageLowLimit" description="SCR Voltage Low Limit(V)" max="2000" min="-100" paramter="" tag="" unit="V" type="Double" />
|
||||
<config default="1000" name="PSU1ResistanceMax" description="Max PSU Inner Resistance Max Limit" max="1000" min="0" paramter="" tag="" unit="Ω" type="Double" />
|
||||
<config default="1000" name="PSU2ResistanceMax" description="Max PSU Middle Resistance Max Limit" max="1000" min="0" paramter="" tag="" unit="Ω" type="Double" />
|
||||
<config default="1000" name="PSU3ResistanceMax" description="Max PSU Outer Resistance Max Limit" max="1000" min="0" paramter="" tag="" unit="Ω" type="Double" />
|
||||
<config default="1000" name="SCR1ResistanceMax" description="Max SCR Upper Resistance Max Limit" max="1000" min="0" paramter="" tag="" unit="Ω" type="Double" />
|
||||
<config default="1000" name="SCR2ResistanceMax" description="Max SCR Middle Resistance Max Limit" max="1000" min="0" paramter="" tag="" unit="Ω" type="Double" />
|
||||
<config default="1000" name="SCR3ResistanceMax" description="Max SCR Lower Resistance Max Limit" max="1000" min="0" paramter="" tag="" unit="Ω" type="Double" />
|
||||
|
||||
<config default="1600" name="PSUCurrentHighLimit" description="PSU Current High Limit(A)" max="2000" min="0" paramter="" tag="" unit="A" type="Double" />
|
||||
<config default="-100" name="PSUCurrentLowLimit" description="PSU Current Low Limit(A)" max="2000" min="-100" paramter="" tag="" unit="A" type="Double" />
|
||||
<config default="1600" name="SCRCurrentHighLimit" description="SCR Current High Limit(A)" max="2000" min="0" paramter="" tag="" unit="A" type="Double" />
|
||||
<config default="-100" name="SCRCurrentLowLimit" description="SCR Current Low Limit(A)" max="2000" min="-100" paramter="" tag="" unit="A" type="Double" />
|
||||
|
||||
|
||||
<config default="false" name="AETempRasingFastIsAlarm" description="AETemp温度上升过快报警类型为Alarm" max="" min="" paramter="" tag="" unit="" visible="true" type="Bool" />
|
||||
<config default="100" name="SCRTempRasingRate" description="SCRTemp每秒的上升速率,超过此范围报警" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
<config default="100" name="AETempMiddleRasingRate" description="AETemp Middle每秒的上升速率,超过此范围报警" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
|
@ -744,7 +740,7 @@
|
|||
<config default="300" name="RoutineTimeOut" description="Routine超时时间" max="10000" min="0" paramter="" tag="" unit="s" type="Integer" />
|
||||
</configs>
|
||||
|
||||
<configs name="VacIdle">
|
||||
<configs name="VacIdle" visible="false">
|
||||
<config default="0" name="PumpPressure" description="PumpPressure" max="1100" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="300" name="RoutineTimeOut" description="Routine超时时间" max="10000" min="0" paramter="" tag="" unit="s" type="Integer" />
|
||||
</configs>
|
||||
|
@ -1045,7 +1041,7 @@
|
|||
<config default="10" name="AlarmRange" description="Alarm Range" max="100" min="0" paramter="" tag="" unit="%" type="Double" visible="true"/>
|
||||
<config default="10" name="WarningTime" description="Warning Time" max="300" min="0" paramter="" tag="" unit="s" type="Integer" visible="true"/>
|
||||
<config default="5" name="WarningRange" description="Warning Range" max="100" min="0" paramter="" tag="" unit="%" type="Double" visible="true" />
|
||||
<config default="1000" name="DefaultSetPoint" description="DefaultSetPoint" max="20000" min="0" paramter="" tag="" unit="sccm" type="Double" />
|
||||
<config default="1500" name="DefaultSetPoint" description="DefaultSetPoint" max="30000" min="0" paramter="" tag="" unit="sccm" type="Double" />
|
||||
<config default="H2" name="GasName" description="Gas Name" max="" min="" paramter="" tag="" unit="" type="String" />
|
||||
<config default="10" name="StableTime" description="Stable Time" max="10000" min="0" paramter="" tag="" unit="s" type="Double" visible="true"/>
|
||||
</configs>
|
||||
|
@ -1056,7 +1052,7 @@
|
|||
<config default="10" name="AlarmRange" description="Alarm Range" max="100" min="0" paramter="" tag="" unit="%" type="Double" visible="true"/>
|
||||
<config default="10" name="WarningTime" description="Warning Time" max="300" min="0" paramter="" tag="" unit="s" type="Integer" visible="true"/>
|
||||
<config default="5" name="WarningRange" description="Warning Range" max="100" min="0" paramter="" tag="" unit="%" type="Double" visible="true" />
|
||||
<config default="2500" name="DefaultSetPoint" description="DefaultSetPoint" max="50000" min="0" paramter="" tag="" unit="sccm" type="Double" />
|
||||
<config default="1500" name="DefaultSetPoint" description="DefaultSetPoint" max="30000" min="0" paramter="" tag="" unit="sccm" type="Double" />
|
||||
<config default="H2" name="GasName" description="Gas Name" max="" min="" paramter="" tag="" unit="" type="String" />
|
||||
<config default="10" name="StableTime" description="Stable Time" max="10000" min="0" paramter="" tag="" unit="s" type="Double" visible="true"/>
|
||||
</configs>
|
||||
|
@ -1067,7 +1063,7 @@
|
|||
<config default="10" name="AlarmRange" description="Alarm Range" max="100" min="0" paramter="" tag="" unit="%" type="Double" visible="true"/>
|
||||
<config default="10" name="WarningTime" description="Warning Time" max="300" min="0" paramter="" tag="" unit="s" type="Integer" visible="true"/>
|
||||
<config default="5" name="WarningRange" description="Warning Range" max="100" min="0" paramter="" tag="" unit="%" type="Double" visible="true" />
|
||||
<config default="500" name="DefaultSetPoint" description="DefaultSetPoint" max="10000" min="0" paramter="" tag="" unit="sccm" type="Double" />
|
||||
<config default="750" name="DefaultSetPoint" description="DefaultSetPoint" max="15000" min="0" paramter="" tag="" unit="sccm" type="Double" />
|
||||
<config default="H2" name="GasName" description="Gas Name" max="" min="" paramter="" tag="" unit="" type="String" />
|
||||
<config default="10" name="StableTime" description="Stable Time" max="10000" min="0" paramter="" tag="" unit="s" type="Double" visible="true"/>
|
||||
</configs>
|
||||
|
@ -1078,7 +1074,7 @@
|
|||
<config default="10" name="AlarmRange" description="Alarm Range" max="100" min="0" paramter="" tag="" unit="%" type="Double" visible="true"/>
|
||||
<config default="10" name="WarningTime" description="Warning Time" max="300" min="0" paramter="" tag="" unit="s" type="Integer" visible="true"/>
|
||||
<config default="5" name="WarningRange" description="Warning Range" max="100" min="0" paramter="" tag="" unit="%" type="Double" visible="true" />
|
||||
<config default="1500" name="DefaultSetPoint" description="DefaultSetPoint" max="30000" min="0" paramter="" tag="" unit="sccm" type="Double" />
|
||||
<config default="1000" name="DefaultSetPoint" description="DefaultSetPoint" max="20000" min="0" paramter="" tag="" unit="sccm" type="Double" />
|
||||
<config default="H2" name="GasName" description="Gas Name" max="" min="" paramter="" tag="" unit="" type="String" />
|
||||
<config default="10" name="StableTime" description="Stable Time" max="10000" min="0" paramter="" tag="" unit="s" type="Double" visible="true"/>
|
||||
</configs>
|
||||
|
@ -1346,7 +1342,7 @@
|
|||
|
||||
|
||||
<configs name="Heater">
|
||||
<config default="false" name="PSUOuterAutoEnable" description="PSU Outer是否为Auto控制" max="" min="" paramter="" tag="" unit="" visible="true" type="Bool" />
|
||||
<config default="false" name="PSUOuterAutoEnable" description="PSU Outer是否为Auto控制" max="" min="" paramter="" tag="" unit="" type="Bool" visible="false"/>
|
||||
<config default="10" name="TempRampRate" description="TC温度每秒调节速率(℃/每秒)" max="100" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
<config default="0.1" name="AmpereRampRate" description="TC1功率每秒调节速率(%/每秒)" max="100" min="0" paramter="" tag="" unit="%" type="Double" />
|
||||
<config default="0.1" name="KWRampRate" description="TC2功率每秒调节速率(%/每秒)" max="100" min="0" paramter="" tag="" unit="%" type="Double" />
|
||||
|
@ -1362,16 +1358,13 @@
|
|||
<config default="1600" name="SCRTempHighLimit" description="SCR Temp High Limit(℃)" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
<config default="600" name="SCRTempLowLimit" description="SCR Temp Low Limit(℃)" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
|
||||
<config default="1600" name="PSUVoltageHighLimit" description="PSU Voltage High Limit(V)" max="2000" min="0" paramter="" tag="" unit="V" type="Double" />
|
||||
<config default="-100" name="PSUVoltageLowLimit" description="PSU Voltage Low Limit(V)" max="2000" min="-100" paramter="" tag="" unit="V" type="Double" />
|
||||
<config default="1600" name="SCRVoltageHighLimit" description="SCR Voltage High Limit(V)" max="2000" min="0" paramter="" tag="" unit="V" type="Double" />
|
||||
<config default="-100" name="SCRVoltageLowLimit" description="SCR Voltage Low Limit(V)" max="2000" min="-100" paramter="" tag="" unit="V" type="Double" />
|
||||
|
||||
<config default="1600" name="PSUCurrentHighLimit" description="PSU Current High Limit(A)" max="2000" min="0" paramter="" tag="" unit="A" type="Double" />
|
||||
<config default="-100" name="PSUCurrentLowLimit" description="PSU Current Low Limit(A)" max="2000" min="-100" paramter="" tag="" unit="A" type="Double" />
|
||||
<config default="1600" name="SCRCurrentHighLimit" description="SCR Current High Limit(A)" max="2000" min="0" paramter="" tag="" unit="A" type="Double" />
|
||||
<config default="-100" name="SCRCurrentLowLimit" description="SCR Current Low Limit(A)" max="2000" min="-100" paramter="" tag="" unit="A" type="Double" />
|
||||
|
||||
<config default="1000" name="PSU1ResistanceMax" description="Max PSU Inner Resistance Max Limit" max="1000" min="0" paramter="" tag="" unit="Ω" type="Double" />
|
||||
<config default="1000" name="PSU2ResistanceMax" description="Max PSU Middle Resistance Max Limit" max="1000" min="0" paramter="" tag="" unit="Ω" type="Double" />
|
||||
<config default="1000" name="PSU3ResistanceMax" description="Max PSU Outer Resistance Max Limit" max="1000" min="0" paramter="" tag="" unit="Ω" type="Double" />
|
||||
<config default="1000" name="SCR1ResistanceMax" description="Max SCR Upper Resistance Max Limit" max="1000" min="0" paramter="" tag="" unit="Ω" type="Double" />
|
||||
<config default="1000" name="SCR2ResistanceMax" description="Max SCR Middle Resistance Max Limit" max="1000" min="0" paramter="" tag="" unit="Ω" type="Double" />
|
||||
<config default="1000" name="SCR3ResistanceMax" description="Max SCR Lower Resistance Max Limit" max="1000" min="0" paramter="" tag="" unit="Ω" type="Double" />
|
||||
|
||||
<config default="false" name="AETempRasingFastIsAlarm" description="AETemp温度上升过快报警类型为Alarm" max="" min="" paramter="" tag="" unit="" visible="true" type="Bool" />
|
||||
<config default="100" name="SCRTempRasingRate" description="SCRTemp每秒的上升速率,超过此范围报警" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
<config default="100" name="AETempMiddleRasingRate" description="AETemp Middle每秒的上升速率,超过此范围报警" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
|
@ -1447,7 +1440,7 @@
|
|||
<config default="300" name="RoutineTimeOut" description="Routine超时时间" max="10000" min="0" paramter="" tag="" unit="s" type="Integer" />
|
||||
</configs>
|
||||
|
||||
<configs name="VacIdle">
|
||||
<configs name="VacIdle" visible="false">
|
||||
<config default="0" name="PumpPressure" description="PumpPressure" max="1100" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="300" name="RoutineTimeOut" description="Routine超时时间" max="10000" min="0" paramter="" tag="" unit="s" type="Integer" />
|
||||
</configs>
|
||||
|
@ -1748,7 +1741,7 @@
|
|||
<config default="10" name="AlarmRange" description="Alarm Range" max="100" min="0" paramter="" tag="" unit="%" type="Double" visible="true"/>
|
||||
<config default="10" name="WarningTime" description="Warning Time" max="300" min="0" paramter="" tag="" unit="s" type="Integer" visible="true"/>
|
||||
<config default="5" name="WarningRange" description="Warning Range" max="100" min="0" paramter="" tag="" unit="%" type="Double" visible="true" />
|
||||
<config default="1000" name="DefaultSetPoint" description="DefaultSetPoint" max="20000" min="0" paramter="" tag="" unit="sccm" type="Double" />
|
||||
<config default="1500" name="DefaultSetPoint" description="DefaultSetPoint" max="30000" min="0" paramter="" tag="" unit="sccm" type="Double" />
|
||||
<config default="H2" name="GasName" description="Gas Name" max="" min="" paramter="" tag="" unit="" type="String" />
|
||||
<config default="10" name="StableTime" description="Stable Time" max="10000" min="0" paramter="" tag="" unit="s" type="Double" visible="true"/>
|
||||
</configs>
|
||||
|
@ -1759,7 +1752,7 @@
|
|||
<config default="10" name="AlarmRange" description="Alarm Range" max="100" min="0" paramter="" tag="" unit="%" type="Double" visible="true"/>
|
||||
<config default="10" name="WarningTime" description="Warning Time" max="300" min="0" paramter="" tag="" unit="s" type="Integer" visible="true"/>
|
||||
<config default="5" name="WarningRange" description="Warning Range" max="100" min="0" paramter="" tag="" unit="%" type="Double" visible="true" />
|
||||
<config default="2500" name="DefaultSetPoint" description="DefaultSetPoint" max="50000" min="0" paramter="" tag="" unit="sccm" type="Double" />
|
||||
<config default="1500" name="DefaultSetPoint" description="DefaultSetPoint" max="30000" min="0" paramter="" tag="" unit="sccm" type="Double" />
|
||||
<config default="H2" name="GasName" description="Gas Name" max="" min="" paramter="" tag="" unit="" type="String" />
|
||||
<config default="10" name="StableTime" description="Stable Time" max="10000" min="0" paramter="" tag="" unit="s" type="Double" visible="true"/>
|
||||
</configs>
|
||||
|
@ -1770,7 +1763,7 @@
|
|||
<config default="10" name="AlarmRange" description="Alarm Range" max="100" min="0" paramter="" tag="" unit="%" type="Double" visible="true"/>
|
||||
<config default="10" name="WarningTime" description="Warning Time" max="300" min="0" paramter="" tag="" unit="s" type="Integer" visible="true"/>
|
||||
<config default="5" name="WarningRange" description="Warning Range" max="100" min="0" paramter="" tag="" unit="%" type="Double" visible="true" />
|
||||
<config default="500" name="DefaultSetPoint" description="DefaultSetPoint" max="10000" min="0" paramter="" tag="" unit="sccm" type="Double" />
|
||||
<config default="750" name="DefaultSetPoint" description="DefaultSetPoint" max="15000" min="0" paramter="" tag="" unit="sccm" type="Double" />
|
||||
<config default="H2" name="GasName" description="Gas Name" max="" min="" paramter="" tag="" unit="" type="String" />
|
||||
<config default="10" name="StableTime" description="Stable Time" max="10000" min="0" paramter="" tag="" unit="s" type="Double" visible="true"/>
|
||||
</configs>
|
||||
|
@ -1781,7 +1774,7 @@
|
|||
<config default="10" name="AlarmRange" description="Alarm Range" max="100" min="0" paramter="" tag="" unit="%" type="Double" visible="true"/>
|
||||
<config default="10" name="WarningTime" description="Warning Time" max="300" min="0" paramter="" tag="" unit="s" type="Integer" visible="true"/>
|
||||
<config default="5" name="WarningRange" description="Warning Range" max="100" min="0" paramter="" tag="" unit="%" type="Double" visible="true" />
|
||||
<config default="1500" name="DefaultSetPoint" description="DefaultSetPoint" max="30000" min="0" paramter="" tag="" unit="sccm" type="Double" />
|
||||
<config default="1000" name="DefaultSetPoint" description="DefaultSetPoint" max="20000" min="0" paramter="" tag="" unit="sccm" type="Double" />
|
||||
<config default="H2" name="GasName" description="Gas Name" max="" min="" paramter="" tag="" unit="" type="String" />
|
||||
<config default="10" name="StableTime" description="Stable Time" max="10000" min="0" paramter="" tag="" unit="s" type="Double" visible="true"/>
|
||||
</configs>
|
||||
|
@ -2167,7 +2160,7 @@
|
|||
</configs>
|
||||
|
||||
<configs name="LoadLock">
|
||||
<config default="false" name="EnableLift" description="是否带升降" max="" min="" paramter="" tag="" unit="" visible="false" type="Bool" />
|
||||
<config default="false" name="EnableLift" description="是否带升降" max="" min="" paramter="" tag="" unit="" type="Bool" visible="false"/>
|
||||
<config default="true" name="IsVerifyDoorEnabled" description="TM是否set atm door" max="" min="" paramter="" tag="" unit="" visible="true" type="Bool" />
|
||||
<config default="120" name="PostTransferTimeout" description="post transfer time out" max="1000" min="0" paramter="" tag="" unit="s" type="Integer" />
|
||||
<config default="960" name="AtmPressureBase" description="判断大气压的时候,压力值需要大于该值" max="1200" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
|
@ -2182,11 +2175,11 @@
|
|||
<config default="600" name="WaitPumpTimeout" description="等待真空泵的时间" max="10000" min="0" paramter="" tag="" unit="s" type="Integer" />
|
||||
<config default="180" name="DefaultCoolingTime" description="默认在LL的冷却时间" max="10000" min="5" paramter="" tag="" unit="s" type="Integer" />
|
||||
<config default="100" name="WarnTemprature" description="高于此温度需要报Warnning" max="900" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
<config default="10" name="HomeTimeout" description="home time out" max="600" min="1" paramter="" tag="" unit="s" type="Integer" />
|
||||
<config default="10" name="LiftMoveTimeOut" description="LiftMoveTimeOut" max="600" min="1" paramter="" tag="" unit="s" type="Integer" />
|
||||
<config default="10" name="ClawMoveTimeOut" description="ClawMoveTimeOut" max="600" min="1" paramter="" tag="" unit="s" type="Integer" />
|
||||
<config default="true" name="EnableCCDCheck" description="Wafer和Tray组合后是否启用CCD检测" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
<config default="true" name="EnableDistanceSensorCheck" description="Wafer和Tray组合后是否启用测距Sensor检测" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
<config default="10" name="HomeTimeout" description="home time out" max="600" min="1" paramter="" tag="" unit="s" type="Integer" visible="false"/>
|
||||
<config default="10" name="LiftMoveTimeOut" description="LiftMoveTimeOut" max="600" min="1" paramter="" tag="" unit="s" type="Integer" visible="false"/>
|
||||
<config default="10" name="ClawMoveTimeOut" description="ClawMoveTimeOut" max="600" min="1" paramter="" tag="" unit="s" type="Integer" visible="false"/>
|
||||
<config default="true" name="EnableCCDCheck" description="Wafer和Tray组合后是否启用CCD检测" max="" min="" paramter="" tag="" unit="" type="Bool" visible="false" />
|
||||
<config default="true" name="EnableDistanceSensorCheck" description="Wafer和Tray组合后是否启用测距Sensor检测" max="" min="" paramter="" tag="" unit="" type="Bool" visible="false"/>
|
||||
<config default="false" name="TrayPresenceCheckEnable" description="传盘后检查Load腔Tray是否存在 Sensor" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
<configs name="Home">
|
||||
<config default="250" name="RoutineTimeOut" description="Routine超时时间" max="3000" min="0" paramter="" tag="" unit="s" type="Integer" />
|
||||
|
|
|
@ -1855,7 +1855,7 @@ namespace SicRT.Modules
|
|||
&& _buffer.NoTray(0)
|
||||
&& _buffer.NoWafer(0)
|
||||
&& (_buffer.CheckWaferNextStepIsThis(ModuleName.TMRobot, 0)
|
||||
|| _pm1.HasTray(0) || _pm1.HasWafer(0)))
|
||||
|| _pm1.HasTray(0) || _pm1.HasWafer(0) || !_pm1.CheckTempBelow900()))
|
||||
{
|
||||
bufferEmptySlot = new SlotItem(ModuleName.Buffer, 0);
|
||||
}
|
||||
|
@ -1863,7 +1863,7 @@ namespace SicRT.Modules
|
|||
&& _buffer.NoTray(1)
|
||||
&& _buffer.NoWafer(1)
|
||||
&& (_buffer.CheckWaferNextStepIsThis(ModuleName.TMRobot, 0)
|
||||
|| _pm2.HasTray(0) || _pm2.HasWafer(0)))
|
||||
|| _pm2.HasTray(0) || _pm2.HasWafer(0) || !_pm2.CheckTempBelow900()))
|
||||
{
|
||||
bufferEmptySlot = new SlotItem(ModuleName.Buffer, 1);
|
||||
}
|
||||
|
|
|
@ -46,12 +46,6 @@ namespace SicRT.Modules
|
|||
}
|
||||
|
||||
var lstModules = new List<IModuleDevice>();
|
||||
//var EFEM = Singleton<EquipmentManager>.Instance.Modules[ModuleName.EFEM] as EFEMModule;
|
||||
//if (EFEM.IsInstalled)
|
||||
//{
|
||||
// lstA.Add(Singleton<EquipmentManager>.Instance.Modules[ModuleName.EFEM] as IModuleDevice);
|
||||
// dicModules.Add(EFEM.Module, EFEM.IsBusy);
|
||||
//}
|
||||
|
||||
_lstModules.Add(lstA);
|
||||
|
||||
|
@ -63,13 +57,6 @@ namespace SicRT.Modules
|
|||
dicModules.Add(ll.Module, ll.IsBusy);
|
||||
}
|
||||
|
||||
//var unLoad = Singleton<EquipmentManager>.Instance.Modules[ModuleName.UnLoad] as UnLoadModule;
|
||||
//if (unLoad.IsInstalled)
|
||||
//{
|
||||
// lstModules.Add(Singleton<EquipmentManager>.Instance.Modules[ModuleName.UnLoad] as IModuleDevice);
|
||||
// dicModules.Add(unLoad.Module, unLoad.IsBusy);
|
||||
//}
|
||||
|
||||
var buffer = Singleton<EquipmentManager>.Instance.Modules[ModuleName.Buffer] as BufferModule;
|
||||
if (buffer.IsInstalled)
|
||||
{
|
||||
|
@ -91,34 +78,6 @@ namespace SicRT.Modules
|
|||
dicModules.Add(pm2.Module, pm2.IsBusy);
|
||||
}
|
||||
|
||||
//var aligner = Singleton<EquipmentManager>.Instance.Modules[ModuleName.Aligner] as AlignerModule;
|
||||
//if (aligner.IsInstalled)
|
||||
//{
|
||||
// lstModules.Add(Singleton<EquipmentManager>.Instance.Modules[ModuleName.Aligner] as IModuleDevice);
|
||||
// dicModules.Add(aligner.Module, aligner.IsBusy);
|
||||
//}
|
||||
|
||||
//var cassAL = Singleton<EquipmentManager>.Instance.Modules[ModuleName.CassAL] as CassetteModule;
|
||||
//if (cassAL.IsInstalled)
|
||||
//{
|
||||
// lstModules.Add(Singleton<EquipmentManager>.Instance.Modules[ModuleName.CassAL] as IModuleDevice);
|
||||
// dicModules.Add(cassAL.Module, cassAL.IsBusy);
|
||||
//}
|
||||
|
||||
//var cassAR = Singleton<EquipmentManager>.Instance.Modules[ModuleName.CassAR] as CassetteModule;
|
||||
//if (cassAR.IsInstalled)
|
||||
//{
|
||||
// lstModules.Add(Singleton<EquipmentManager>.Instance.Modules[ModuleName.CassAR] as IModuleDevice);
|
||||
// dicModules.Add(cassAR.Module, cassAR.IsBusy);
|
||||
//}
|
||||
|
||||
//var cassBL = Singleton<EquipmentManager>.Instance.Modules[ModuleName.CassBL] as CassetteModule;
|
||||
//if (cassBL.IsInstalled)
|
||||
//{
|
||||
// lstModules.Add(Singleton<EquipmentManager>.Instance.Modules[ModuleName.CassBL] as IModuleDevice);
|
||||
// dicModules.Add(cassBL.Module, cassBL.IsBusy);
|
||||
//}
|
||||
|
||||
_lstModules.Add(lstModules);
|
||||
|
||||
|
||||
|
|
|
@ -65,9 +65,10 @@ namespace SicRT.Scheduler
|
|||
_taskHand = hand;
|
||||
_target = target;
|
||||
LogTaskStart(_task, $"{target}.{slot + 1}=>{Module}.{hand}");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool Place(ModuleName target, int slot, Hand hand)
|
||||
{
|
||||
|
@ -77,9 +78,10 @@ namespace SicRT.Scheduler
|
|||
_taskHand = hand;
|
||||
_target = target;
|
||||
LogTaskStart(_task, $"{Module}.{hand}=>{target}.{slot + 1}");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool Goto(ModuleName chamber, int slot, Hand hand)
|
||||
{
|
||||
|
|
|
@ -53,9 +53,10 @@ namespace SicRT.Scheduler
|
|||
_task = TaskType.Pick;
|
||||
_taskHand = hand;
|
||||
LogTaskStart(_task, $"{target}.{slot + 1}=>{Module}.{hand}");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool Place(ModuleName target, int slot, Hand hand)
|
||||
{
|
||||
|
@ -64,9 +65,10 @@ namespace SicRT.Scheduler
|
|||
_task = TaskType.Place;
|
||||
_taskHand = hand;
|
||||
LogTaskStart(_task, $"{Module}.{hand}=>{target}.{slot + 1}");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool Goto(ModuleName chamber, int slot, Hand hand)
|
||||
{
|
||||
|
|
|
@ -57,9 +57,10 @@ namespace SicRT.Scheduler
|
|||
_task = TaskType.Pick;
|
||||
_taskHand = hand;
|
||||
LogTaskStart(_task, $"{target}.WaferRobot.{slot + 1}=>{Module}.{hand}");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool Place(ModuleName target, int slot, Hand hand)
|
||||
{
|
||||
|
@ -68,9 +69,10 @@ namespace SicRT.Scheduler
|
|||
_task = TaskType.Place;
|
||||
_taskHand = hand;
|
||||
LogTaskStart(_task, $"{Module}.WaferRobot.{hand}=>{target}.{slot + 1}");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool Map(ModuleName target)
|
||||
{
|
||||
|
@ -78,9 +80,10 @@ namespace SicRT.Scheduler
|
|||
{
|
||||
_task = TaskType.Map;
|
||||
LogTaskStart(_task, $"{Module}.WaferRobot Map");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool Goto(ModuleName chamber, int slot, Hand hand)
|
||||
{
|
||||
|
|
|
@ -51,7 +51,7 @@ using System.Windows;
|
|||
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
|
||||
// 方法是按如下所示使用“*”: :
|
||||
|
||||
[assembly: AssemblyVersion("1.0.3.3")]
|
||||
[assembly: AssemblyFileVersion("1.0.3.3")]
|
||||
[assembly: AssemblyVersion("1.0.5.10")]
|
||||
[assembly: AssemblyFileVersion("1.0.5.10")]
|
||||
|
||||
|
||||
|
|
|
@ -9,6 +9,41 @@
|
|||
Sic 系统更新历史记录
|
||||
|
||||
---------------------------------------------------------------------------------
|
||||
Sic05 2023-02-10 Version 1.0.5.10
|
||||
1.解决Process过程中切换PyroFollow Outer比例不跟随问题
|
||||
2.解决PM SCREnable Interlock存在的问题
|
||||
3.增加PM Service模式下不准切换Online功能
|
||||
4.ProcessAbort Rounite中增加等待MFC流量到达再往下执行
|
||||
5.ProcessAbort Routine中增加关闭V72,打开V25流程
|
||||
6.解决Monitor界面PSU PryoFollow模式显示问题
|
||||
7.解决AutoRun时TMRobot从Load取Tray后若PM温度未到传盘温度TMRobot未放Tray至Buffer等待问题
|
||||
|
||||
Sic05 2023-02-10 Version 1.0.4.9
|
||||
1.修改电阻报警名称
|
||||
2.解决保存Sequence时Recipe路径问题
|
||||
|
||||
Sic05 2023-02-10 Version 1.0.4.8
|
||||
1.TM界面所有Module Online及Offline按钮权限放开
|
||||
2.增加Recipe每个Step都可设置PSU Outer是否跟随Middle控温功能
|
||||
|
||||
Sic05 2023-02-10 Version 1.0.4.7
|
||||
1.PM增加DO_SCR1Enable、DO_SCR2Enable、DO_SCR3Enable Interlock
|
||||
2.整理System配置参数,删除VacIdle参数及Load中不需要的参数
|
||||
3.修改PM气路图的V72阀的气路走向错误
|
||||
|
||||
Sic05 2023-02-07 Version 1.0.4.6
|
||||
1.开放Final阀DI-FB显示,方便调试观察
|
||||
|
||||
Sic05 2023-01-28 Version 1.0.4.5
|
||||
1.修改权限相关默认值
|
||||
|
||||
Sic05 2022-12-28 Version 1.0.4.4
|
||||
1.所有模块Online切Offline不设置条件
|
||||
2.解决TM的一些Routine开始时会关闭Load的快抽阀的BUG
|
||||
3.优化等待磁流体转速问题
|
||||
4.隔热罩在转速转起来后延时5s再升起,方便观察Tray是否放好
|
||||
5.TM界面各模块阀的Enable由各模块Offline决定
|
||||
|
||||
Sic05 2022-12-14 Version 1.0.3.3
|
||||
1.点表中隐藏PM DO-64、65、67、68
|
||||
|
||||
|
|
|
@ -164,11 +164,11 @@
|
|||
<DI_ITEM Index="265" Name="DI_TowerRedFB" BufferOffset="265" Addr="265" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="266" Name="DI_BuzzerFB" BufferOffset="266" Addr="266" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="271" Name="DI_ConfinementRingDrvRstFB" BufferOffset="271" Addr="271" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="272" Name="DI_InnerGasFinalFB(V89)" BufferOffset="272" Addr="272" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="273" Name="DI_MiddleGasFinalFB(V90)" BufferOffset="273" Addr="273" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="274" Name="DI_OpticPurgeFinalFB(V91)" BufferOffset="274" Addr="274" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="275" Name="DI_GasRingPurgeFinalFB(V92)" BufferOffset="275" Addr="275" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="276" Name="DI_ChamberPurgeFinalFB(V93)" BufferOffset="276" Addr="276" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="272" Name="DI_InnerGasFinalFB(V89)" BufferOffset="272" Addr="272" Description="" Visible ="true"/>
|
||||
<DI_ITEM Index="273" Name="DI_MiddleGasFinalFB(V90)" BufferOffset="273" Addr="273" Description="" Visible ="true"/>
|
||||
<DI_ITEM Index="274" Name="DI_OpticPurgeFinalFB(V91)" BufferOffset="274" Addr="274" Description="" Visible ="true"/>
|
||||
<DI_ITEM Index="275" Name="DI_GasRingPurgeFinalFB(V92)" BufferOffset="275" Addr="275" Description="" Visible ="true"/>
|
||||
<DI_ITEM Index="276" Name="DI_ChamberPurgeFinalFB(V93)" BufferOffset="276" Addr="276" Description="" Visible ="true"/>
|
||||
<DI_ITEM Index="277" Name="DI_RotationUpPurgeFinalFB(V94)" BufferOffset="277" Addr="277" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="278" Name="DI_ConfinementRingFinalFB(V95)" BufferOffset="278" Addr="278" Description="" Visible ="false"/>
|
||||
<DI_ITEM Index="279" Name="DI_HeaterWFFinalFB(V96)" BufferOffset="279" Addr="279" Description="" Visible ="false"/>
|
||||
|
|
|
@ -188,8 +188,7 @@
|
|||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="Online"
|
||||
IsEnabled="{Binding PM1OnlineButtonEnable}">
|
||||
Content="Online">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="SetOnline">
|
||||
|
@ -203,8 +202,7 @@
|
|||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="Offline"
|
||||
IsEnabled="{Binding PM1OfflineButtonEnable}">
|
||||
Content="Offline">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="SetOffline">
|
||||
|
@ -592,8 +590,7 @@
|
|||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="Online"
|
||||
IsEnabled="{Binding PM2OnlineButtonEnable}">
|
||||
Content="Online">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="SetOnline">
|
||||
|
@ -607,8 +604,7 @@
|
|||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="Offline"
|
||||
IsEnabled="{Binding PM2OfflineButtonEnable}">
|
||||
Content="Offline">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="SetOffline">
|
||||
|
@ -1451,8 +1447,7 @@
|
|||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="Online"
|
||||
IsEnabled="{Binding IsLLOnlineButtonEnable}">
|
||||
Content="Online">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="SetOnline">
|
||||
|
@ -1466,8 +1461,7 @@
|
|||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="Offline"
|
||||
IsEnabled="{Binding IsLLOfflineButtonEnable}">
|
||||
Content="Offline">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="SetOffline">
|
||||
|
@ -2704,7 +2698,7 @@
|
|||
Canvas.Top="90"
|
||||
DeviceData="{Binding TMPMBBanlance}"
|
||||
EnableServiceControl="True"
|
||||
IsEnabled="{Binding IsEnableManual}"
|
||||
IsEnabled="{Binding PM2TMValveIsEnable}"
|
||||
ValveOpenOrientation="Vertical"
|
||||
Visibility="{Binding IsPM2Installed, Converter={StaticResource BoolVisibilityConverter}}" />
|
||||
<deviceControl:AITGasValve
|
||||
|
@ -2712,7 +2706,7 @@
|
|||
Canvas.Top="90"
|
||||
DeviceData="{Binding TMPMABanlance}"
|
||||
EnableServiceControl="True"
|
||||
IsEnabled="{Binding IsEnableManual}"
|
||||
IsEnabled="{Binding PM1TMValveIsEnable}"
|
||||
ValveOpenOrientation="Vertical" />
|
||||
<!--<deviceControl:AITGasValve
|
||||
Canvas.Left="236"
|
||||
|
@ -2726,28 +2720,28 @@
|
|||
Canvas.Top="442"
|
||||
DeviceData="{Binding TMFastRough}"
|
||||
EnableServiceControl="True"
|
||||
IsEnabled="{Binding IsEnableManual}"
|
||||
IsEnabled="{Binding TMValveIsEnable}"
|
||||
ValveOpenOrientation="Vertical" />
|
||||
<deviceControl:AITGasValve
|
||||
Canvas.Left="436"
|
||||
Canvas.Top="444"
|
||||
DeviceData="{Binding LLSlowRough}"
|
||||
EnableServiceControl="True"
|
||||
IsEnabled="{Binding IsEnableManual}"
|
||||
IsEnabled="{Binding LoadValveIsEnable}"
|
||||
ValveOpenOrientation="Vertical" />
|
||||
<deviceControl:AITGasValve
|
||||
Canvas.Left="395"
|
||||
Canvas.Top="444"
|
||||
DeviceData="{Binding LLFastRough}"
|
||||
EnableServiceControl="True"
|
||||
IsEnabled="{Binding IsEnableManual}"
|
||||
IsEnabled="{Binding LoadValveIsEnable}"
|
||||
ValveOpenOrientation="Vertical" />
|
||||
<deviceControl:AITGasValve
|
||||
Canvas.Left="614"
|
||||
Canvas.Top="334"
|
||||
DeviceData="{Binding LoadLockVent}"
|
||||
EnableServiceControl="True"
|
||||
IsEnabled="{Binding IsEnableManual}"
|
||||
IsEnabled="{Binding LoadValveIsEnable}"
|
||||
ValveOpenOrientation="Horizontal" />
|
||||
<deviceControl:AITGasValve
|
||||
Canvas.Left="614"
|
||||
|
@ -2764,21 +2758,21 @@
|
|||
Canvas.Top="276"
|
||||
DeviceData="{Binding TMLoadBanlance}"
|
||||
EnableServiceControl="True"
|
||||
IsEnabled="{Binding IsEnableManual}"
|
||||
IsEnabled="{Binding LoadTMValveIsEnable}"
|
||||
ValveOpenOrientation="Vertical" />
|
||||
<deviceControl:AITGasValve
|
||||
Canvas.Left="340"
|
||||
Canvas.Top="442"
|
||||
DeviceData="{Binding TMSlowRough}"
|
||||
EnableServiceControl="True"
|
||||
IsEnabled="{Binding IsEnableManual}"
|
||||
IsEnabled="{Binding TMValveIsEnable}"
|
||||
ValveOpenOrientation="Vertical" />
|
||||
<deviceControl:AITGasValve
|
||||
Canvas.Left="581"
|
||||
Canvas.Top="-94"
|
||||
DeviceData="{Binding TMVent}"
|
||||
EnableServiceControl="True"
|
||||
IsEnabled="{Binding IsEnableManual}" />
|
||||
IsEnabled="{Binding TMValveIsEnable}" />
|
||||
<!--<deviceControl:AITGasValve
|
||||
Canvas.Left="449"
|
||||
Canvas.Top="-125"
|
||||
|
@ -2971,8 +2965,7 @@
|
|||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="Online"
|
||||
IsEnabled="{Binding IsTMOnlineButtonEnable}">
|
||||
Content="Online">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="SetOnline">
|
||||
|
@ -2986,8 +2979,7 @@
|
|||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="Offline"
|
||||
IsEnabled="{Binding IsTMOfflineButtonEnable}">
|
||||
Content="Offline">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="SetOffline">
|
||||
|
@ -3460,8 +3452,7 @@
|
|||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="Online"
|
||||
IsEnabled="{Binding IsBufferOnlineButtonEnable}">
|
||||
Content="Online">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="SetOnline">
|
||||
|
@ -3475,8 +3466,7 @@
|
|||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="Offline"
|
||||
IsEnabled="{Binding IsBufferOfflineButtonEnable}">
|
||||
Content="Offline">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="SetOffline">
|
||||
|
|
|
@ -25,15 +25,20 @@ namespace SicUI.Client.Models.Platform.TM
|
|||
[Subscription("TM.Status")]
|
||||
public string Status { get; set; }
|
||||
|
||||
[Subscription("TM.IsOnline")]
|
||||
public bool IsOnline { get; set; }
|
||||
|
||||
[Subscription("Rt.Status")]
|
||||
public string RtStatus { get; set; }
|
||||
public bool IsEnableManual => Status == "Idle" || Status == "Init" && !IsOnline ;
|
||||
|
||||
public bool EnableWaferClick => RtStatus == "Idle";
|
||||
public bool LLEnableWaferClick => true;
|
||||
public bool IsServiceMode => !IsOnline;
|
||||
|
||||
public bool LoadValveIsEnable => !LLIsOnline;
|
||||
|
||||
public bool TMValveIsEnable => !TMIsOnline;
|
||||
|
||||
public bool PM1TMValveIsEnable => !PM1IsOnline && !TMIsOnline;
|
||||
public bool PM2TMValveIsEnable => !PM2IsOnline && !TMIsOnline;
|
||||
|
||||
public bool LoadTMValveIsEnable => !LLIsOnline && !TMIsOnline;
|
||||
|
||||
|
||||
#region Properties
|
||||
|
|
|
@ -18,6 +18,7 @@ using System.Text;
|
|||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Media;
|
||||
using static Aitex.Core.RT.Device.PmDevices.DicMode;
|
||||
|
||||
namespace SicUI.Models.PMs
|
||||
{
|
||||
|
@ -591,13 +592,9 @@ namespace SicUI.Models.PMs
|
|||
|
||||
public void SetHeaterMode(string TCname, object data)
|
||||
{
|
||||
float ControlMode = 0;
|
||||
switch (SelectedHeaterMode)
|
||||
{
|
||||
case "Power": ControlMode = 0; break;
|
||||
case "TC": ControlMode = 1; break;
|
||||
case "Pyro": ControlMode = 2; break;
|
||||
}
|
||||
HeaterControlMode PSUControlMode = (HeaterControlMode)Enum.Parse(typeof(HeaterControlMode), SelectedHeaterMode);
|
||||
float ControlMode = (float)PSUControlMode;
|
||||
|
||||
InvokeClient.Instance.Service.DoOperation($"{SystemName}.{TCname}.SetHeaterMode", ControlMode);
|
||||
}
|
||||
|
||||
|
|
|
@ -1336,7 +1336,7 @@
|
|||
x:Name="TextL2Ratio"
|
||||
FontFamily="Arial"
|
||||
FontSize="14"
|
||||
Text="100" />
|
||||
Text="0" />
|
||||
</Border>
|
||||
|
||||
<Border
|
||||
|
@ -3274,7 +3274,7 @@
|
|||
x:Name="TextL2Ratio2"
|
||||
FontFamily="Arial"
|
||||
FontSize="14"
|
||||
Text="100" />
|
||||
Text="0" />
|
||||
</Border>
|
||||
|
||||
<Border
|
||||
|
|
|
@ -23,6 +23,7 @@ using System.Windows.Media;
|
|||
using Aitex.Core.RT.Event;
|
||||
using Aitex.Core.RT.SCCore;
|
||||
using Timer = System.Timers.Timer;
|
||||
using static Aitex.Core.RT.Device.PmDevices.DicMode;
|
||||
|
||||
namespace SicUI.Models.PMs
|
||||
{
|
||||
|
@ -219,7 +220,7 @@ namespace SicUI.Models.PMs
|
|||
[Subscription("TC1.L3TempLowLimitSetPoint")]
|
||||
public float L3TempLowLimit { get; set; }
|
||||
|
||||
private List<string> _HeaterModeGroup = new List<string>() { "Power", "Pyro" };
|
||||
private List<string> _HeaterModeGroup = new List<string>() { "Power", "PyroAuto", "PyroFollow" };
|
||||
public List<string> HeaterModeGroup
|
||||
{
|
||||
get { return _HeaterModeGroup; }
|
||||
|
@ -230,15 +231,10 @@ namespace SicUI.Models.PMs
|
|||
{
|
||||
get
|
||||
{
|
||||
switch (HeaterMode)
|
||||
{
|
||||
case 0: return "Power";
|
||||
case 1: return "Pyro";
|
||||
}
|
||||
return "Power";
|
||||
|
||||
return ((HeaterControlMode)HeaterMode).ToString();
|
||||
}
|
||||
}
|
||||
|
||||
private string _SelectedHeaterMode;
|
||||
public string SelectedHeaterMode
|
||||
{
|
||||
|
@ -611,12 +607,9 @@ namespace SicUI.Models.PMs
|
|||
|
||||
public void SetHeaterMode(string TCname, object data)
|
||||
{
|
||||
float ControlMode = 0;
|
||||
switch (SelectedHeaterMode)
|
||||
{
|
||||
case "Power": ControlMode = 0; break;
|
||||
case "Pyro": ControlMode = 1; break;
|
||||
}
|
||||
HeaterControlMode PSUControlMode = (HeaterControlMode)Enum.Parse(typeof(HeaterControlMode), SelectedHeaterMode);
|
||||
float ControlMode = (float)PSUControlMode;
|
||||
|
||||
InvokeClient.Instance.Service.DoOperation($"{SystemName}.{TCname}.SetHeaterMode", ControlMode);
|
||||
}
|
||||
|
||||
|
|
|
@ -2751,6 +2751,27 @@
|
|||
</industrialcontrol:PipeLine.RenderTransform>
|
||||
</industrialcontrol:PipeLine>
|
||||
|
||||
<industrialcontrol:PipeLine
|
||||
Canvas.Left="1362"
|
||||
Canvas.Top="647"
|
||||
Width="57"
|
||||
Height="{StaticResource ResourceKey=Pipe_Height}"
|
||||
CenterColor="{StaticResource ResourceKey=CenterColorWhite}"
|
||||
EdgeColor="{StaticResource ResourceKey=CenterColorWhite}"
|
||||
FlowDirection="RightToLeft"
|
||||
LeftDirection="None"
|
||||
MoveSpeed="{Binding V36MoveSpeed}"
|
||||
RightDirection="None">
|
||||
<industrialcontrol:PipeLine.RenderTransform>
|
||||
<TransformGroup>
|
||||
<ScaleTransform />
|
||||
<SkewTransform />
|
||||
<RotateTransform Angle="90" />
|
||||
<TranslateTransform />
|
||||
</TransformGroup>
|
||||
</industrialcontrol:PipeLine.RenderTransform>
|
||||
</industrialcontrol:PipeLine>
|
||||
|
||||
<!--<control:PipeControl GasColor="Yellow" Canvas.Left="1252" Canvas.Top="534" Height="19.994" PipeType="Horizontal" Width="35" />-->
|
||||
<!--<control:PipeControl GasColor="Yellow" Canvas.Left="1277" Canvas.Top="544" Height="177" PipeType="Vertical" Width="19.994" />-->
|
||||
<industrialcontrol:PipeLine
|
||||
|
@ -2841,7 +2862,7 @@
|
|||
<industrialcontrol:PipeLine
|
||||
Canvas.Left="1286"
|
||||
Canvas.Top="646"
|
||||
Width="121"
|
||||
Width="76"
|
||||
Height="{StaticResource ResourceKey=Pipe_Height}"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Top"
|
||||
|
@ -2851,6 +2872,20 @@
|
|||
LeftDirection="None"
|
||||
MoveSpeed="{Binding V72MoveSpeed}"
|
||||
RightDirection="None" />
|
||||
<industrialcontrol:PipeLine
|
||||
Canvas.Left="1362"
|
||||
Canvas.Top="702"
|
||||
Width="45"
|
||||
Height="{StaticResource ResourceKey=Pipe_Height}"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Top"
|
||||
CenterColor="{StaticResource ResourceKey=CenterColorWhite}"
|
||||
EdgeColor="{StaticResource ResourceKey=CenterColorWhite}"
|
||||
FlowDirection="RightToLeft"
|
||||
LeftDirection="None"
|
||||
MoveSpeed="{Binding V72MoveSpeed}"
|
||||
RightDirection="None" />
|
||||
|
||||
<industrialcontrol:PipeLine
|
||||
Canvas.Left="1253"
|
||||
Canvas.Top="611"
|
||||
|
@ -2869,7 +2904,7 @@
|
|||
<industrialcontrol:PipeLine
|
||||
Canvas.Left="1262"
|
||||
Canvas.Top="702"
|
||||
Width="145"
|
||||
Width="100"
|
||||
Height="{StaticResource ResourceKey=Pipe_Height}"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Top"
|
||||
|
|
|
@ -27,6 +27,7 @@ using Sicentury.Core;
|
|||
using System.Text;
|
||||
using MECF.Framework.UI.Client.CenterViews.Editors;
|
||||
using Action = System.Action;
|
||||
using static Aitex.Core.RT.Device.PmDevices.DicMode;
|
||||
|
||||
namespace SicUI.Models.PMs
|
||||
{
|
||||
|
@ -478,7 +479,7 @@ namespace SicUI.Models.PMs
|
|||
|
||||
});
|
||||
|
||||
u.dgCustom.FrozenColumnCount = 5;
|
||||
u.dgCustom.FrozenColumnCount = 6;
|
||||
|
||||
base.OnViewLoaded(view);
|
||||
}
|
||||
|
@ -507,6 +508,8 @@ namespace SicUI.Models.PMs
|
|||
|
||||
DisplayingRecipeName = recipeName;
|
||||
|
||||
SelectedRecipe = recipeName;
|
||||
|
||||
InvokeClient.Instance.Service.DoOperation($"{SystemName}.SelectRecipe", recipeName);
|
||||
InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"PM.{SystemName}.LastRecipeName",
|
||||
recipeName);
|
||||
|
@ -1008,13 +1011,8 @@ namespace SicUI.Models.PMs
|
|||
{
|
||||
get
|
||||
{
|
||||
switch (TC1HeaterMode)
|
||||
{
|
||||
case 0: return "Power";
|
||||
case 1: return "Pyro";
|
||||
}
|
||||
return "Power";
|
||||
|
||||
int mode = (int)TC1HeaterMode;
|
||||
return Enum.GetName(typeof(HeaterControlMode), mode);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -486,7 +486,7 @@ namespace SicUI.Models.RecipeEditors
|
|||
u.dgCustom.LostFocus += DgCustom_LostFocus;
|
||||
u.dgCustom.CellEditEnding += DgCustomOnCellEditEnding;
|
||||
u.dgCustom.LoadingRow += DgCustomOnLoadingRow;
|
||||
u.dgCustom.FrozenColumnCount = 5;
|
||||
u.dgCustom.FrozenColumnCount = 6;
|
||||
}
|
||||
|
||||
private void DgCustomOnLoadingRow(object sender, DataGridRowEventArgs e)
|
||||
|
@ -506,7 +506,7 @@ namespace SicUI.Models.RecipeEditors
|
|||
// ValidateEntireRecipe();
|
||||
if (SelectedRecipeSteps != null && SelectedRecipeSteps.Count == 1)
|
||||
{
|
||||
CalRecipeParameterForRunVent(SelectedRecipeSteps[0]);
|
||||
SelectedRecipeSteps[0].CalRecipeParameterForRunVent();
|
||||
CheckIfAllCellsValid(out _);
|
||||
}
|
||||
}
|
||||
|
@ -516,7 +516,7 @@ namespace SicUI.Models.RecipeEditors
|
|||
// ValidateEntireRecipe();
|
||||
if (SelectedRecipeSteps != null && SelectedRecipeSteps.Count == 1)
|
||||
{
|
||||
CalRecipeParameterForRunVent(SelectedRecipeSteps[0]);
|
||||
SelectedRecipeSteps[0].CalRecipeParameterForRunVent();
|
||||
CheckIfAllCellsValid(out _);
|
||||
}
|
||||
}
|
||||
|
@ -565,23 +565,11 @@ namespace SicUI.Models.RecipeEditors
|
|||
(int)((DoubleParam)currentStep[(int)RecipColNo.StepTime]).Value;
|
||||
}
|
||||
|
||||
var stepTime = ((DoubleParam)currentStep[(int)RecipColNo.StepTime]).Value;
|
||||
|
||||
PurgeRunSwitch(previousStep, currentStep, nextStep);
|
||||
|
||||
|
||||
NotInstallDevice(currentStep);
|
||||
currentStep.CalRecipeParameterForRunVent(); // 自动计算比例值
|
||||
currentStep.Validate(); // 校验单元格
|
||||
|
||||
if (stepTime > 0)
|
||||
{
|
||||
CalRecipeParameterForRunVent(currentStep);
|
||||
}
|
||||
|
||||
// 校验单元格内容
|
||||
foreach (var param in currentStep)
|
||||
{
|
||||
if (param is IParam p)
|
||||
p.Validate();
|
||||
}
|
||||
}
|
||||
|
||||
//如果是Routine则在下面代码不执行,在这里返回
|
||||
|
@ -723,541 +711,7 @@ namespace SicUI.Models.RecipeEditors
|
|||
_isTmaNotInstall = true;
|
||||
}
|
||||
|
||||
#region Gas Flow Calculation
|
||||
|
||||
private static double GetTcsFlow(RecipeStep currentStep, string selectedChamber)
|
||||
{
|
||||
var currentTcsBubbleLowFlow = ((DoubleParam)currentStep[(int)RecipColNo.TCSBubbLowFlow]).Value;
|
||||
var currentTcsBubbleHighFlow = ((DoubleParam)currentStep[(int)RecipColNo.TCSBubbHighFlow]).Value;
|
||||
var currentTcsPushFlow = ((DoubleParam)currentStep[(int)RecipColNo.TCSPushFlow]).Value;
|
||||
var currentTcsFlowMode = (currentStep[(int)RecipColNo.TCSFlowMode] as ComboxParam)?.Value;
|
||||
|
||||
var tcsFlow = 0d;
|
||||
|
||||
var tcsEff =
|
||||
(double)QueryDataClient.Instance.Service.GetConfig($"PM.{selectedChamber}.Efficiency.TCS-Eff");
|
||||
if (string.Equals(currentTcsFlowMode, FlowModeParam.FlowModeEnum.Run.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase)
|
||||
|| string.Equals(currentTcsFlowMode, FlowModeParam.FlowModeEnum.Vent.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
tcsFlow = (currentTcsBubbleHighFlow + currentTcsBubbleLowFlow) * tcsEff + currentTcsPushFlow;
|
||||
}
|
||||
else if (string.Equals(currentTcsFlowMode, FlowModeParam.FlowModeEnum.Purge.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
tcsFlow = currentTcsBubbleHighFlow + currentTcsBubbleLowFlow + currentTcsPushFlow;
|
||||
}
|
||||
|
||||
return tcsFlow;
|
||||
}
|
||||
|
||||
private static double GetTmaFlow(RecipeStep currentStep, string selectedChamber)
|
||||
{
|
||||
var currentTmaBubbleFlow = ((DoubleParam)currentStep[(int)RecipColNo.TMABubbFlow]).Value;
|
||||
var currentTmaPushFlow = ((DoubleParam)currentStep[(int)RecipColNo.TMAPushFlow]).Value;
|
||||
var currentTmaFlowMode = ((ComboxParam)currentStep[(int)RecipColNo.TMAFlowMode]).Value;
|
||||
|
||||
var tmaFlow = 0d;
|
||||
var tmaEff =
|
||||
(double)QueryDataClient.Instance.Service.GetConfig($"PM.{selectedChamber}.Efficiency.TMA-Eff");
|
||||
|
||||
if (string.Equals(currentTmaFlowMode, FlowModeParam.FlowModeEnum.Run.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase)
|
||||
|| string.Equals(currentTmaFlowMode, FlowModeParam.FlowModeEnum.Vent.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase))
|
||||
tmaFlow = currentTmaBubbleFlow * tmaEff + currentTmaPushFlow;
|
||||
else if (string.Equals(currentTmaFlowMode, FlowModeParam.FlowModeEnum.Purge.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase))
|
||||
tmaFlow = currentTmaBubbleFlow + currentTmaPushFlow;
|
||||
|
||||
return tmaFlow;
|
||||
}
|
||||
|
||||
private static void CalSiSourceFlow(RecipeStep currentStep)
|
||||
{
|
||||
var currentSiSourSplitRatio = new double[3];
|
||||
if (currentStep[(int)RecipColNo.SiSourceSplitRatio] is Sets3RatioParam siSourceRatio)
|
||||
currentSiSourSplitRatio = siSourceRatio.Ratio;
|
||||
|
||||
var currentSiSourTotalFlow = ((DoubleParam)currentStep[(int)RecipColNo.SiSourceTotalFlow]).Value;
|
||||
|
||||
//double currentSiSourPushFlow = currentSiSourTotalFlow - (currentSiH4FlowMode == FlowMode.Run.ToString() ? currentSiH4Flow : 0)
|
||||
// - (currentTCSFlowMode == FlowMode.Run.ToString() ? TCSFlow : 0) - (currentHClFlowMode == FlowMode.Run.ToString() ? currentHClFlow : 0);
|
||||
|
||||
//(currentStep[(int)RecipColNo.SiSourceOuterFlow] as DoubleParam).Value = currentSiSourPushFlow.ToString("F1");
|
||||
|
||||
double currentSiSourInnerFlow = 0;
|
||||
double currentSiSourMidFlow = 0;
|
||||
double currentSiSourOutFlow = 0;
|
||||
|
||||
if (currentSiSourSplitRatio.Length == 3)
|
||||
{
|
||||
var rationSum = currentSiSourSplitRatio[0] + currentSiSourSplitRatio[1] + currentSiSourSplitRatio[2];
|
||||
|
||||
currentSiSourInnerFlow = currentSiSourTotalFlow / rationSum * currentSiSourSplitRatio[0];
|
||||
currentSiSourMidFlow = currentSiSourTotalFlow / rationSum * currentSiSourSplitRatio[1];
|
||||
currentSiSourOutFlow = currentSiSourTotalFlow / rationSum * currentSiSourSplitRatio[2];
|
||||
}
|
||||
|
||||
((DoubleParam)currentStep[(int)RecipColNo.SiSourceInnerFlow]).Value = Math.Round(currentSiSourInnerFlow, 1);
|
||||
((DoubleParam)currentStep[(int)RecipColNo.SiSourceMiddleFlow]).Value = Math.Round(currentSiSourMidFlow, 1);
|
||||
((DoubleParam)currentStep[(int)RecipColNo.SiSourceOuterFlow]).Value = Math.Round(currentSiSourOutFlow, 1);
|
||||
}
|
||||
|
||||
private static void CalCSourceFlow(RecipeStep currentStep)
|
||||
{
|
||||
var currentC2H4Flow = ((DoubleParam)currentStep[(int)RecipColNo.C2H4Flow]).Value;
|
||||
var currentCSourSplitRatio = new double[3];
|
||||
if (currentStep[(int)RecipColNo.CSourceSplitRatio] is Sets3RatioParam cSourceRatio)
|
||||
currentCSourSplitRatio = cSourceRatio.Ratio;
|
||||
|
||||
var currentCSourTotalFlow = ((DoubleParam)currentStep[(int)RecipColNo.CSourceTotalFlow]).Value;
|
||||
|
||||
var currentC2H4FlowMode = (currentStep[(int)RecipColNo.C2H4FlowMode] as ComboxParam)?.Value;
|
||||
var currentCSourPushFlow = currentCSourTotalFlow -
|
||||
(string.Equals(currentC2H4FlowMode, FlowModeParam.FlowModeEnum.Run.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase)
|
||||
? currentC2H4Flow
|
||||
: 0d);
|
||||
|
||||
|
||||
((DoubleParam)currentStep[(int)RecipColNo.CSourceOuterFlow]).Value = Math.Round(currentCSourPushFlow, 1);
|
||||
|
||||
double currentCSourInnerFlow = 0;
|
||||
double currentCSourMidFlow = 0;
|
||||
double currentCSourOuterFlow = 0;
|
||||
|
||||
if (currentCSourSplitRatio.Length == 3)
|
||||
{
|
||||
var ratioSum = currentCSourSplitRatio[0] + currentCSourSplitRatio[1] + currentCSourSplitRatio[2];
|
||||
|
||||
currentCSourInnerFlow = currentCSourTotalFlow / ratioSum * currentCSourSplitRatio[0];
|
||||
currentCSourMidFlow = currentCSourTotalFlow / ratioSum * currentCSourSplitRatio[1];
|
||||
currentCSourOuterFlow = currentCSourTotalFlow / ratioSum * currentCSourSplitRatio[2];
|
||||
}
|
||||
|
||||
((DoubleParam)currentStep[(int)RecipColNo.CSourceInnerFlow]).Value = Math.Round(currentCSourInnerFlow, 1);
|
||||
((DoubleParam)currentStep[(int)RecipColNo.CSourceMiddleFlow]).Value = Math.Round(currentCSourMidFlow, 1);
|
||||
((DoubleParam)currentStep[(int)RecipColNo.CSourceOuterFlow]).Value = Math.Round(currentCSourOuterFlow, 1);
|
||||
}
|
||||
|
||||
private static void CalDopeFlow(RecipeStep currentStep)
|
||||
{
|
||||
var currentDopeTotalFlow = ((DoubleParam)currentStep[(int)RecipColNo.DopeTotalFlow]).Value;
|
||||
var currentN2ActualFlow = ((DoubleParam)currentStep[(int)RecipColNo.N2ActualFlow]).Value;
|
||||
var currentN2LowFlow = ((DoubleParam)currentStep[(int)RecipColNo.N2LowFlow]).Value;
|
||||
var currentDiluFlowForN2 = ((DoubleParam)currentStep[(int)RecipColNo.DilutFlowForN2]).Value;
|
||||
|
||||
|
||||
var currentDilutedN2Flow =
|
||||
(currentN2LowFlow + currentDiluFlowForN2) * currentN2ActualFlow / currentN2LowFlow;
|
||||
((DoubleParam)currentStep[(int)RecipColNo.DilutedN2Flow]).Value = Math.Round(currentDilutedN2Flow, 1);
|
||||
|
||||
|
||||
var currentDopeSplitRatio = new double[3];
|
||||
if (currentStep[(int)RecipColNo.DopeSplitRatio] is Sets3RatioParam dopRatio)
|
||||
currentDopeSplitRatio = dopRatio.Ratio;
|
||||
|
||||
|
||||
|
||||
//double currentDopePushFlow = currentDopeTotalFlow
|
||||
// - (currentN2FlowMode == FlowMode.Run.ToString() ? currentDilutedN2Flow : 0)
|
||||
// - (currentN2HighFlowMode == FlowMode.Run.ToString() ? currentN2HighFlow : 0)
|
||||
// - (currentTMAFlowMode == FlowMode.Run.ToString() ? TMAFlow : 0);
|
||||
|
||||
//(currentStep[(int)RecipColNo.DopeOuterFlow] as DoubleParam).Value = currentDopePushFlow.ToString("F1");
|
||||
|
||||
double currentDopeInnerFlow = 0;
|
||||
double currentDopeMidFlow = 0;
|
||||
double currentDopeOuterFlow = 0;
|
||||
|
||||
if (currentDopeSplitRatio.Length == 3)
|
||||
{
|
||||
var ratioSum = currentDopeSplitRatio[0] + currentDopeSplitRatio[1] + currentDopeSplitRatio[2];
|
||||
|
||||
currentDopeInnerFlow = currentDopeTotalFlow / ratioSum * currentDopeSplitRatio[0];
|
||||
currentDopeMidFlow = currentDopeTotalFlow / ratioSum * currentDopeSplitRatio[1];
|
||||
currentDopeOuterFlow = currentDopeTotalFlow / ratioSum * currentDopeSplitRatio[2];
|
||||
}
|
||||
|
||||
((DoubleParam)currentStep[(int)RecipColNo.DopeInnerFlow]).Value = Math.Round(currentDopeInnerFlow, 1);
|
||||
((DoubleParam)currentStep[(int)RecipColNo.DopeMiddleFlow]).Value = Math.Round(currentDopeMidFlow, 1);
|
||||
((DoubleParam)currentStep[(int)RecipColNo.DopeOuterFlow]).Value = Math.Round(currentDopeOuterFlow, 1);
|
||||
}
|
||||
|
||||
private static void CalShSupplementFlow(RecipeStep currentStep)
|
||||
{
|
||||
var currentSiSourTotalFlow = ((DoubleParam)currentStep[(int)RecipColNo.SiSourceTotalFlow]).Value;
|
||||
var currentCSourTotalFlow = ((DoubleParam)currentStep[(int)RecipColNo.CSourceTotalFlow]).Value;
|
||||
var currentDopeTotalFlow = ((DoubleParam)currentStep[(int)RecipColNo.DopeTotalFlow]).Value;
|
||||
|
||||
var currentShTotalFlow = ((DoubleParam)currentStep[(int)RecipColNo.SHTotalFlow]).Value;
|
||||
var currentSurroundingFlow = ((DoubleParam)currentStep[(int)RecipColNo.CarrayGasFlow]).Value;
|
||||
|
||||
|
||||
var currentSiSourInnerFlow = ((DoubleParam)currentStep[(int)RecipColNo.SiSourceInnerFlow]).Value;
|
||||
var currentSiSourMidFlow = ((DoubleParam)currentStep[(int)RecipColNo.SiSourceMiddleFlow]).Value;
|
||||
|
||||
var currentCSourInnerFlow = ((DoubleParam)currentStep[(int)RecipColNo.CSourceInnerFlow]).Value;
|
||||
var currentCSourMidFlow = ((DoubleParam)currentStep[(int)RecipColNo.CSourceMiddleFlow]).Value;
|
||||
|
||||
var currentDopeInnerFlow = ((DoubleParam)currentStep[(int)RecipColNo.DopeInnerFlow]).Value;
|
||||
var currentDopeMidFlow = ((DoubleParam)currentStep[(int)RecipColNo.DopeMiddleFlow]).Value;
|
||||
|
||||
|
||||
var currentShTotalFlowSplitRatio = new double[3];
|
||||
if (currentStep[(int)RecipColNo.SHTotalFlowSplitRatio] is Sets3RatioParam shTotalRatio)
|
||||
currentShTotalFlowSplitRatio = shTotalRatio.Ratio;
|
||||
|
||||
|
||||
var currentShSuppTotalFlow = currentShTotalFlow - currentSurroundingFlow - currentSiSourTotalFlow -
|
||||
currentCSourTotalFlow - currentDopeTotalFlow;
|
||||
var sumShTotalFlowSplitRatio = currentShTotalFlowSplitRatio[0] + currentShTotalFlowSplitRatio[1] +
|
||||
currentShTotalFlowSplitRatio[2];
|
||||
var currentShInnerFlow = (currentShTotalFlow - currentSurroundingFlow) / sumShTotalFlowSplitRatio *
|
||||
currentShTotalFlowSplitRatio[0];
|
||||
var currentShMidFlow = (currentShTotalFlow - currentSurroundingFlow) / sumShTotalFlowSplitRatio *
|
||||
currentShTotalFlowSplitRatio[1];
|
||||
var currentShOutterFlow = (currentShTotalFlow - currentSurroundingFlow) / sumShTotalFlowSplitRatio *
|
||||
currentShTotalFlowSplitRatio[2];
|
||||
var currentInnerSuppFlow = currentShInnerFlow - currentSiSourInnerFlow - currentCSourInnerFlow -
|
||||
currentDopeInnerFlow;
|
||||
var currentMidSuppFlow = currentShMidFlow - currentSiSourMidFlow - currentCSourMidFlow - currentDopeMidFlow;
|
||||
var currentOutterSuppFlow = currentShSuppTotalFlow - currentInnerSuppFlow - currentMidSuppFlow;
|
||||
|
||||
((DoubleParam)currentStep[(int)RecipColNo.SHPushTotalFlow]).Value = Math.Round(currentShSuppTotalFlow, 1);
|
||||
((DoubleParam)currentStep[(int)RecipColNo.SHInnerFlow]).Value = Math.Round(currentShInnerFlow, 1);
|
||||
((DoubleParam)currentStep[(int)RecipColNo.SHMiddleFlow]).Value = Math.Round(currentShMidFlow, 1);
|
||||
((DoubleParam)currentStep[(int)RecipColNo.SHOuterFlow]).Value = Math.Round(currentShOutterFlow, 1);
|
||||
((DoubleParam)currentStep[(int)RecipColNo.InnerPushFlow]).Value = Math.Round(currentInnerSuppFlow, 1);
|
||||
((DoubleParam)currentStep[(int)RecipColNo.MiddlePushFlow]).Value = Math.Round(currentMidSuppFlow, 1);
|
||||
((DoubleParam)currentStep[(int)RecipColNo.OuterPushFlow]).Value = Math.Round(currentOutterSuppFlow, 1);
|
||||
}
|
||||
|
||||
private static void CalVentFlow(RecipeStep currentStep, string selectedChamber)
|
||||
{
|
||||
var currentSiH4Flow = ((DoubleParam)currentStep[(int)RecipColNo.SiH4Flow]).Value;
|
||||
var currentTotalVentFlow = ((DoubleParam)currentStep[(int)RecipColNo.TotalVentFlow]).Value;
|
||||
var currentHClFlow = ((DoubleParam)currentStep[(int)RecipColNo.HCLFlow]).Value;
|
||||
var currentN2HighFlow = ((DoubleParam)currentStep[(int)RecipColNo.N2HighFlow]).Value;
|
||||
var currentC2H4Flow = ((DoubleParam)currentStep[(int)RecipColNo.C2H4Flow]).Value;
|
||||
var currentDilutedN2Flow = ((DoubleParam)currentStep[(int)RecipColNo.DilutedN2Flow]).Value;
|
||||
|
||||
var currentN2FlowMode = ((ComboxParam)currentStep[(int)RecipColNo.N2FlowMode]).Value;
|
||||
var currentN2HighFlowMode = ((ComboxParam)currentStep[(int)RecipColNo.N2HighFlowMode]).Value;
|
||||
var currentSiH4FlowMode = (currentStep[(int)RecipColNo.SiH4FlowMode] as ComboxParam)?.Value;
|
||||
var currentTcsFlowMode = (currentStep[(int)RecipColNo.TCSFlowMode] as ComboxParam)?.Value;
|
||||
var currentHClFlowMode = (currentStep[(int)RecipColNo.HCLFlowMode] as ComboxParam)?.Value;
|
||||
var currentC2H4FlowMode = (currentStep[(int)RecipColNo.C2H4FlowMode] as ComboxParam)?.Value;
|
||||
var currentTmaFlowMode = ((ComboxParam)currentStep[(int)RecipColNo.TMAFlowMode]).Value;
|
||||
|
||||
var tcsFlow = GetTcsFlow(currentStep, selectedChamber);
|
||||
var tmaFlow = GetTmaFlow(currentStep, selectedChamber);
|
||||
|
||||
var currentSiSourTotalFlowForPurge =
|
||||
(string.Equals(currentSiH4FlowMode, FlowModeParam.FlowModeEnum.Run.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase) == false
|
||||
? currentSiH4Flow
|
||||
: 0d)
|
||||
+ (string.Equals(currentTcsFlowMode, FlowModeParam.FlowModeEnum.Run.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase) == false
|
||||
? tcsFlow
|
||||
: 0d) +
|
||||
(string.Equals(currentHClFlowMode, FlowModeParam.FlowModeEnum.Run.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase) == false
|
||||
? currentHClFlow
|
||||
: 0d);
|
||||
|
||||
var currentCSourTotalFlowForPurge =
|
||||
string.Equals(currentC2H4FlowMode, FlowModeParam.FlowModeEnum.Run.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase) == false
|
||||
? currentC2H4Flow
|
||||
: 0d;
|
||||
|
||||
|
||||
var n2Flow = (string.Equals(currentN2FlowMode, FlowModeParam.FlowModeEnum.Run.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase) == false
|
||||
? currentDilutedN2Flow
|
||||
: 0d) +
|
||||
(string.Equals(currentN2HighFlowMode, FlowModeParam.FlowModeEnum.Run.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase) == false
|
||||
? currentN2HighFlow
|
||||
: 0d);
|
||||
|
||||
var currentDopeTotalFlowForPurge = n2Flow + (string.Equals(currentTmaFlowMode,
|
||||
FlowModeParam.FlowModeEnum.Run.ToString(), StringComparison.OrdinalIgnoreCase) == false
|
||||
? tmaFlow
|
||||
: 0d);
|
||||
|
||||
var currentVentPushFlow = currentTotalVentFlow - currentSiSourTotalFlowForPurge -
|
||||
currentCSourTotalFlowForPurge - currentDopeTotalFlowForPurge;
|
||||
|
||||
((DoubleParam)currentStep[(int)RecipColNo.VentPushFlow]).Value = Math.Round(currentVentPushFlow, 1);
|
||||
}
|
||||
|
||||
private void CalRecipeParameterForRunVent(RecipeStep currentStep)
|
||||
{
|
||||
/*if (!(currentStep.StepTime > 0))
|
||||
return;*/
|
||||
|
||||
CalSiSourceFlow(currentStep);
|
||||
CalCSourceFlow(currentStep);
|
||||
CalDopeFlow(currentStep);
|
||||
CalShSupplementFlow(currentStep);
|
||||
CalVentFlow(currentStep, CurrentRecipe.Module);
|
||||
}
|
||||
|
||||
[Obsolete("该函数已废除,请使用分步计算函数。")]
|
||||
private void CalRecipeParameterForRunVent(RecipeStep previousStep,
|
||||
IReadOnlyList<Param> currentStep, double stepTime)
|
||||
{
|
||||
#region SH Total flow
|
||||
|
||||
var currentShTotalFlow = ((DoubleParam)currentStep[(int)RecipColNo.SHTotalFlow]).Value;
|
||||
var currentSurroundingFlow = ((DoubleParam)currentStep[(int)RecipColNo.CarrayGasFlow]).Value;
|
||||
|
||||
var currentShTotalFlowSplitRatio = new double[3];
|
||||
if (currentStep[(int)RecipColNo.SHTotalFlowSplitRatio] is Sets3RatioParam shTotalRatio)
|
||||
currentShTotalFlowSplitRatio = shTotalRatio.Ratio;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Si Source
|
||||
|
||||
var currentSiH4Flow = ((DoubleParam)currentStep[(int)RecipColNo.SiH4Flow]).Value;
|
||||
var currentTcsBubbleLowFlow = ((DoubleParam)currentStep[(int)RecipColNo.TCSBubbLowFlow]).Value;
|
||||
var currentTcsBubbleHighFlow = ((DoubleParam)currentStep[(int)RecipColNo.TCSBubbHighFlow]).Value;
|
||||
var currentTcsPushFlow = ((DoubleParam)currentStep[(int)RecipColNo.TCSPushFlow]).Value;
|
||||
var currentHClFlow = ((DoubleParam)currentStep[(int)RecipColNo.HCLFlow]).Value;
|
||||
|
||||
var currentSiSourSplitRatio = new double[3];
|
||||
if (currentStep[(int)RecipColNo.SiSourceSplitRatio] is Sets3RatioParam siSourceRatio)
|
||||
currentSiSourSplitRatio = siSourceRatio.Ratio;
|
||||
|
||||
var currentSiSourTotalFlow = ((DoubleParam)currentStep[(int)RecipColNo.SiSourceTotalFlow]).Value;
|
||||
|
||||
var currentSiH4FlowMode = (currentStep[(int)RecipColNo.SiH4FlowMode] as ComboxParam)?.Value;
|
||||
var currentTcsFlowMode = (currentStep[(int)RecipColNo.TCSFlowMode] as ComboxParam)?.Value;
|
||||
var currentHClFlowMode = (currentStep[(int)RecipColNo.HCLFlowMode] as ComboxParam)?.Value;
|
||||
|
||||
double tcsFlow = 0d;
|
||||
var tcsEff =
|
||||
(double)QueryDataClient.Instance.Service.GetConfig($"PM.{SelectedChamber}.Efficiency.TCS-Eff");
|
||||
if (string.Equals(currentTcsFlowMode, FlowModeParam.FlowModeEnum.Run.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase)
|
||||
|| string.Equals(currentTcsFlowMode, FlowModeParam.FlowModeEnum.Vent.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
tcsFlow = (currentTcsBubbleHighFlow + currentTcsBubbleLowFlow) * tcsEff + currentTcsPushFlow;
|
||||
}
|
||||
else if (string.Equals(currentTcsFlowMode, FlowModeParam.FlowModeEnum.Purge.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
tcsFlow = currentTcsBubbleHighFlow + currentTcsBubbleLowFlow + currentTcsPushFlow;
|
||||
}
|
||||
|
||||
//double currentSiSourPushFlow = currentSiSourTotalFlow - (currentSiH4FlowMode == FlowMode.Run.ToString() ? currentSiH4Flow : 0)
|
||||
// - (currentTCSFlowMode == FlowMode.Run.ToString() ? TCSFlow : 0) - (currentHClFlowMode == FlowMode.Run.ToString() ? currentHClFlow : 0);
|
||||
|
||||
//(currentStep[(int)RecipColNo.SiSourceOuterFlow] as DoubleParam).Value = currentSiSourPushFlow.ToString("F1");
|
||||
|
||||
double currentSiSourInnerFlow = 0;
|
||||
double currentSiSourMidFlow = 0;
|
||||
double currentSiSourOutFlow = 0;
|
||||
|
||||
if (currentSiSourSplitRatio.Length == 3)
|
||||
{
|
||||
var rationSum = currentSiSourSplitRatio[0] + currentSiSourSplitRatio[1] + currentSiSourSplitRatio[2];
|
||||
|
||||
currentSiSourInnerFlow = currentSiSourTotalFlow / rationSum * currentSiSourSplitRatio[0];
|
||||
currentSiSourMidFlow = currentSiSourTotalFlow / rationSum * currentSiSourSplitRatio[1];
|
||||
currentSiSourOutFlow = currentSiSourTotalFlow / rationSum * currentSiSourSplitRatio[2];
|
||||
}
|
||||
|
||||
((DoubleParam)currentStep[(int)RecipColNo.SiSourceInnerFlow]).Value = Math.Round(currentSiSourInnerFlow, 1);
|
||||
((DoubleParam)currentStep[(int)RecipColNo.SiSourceMiddleFlow]).Value = Math.Round(currentSiSourMidFlow, 1);
|
||||
((DoubleParam)currentStep[(int)RecipColNo.SiSourceOuterFlow]).Value = Math.Round(currentSiSourOutFlow, 1);
|
||||
|
||||
#endregion
|
||||
|
||||
#region C Source
|
||||
|
||||
var currentC2H4Flow = ((DoubleParam)currentStep[(int)RecipColNo.C2H4Flow]).Value;
|
||||
var currentCSourSplitRatio = new double[3];
|
||||
if (currentStep[(int)RecipColNo.CSourceSplitRatio] is Sets3RatioParam cSourceRatio)
|
||||
currentCSourSplitRatio = cSourceRatio.Ratio;
|
||||
|
||||
var currentCSourTotalFlow = ((DoubleParam)currentStep[(int)RecipColNo.CSourceTotalFlow]).Value;
|
||||
|
||||
var currentC2H4FlowMode = (currentStep[(int)RecipColNo.C2H4FlowMode] as ComboxParam)?.Value;
|
||||
var currentCSourPushFlow = currentCSourTotalFlow -
|
||||
(string.Equals(currentC2H4FlowMode, FlowModeParam.FlowModeEnum.Run.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase)
|
||||
? currentC2H4Flow
|
||||
: 0d);
|
||||
|
||||
|
||||
((DoubleParam)currentStep[(int)RecipColNo.CSourceOuterFlow]).Value = Math.Round(currentCSourPushFlow, 1);
|
||||
|
||||
double currentCSourInnerFlow = 0;
|
||||
double currentCSourMidFlow = 0;
|
||||
double currentCSourOuterFlow = 0;
|
||||
|
||||
if (currentCSourSplitRatio.Length == 3)
|
||||
{
|
||||
var ratioSum = currentCSourSplitRatio[0] + currentCSourSplitRatio[1] + currentCSourSplitRatio[2];
|
||||
|
||||
currentCSourInnerFlow = currentCSourTotalFlow / ratioSum * currentCSourSplitRatio[0];
|
||||
currentCSourMidFlow = currentCSourTotalFlow / ratioSum * currentCSourSplitRatio[1];
|
||||
currentCSourOuterFlow = currentCSourTotalFlow / ratioSum * currentCSourSplitRatio[2];
|
||||
}
|
||||
|
||||
((DoubleParam)currentStep[(int)RecipColNo.CSourceInnerFlow]).Value = Math.Round(currentCSourInnerFlow, 1);
|
||||
((DoubleParam)currentStep[(int)RecipColNo.CSourceMiddleFlow]).Value = Math.Round(currentCSourMidFlow, 1);
|
||||
((DoubleParam)currentStep[(int)RecipColNo.CSourceOuterFlow]).Value = Math.Round(currentCSourOuterFlow, 1);
|
||||
|
||||
#endregion
|
||||
|
||||
#region Dope
|
||||
|
||||
var currentDopeTotalFlow = ((DoubleParam)currentStep[(int)RecipColNo.DopeTotalFlow]).Value;
|
||||
var currentN2ActualFlow = ((DoubleParam)currentStep[(int)RecipColNo.N2ActualFlow]).Value;
|
||||
var currentN2LowFlow = ((DoubleParam)currentStep[(int)RecipColNo.N2LowFlow]).Value;
|
||||
var currentDiluFlowForN2 = ((DoubleParam)currentStep[(int)RecipColNo.DilutFlowForN2]).Value;
|
||||
|
||||
var currentN2HighFlow = ((DoubleParam)currentStep[(int)RecipColNo.N2HighFlow]).Value;
|
||||
var currentTmaBubbFlow = ((DoubleParam)currentStep[(int)RecipColNo.TMABubbFlow]).Value;
|
||||
var currentTmaPushFlow = ((DoubleParam)currentStep[(int)RecipColNo.TMAPushFlow]).Value;
|
||||
|
||||
var currentDilutedN2Flow =
|
||||
(currentN2LowFlow + currentDiluFlowForN2) * currentN2ActualFlow / currentN2LowFlow;
|
||||
((DoubleParam)currentStep[(int)RecipColNo.DilutedN2Flow]).Value = Math.Round(currentDilutedN2Flow, 1);
|
||||
|
||||
|
||||
var currentDopeSplitRatio = new double[3];
|
||||
if (currentStep[(int)RecipColNo.DopeSplitRatio] is Sets3RatioParam dopRatio)
|
||||
currentDopeSplitRatio = dopRatio.Ratio;
|
||||
|
||||
var currentN2FlowMode = ((ComboxParam)currentStep[(int)RecipColNo.N2FlowMode]).Value;
|
||||
var currentN2HighFlowMode = ((ComboxParam)currentStep[(int)RecipColNo.N2HighFlowMode]).Value;
|
||||
var currentTmaFlowMode = ((ComboxParam)currentStep[(int)RecipColNo.TMAFlowMode]).Value;
|
||||
|
||||
double tmaFlow = 0;
|
||||
var tmaEff =
|
||||
(double)QueryDataClient.Instance.Service.GetConfig($"PM.{SelectedChamber}.Efficiency.TMA-Eff");
|
||||
|
||||
if (string.Equals(currentTmaFlowMode, FlowModeParam.FlowModeEnum.Run.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase)
|
||||
|| string.Equals(currentTmaFlowMode, FlowModeParam.FlowModeEnum.Vent.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase))
|
||||
tmaFlow = currentTmaBubbFlow * tmaEff + currentTmaPushFlow;
|
||||
else if (string.Equals(currentTmaFlowMode, FlowModeParam.FlowModeEnum.Purge.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase))
|
||||
tmaFlow = currentTmaBubbFlow + currentTmaPushFlow;
|
||||
|
||||
//double currentDopePushFlow = currentDopeTotalFlow
|
||||
// - (currentN2FlowMode == FlowMode.Run.ToString() ? currentDilutedN2Flow : 0)
|
||||
// - (currentN2HighFlowMode == FlowMode.Run.ToString() ? currentN2HighFlow : 0)
|
||||
// - (currentTMAFlowMode == FlowMode.Run.ToString() ? TMAFlow : 0);
|
||||
|
||||
//(currentStep[(int)RecipColNo.DopeOuterFlow] as DoubleParam).Value = currentDopePushFlow.ToString("F1");
|
||||
|
||||
double currentDopeInnerFlow = 0;
|
||||
double currentDopeMidFlow = 0;
|
||||
double currentDopeOuterFlow = 0;
|
||||
|
||||
if (currentDopeSplitRatio.Length == 3)
|
||||
{
|
||||
var ratioSum = currentDopeSplitRatio[0] + currentDopeSplitRatio[1] + currentDopeSplitRatio[2];
|
||||
|
||||
currentDopeInnerFlow = currentDopeTotalFlow / ratioSum * currentDopeSplitRatio[0];
|
||||
currentDopeMidFlow = currentDopeTotalFlow / ratioSum * currentDopeSplitRatio[1];
|
||||
currentDopeOuterFlow = currentDopeTotalFlow / ratioSum * currentDopeSplitRatio[2];
|
||||
}
|
||||
|
||||
(currentStep[(int)RecipColNo.DopeInnerFlow] as DoubleParam).Value = Math.Round(currentDopeInnerFlow, 1);
|
||||
(currentStep[(int)RecipColNo.DopeMiddleFlow] as DoubleParam).Value = Math.Round(currentDopeMidFlow, 1);
|
||||
(currentStep[(int)RecipColNo.DopeOuterFlow] as DoubleParam).Value = Math.Round(currentDopeOuterFlow, 1);
|
||||
|
||||
#endregion
|
||||
|
||||
#region SH Supp. Flow
|
||||
|
||||
var currentShSuppTotalFlow = currentShTotalFlow - currentSurroundingFlow - currentSiSourTotalFlow -
|
||||
currentCSourTotalFlow - currentDopeTotalFlow;
|
||||
var sumShTotalFlowSplitRatio = currentShTotalFlowSplitRatio[0] + currentShTotalFlowSplitRatio[1] +
|
||||
currentShTotalFlowSplitRatio[2];
|
||||
var currentShInnerFlow = (currentShTotalFlow - currentSurroundingFlow) / sumShTotalFlowSplitRatio *
|
||||
currentShTotalFlowSplitRatio[0];
|
||||
var currentShMidFlow = (currentShTotalFlow - currentSurroundingFlow) / sumShTotalFlowSplitRatio *
|
||||
currentShTotalFlowSplitRatio[1];
|
||||
var currentShOutterFlow = (currentShTotalFlow - currentSurroundingFlow) / sumShTotalFlowSplitRatio *
|
||||
currentShTotalFlowSplitRatio[2];
|
||||
var currentInnerSuppFlow = currentShInnerFlow - currentSiSourInnerFlow - currentCSourInnerFlow -
|
||||
currentDopeInnerFlow;
|
||||
var currentMidSuppFlow = currentShMidFlow - currentSiSourMidFlow - currentCSourMidFlow - currentDopeMidFlow;
|
||||
var currentOutterSuppFlow = currentShSuppTotalFlow - currentInnerSuppFlow - currentMidSuppFlow;
|
||||
|
||||
(currentStep[(int)RecipColNo.SHPushTotalFlow] as DoubleParam).Value = Math.Round(currentShSuppTotalFlow, 1);
|
||||
(currentStep[(int)RecipColNo.SHInnerFlow] as DoubleParam).Value = Math.Round(currentShInnerFlow, 1);
|
||||
(currentStep[(int)RecipColNo.SHMiddleFlow] as DoubleParam).Value = Math.Round(currentShMidFlow, 1);
|
||||
(currentStep[(int)RecipColNo.SHOuterFlow] as DoubleParam).Value = Math.Round(currentShOutterFlow, 1);
|
||||
(currentStep[(int)RecipColNo.InnerPushFlow] as DoubleParam).Value = Math.Round(currentInnerSuppFlow, 1);
|
||||
(currentStep[(int)RecipColNo.MiddlePushFlow] as DoubleParam).Value = Math.Round(currentMidSuppFlow, 1);
|
||||
(currentStep[(int)RecipColNo.OuterPushFlow] as DoubleParam).Value = Math.Round(currentOutterSuppFlow, 1);
|
||||
|
||||
#endregion
|
||||
|
||||
#region Vent Flow
|
||||
|
||||
var currentTotalVentFlow = (currentStep[(int)RecipColNo.TotalVentFlow] as DoubleParam).Value;
|
||||
|
||||
var currentSiSourTotalFlowForPurge =
|
||||
(string.Equals(currentSiH4FlowMode, FlowModeParam.FlowModeEnum.Run.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase) == false
|
||||
? currentSiH4Flow
|
||||
: 0d)
|
||||
+ (string.Equals(currentTcsFlowMode, FlowModeParam.FlowModeEnum.Run.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase) == false
|
||||
? tcsFlow
|
||||
: 0d) +
|
||||
(string.Equals(currentHClFlowMode, FlowModeParam.FlowModeEnum.Run.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase) == false
|
||||
? currentHClFlow
|
||||
: 0d);
|
||||
|
||||
var currentCSourTotalFlowForPurge =
|
||||
string.Equals(currentC2H4FlowMode, FlowModeParam.FlowModeEnum.Run.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase) == false
|
||||
? currentC2H4Flow
|
||||
: 0d;
|
||||
|
||||
|
||||
var n2Flow = (string.Equals(currentN2FlowMode, FlowModeParam.FlowModeEnum.Run.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase) == false
|
||||
? currentDilutedN2Flow
|
||||
: 0d) +
|
||||
(string.Equals(currentN2HighFlowMode, FlowModeParam.FlowModeEnum.Run.ToString(),
|
||||
StringComparison.OrdinalIgnoreCase) == false
|
||||
? currentN2HighFlow
|
||||
: 0d);
|
||||
|
||||
var currentDopeTotalFlowForPurge = n2Flow + (string.Equals(currentTmaFlowMode,
|
||||
FlowModeParam.FlowModeEnum.Run.ToString(), StringComparison.OrdinalIgnoreCase) == false
|
||||
? tmaFlow
|
||||
: 0d);
|
||||
|
||||
var currentVentPushFlow = currentTotalVentFlow - currentSiSourTotalFlowForPurge -
|
||||
currentCSourTotalFlowForPurge - currentDopeTotalFlowForPurge;
|
||||
|
||||
(currentStep[(int)RecipColNo.VentPushFlow] as DoubleParam).Value = Math.Round(currentVentPushFlow, 1);
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
public void TabSelectionChanged()
|
||||
{
|
||||
UpdateRecipeFormat();
|
||||
|
|
|
@ -54,6 +54,6 @@ using System.Windows;
|
|||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
|
||||
[assembly: AssemblyVersion("1.0.3.3")]
|
||||
[assembly: AssemblyFileVersion("1.0.3.3")]
|
||||
[assembly: AssemblyVersion("1.0.5.10")]
|
||||
[assembly: AssemblyFileVersion("1.0.5.10")]
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue