Update From Svn。
This commit is contained in:
parent
ed544efa51
commit
04d39f0a3f
|
@ -127,7 +127,15 @@
|
|||
<userControls1:ParameterNodeTreeViewControl
|
||||
x:Name="tvParameterNodes"
|
||||
TreeRoot="{Binding ParameterNodes}"
|
||||
PresetGroupsFolderName="DataHistory"/>
|
||||
PresetGroupsFolderName="DataHistory"
|
||||
VisibilityExcludeNodesButton="Visible"
|
||||
>
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="EditExcludeNodesList">
|
||||
<micro:ActionMessage MethodName="EditExcludeNodesList" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</userControls1:ParameterNodeTreeViewControl>
|
||||
</Border>
|
||||
</Grid>
|
||||
|
||||
|
|
|
@ -85,6 +85,8 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.DataHistory
|
|||
/// </summary>
|
||||
private readonly IProgress<string> _progShowErrorMessageBox;
|
||||
|
||||
RealtimeProvider provider = new RealtimeProvider();
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructors
|
||||
|
@ -95,12 +97,13 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.DataHistory
|
|||
|
||||
SelectedData = new ChartingLineSeriesCollection(DisplayName);
|
||||
|
||||
var provider = new RealtimeProvider();
|
||||
|
||||
ParameterNodes = new TreeNode(DisplayName)
|
||||
{
|
||||
MaxTerminalSelectionAllowed = MAX_ITEMS_PER_QUERY
|
||||
};
|
||||
ParameterNodes.ChildNodes.AddRange( provider.GetParameters());
|
||||
//ParameterNodes.ChildNodes.AddRange( provider.GetParameters());
|
||||
ParameterNodes.ChildNodes.AddRange(provider.GetParameters(true, "DataHistoryFilter.txt"));
|
||||
|
||||
|
||||
StartDateTime = DateTime.Now.Date;
|
||||
|
@ -717,7 +720,22 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.DataHistory
|
|||
{
|
||||
_progCsvExport.Report(e);
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region Data Filter
|
||||
/// <summary>
|
||||
/// 点击过滤按钮,弹出过滤编辑界面
|
||||
/// </summary>
|
||||
public void EditExcludeNodesList()
|
||||
{
|
||||
string sFile = "DataHistoryFilter.txt";
|
||||
List<TreeNode> liNodesAll = provider.GetParameters(false, sFile);
|
||||
DataFilter df = new DataFilter();
|
||||
df._NodesShow = ParameterNodes;
|
||||
df.FilterFile = sFile;
|
||||
df.ShowDialog();
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,104 @@
|
|||
<Window x:Name="DataFilter1"
|
||||
x:Class="MECF.Framework.UI.Client.CenterViews.Operations.RealTime.DataFilter"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d"
|
||||
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
|
||||
xmlns:userControls1="clr-namespace:Sicentury.Core.UserControls;assembly=Sicentury.Core"
|
||||
Title="Data Filter Editor" Height="850" Width="650" WindowStyle="ToolWindow" WindowStartupLocation="CenterScreen" Loaded="winTrayInfo1_Loaded" ResizeMode="NoResize">
|
||||
<Grid >
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="200"/>
|
||||
<RowDefinition Height="600"/>
|
||||
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="350"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
|
||||
</Grid.ColumnDefinitions>
|
||||
<!--
|
||||
<Label
|
||||
Grid.Row="0"
|
||||
Grid.ColumnSpan="2"
|
||||
HorizontalContentAlignment="Center"
|
||||
VerticalContentAlignment="Center"
|
||||
Content="Data Filter Editor"
|
||||
FontSize="13"
|
||||
Style="{DynamicResource Table_TitleStyle}" />
|
||||
|
||||
-->
|
||||
<Border
|
||||
Grid.Row="0"
|
||||
Grid.Column="0"
|
||||
Grid.RowSpan="2"
|
||||
Padding="5,1"
|
||||
Background="{Binding LLBStatusBackground}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,1,1,1"
|
||||
SnapsToDevicePixels="True"
|
||||
>
|
||||
<Grid>
|
||||
<userControls1:ParameterNodeTreeViewControl
|
||||
x:Name="treeParameterNodes"
|
||||
IsEnabled="True"
|
||||
PresetGroupsFolderName="DataFilter"
|
||||
Background="{DynamicResource Button_BD}"
|
||||
VisibilityTopTools ="Hidden"
|
||||
|
||||
>
|
||||
<!--
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="EditExcludeNodesList">
|
||||
<micro:ActionMessage MethodName="EditExcludeNodesList" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
-->
|
||||
</userControls1:ParameterNodeTreeViewControl>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<Border
|
||||
Grid.Row="0"
|
||||
Grid.Column="1"
|
||||
Padding="5,1"
|
||||
Background="{Binding LLBStatusBackground}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,1,1,1"
|
||||
|
||||
>
|
||||
<TextBlock
|
||||
Name="tbCostDegree"
|
||||
Margin="0,0,0,0"
|
||||
Padding="0,0,0,0"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="18"
|
||||
Foreground="{DynamicResource FG_Black}"
|
||||
Text="请把要隐藏项取消勾选"
|
||||
TextAlignment="Center"
|
||||
TextWrapping="Wrap" />
|
||||
|
||||
</Border>
|
||||
|
||||
<Border
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Padding="5,1"
|
||||
Background="{Binding LLBStatusBackground}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,1,1,1"
|
||||
|
||||
>
|
||||
<Button
|
||||
x:Name="buttono_OK"
|
||||
Width="100"
|
||||
Height="60" Content="OK" Margin="96,362,86,175" Click="buttono_OK_Click"
|
||||
>
|
||||
</Button>
|
||||
|
||||
</Border>
|
||||
|
||||
</Grid>
|
||||
</Window>
|
|
@ -0,0 +1,238 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.IO;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
using Sicentury.Core.EventArgs;
|
||||
using Sicentury.Core.Tree;
|
||||
using Aitex.Core.RT.Log;
|
||||
using Aitex.Core.Util;
|
||||
using Aitex.Core.Utilities;
|
||||
using MECF.Framework.Common.DataCenter;
|
||||
using MECF.Framework.UI.Client.CenterViews.Core;
|
||||
using MECF.Framework.UI.Client.CenterViews.Core.Charting;
|
||||
using MECF.Framework.UI.Client.CenterViews.Core.EventArgs;
|
||||
using Aitex.Common.Util;
|
||||
|
||||
namespace MECF.Framework.UI.Client.CenterViews.Operations.RealTime
|
||||
{
|
||||
/// <summary>
|
||||
/// winTrayInfo.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class DataFilter : Window
|
||||
{
|
||||
#region Variables
|
||||
private readonly RealtimeProvider _provider = new RealtimeProvider();
|
||||
#endregion
|
||||
|
||||
#region Properties
|
||||
|
||||
|
||||
private TreeNode _NodesAll = new TreeNode("DataFilterNodesAll");
|
||||
//private TreeNode _NodesShow = new TreeNode("DataFilterNodesShow");
|
||||
public TreeNode _NodesShow { get; set; }
|
||||
public string FilterFile;
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
public DataFilter()
|
||||
{
|
||||
InitializeComponent();
|
||||
//
|
||||
|
||||
//
|
||||
_NodesAll.ChildNodes.AddRange(_provider.GetParameters(false, "RealTimeFilter.txt"));
|
||||
//_NodesShow.ChildNodes.AddRange(_provider.GetParameters(true));
|
||||
|
||||
|
||||
|
||||
}
|
||||
private void ShowData()
|
||||
{
|
||||
this.treeParameterNodes.TreeRoot = _NodesAll;
|
||||
if(this._NodesShow == null)
|
||||
{
|
||||
this._NodesShow = new TreeNode("NodeShow");
|
||||
}
|
||||
//
|
||||
Dictionary<string, string> dicNodesAll = new Dictionary<string, string>();
|
||||
Dictionary<string, string> dicNodesShow = new Dictionary<string, string>();
|
||||
|
||||
GetElementString(_NodesShow, "", dicNodesShow,null);
|
||||
|
||||
GetElementString(_NodesAll, "", dicNodesAll,dicNodesShow);
|
||||
|
||||
foreach (string key in dicNodesAll.Keys)
|
||||
{
|
||||
if(!dicNodesShow.ContainsKey(key))
|
||||
{
|
||||
//如果已显示节点中没有找到当前节点,则当前节点就是隐藏的节点,应该勾选
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void GetElementString(TreeNode node, string parentName,Dictionary<string,string> dic, Dictionary<string,string> dicCheck)
|
||||
{
|
||||
foreach(TreeNode tn in node.ChildNodes)
|
||||
{
|
||||
if(tn.ChildNodes.Count >0)
|
||||
{
|
||||
if (parentName.Trim().Length > 0)
|
||||
{
|
||||
GetElementString(tn, parentName + "." + tn.Name, dic, dicCheck);
|
||||
}
|
||||
else
|
||||
{
|
||||
GetElementString(tn, tn.Name, dic, dicCheck);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (dicCheck != null)
|
||||
{
|
||||
if (parentName.Trim().Length > 0)
|
||||
{
|
||||
if (dicCheck.ContainsKey(parentName + "." + tn.Name))
|
||||
{
|
||||
dic.Add(parentName + "." + tn.Name, "1");
|
||||
tn.IsSelected = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
dic.Add(parentName + "." + tn.Name, "0");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (dicCheck.ContainsKey(tn.Name))
|
||||
{
|
||||
dic.Add(tn.Name, "1");
|
||||
tn.IsSelected = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
dic.Add(tn.Name, "0");
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (parentName.Trim().Length > 0 )
|
||||
{
|
||||
dic.Add(parentName + "." + tn.Name, "0");
|
||||
}
|
||||
else
|
||||
{
|
||||
dic.Add( tn.Name, "0");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void GetElementResultString(TreeNode node, string parentName, Dictionary<string, string> dic)
|
||||
{
|
||||
foreach (TreeNode tn in node.ChildNodes)
|
||||
{
|
||||
if (tn.ChildNodes.Count > 0)
|
||||
{
|
||||
if (parentName.Trim().Length > 0)
|
||||
{
|
||||
GetElementResultString(tn, parentName + "." + tn.Name, dic);
|
||||
}
|
||||
else
|
||||
{
|
||||
GetElementResultString(tn, tn.Name, dic);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (parentName.Trim().Length > 0)
|
||||
{
|
||||
if (tn.IsSelected == true)
|
||||
{
|
||||
|
||||
dic.Add(parentName + "." + tn.Name, "1");
|
||||
}
|
||||
else if (tn.IsSelected == false)
|
||||
{
|
||||
dic.Add(parentName + "." + tn.Name, "0");
|
||||
}
|
||||
else
|
||||
{
|
||||
dic.Add(parentName + "." + tn.Name, "2");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (tn.IsSelected == true)
|
||||
{
|
||||
|
||||
dic.Add( tn.Name, "1");
|
||||
}
|
||||
else if(tn.IsSelected == false)
|
||||
{
|
||||
dic.Add( tn.Name, "0");
|
||||
}
|
||||
else
|
||||
{
|
||||
dic.Add(tn.Name, "2");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void winTrayInfo1_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.ShowData();
|
||||
}
|
||||
|
||||
private void buttono_OK_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Dictionary<string, string> dicNodesResult = new Dictionary<string, string>();
|
||||
GetElementResultString(_NodesAll, "", dicNodesResult);
|
||||
SaveResult(dicNodesResult);
|
||||
//
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void SaveResult(Dictionary<string,string> dic)
|
||||
{
|
||||
if(dic != null)
|
||||
{
|
||||
if(dic.Count >0)
|
||||
{
|
||||
List<string> liFilter = new List<string>();
|
||||
string DataFilterFile = PathManager.GetCfgDir() + this.FilterFile;
|
||||
//
|
||||
using (StreamWriter sw = new StreamWriter(DataFilterFile,false))
|
||||
{
|
||||
foreach (string key in dic.Keys)
|
||||
{
|
||||
if (dic[key] == "0")
|
||||
{
|
||||
sw.WriteLine(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using OpenSEMI.ClientBase.ServiceProvider;
|
||||
using Aitex.Common.Util;
|
||||
using System.Xml;
|
||||
using System.IO;
|
||||
|
||||
namespace MECF.Framework.UI.Client.CenterViews.Operations.RealTime
|
||||
{
|
||||
public class FilterProvider: IProvider
|
||||
{
|
||||
public FilterProvider()
|
||||
{ }
|
||||
//}
|
||||
public void Create()
|
||||
{
|
||||
|
||||
}
|
||||
//
|
||||
public static List<string> GetFilterTree(string sFilterFile)
|
||||
{
|
||||
List<string> liFilter = new List<string>();
|
||||
string DataFilterFile = PathManager.GetCfgDir() + sFilterFile;
|
||||
//
|
||||
if (File.Exists(DataFilterFile))
|
||||
{
|
||||
|
||||
using(StreamReader sr = new StreamReader(DataFilterFile))
|
||||
{
|
||||
string s = sr.ReadLine();
|
||||
while (s != null)
|
||||
{
|
||||
if(s.Trim().Length == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
liFilter.Add(s);
|
||||
//
|
||||
s = sr.ReadLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
//
|
||||
//liFilter.Add("UserDefine"); //测试用
|
||||
//
|
||||
return liFilter;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -41,7 +41,15 @@
|
|||
x:Name="tvParameterNodes"
|
||||
IsEnabled="{Binding IsBusy, Converter={StaticResource boolReverseConverter}}"
|
||||
TreeRoot="{Binding ParameterNodes}"
|
||||
PresetGroupsFolderName="RealTimeView"/>
|
||||
PresetGroupsFolderName="RealTimeView"
|
||||
VisibilityExcludeNodesButton="Visible"
|
||||
>
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="EditExcludeNodesList">
|
||||
<micro:ActionMessage MethodName="EditExcludeNodesList" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</userControls1:ParameterNodeTreeViewControl>
|
||||
</Grid>
|
||||
</Border>
|
||||
</Grid>
|
||||
|
|
|
@ -55,7 +55,8 @@ namespace MECF.Framework.UI.Client.CenterViews.Operations.RealTime
|
|||
MaxTerminalSelectionAllowed = MAX_PARAMETERS_ALLOWED
|
||||
};
|
||||
|
||||
ParameterNodes.ChildNodes.AddRange(_provider.GetParameters());
|
||||
//ParameterNodes.ChildNodes.AddRange(_provider.GetParameters());
|
||||
ParameterNodes.ChildNodes.AddRange(_provider.GetParameters(true,"RealTimeFilter.txt"));
|
||||
ParameterNodes.TerminalNodeSelectionChanged += OnNodeSelectionChanged;
|
||||
|
||||
IntervalSaved = true;
|
||||
|
@ -275,6 +276,19 @@ namespace MECF.Framework.UI.Client.CenterViews.Operations.RealTime
|
|||
view.dataGrid.CancelOperation();
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 点击过滤按钮,弹出过滤编辑界面
|
||||
/// </summary>
|
||||
public void EditExcludeNodesList()
|
||||
{
|
||||
string sFile = "RealTimeFilter.txt";
|
||||
List<TreeNode> liNodesAll = _provider.GetParameters(false,sFile);
|
||||
DataFilter df = new DataFilter();
|
||||
df._NodesShow = ParameterNodes;
|
||||
df.FilterFile = sFile;
|
||||
df.ShowDialog();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
|
|
@ -110,6 +110,64 @@ namespace MECF.Framework.UI.Client.CenterViews.Operations.RealTime
|
|||
LOG.Write(ex);
|
||||
}
|
||||
|
||||
return root;
|
||||
}
|
||||
/// <summary>
|
||||
/// 带过滤的获取DATA数据,Numberic类型的
|
||||
/// </summary>
|
||||
/// <param name="bDataFilter">是否过滤,是:过滤,否:显示所有数据</param>
|
||||
/// <returns></returns>
|
||||
public List<TreeNode> GetParameters(bool bDataFilter,string FilterFile)
|
||||
{
|
||||
var root = new List<TreeNode>();
|
||||
List<string> filter = FilterProvider.GetFilterTree(FilterFile);
|
||||
|
||||
try
|
||||
{
|
||||
var dataList = (List<string>)QueryDataClient.Instance.Service.GetConfig("System.NumericDataList");
|
||||
var typedContents = QueryDataClient.Instance.Service.GetTypedConfigContent("UserDefine", "");
|
||||
if (string.IsNullOrEmpty(typedContents))
|
||||
{
|
||||
dataList.Add($"UserDefine");
|
||||
}
|
||||
else
|
||||
{
|
||||
var contentList = typedContents.Split(',').ToList();
|
||||
contentList.ForEach(x =>
|
||||
{
|
||||
if (!string.IsNullOrEmpty(x)) dataList.Add($"UserDefine.{x}");
|
||||
});
|
||||
}
|
||||
|
||||
dataList.Sort();
|
||||
|
||||
foreach (var dataName in dataList)
|
||||
{
|
||||
//过滤
|
||||
if(bDataFilter)
|
||||
{
|
||||
if(filter.Contains(dataName))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
//
|
||||
var nodeName = new Queue<string>(dataName.Split('.'));
|
||||
if (nodeName.Count <= 0)
|
||||
continue;
|
||||
|
||||
// 开始创建Tree分支
|
||||
var rootNode = root.FirstOrDefault(x => x.Name == nodeName.Peek());
|
||||
var node = CreateTreeBranch(nodeName, rootNode);
|
||||
if (rootNode == null)
|
||||
root.Add(node);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LOG.Write(ex);
|
||||
}
|
||||
|
||||
return root;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -198,6 +198,7 @@ namespace MECF.Framework.UI.Client.ClientBase
|
|||
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public UiViewModelBase()
|
||||
|
|
|
@ -267,6 +267,10 @@
|
|||
<DependentUpon>IO3View.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CenterViews\Maitenances\IO3\IO3ViewModel.cs" />
|
||||
<Compile Include="CenterViews\Operations\RealTime\FilterProvider.cs" />
|
||||
<Compile Include="CenterViews\Operations\RealTime\DataFilter.xaml.cs">
|
||||
<DependentUpon>DataFilter.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CenterViews\Tray\WaferManagerEx.cs" />
|
||||
<Compile Include="CenterViews\Tray\winTrayInfo.xaml.cs">
|
||||
<DependentUpon>winTrayInfo.xaml</DependentUpon>
|
||||
|
@ -892,6 +896,10 @@
|
|||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="CenterViews\Operations\RealTime\DataFilter.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="CenterViews\Tray\winTrayInfo.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
|
|
|
@ -843,13 +843,13 @@ namespace Mainframe.TMs
|
|||
{
|
||||
Tuple<bool, Result> ret = ExecuteAndWait(id, () =>
|
||||
{
|
||||
Notify($"Wait PV1Temp below{_pmPVInnerTempLimit}℃ and PV2Temp below{_pmPVMiddleTempLimit}℃ and PV3Temp below{_pmPVOuterTempLimit}℃");
|
||||
Notify($"Wait PV2Temp below{_pmPVMiddleTempLimit}℃ and PV3Temp below{_pmPVOuterTempLimit}℃");
|
||||
return true;
|
||||
},() =>
|
||||
{
|
||||
if (_tc1 != null && _pmPVOuterTempLimit>0 && _pmPVMiddleTempLimit>0 && _pmPVOuterTempLimit>0)
|
||||
if (_tc1 != null && _pmPVMiddleTempLimit>0 && _pmPVOuterTempLimit>0)
|
||||
{
|
||||
return _tc1.L1PVFeedBack < _pmPVInnerTempLimit && _tc1.L2PVFeedBack < _pmPVMiddleTempLimit && _tc1.L3PVFeedBack < _pmPVOuterTempLimit;
|
||||
return _tc1.L2PVFeedBack < _pmPVMiddleTempLimit && _tc1.L3PVFeedBack < _pmPVOuterTempLimit;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -287,6 +287,14 @@ namespace SicPM.Devices
|
|||
// EV.PostWarningLog(Module, "Servo is not ready!");
|
||||
// return;
|
||||
//}
|
||||
if (target == 0)
|
||||
{
|
||||
_setValueIsZero = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
_setValueIsZero = false;
|
||||
}
|
||||
|
||||
if (target == 0)
|
||||
{
|
||||
|
|
|
@ -216,6 +216,7 @@ namespace SicPM
|
|||
}
|
||||
|
||||
private R_TRIG _alarmTrig = new R_TRIG();
|
||||
private int lastCount = 0;
|
||||
public bool IsAlarm
|
||||
{
|
||||
get
|
||||
|
@ -228,7 +229,7 @@ namespace SicPM
|
|||
count++;
|
||||
}
|
||||
|
||||
_alarmTrig.CLK = count > 0 ;
|
||||
_alarmTrig.CLK = count > 0 && count!= lastCount;
|
||||
if (_alarmTrig.Q)
|
||||
{
|
||||
if (!IsServiceIdle)
|
||||
|
@ -237,6 +238,7 @@ namespace SicPM
|
|||
}
|
||||
}
|
||||
_alarmNumber = count;
|
||||
lastCount = count;
|
||||
return FsmState == (int)STATE.Error;
|
||||
}
|
||||
}
|
||||
|
@ -627,6 +629,7 @@ namespace SicPM
|
|||
Transition(STATE.Idle, MSG.ToServiceIdle, FsmToService, STATE.Idle);
|
||||
Transition(STATE.VacIdle, MSG.ToServiceIdle, FsmToService, STATE.VacIdle);
|
||||
//Transition(STATE.Safety, MSG.ToServiceIdle, FsmToService, STATE.Safety);
|
||||
Transition(STATE.ProcessIdle, MSG.ToServiceIdle, FsmToService, STATE.ProcessIdle);
|
||||
Transition(STATE.Error, MSG.ToServiceIdle, FsmToService, STATE.Error);
|
||||
|
||||
//Process到ProcessIdle 【2022-01-20】
|
||||
|
|
|
@ -49,6 +49,7 @@ namespace SicPM.RecipeExecutions
|
|||
ConditionWait,
|
||||
StepCompleted,
|
||||
Paused,
|
||||
Abort,
|
||||
}
|
||||
|
||||
private object _recipeLocker = new object();
|
||||
|
@ -62,6 +63,7 @@ namespace SicPM.RecipeExecutions
|
|||
|
||||
private double _curStepElpasedTimeBeforePaused2;
|
||||
private List<int> _lstSkipSteps = new List<int>();
|
||||
private bool isNormalEnd = false;
|
||||
|
||||
public RecipeContinueMode ContinueAction { get; set; }
|
||||
|
||||
|
@ -210,6 +212,7 @@ namespace SicPM.RecipeExecutions
|
|||
|
||||
_lstSkipSteps = new List<int>();
|
||||
|
||||
isNormalEnd = false;
|
||||
_currentStepIndex = 99;
|
||||
_currentStepNumber = CurStepTotalLoopCount = 0;
|
||||
_dummyStepCount = 0;
|
||||
|
@ -594,6 +597,7 @@ namespace SicPM.RecipeExecutions
|
|||
|
||||
_recipeTimer.Stop();
|
||||
Notify("Finished");
|
||||
isNormalEnd = true;
|
||||
return Result.DONE;
|
||||
}
|
||||
|
||||
|
@ -696,14 +700,17 @@ namespace SicPM.RecipeExecutions
|
|||
|
||||
public void ExitProcess()
|
||||
{
|
||||
if (_state == RecipeRunningState.RecipeCompleted)
|
||||
if (isNormalEnd || PMDevice.RecipeRunningInfo.IsRoutineAbort == true)
|
||||
{
|
||||
_dbCallback.RecipeComplete(PMDevice.RecipeRunningInfo.InnerId.ToString());
|
||||
|
||||
AutoJobRecorder.UpdatePosition(_currrentWaferGuid, Module, PMDevice.RecipeRunningInfo.IsRoutineAbort ? "Abort" : "Completed");
|
||||
_fdc.Stop();
|
||||
}
|
||||
else
|
||||
{
|
||||
_dbCallback.RecipeFailed(PMDevice.RecipeRunningInfo.InnerId.ToString());
|
||||
AutoJobRecorder.UpdatePosition(_currrentWaferGuid, Module, "Alarm");
|
||||
_fdc.Stop();
|
||||
}
|
||||
|
||||
|
|
|
@ -494,6 +494,13 @@ namespace SicPM.Routines
|
|||
Tuple<bool, Result> ret = ExecuteAndWait(id, () =>
|
||||
{
|
||||
Notify($"Set {Module} rotation to {checkSpeed}");
|
||||
if (bigThan)
|
||||
{
|
||||
if (!_pm.SetRotationEnable(true, out _))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (!_pm.SetRotationServo(checkSpeed, 0))
|
||||
{
|
||||
Stop($"Set {Module} rotation error");
|
||||
|
@ -503,7 +510,15 @@ namespace SicPM.Routines
|
|||
return true;
|
||||
}, () =>
|
||||
{
|
||||
return _pm.CheckRotationServoOn(checkSpeed, bigThan);
|
||||
if (_pm.CheckRotationServoOn(checkSpeed, bigThan))
|
||||
{
|
||||
if(!bigThan && checkSpeed ==0)
|
||||
{
|
||||
_pm.SetRotationEnable(false, out _);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
timeout * 1000);
|
||||
|
||||
|
|
|
@ -141,12 +141,12 @@ namespace SicPM.Routines
|
|||
try
|
||||
{
|
||||
|
||||
if (SC.GetValue<bool>("System.IsSimulatorMode"))
|
||||
{
|
||||
SetHeatEnable((int)RoutineStep.HeatEnable, true, _heatTimeOut);
|
||||
SetIoValueByGroup((int)RoutineStep.SetEPV1, IoGroupName.EPV1, true, _IoValueOpenCloseTimeout);
|
||||
return Result.DONE;
|
||||
}
|
||||
//if (SC.GetValue<bool>("System.IsSimulatorMode"))
|
||||
//{
|
||||
// SetHeatEnable((int)RoutineStep.HeatEnable, true, _heatTimeOut);
|
||||
// SetIoValueByGroup((int)RoutineStep.SetEPV1, IoGroupName.EPV1, true, _IoValueOpenCloseTimeout);
|
||||
// return Result.DONE;
|
||||
//}
|
||||
|
||||
SetHeatEnable((int)RoutineStep.HeatEnable, false, _heatTimeOut);
|
||||
SetRotationValve((int)RoutineStep.RotationEnable, _rotationCheckSpeed, false, _rotationCloseTimeout);
|
||||
|
|
|
@ -3,124 +3,112 @@
|
|||
<roles>
|
||||
<!--2:read and write-->
|
||||
<roleItem id="0" name="管理员" autologout="1" logouttime="20">
|
||||
Header,3;Overview,3;TM,3;ioPlatform,3;LeakCheck,3;Sequence,3;Recipe,3;RoutineConfig,3;EventLog,3;ProcessHistory,3;
|
||||
RealTimeCharting,3;DataHistory,3;JobList,3;Statistics,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;linkedDevicePM1,3;MFCFlowPM1,3;CommMonitorPM1,3;CleanRecipe,3;
|
||||
Step,3;Name,3;Time,3;1. Ar/H2 Switch,3;2. SH Total Flow,3;3. Surrounding 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 Flow (M9),3;34. Si Source Inner Flow (M23),3;35. Si Source Middle Flow (M22),3;
|
||||
36. Si Source Pre-Split Pressure (PC6),3;37. C Source Total Flow,3;38. C2H4 Flow Mode,3;39. C2H4 Flow (M16),3;40. V99,3;
|
||||
41. Balance C Flow (M39),3;42. C Source Split Ratio,3;43. C Source Push Flow (M15),3;44. C Source Inner Flow (M26),3;
|
||||
45. C Source Middle Flow (M25),3;46. C Source Pre-Split Pressure (PC7),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 Flow (M2),3;62. Dope Inner Flow (M20),3;63. Dope Middle Flow (M19),3;
|
||||
64. Dope Pre-Split Pressure (PC5),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. Heater-Up Purge Ar/H2 Switch,3;
|
||||
74. Heater-Up Purge HCl,3;75. Heater-Up Purge Flow (M32),3;76. Heater-Up Purge HCl Flow (M30),3;77. GR Purge Main Flow (M33),3;
|
||||
78. Chamber Purge Flow (M35),3;79. Rotation-Up Purge Flow (M36),3;80. Shutter Purge Flow (M37),3;81. Heater-WF Purge Flow (M38),3;
|
||||
82. Total Vent Flow,3;83. Vent Push Flow (M1),3;84. 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;
|
||||
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;
|
||||
Header,3;Overview,3;TM,3;ioPlatform,3;LeakCheck,3;Sequence,3;Recipe,3;RoutineConfig,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;linkedDevicePM1,3;MFCFlowPM1,3;CommMonitorPM1,3;Step,3;Name,3;Time,3;Growth Rate,3;1. Ar/H2 Switch,3;2. SH Total Flow,3;
|
||||
3. Surrounding 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 Flow (M9),3;
|
||||
34. Si Source Inner Flow (M23),3;35. Si Source Middle Flow (M22),3;36. Si Source Pre-Split Pressure (PC6),3;37. C Source Total Flow,3;
|
||||
38. C2H4 Flow Mode,3;39. C2H4 Flow (M16),3;40. V99,3;41. Balance C Flow (M39),3;42. C Source Split Ratio,3;43. C Source Push Flow (M15),3;
|
||||
44. C Source Inner Flow (M26),3;45. C Source Middle Flow (M25),3;46. C Source Pre-Split Pressure (PC7),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 Flow (M2),3;62. Dope Inner Flow (M20),3;
|
||||
63. Dope Middle Flow (M19),3;64. Dope Pre-Split Pressure (PC5),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. Optic Purge Flow (M27),3;
|
||||
73. Heater-Up Purge Ar/H2 Switch,3;75. SH Purge Flow (M32),3;77. GR Purge Main Flow (M33),3;78. Chamber Purge Flow (M35),3;
|
||||
79. Rotation-Up Purge Flow (M36),3;80. Shutter Purge Flow (M37),3;81. Heater-WF Purge Flow (M38),3;82. Total Vent Flow,3;
|
||||
83. Vent Push Flow (M1),3;84. 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;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="设备工程师" autologout="1" logouttime="20">
|
||||
Header,3;Overview,3;TM,3;ioPlatform,3;LeakCheck,3;Sequence,3;Recipe,3;RoutineConfig,3;EventLog,3;ProcessHistory,3;
|
||||
RealTimeCharting,3;DataHistory,3;JobList,3;Statistics,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;linkedDevicePM1,3;MFCFlowPM1,3;CommMonitorPM1,3;CleanRecipe,3;
|
||||
Step,3;Name,3;Time,3;1. Ar/H2 Switch,3;2. SH Total Flow,3;3. Surrounding 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 Flow (M9),3;34. Si Source Inner Flow (M23),3;35. Si Source Middle Flow (M22),3;
|
||||
36. Si Source Pre-Split Pressure (PC6),3;37. C Source Total Flow,3;38. C2H4 Flow Mode,3;39. C2H4 Flow (M16),3;40. V99,3;
|
||||
41. Balance C Flow (M39),3;42. C Source Split Ratio,3;43. C Source Push Flow (M15),3;44. C Source Inner Flow (M26),3;
|
||||
45. C Source Middle Flow (M25),3;46. C Source Pre-Split Pressure (PC7),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 Flow (M2),3;62. Dope Inner Flow (M20),3;63. Dope Middle Flow (M19),3;
|
||||
64. Dope Pre-Split Pressure (PC5),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. Heater-Up Purge Ar/H2 Switch,3;
|
||||
74. Heater-Up Purge HCl,3;75. Heater-Up Purge Flow (M32),3;76. Heater-Up Purge HCl Flow (M30),3;77. GR Purge Main Flow (M33),3;
|
||||
78. Chamber Purge Flow (M35),3;79. Rotation-Up Purge Flow (M36),3;80. Shutter Purge Flow (M37),3;81. Heater-WF Purge Flow (M38),3;
|
||||
82. Total Vent Flow,3;83. Vent Push Flow (M1),3;84. 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;
|
||||
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;
|
||||
Header,3;Overview,3;TM,3;ioPlatform,3;LeakCheck,3;Sequence,3;Recipe,3;RoutineConfig,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;linkedDevicePM1,3;MFCFlowPM1,3;CommMonitorPM1,3;Step,3;Name,3;Time,3;Growth Rate,3;1. Ar/H2 Switch,3;2. SH Total Flow,3;
|
||||
3. Surrounding 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 Flow (M9),3;
|
||||
34. Si Source Inner Flow (M23),3;35. Si Source Middle Flow (M22),3;36. Si Source Pre-Split Pressure (PC6),3;37. C Source Total Flow,3;
|
||||
38. C2H4 Flow Mode,3;39. C2H4 Flow (M16),3;40. V99,3;41. Balance C Flow (M39),3;42. C Source Split Ratio,3;43. C Source Push Flow (M15),3;
|
||||
44. C Source Inner Flow (M26),3;45. C Source Middle Flow (M25),3;46. C Source Pre-Split Pressure (PC7),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 Flow (M2),3;62. Dope Inner Flow (M20),3;
|
||||
63. Dope Middle Flow (M19),3;64. Dope Pre-Split Pressure (PC5),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. Optic Purge Flow (M27),3;
|
||||
73. Heater-Up Purge Ar/H2 Switch,3;75. SH Purge Flow (M32),3;77. GR Purge Main Flow (M33),3;78. Chamber Purge Flow (M35),3;
|
||||
79. Rotation-Up Purge Flow (M36),3;80. Shutter Purge Flow (M37),3;81. Heater-WF Purge Flow (M38),3;82. Total Vent Flow,3;
|
||||
83. Vent Push Flow (M1),3;84. 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;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="工艺工程师" autologout="1" logouttime="20">
|
||||
Header,3;Overview,3;TM,3;ioPlatform,3;LeakCheck,3;Sequence,3;Recipe,3;RoutineConfig,3;EventLog,3;ProcessHistory,3;
|
||||
RealTimeCharting,3;DataHistory,3;JobList,3;Statistics,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;linkedDevicePM1,3;MFCFlowPM1,3;CommMonitorPM1,3;CleanRecipe,3;
|
||||
Step,3;Name,3;Time,3;1. Ar/H2 Switch,3;2. SH Total Flow,3;3. Surrounding 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 Flow (M9),3;34. Si Source Inner Flow (M23),3;35. Si Source Middle Flow (M22),3;
|
||||
36. Si Source Pre-Split Pressure (PC6),3;37. C Source Total Flow,3;38. C2H4 Flow Mode,3;39. C2H4 Flow (M16),3;40. V99,3;
|
||||
41. Balance C Flow (M39),3;42. C Source Split Ratio,3;43. C Source Push Flow (M15),3;44. C Source Inner Flow (M26),3;
|
||||
45. C Source Middle Flow (M25),3;46. C Source Pre-Split Pressure (PC7),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 Flow (M2),3;62. Dope Inner Flow (M20),3;63. Dope Middle Flow (M19),3;
|
||||
64. Dope Pre-Split Pressure (PC5),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. Heater-Up Purge Ar/H2 Switch,3;
|
||||
74. Heater-Up Purge HCl,3;75. Heater-Up Purge Flow (M32),3;76. Heater-Up Purge HCl Flow (M30),3;77. GR Purge Main Flow (M33),3;
|
||||
78. Chamber Purge Flow (M35),3;79. Rotation-Up Purge Flow (M36),3;80. Shutter Purge Flow (M37),3;81. Heater-WF Purge Flow (M38),3;
|
||||
82. Total Vent Flow,3;83. Vent Push Flow (M1),3;84. 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;
|
||||
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;
|
||||
Header,3;Overview,3;TM,3;ioPlatform,3;LeakCheck,3;Sequence,3;Recipe,3;RoutineConfig,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;linkedDevicePM1,3;MFCFlowPM1,3;CommMonitorPM1,3;Step,3;Name,3;Time,3;Growth Rate,3;1. Ar/H2 Switch,3;2. SH Total Flow,3;
|
||||
3. Surrounding 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 Flow (M9),3;
|
||||
34. Si Source Inner Flow (M23),3;35. Si Source Middle Flow (M22),3;36. Si Source Pre-Split Pressure (PC6),3;37. C Source Total Flow,3;
|
||||
38. C2H4 Flow Mode,3;39. C2H4 Flow (M16),3;40. V99,3;41. Balance C Flow (M39),3;42. C Source Split Ratio,3;43. C Source Push Flow (M15),3;
|
||||
44. C Source Inner Flow (M26),3;45. C Source Middle Flow (M25),3;46. C Source Pre-Split Pressure (PC7),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 Flow (M2),3;62. Dope Inner Flow (M20),3;
|
||||
63. Dope Middle Flow (M19),3;64. Dope Pre-Split Pressure (PC5),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. Optic Purge Flow (M27),3;
|
||||
73. Heater-Up Purge Ar/H2 Switch,3;75. SH Purge Flow (M32),3;77. GR Purge Main Flow (M33),3;78. Chamber Purge Flow (M35),3;
|
||||
79. Rotation-Up Purge Flow (M36),3;80. Shutter Purge Flow (M37),3;81. Heater-WF Purge Flow (M38),3;82. Total Vent Flow,3;
|
||||
83. Vent Push Flow (M1),3;84. 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;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="操作员" autologout="1" logouttime="20">
|
||||
Header,3;Overview,3;TM,3;ioPlatform,3;LeakCheck,3;Sequence,3;Recipe,3;RoutineConfig,3;EventLog,3;ProcessHistory,3;
|
||||
RealTimeCharting,3;DataHistory,3;JobList,3;Statistics,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;linkedDevicePM1,3;MFCFlowPM1,3;CommMonitorPM1,3;CleanRecipe,3;
|
||||
Step,3;Name,3;Time,3;1. Ar/H2 Switch,3;2. SH Total Flow,3;3. Surrounding 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 Flow (M9),3;34. Si Source Inner Flow (M23),3;35. Si Source Middle Flow (M22),3;
|
||||
36. Si Source Pre-Split Pressure (PC6),3;37. C Source Total Flow,3;38. C2H4 Flow Mode,3;39. C2H4 Flow (M16),3;40. V99,3;
|
||||
41. Balance C Flow (M39),3;42. C Source Split Ratio,3;43. C Source Push Flow (M15),3;44. C Source Inner Flow (M26),3;
|
||||
45. C Source Middle Flow (M25),3;46. C Source Pre-Split Pressure (PC7),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 Flow (M2),3;62. Dope Inner Flow (M20),3;63. Dope Middle Flow (M19),3;
|
||||
64. Dope Pre-Split Pressure (PC5),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. Heater-Up Purge Ar/H2 Switch,3;
|
||||
74. Heater-Up Purge HCl,3;75. Heater-Up Purge Flow (M32),3;76. Heater-Up Purge HCl Flow (M30),3;77. GR Purge Main Flow (M33),3;
|
||||
78. Chamber Purge Flow (M35),3;79. Rotation-Up Purge Flow (M36),3;80. Shutter Purge Flow (M37),3;81. Heater-WF Purge Flow (M38),3;
|
||||
82. Total Vent Flow,3;83. Vent Push Flow (M1),3;84. 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;
|
||||
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;
|
||||
Header,3;Overview,3;TM,3;ioPlatform,3;LeakCheck,3;Sequence,3;Recipe,3;RoutineConfig,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;linkedDevicePM1,3;MFCFlowPM1,3;CommMonitorPM1,3;Step,3;Name,3;Time,3;Growth Rate,3;1. Ar/H2 Switch,3;2. SH Total Flow,3;
|
||||
3. Surrounding 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 Flow (M9),3;
|
||||
34. Si Source Inner Flow (M23),3;35. Si Source Middle Flow (M22),3;36. Si Source Pre-Split Pressure (PC6),3;37. C Source Total Flow,3;
|
||||
38. C2H4 Flow Mode,3;39. C2H4 Flow (M16),3;40. V99,3;41. Balance C Flow (M39),3;42. C Source Split Ratio,3;43. C Source Push Flow (M15),3;
|
||||
44. C Source Inner Flow (M26),3;45. C Source Middle Flow (M25),3;46. C Source Pre-Split Pressure (PC7),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 Flow (M2),3;62. Dope Inner Flow (M20),3;
|
||||
63. Dope Middle Flow (M19),3;64. Dope Pre-Split Pressure (PC5),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. Optic Purge Flow (M27),3;
|
||||
73. Heater-Up Purge Ar/H2 Switch,3;75. SH Purge Flow (M32),3;77. GR Purge Main Flow (M33),3;78. Chamber Purge Flow (M35),3;
|
||||
79. Rotation-Up Purge Flow (M36),3;80. Shutter Purge Flow (M37),3;81. Heater-WF Purge Flow (M38),3;82. Total Vent Flow,3;
|
||||
83. Vent Push Flow (M1),3;84. 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;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>
|
||||
|
||||
|
|
|
@ -179,12 +179,13 @@
|
|||
<config default="100" name="AETempMiddleRasingRate" description="AETemp Middle每秒的上升速率,超过此范围报警" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
<config default="100" name="AETempOuterRasingRate" description="AETemp Outer每秒的上升速率,超过此范围报警" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
<config default="5" name="AETempFrequency" description="AETemp 采样频率" max="300" min="0" paramter="" tag="" unit="s" type="Double" />
|
||||
<config default="100" name="SCRTempRasingRate" description="SCRTemp每秒的上升速率,超过此范围报警" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
|
||||
|
||||
<config default="850" name="PlacePVInnerTempLimit" description="往PM放盘时,需要等待温度低于此数值" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
<config default="850" name="PlacePVInnerTempLimit" description="往PM放盘时,需要等待温度低于此数值" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" visible="fasle"/>
|
||||
<config default="850" name="PlacePVMiddleTempLimit" description="往PM放盘时,需要等待温度低于此数值" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
<config default="850" name="PlacePVOuterTempLimit" description="往PM放盘时,需要等待温度低于此数值" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
<config default="900" name="PickPVInnerTempLimit" description="从PM取盘时,需要等待温度低于此数值" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
<config default="900" name="PickPVInnerTempLimit" description="从PM取盘时,需要等待温度低于此数值" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" visible="false"/>
|
||||
<config default="900" name="PickPVMiddleTempLimit" description="从PM取盘时,需要等待温度低于此数值" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
<config default="900" name="PickPVOuterTempLimit" description="从PM取盘时,需要等待温度低于此数值" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
</configs>
|
||||
|
|
|
@ -374,7 +374,7 @@ namespace SicRT.Modules
|
|||
WaferInfo wafer = WaferManager.Instance.GetWafer(ModuleName.PM1, 0);
|
||||
if (wafer != null)
|
||||
{
|
||||
AutoJobRecorder.UpdatePosition(wafer.InnerId.ToString(), ModuleName.PM1.ToString(), "Abort");
|
||||
//AutoJobRecorder.UpdatePosition(wafer.InnerId.ToString(), ModuleName.PM1.ToString(), "Abort");
|
||||
}
|
||||
|
||||
WaferInfo wafer1 = WaferManager.Instance.GetWafer(ModuleName.TMRobot, 0);
|
||||
|
|
|
@ -620,10 +620,10 @@ namespace SicRT.Equipments.Systems
|
|||
}
|
||||
foreach (var modulesValue in Modules.Values)
|
||||
{
|
||||
if (!modulesValue.Module.Contains("PM"))
|
||||
{
|
||||
//if (!modulesValue.Module.Contains("PM"))
|
||||
//{
|
||||
modulesValue.PostMsg(MSG.ABORT);
|
||||
}
|
||||
//}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -52,6 +52,6 @@ using System.Windows;
|
|||
// 方法是按如下所示使用“*”: :
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
|
||||
[assembly: AssemblyVersion("1.5.2.9")]
|
||||
[assembly: AssemblyFileVersion("1.5.2.9")]
|
||||
[assembly: AssemblyVersion("1.5.2.11")]
|
||||
[assembly: AssemblyFileVersion("1.5.2.11")]
|
||||
|
||||
|
|
|
@ -9,6 +9,12 @@
|
|||
Sic 系统更新历史记录
|
||||
|
||||
---------------------------------------------------------------------------------
|
||||
Sic02 2022-12-07 Version 1.5.2.11
|
||||
1、Realtime Charting 和 Data History 添加隐藏项功能;
|
||||
|
||||
Sic02 2022-12-05 Version 1.5.2.10
|
||||
1、ProcessIdle状态下可切至Service ;
|
||||
|
||||
Sic02 2022-10-20 Version 1.5.2.9
|
||||
1、计算气体总量列表里面添加RecipeName
|
||||
|
||||
|
|
|
@ -1411,8 +1411,8 @@
|
|||
<TabItem Header="Job List">
|
||||
<DataGrid Name="gridJob" Grid.Row="1" AlternationCount="2" HorizontalAlignment="Left" CanUserAddRows="False" AutoGenerateColumns="False" RowHeaderWidth="0"
|
||||
VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.VirtualizationMode="Recycling"
|
||||
Margin="0,5,0,0" IsEnabled="True" ItemsSource="{Binding JobListInfoData}">
|
||||
<DataGrid.Columns>
|
||||
Margin="0,5,0,0" IsEnabled="True" ItemsSource="{Binding JobListInfoData}" MouseRightButtonUp="gridJob_MouseRightButtonUp">
|
||||
<DataGrid.Columns >
|
||||
<DataGridTemplateColumn Header="#" Width="30">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
|
@ -1429,6 +1429,15 @@
|
|||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="GUID" Visibility="Collapsed">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock Text="{Binding Guid}" Margin="5,0" FontFamily="Arial" FontSize="14" Foreground="{DynamicResource FG_Black}" HorizontalAlignment="Center" VerticalAlignment="Center" >
|
||||
</TextBlock>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
<DataGridTemplateColumn Header="Status" Width="80">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
using System.Windows.Controls;
|
||||
|
||||
using MECF.Framework.Common.DataCenter;
|
||||
using MECF.Framework.Common.OperationCenter;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace SicUI.Models.Operations.Overviews
|
||||
{
|
||||
|
@ -12,6 +17,140 @@ namespace SicUI.Models.Operations.Overviews
|
|||
InitializeComponent();
|
||||
}
|
||||
|
||||
|
||||
string currentGuid = "";
|
||||
private void gridJob_MouseRightButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
|
||||
{
|
||||
if ((sender as DataGrid).CurrentItem != null)
|
||||
{
|
||||
JobListInfo job = (sender as DataGrid).CurrentItem as JobListInfo;
|
||||
currentGuid = job.Guid;
|
||||
|
||||
if (job.Status == "Abort")
|
||||
{
|
||||
ContextMenu mouseClickMenu = new ContextMenu();
|
||||
MenuItem item = new MenuItem();
|
||||
item.Header = job.LotName;
|
||||
item.Background = Brushes.LightGray;
|
||||
item.Foreground = Brushes.Black;
|
||||
item.IsEnabled = false;
|
||||
mouseClickMenu.Items.Add(item);
|
||||
|
||||
|
||||
item = new MenuItem();
|
||||
item.Header = "Alter as Alarm";
|
||||
item.Click += AlterAsError;
|
||||
item.Tag = this.Tag;
|
||||
mouseClickMenu.Items.Add(item);
|
||||
|
||||
item = new MenuItem();
|
||||
item.Header = "Alter as Completed";
|
||||
item.Click += AlterAsComplete;
|
||||
item.Tag = this.Tag;
|
||||
mouseClickMenu.Items.Add(item);
|
||||
mouseClickMenu.IsOpen = true;
|
||||
}
|
||||
else if (job.Status == "Completed")
|
||||
{
|
||||
ContextMenu mouseClickMenu = new ContextMenu();
|
||||
MenuItem item = new MenuItem();
|
||||
item.Header = job.LotName;
|
||||
item.Background = Brushes.LightGray;
|
||||
item.Foreground = Brushes.Green;
|
||||
item.IsEnabled = false;
|
||||
mouseClickMenu.Items.Add(item);
|
||||
|
||||
item = new MenuItem();
|
||||
item.Header = "Alter as Abort";
|
||||
item.Click += AlterAsAbort;
|
||||
item.Tag = this.Tag;
|
||||
mouseClickMenu.Items.Add(item);
|
||||
|
||||
item = new MenuItem();
|
||||
item.Header = "Alter as Alarm";
|
||||
item.Click += AlterAsError;
|
||||
item.Tag = this.Tag;
|
||||
mouseClickMenu.Items.Add(item);
|
||||
mouseClickMenu.IsOpen = true;
|
||||
}
|
||||
else if (job.Status == "Alarm")
|
||||
{
|
||||
ContextMenu mouseClickMenu = new ContextMenu();
|
||||
MenuItem item = new MenuItem();
|
||||
item.Header = job.LotName;
|
||||
item.Background = Brushes.LightGray;
|
||||
item.Foreground = Brushes.Red;
|
||||
item.IsEnabled = false;
|
||||
mouseClickMenu.Items.Add(item);
|
||||
|
||||
item = new MenuItem();
|
||||
item.Header = "Alter as Abort";
|
||||
item.Click += AlterAsAbort;
|
||||
item.Tag = this.Tag;
|
||||
mouseClickMenu.Items.Add(item);
|
||||
|
||||
item = new MenuItem();
|
||||
item.Header = "Alter as Completed";
|
||||
item.Click += AlterAsComplete;
|
||||
item.Tag = this.Tag;
|
||||
mouseClickMenu.Items.Add(item);
|
||||
mouseClickMenu.IsOpen = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
ContextMenu mouseClickMenu = new ContextMenu();
|
||||
MenuItem item = new MenuItem();
|
||||
item.Header = job.LotName;
|
||||
item.Background = Brushes.LightGray;
|
||||
item.Foreground = Brushes.Red;
|
||||
item.IsEnabled = false;
|
||||
mouseClickMenu.Items.Add(item);
|
||||
|
||||
|
||||
item = new MenuItem();
|
||||
item.Header = "Alter as Abort";
|
||||
item.Click += AlterAsAbort;
|
||||
item.Tag = this.Tag;
|
||||
mouseClickMenu.Items.Add(item);
|
||||
|
||||
item = new MenuItem();
|
||||
item.Header = "Alter as Alarm";
|
||||
item.Click += AlterAsError;
|
||||
item.Tag = this.Tag;
|
||||
mouseClickMenu.Items.Add(item);
|
||||
mouseClickMenu.IsOpen = true;
|
||||
|
||||
item = new MenuItem();
|
||||
item.Header = "Alter as Completed";
|
||||
item.Click += AlterAsComplete;
|
||||
item.Tag = this.Tag;
|
||||
mouseClickMenu.Items.Add(item);
|
||||
mouseClickMenu.IsOpen = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void AlterAsAbort(object sender, RoutedEventArgs e)
|
||||
{
|
||||
string sql = $"update public.autojob_data set status='Abort' where guid='{currentGuid}'";
|
||||
QueryDataClient.Instance.Service.ExcuteTransAction(new System.Collections.Generic.List<string> { sql });
|
||||
|
||||
//InvokeClient.Instance.Service.DoOperation($"");
|
||||
}
|
||||
private void AlterAsError(object sender, RoutedEventArgs e)
|
||||
{
|
||||
string sql = $"update public.autojob_data set status='Alarm' where guid='{currentGuid}'";
|
||||
QueryDataClient.Instance.Service.ExcuteTransAction(new System.Collections.Generic.List<string> { sql });
|
||||
|
||||
}
|
||||
private void AlterAsComplete(object sender, RoutedEventArgs e)
|
||||
{
|
||||
string sql = $"update public.autojob_data set status='Completed' where guid='{currentGuid}'";
|
||||
QueryDataClient.Instance.Service.ExcuteTransAction(new System.Collections.Generic.List<string> { sql });
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ namespace SicUI.Models.Operations.Overviews
|
|||
{
|
||||
public class JobListInfo : NotifiableItem
|
||||
{
|
||||
public string Guid { get; set; }
|
||||
public int Index { get; set; }
|
||||
public string WaferID { get; set; }
|
||||
public string LotName { get; set; }
|
||||
|
@ -1473,11 +1474,11 @@ namespace SicUI.Models.Operations.Overviews
|
|||
private void GetJobList()
|
||||
{
|
||||
_jobRefreashTime++;
|
||||
if (_jobRefreashTime < 5)
|
||||
if (_jobRefreashTime < 3)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (_jobRefreashTime > 5)
|
||||
if (_jobRefreashTime > 3)
|
||||
{
|
||||
_jobRefreashTime = 0;
|
||||
}
|
||||
|
@ -1498,6 +1499,7 @@ namespace SicUI.Models.Operations.Overviews
|
|||
JobListInfo item = new JobListInfo()
|
||||
{
|
||||
Index = i + 1,
|
||||
Guid = dbData.Rows[i]["guid"].ToString(),
|
||||
RecipeName = dbData.Rows[i]["recipe_name"].ToString(),
|
||||
LotName = dbData.Rows[i]["lot_name"].ToString(),
|
||||
Status = dbData.Rows[i]["status"].ToString(),
|
||||
|
|
|
@ -7102,7 +7102,7 @@
|
|||
Height="25"
|
||||
Margin="-1"
|
||||
Cursor="Hand">
|
||||
<Border Background="Transparent" BorderThickness="1">
|
||||
<!--<Border Background="Transparent" BorderThickness="1">
|
||||
<Rectangle
|
||||
Margin="1"
|
||||
Fill="Gray"
|
||||
|
@ -7121,7 +7121,7 @@
|
|||
ContentStringFormat="{}{0:F2}°C"
|
||||
FontFamily="Verdana"
|
||||
Foreground="#FFF"
|
||||
ToolTip="SCR Lower Pyro Temp" />
|
||||
ToolTip="SCR Lower Pyro Temp" />-->
|
||||
</Grid>
|
||||
<Grid
|
||||
Width="64"
|
||||
|
@ -7255,7 +7255,7 @@
|
|||
Margin="-1"
|
||||
Cursor="Hand"
|
||||
Opacity="1">
|
||||
<Border Background="Transparent" BorderThickness="1">
|
||||
<!--<Border Background="Transparent" BorderThickness="1">
|
||||
<Rectangle
|
||||
Margin="1"
|
||||
Fill="Gray"
|
||||
|
@ -7274,7 +7274,7 @@
|
|||
ContentStringFormat="{}{0:F1}℃"
|
||||
FontFamily="Verdana"
|
||||
Foreground="#FFF"
|
||||
ToolTip="PSU Inner Pyro Temp" />
|
||||
ToolTip="PSU Inner Pyro Temp" />-->
|
||||
</Grid>
|
||||
<Grid
|
||||
Width="60"
|
||||
|
|
|
@ -50,7 +50,7 @@ namespace SicUI.Models.PMs
|
|||
|
||||
public bool EnableIdle => (Status == "ProcessIdle" || Status == "VacIdle" || Status == "Safety" || Status == "Idle" || Status == "ServiceIdle") && !IsOnline;
|
||||
|
||||
public bool EnableService => (Status == "Error" || Status == "Idle" || Status == "Safety" || Status =="VacIdle") && !IsOnline;
|
||||
public bool EnableService => (Status == "Error" || Status == "Idle" || Status == "Safety" || Status =="VacIdle" || Status == "ProcessIdle") && !IsOnline;
|
||||
|
||||
public bool EnableExchangeMo => (Status == "Idle" || Status == "Safety" || Status == "VacIdle") && !IsOnline && IsService;
|
||||
|
||||
|
@ -1688,12 +1688,35 @@ namespace SicUI.Models.PMs
|
|||
|
||||
public void ToService()
|
||||
{
|
||||
var selection = DialogBox.ShowDialog(DialogButton.Yes | DialogButton.Cancel, DialogType.CONFIRM,
|
||||
"Are you sure perform the operation Service");
|
||||
if (selection == DialogButton.Yes)
|
||||
if (IsService == false)
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"{Module}.SetToServiceIdle");
|
||||
var retDialog = DialogBox.ShowDialog(DialogButton.Yes | DialogButton.Cancel, DialogType.CONFIRM,
|
||||
"Are you sure perform the operation Service?");
|
||||
if (retDialog == DialogButton.No)
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
var retDialog = DialogBox.ShowDialog(DialogButton.Yes | DialogButton.Cancel, DialogType.CONFIRM,
|
||||
"Are you sure to exit Service mode?");
|
||||
if (retDialog == DialogButton.No)
|
||||
return;
|
||||
}
|
||||
// warn the operator for the high temperature if switching to ServiceIdle from ProcessIdle.
|
||||
if (Status == "ProcessIdle" && IsService == false)
|
||||
{
|
||||
DialogBox.ShowDialog(DialogButton.OK, DialogType.WARNING,
|
||||
"Be aware of HIGH TEMPERATURE due to switching from ProcessIdle state !!");
|
||||
}
|
||||
|
||||
InvokeClient.Instance.Service.DoOperation($"{Module}.SetToServiceIdle");
|
||||
|
||||
//var selection = DialogBox.ShowDialog(DialogButton.Yes | DialogButton.Cancel, DialogType.CONFIRM,
|
||||
//"Are you sure perform the operation Service");
|
||||
//if (selection == DialogButton.Yes)
|
||||
//{
|
||||
// InvokeClient.Instance.Service.DoOperation($"{Module}.SetToServiceIdle");
|
||||
//}
|
||||
}
|
||||
|
||||
public bool ShowChoosenDialog(string strInfo)
|
||||
|
|
|
@ -1184,7 +1184,7 @@
|
|||
Height="25"
|
||||
Cursor="Hand"
|
||||
Opacity="1">
|
||||
<Border Background="Transparent" BorderThickness="1">
|
||||
<!--<Border Background="Transparent" BorderThickness="1">
|
||||
<Rectangle
|
||||
Margin="1"
|
||||
Fill="Gray"
|
||||
|
@ -1203,14 +1203,14 @@
|
|||
ContentStringFormat="{}{0:F1}℃"
|
||||
FontFamily="Verdana"
|
||||
Foreground="#FFF"
|
||||
ToolTip="SCR Lower Pyro PV Temp" />
|
||||
ToolTip="SCR Lower Pyro PV Temp" />-->
|
||||
</Grid>
|
||||
<Grid
|
||||
Width="80"
|
||||
Height="25"
|
||||
Cursor="Hand"
|
||||
Opacity="1">
|
||||
<Border Background="Transparent" BorderThickness="1">
|
||||
<!--<Border Background="Transparent" BorderThickness="1">
|
||||
<Rectangle
|
||||
Margin="1"
|
||||
Fill="Gray"
|
||||
|
@ -1228,7 +1228,7 @@
|
|||
ContentStringFormat="{}{0:F1}℃"
|
||||
FontFamily="Verdana"
|
||||
Foreground="#FFF"
|
||||
ToolTip="SCR Lower Pyro SP Temp" />
|
||||
ToolTip="SCR Lower Pyro SP Temp" />-->
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
|
||||
|
|
|
@ -54,5 +54,5 @@ 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.5.2.9")]
|
||||
[assembly: AssemblyFileVersion("1.5.2.9")]
|
||||
[assembly: AssemblyVersion("1.5.2.11")]
|
||||
[assembly: AssemblyFileVersion("1.5.2.11")]
|
||||
|
|
Binary file not shown.
Reference in New Issue