diff --git a/FrameworkLocal/UIClient/CenterViews/DataLogs/DataHistory/DataView.xaml b/FrameworkLocal/UIClient/CenterViews/DataLogs/DataHistory/DataView.xaml index 42f7a02..2527d96 100644 --- a/FrameworkLocal/UIClient/CenterViews/DataLogs/DataHistory/DataView.xaml +++ b/FrameworkLocal/UIClient/CenterViews/DataLogs/DataHistory/DataView.xaml @@ -127,7 +127,15 @@ + PresetGroupsFolderName="DataHistory" + VisibilityExcludeNodesButton="Visible" + > + + + + + + diff --git a/FrameworkLocal/UIClient/CenterViews/DataLogs/DataHistory/DataViewModel.cs b/FrameworkLocal/UIClient/CenterViews/DataLogs/DataHistory/DataViewModel.cs index 8623fd2..faf768a 100644 --- a/FrameworkLocal/UIClient/CenterViews/DataLogs/DataHistory/DataViewModel.cs +++ b/FrameworkLocal/UIClient/CenterViews/DataLogs/DataHistory/DataViewModel.cs @@ -85,6 +85,8 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.DataHistory /// private readonly IProgress _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 + /// + /// 点击过滤按钮,弹出过滤编辑界面 + /// + public void EditExcludeNodesList() + { + string sFile = "DataHistoryFilter.txt"; + List liNodesAll = provider.GetParameters(false, sFile); + DataFilter df = new DataFilter(); + df._NodesShow = ParameterNodes; + df.FilterFile = sFile; + df.ShowDialog(); + } #endregion } } diff --git a/FrameworkLocal/UIClient/CenterViews/Operations/RealTime/DataFilter.xaml b/FrameworkLocal/UIClient/CenterViews/Operations/RealTime/DataFilter.xaml new file mode 100644 index 0000000..15965da --- /dev/null +++ b/FrameworkLocal/UIClient/CenterViews/Operations/RealTime/DataFilter.xaml @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/FrameworkLocal/UIClient/CenterViews/Operations/RealTime/DataFilter.xaml.cs b/FrameworkLocal/UIClient/CenterViews/Operations/RealTime/DataFilter.xaml.cs new file mode 100644 index 0000000..b5190c8 --- /dev/null +++ b/FrameworkLocal/UIClient/CenterViews/Operations/RealTime/DataFilter.xaml.cs @@ -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 +{ + /// + /// winTrayInfo.xaml 的交互逻辑 + /// + 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 dicNodesAll = new Dictionary(); + Dictionary dicNodesShow = new Dictionary(); + + 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 dic, Dictionary 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 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 dicNodesResult = new Dictionary(); + GetElementResultString(_NodesAll, "", dicNodesResult); + SaveResult(dicNodesResult); + // + this.Close(); + } + + private void SaveResult(Dictionary dic) + { + if(dic != null) + { + if(dic.Count >0) + { + List liFilter = new List(); + 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); + } + } + } + } + } + + } + } +} diff --git a/FrameworkLocal/UIClient/CenterViews/Operations/RealTime/FilterProvider.cs b/FrameworkLocal/UIClient/CenterViews/Operations/RealTime/FilterProvider.cs new file mode 100644 index 0000000..c301583 --- /dev/null +++ b/FrameworkLocal/UIClient/CenterViews/Operations/RealTime/FilterProvider.cs @@ -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 GetFilterTree(string sFilterFile) + { + List liFilter = new List(); + 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; + } + + } +} diff --git a/FrameworkLocal/UIClient/CenterViews/Operations/RealTime/RealTimeView.xaml b/FrameworkLocal/UIClient/CenterViews/Operations/RealTime/RealTimeView.xaml index d8138ad..cc39268 100644 --- a/FrameworkLocal/UIClient/CenterViews/Operations/RealTime/RealTimeView.xaml +++ b/FrameworkLocal/UIClient/CenterViews/Operations/RealTime/RealTimeView.xaml @@ -41,7 +41,15 @@ x:Name="tvParameterNodes" IsEnabled="{Binding IsBusy, Converter={StaticResource boolReverseConverter}}" TreeRoot="{Binding ParameterNodes}" - PresetGroupsFolderName="RealTimeView"/> + PresetGroupsFolderName="RealTimeView" + VisibilityExcludeNodesButton="Visible" + > + + + + + + diff --git a/FrameworkLocal/UIClient/CenterViews/Operations/RealTime/RealTimeViewModel.cs b/FrameworkLocal/UIClient/CenterViews/Operations/RealTime/RealTimeViewModel.cs index a1883e7..90d98fc 100644 --- a/FrameworkLocal/UIClient/CenterViews/Operations/RealTime/RealTimeViewModel.cs +++ b/FrameworkLocal/UIClient/CenterViews/Operations/RealTime/RealTimeViewModel.cs @@ -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(); } } + /// + /// 点击过滤按钮,弹出过滤编辑界面 + /// + public void EditExcludeNodesList() + { + string sFile = "RealTimeFilter.txt"; + List liNodesAll = _provider.GetParameters(false,sFile); + DataFilter df = new DataFilter(); + df._NodesShow = ParameterNodes; + df.FilterFile = sFile; + df.ShowDialog(); + + } #endregion } diff --git a/FrameworkLocal/UIClient/CenterViews/Operations/RealTime/RealtimeProvider.cs b/FrameworkLocal/UIClient/CenterViews/Operations/RealTime/RealtimeProvider.cs index a9cc5bd..c63362f 100644 --- a/FrameworkLocal/UIClient/CenterViews/Operations/RealTime/RealtimeProvider.cs +++ b/FrameworkLocal/UIClient/CenterViews/Operations/RealTime/RealtimeProvider.cs @@ -110,6 +110,64 @@ namespace MECF.Framework.UI.Client.CenterViews.Operations.RealTime LOG.Write(ex); } + return root; + } + /// + /// 带过滤的获取DATA数据,Numberic类型的 + /// + /// 是否过滤,是:过滤,否:显示所有数据 + /// + public List GetParameters(bool bDataFilter,string FilterFile) + { + var root = new List(); + List filter = FilterProvider.GetFilterTree(FilterFile); + + try + { + var dataList = (List)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(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; } } diff --git a/FrameworkLocal/UIClient/ClientBase/UIViewModelBase.cs b/FrameworkLocal/UIClient/ClientBase/UIViewModelBase.cs index 2386c56..9aae2e6 100644 --- a/FrameworkLocal/UIClient/ClientBase/UIViewModelBase.cs +++ b/FrameworkLocal/UIClient/ClientBase/UIViewModelBase.cs @@ -198,6 +198,7 @@ namespace MECF.Framework.UI.Client.ClientBase return; } + } public UiViewModelBase() diff --git a/FrameworkLocal/UIClient/UIClient.csproj b/FrameworkLocal/UIClient/UIClient.csproj index 450f8e9..8060476 100644 --- a/FrameworkLocal/UIClient/UIClient.csproj +++ b/FrameworkLocal/UIClient/UIClient.csproj @@ -267,6 +267,10 @@ IO3View.xaml + + + DataFilter.xaml + winTrayInfo.xaml @@ -892,6 +896,10 @@ MSBuild:Compile Designer + + MSBuild:Compile + Designer + MSBuild:Compile Designer diff --git a/Modules/Mainframe/TMs/TMSlitValveRoutine.cs b/Modules/Mainframe/TMs/TMSlitValveRoutine.cs index 0f192ef..48fd1df 100644 --- a/Modules/Mainframe/TMs/TMSlitValveRoutine.cs +++ b/Modules/Mainframe/TMs/TMSlitValveRoutine.cs @@ -843,13 +843,13 @@ namespace Mainframe.TMs { Tuple 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 { diff --git a/Modules/SicPM/Devices/SicServo.cs b/Modules/SicPM/Devices/SicServo.cs index df10d6f..d1067b8 100644 --- a/Modules/SicPM/Devices/SicServo.cs +++ b/Modules/SicPM/Devices/SicServo.cs @@ -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) { diff --git a/Modules/SicPM/PMModule.cs b/Modules/SicPM/PMModule.cs index 74d4611..388cc16 100644 --- a/Modules/SicPM/PMModule.cs +++ b/Modules/SicPM/PMModule.cs @@ -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】 diff --git a/Modules/SicPM/RecipeExecutions/Process.cs b/Modules/SicPM/RecipeExecutions/Process.cs index 6c34efe..00716ac 100644 --- a/Modules/SicPM/RecipeExecutions/Process.cs +++ b/Modules/SicPM/RecipeExecutions/Process.cs @@ -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 _lstSkipSteps = new List(); + private bool isNormalEnd = false; public RecipeContinueMode ContinueAction { get; set; } @@ -210,6 +212,7 @@ namespace SicPM.RecipeExecutions _lstSkipSteps = new List(); + 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(); } diff --git a/Modules/SicPM/Routines/PMBaseRoutine.cs b/Modules/SicPM/Routines/PMBaseRoutine.cs index 234aec7..8a026a5 100644 --- a/Modules/SicPM/Routines/PMBaseRoutine.cs +++ b/Modules/SicPM/Routines/PMBaseRoutine.cs @@ -494,6 +494,13 @@ namespace SicPM.Routines Tuple 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); diff --git a/Modules/SicPM/Routines/PMToAtmIdleRoutine.cs b/Modules/SicPM/Routines/PMToAtmIdleRoutine.cs index 1000507..b0a0542 100644 --- a/Modules/SicPM/Routines/PMToAtmIdleRoutine.cs +++ b/Modules/SicPM/Routines/PMToAtmIdleRoutine.cs @@ -141,12 +141,12 @@ namespace SicPM.Routines try { - if (SC.GetValue("System.IsSimulatorMode")) - { - SetHeatEnable((int)RoutineStep.HeatEnable, true, _heatTimeOut); - SetIoValueByGroup((int)RoutineStep.SetEPV1, IoGroupName.EPV1, true, _IoValueOpenCloseTimeout); - return Result.DONE; - } + //if (SC.GetValue("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); diff --git a/SicRT/Config/Account/Account.xml b/SicRT/Config/Account/Account.xml index bc1a593..8938b66 100644 --- a/SicRT/Config/Account/Account.xml +++ b/SicRT/Config/Account/Account.xml @@ -3,124 +3,112 @@ - 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; - 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; - 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; - 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; diff --git a/SicRT/Config/System.sccfg b/SicRT/Config/System.sccfg index bbafc72..cae39e4 100644 --- a/SicRT/Config/System.sccfg +++ b/SicRT/Config/System.sccfg @@ -179,12 +179,13 @@ + - + - + diff --git a/SicRT/Equipments/AutoTransfer.cs b/SicRT/Equipments/AutoTransfer.cs index 9f994d3..fb4debd 100644 --- a/SicRT/Equipments/AutoTransfer.cs +++ b/SicRT/Equipments/AutoTransfer.cs @@ -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); diff --git a/SicRT/Equipments/Systems/EquipmentManager.cs b/SicRT/Equipments/Systems/EquipmentManager.cs index de15fc1..b132158 100644 --- a/SicRT/Equipments/Systems/EquipmentManager.cs +++ b/SicRT/Equipments/Systems/EquipmentManager.cs @@ -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; } diff --git a/SicRT/Properties/AssemblyInfo.cs b/SicRT/Properties/AssemblyInfo.cs index 31e9cc2..642ed9e 100644 --- a/SicRT/Properties/AssemblyInfo.cs +++ b/SicRT/Properties/AssemblyInfo.cs @@ -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")] diff --git a/SicRT/ReleaseNotes.txt b/SicRT/ReleaseNotes.txt index ecab687..39b10c6 100644 --- a/SicRT/ReleaseNotes.txt +++ b/SicRT/ReleaseNotes.txt @@ -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 diff --git a/SicUI/Models/Operations/Overviews/OverViewView.xaml b/SicUI/Models/Operations/Overviews/OverViewView.xaml index 28bba4e..2892e5d 100644 --- a/SicUI/Models/Operations/Overviews/OverViewView.xaml +++ b/SicUI/Models/Operations/Overviews/OverViewView.xaml @@ -1411,8 +1411,8 @@ - + Margin="0,5,0,0" IsEnabled="True" ItemsSource="{Binding JobListInfoData}" MouseRightButtonUp="gridJob_MouseRightButtonUp"> + @@ -1429,6 +1429,15 @@ + + + + + + + + + diff --git a/SicUI/Models/Operations/Overviews/OverViewView.xaml.cs b/SicUI/Models/Operations/Overviews/OverViewView.xaml.cs index afa3916..0e2b395 100644 --- a/SicUI/Models/Operations/Overviews/OverViewView.xaml.cs +++ b/SicUI/Models/Operations/Overviews/OverViewView.xaml.cs @@ -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 { 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 { 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 { sql }); + + } + + + + } } diff --git a/SicUI/Models/Operations/Overviews/OverViewViewModel.cs b/SicUI/Models/Operations/Overviews/OverViewViewModel.cs index b7f387b..a3032cb 100644 --- a/SicUI/Models/Operations/Overviews/OverViewViewModel.cs +++ b/SicUI/Models/Operations/Overviews/OverViewViewModel.cs @@ -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(), diff --git a/SicUI/Models/PMs/PMOperationView.xaml b/SicUI/Models/PMs/PMOperationView.xaml index 7771e91..8af7f81 100644 --- a/SicUI/Models/PMs/PMOperationView.xaml +++ b/SicUI/Models/PMs/PMOperationView.xaml @@ -7102,7 +7102,7 @@ Height="25" Margin="-1" Cursor="Hand"> - + - + (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) diff --git a/SicUI/Models/PMs/PMProcessView.xaml b/SicUI/Models/PMs/PMProcessView.xaml index 7c6bb71..15ec2b3 100644 --- a/SicUI/Models/PMs/PMProcessView.xaml +++ b/SicUI/Models/PMs/PMProcessView.xaml @@ -1184,7 +1184,7 @@ Height="25" Cursor="Hand" Opacity="1"> - + - + diff --git a/SicUI/Properties/AssemblyInfo.cs b/SicUI/Properties/AssemblyInfo.cs index d7b1cb2..1e8626a 100644 --- a/SicUI/Properties/AssemblyInfo.cs +++ b/SicUI/Properties/AssemblyInfo.cs @@ -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")] diff --git a/ThirdParty/dlls/20221206Sicentury.Core.dll b/ThirdParty/dlls/20221206Sicentury.Core.dll new file mode 100644 index 0000000..9664b20 Binary files /dev/null and b/ThirdParty/dlls/20221206Sicentury.Core.dll differ