ソースを参照

git-svn-id: http://10.4.3.168:50001/svn/Furnace@78 dbcde07d-dcf5-c148-8a84-ac3097b7778e

Xiongbing 1 ヶ月 前
コミット
905bfb847d

+ 1 - 0
FrameworkLocal/Common/Common.csproj

@@ -240,6 +240,7 @@
     <Compile Include="CommonData\SorterDefines\IndicatorState.cs" />
     <Compile Include="CommonData\SorterDefines\LoadPortCarrierMode.cs" />
     <Compile Include="CommonData\SorterDefines\LoadportCassetteState.cs" />
+    <Compile Include="CommonData\SorterDefines\N2PurgeModeEnum.cs" />
     <Compile Include="CommonData\SorterDefines\SlotTransferInfo.cs" />
     <Compile Include="CommonData\SorterDefines\SorterHostUsageRecipeTableItem.cs" />
     <Compile Include="CommonData\SorterDefines\SorterReadWaferIDRecipeXml.cs" />

+ 29 - 0
FrameworkLocal/Common/CommonData/SorterDefines/N2PurgeModeEnum.cs

@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MECF.Framework.Common.CommonData.SorterDefines
+{
+    public enum N2PurgeModeEnum
+    {
+        Auto,
+        [Description("N2 Purge Mode")]
+        N2PurgeMode,
+        [Description("ATM Mode")]
+        ATMMode,
+        [Description("Manual Mode")]
+        ManualMode,
+
+        Manual_phase1,
+        Manual_phase2,
+        Manual_phase3,
+        Manual_phase4,
+        Manual_phase5,
+
+        ResetAll,
+
+    }
+}

+ 1 - 1
FrameworkLocal/UICore/UICore.csproj

@@ -35,7 +35,7 @@
       <HintPath>..\..\ThirdParty\dlls\Autofac.dll</HintPath>
     </Reference>
     <Reference Include="CalcBinding">
-      <HintPath>..\..\..\ThirdParty\dlls\CalcBinding.dll</HintPath>
+      <HintPath>..\..\ThirdParty\dlls\CalcBinding.dll</HintPath>
     </Reference>
     <Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>

+ 6 - 26
Furnace/FurnaceRT/Equipments/PMs/PMModuleDevice.cs

@@ -24,6 +24,7 @@ using Aitex.Core.RT.Log;
 using FurnaceRT.Equipments.PMs.Devices;
 using Aitex.Core.RT.SCCore;
 using static Aitex.Core.RT.Device.Unit.IoBoat;
+using MECF.Framework.Common.CommonData.SorterDefines;
 
 namespace FurnaceRT.Equipments.PMs
 {
@@ -2455,34 +2456,13 @@ namespace FurnaceRT.Equipments.PMs
         {
             reason = string.Empty;
             var mode = param[0].ToString();
-            switch (mode)
+            _N2PurgeMode = (N2PurgeModeEnum)Enum.Parse(typeof(N2PurgeModeEnum), mode);
+
+            if (SC.ContainsItem("PM1.SelectN2PurgeMode"))
             {
-                case "Auto":
-                    {
-                        _N2PurgeMode = N2PurgeMode.Auto;
-                        break;
-                    }
-                case "Manual_N2Purge":
-                    {
-                        _N2PurgeMode = N2PurgeMode.Manual_N2Purge;
-                        break;
-                    }
-                case "Manual_ATM":
-                    {
-                        _N2PurgeMode = N2PurgeMode.Manual_ATM;
-                        break;
-                    }
-                case "Manual_Maintenance":
-                    {
-                        _N2PurgeMode = N2PurgeMode.Manual_Maintenance;
-                        break;
-                    }
-                case "Auto_Check":
-                    {
-                        _N2PurgeMode = N2PurgeMode.Auto_Check;
-                        break;
-                    }
+                SC.SetItemValue("PM1.SelectN2PurgeMode", mode);
             }
+
             return true;
         }
         private void SetHeaterControlParameters(object[] param)

+ 14 - 18
Furnace/FurnaceRT/Equipments/PMs/PMN2Purge.cs

@@ -23,25 +23,17 @@ using FurnaceRT.Devices;
 using Aitex.Core.RT.Log;
 using FurnaceRT.Equipments.PMs.Devices;
 using Aitex.Core.RT.SCCore;
+using MECF.Framework.Common.CommonData.SorterDefines;
 
 namespace FurnaceRT.Equipments.PMs
 {
     public partial class PMModule
     {
 
-        enum N2PurgeMode
-        {
-            Auto,
-            Manual_N2Purge,
-            Manual_ATM,
-            Manual_Maintenance,
-            Auto_Check,
-        }
-
 
         private Dictionary<string, Tuple<R_TRIG, List<Tuple<IoValve, bool>>>> _n2PurgeSequenceAction;
         private Dictionary<string, Func<bool>> _n2PurgeSequenceStatus;
-        private N2PurgeMode _N2PurgeMode = N2PurgeMode.Auto;
+        private N2PurgeModeEnum _N2PurgeMode = N2PurgeModeEnum.Auto;
         private bool GetN2PurgeAIRTo20PPMStatus()
         {
             return ValveLABacksideDoorCylinderControl.DOOpen.Value;
@@ -68,7 +60,7 @@ namespace FurnaceRT.Equipments.PMs
         }
         private void MonitorN2Purge()
         {
-            if (_N2PurgeMode != N2PurgeMode.Auto)
+            if (_N2PurgeMode !=  N2PurgeModeEnum.Auto)
                 return;
             if (_n2PurgeSequenceAction != null && _n2PurgeSequenceStatus != null)
             {
@@ -117,47 +109,51 @@ namespace FurnaceRT.Equipments.PMs
             if (TrigN2PurgeFOUPO2CheckSV != null)
                 TrigN2PurgeFOUPO2CheckSV?.SetAOTrigger(value, out _);
         }
+
+        /// <summary>
+        /// N2Purge相关时间参数,电气要求设定为秒,实际下发按照毫秒
+        /// </summary>
         public void SetN2PurgeParameters()
         {
             if (SC.ContainsItem("PM1.N2Purge.TransferRoomArrivalWaitTime") && TrigN2PurgeLAO2CheckTime != null)
             {
-                var time = (float)SC.GetValue<double>("PM1.N2Purge.TransferRoomArrivalWaitTime");
+                var time = (float)SC.GetValue<double>("PM1.N2Purge.TransferRoomArrivalWaitTime") * 1000;
                 TrigN2PurgeLAO2CheckTime.SetAOTrigger(time, out _);
             }
 
             if (SC.ContainsItem("PM1.N2Purge.TransferRoomStableWaitTime") && TrigN2PurgeLAO2OverTime != null)
             {
-                var time = (float)SC.GetValue<double>("PM1.N2Purge.TransferRoomStableWaitTime");
+                var time = (float)SC.GetValue<double>("PM1.N2Purge.TransferRoomStableWaitTime") * 1000;
                 TrigN2PurgeLAO2OverTime.SetAOTrigger(time, out _);
             }
 
             if (SC.ContainsItem("PM1.N2Purge.FOUPOpenerArrivalWaitTime") && TrigN2PurgeFOUPO2CheckTime != null)
             {
-                var time = (float)SC.GetValue<double>("PM1.N2Purge.FOUPOpenerArrivalWaitTime");
+                var time = (float)SC.GetValue<double>("PM1.N2Purge.FOUPOpenerArrivalWaitTime") * 1000;
                 TrigN2PurgeFOUPO2CheckTime.SetAOTrigger(time, out _);
             }
 
             if (SC.ContainsItem("PM1.N2Purge.FOUPOpenerStableWaitTime") && TrigN2PurgeFOUPO2OverTime != null)
             {
-                var time = (float)SC.GetValue<double>("PM1.N2Purge.FOUPOpenerStableWaitTime");
+                var time = (float)SC.GetValue<double>("PM1.N2Purge.FOUPOpenerStableWaitTime") * 1000;
                 TrigN2PurgeFOUPO2OverTime.SetAOTrigger(time, out _);
             }
 
             if (SC.ContainsItem("PM1.N2Purge.O2DetectorTransferRoomToFOUPTime") && TrigN2PurgeExchangeLATOFOUPWaitTime != null)
             {
-                var time = (float)SC.GetValue<double>("PM1.N2Purge.O2DetectorTransferRoomToFOUPTime");
+                var time = (float)SC.GetValue<double>("PM1.N2Purge.O2DetectorTransferRoomToFOUPTime") * 1000;
                 TrigN2PurgeExchangeLATOFOUPWaitTime.SetAOTrigger(time, out _);
             }
 
             if (SC.ContainsItem("PM1.N2Purge.O2DetectorFOUPToTransferRoomTime") && TrigN2PurgeExchangeFOUPTOLAWaitTime != null)
             {
-                var time = (float)SC.GetValue<double>("PM1.N2Purge.O2DetectorFOUPToTransferRoomTime");
+                var time = (float)SC.GetValue<double>("PM1.N2Purge.O2DetectorFOUPToTransferRoomTime") * 1000;
                 TrigN2PurgeExchangeFOUPTOLAWaitTime.SetAOTrigger(time, out _);
             }
 
             if (SC.ContainsItem("PM1.N2Purge.O2DetectorFOUPToFOUPTime") && TrigN2PurgeExchangeFOUPTOFOUPWaitTime != null)
             {
-                var time = (float)SC.GetValue<double>("PM1.N2Purge.O2DetectorFOUPToFOUPTime");
+                var time = (float)SC.GetValue<double>("PM1.N2Purge.O2DetectorFOUPToFOUPTime") * 1000;
                 TrigN2PurgeExchangeFOUPTOFOUPWaitTime.SetAOTrigger(time, out _);
             }
         }

+ 73 - 68
Furnace/FurnaceUI/Dialog/SelectSequenceView.xaml

@@ -1,11 +1,15 @@
-<UserControl x:Class="FurnaceUI.Client.Dialog.SelectSequenceView"
-             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
-             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
-             xmlns:local="clr-namespace:FurnaceUI.Views.Recipes" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:cal="http://www.caliburn.org"
-             mc:Ignorable="d" 
-             Height="400" Width="260" FontFamily="Segoe">
+<UserControl
+    x:Class="FurnaceUI.Client.Dialog.SelectSequenceView"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:cal="http://www.caliburn.org"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    Width="260"
+    Height="400"
+    FontFamily="Segoe"
+    mc:Ignorable="d">
     <Grid>
         <Grid.RowDefinitions>
             <RowDefinition Height="300"/>
@@ -14,75 +18,76 @@
             <RowDefinition Height="*"/>
         </Grid.RowDefinitions>
         <Grid Grid.Row="0" Grid.Column="0">
-                    <WrapPanel Orientation="Vertical" HorizontalAlignment="Center">
-                <RadioButton Content="Auto" Margin="12,12,12,0" Height="40" Width="160" Tag="In automatic contorl.">
-
-                            <i:Interaction.Triggers>
-                                <i:EventTrigger EventName="Click">
-                                    <cal:ActionMessage MethodName="SelectExistClick">
-                                <cal:Parameter Value="Auto"></cal:Parameter>
+            <WrapPanel HorizontalAlignment="Center" Orientation="Vertical">
+                <RadioButton
+                    Width="160"
+                    Height="40"
+                    Margin="12,30,12,12"
+                    Content="N2 Purge Mode">
+                    <i:Interaction.Triggers>
+                        <i:EventTrigger EventName="Click">
+                            <cal:ActionMessage MethodName="SelectExistClick">
+                                <cal:Parameter Value="N2PurgeMode"/>
                             </cal:ActionMessage>
-                                </i:EventTrigger>
-                            </i:Interaction.Triggers>
-                        </RadioButton>
-                <RadioButton Content="Manual(N2Purge)" Margin="12" Height="40" Width="160" Tag="In manual control(N2Purge)">
-                            <i:Interaction.Triggers>
-                                <i:EventTrigger EventName="Click">
-                                    <cal:ActionMessage MethodName="SelectExistClick">
-                                <cal:Parameter Value="Manual_N2Purge"></cal:Parameter>
+                        </i:EventTrigger>
+                    </i:Interaction.Triggers>
+                </RadioButton>
+                <RadioButton
+                    Width="160"
+                    Height="40"
+                    Margin="12,0,12,12"
+                    Content="ATM Mode">
+                    <i:Interaction.Triggers>
+                        <i:EventTrigger EventName="Click">
+                            <cal:ActionMessage MethodName="SelectExistClick">
+                                <cal:Parameter Value="ATMMode"/>
                             </cal:ActionMessage>
-                                </i:EventTrigger>
-                            </i:Interaction.Triggers>
-                        </RadioButton>
-                <RadioButton Content="Manual(ATM)" Margin="12,0,12,12" Height="40" Width="160" Tag="In manual control(atmospere)">
-                            <i:Interaction.Triggers>
-                                <i:EventTrigger EventName="Click">
-                                    <cal:ActionMessage MethodName="SelectExistClick">
-                                <cal:Parameter Value="Manual_ATM"></cal:Parameter>
+                        </i:EventTrigger>
+                    </i:Interaction.Triggers>
+                </RadioButton>
+                <RadioButton
+                    Width="160"
+                    Height="40"
+                    Margin="12,0,12,12"
+                    Content="Manual Mode">
+                    <i:Interaction.Triggers>
+                        <i:EventTrigger EventName="Click">
+                            <cal:ActionMessage MethodName="SelectExistClick">
+                                <cal:Parameter Value="ManualMode"/>
                             </cal:ActionMessage>
-                                </i:EventTrigger>
-                            </i:Interaction.Triggers>
-                        </RadioButton>
-                <RadioButton Content="Manual(Maintenance)" Margin="12,0,12,12" Height="40" Width="160"  Tag="In manual control(maintenance)">
-                            <i:Interaction.Triggers>
-                                <i:EventTrigger EventName="Click">
-                                    <cal:ActionMessage MethodName="SelectExistClick">
-                                <cal:Parameter Value="Manual_Maintenance"></cal:Parameter>
-                            </cal:ActionMessage>
-                                </i:EventTrigger>
-                            </i:Interaction.Triggers>
-                        </RadioButton>
-                <RadioButton Content="Auto Check" Margin="12,0,12,12" Height="40" Width="160" Tag="In performance automatic check(currently not functioning)">
-                            <i:Interaction.Triggers>
-                                <i:EventTrigger EventName="Click">
-                                    <cal:ActionMessage MethodName="SelectExistClick">
-                                <cal:Parameter Value="Auto_Check"></cal:Parameter>
-                            </cal:ActionMessage>
-                                </i:EventTrigger>
-                            </i:Interaction.Triggers>
-                        </RadioButton>
-                    </WrapPanel>
-                </Grid>
-        <Border Grid.Row="1"  Background="AliceBlue" >
-            <TextBlock Text="{Binding DialogResultView}" HorizontalAlignment="Center" FontSize="20" VerticalAlignment="Center"></TextBlock>
+                        </i:EventTrigger>
+                    </i:Interaction.Triggers>
+                </RadioButton>
+            </WrapPanel>
+        </Grid>
+        <Border Grid.Row="1" Background="AliceBlue">
+            <TextBlock
+                HorizontalAlignment="Center"
+                VerticalAlignment="Center"
+                FontSize="20"
+                Text="{Binding DialogResultView}"/>
         </Border>
-        <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Row="3" >
-            <Button Margin="0 0 40 0" Width="90" Height="40" Content="OK">
-                <i:Interaction.Triggers>
-                    <i:EventTrigger EventName="Click">
-                        <cal:ActionMessage MethodName="OK">
-                        </cal:ActionMessage>
-                    </i:EventTrigger>
-                </i:Interaction.Triggers>
-            </Button>
-            <Button Width="90" Height="40" Content="Cancel">
+        <StackPanel
+            Grid.Row="3"
+            HorizontalAlignment="Center"
+            VerticalAlignment="Center"
+            Orientation="Horizontal">
+            <Button
+                Width="90"
+                Height="40"
+                Margin="0,0,40,0"
+                Content="OK">
                 <i:Interaction.Triggers>
                     <i:EventTrigger EventName="Click">
-                        <cal:ActionMessage MethodName="Cancel">
-                        </cal:ActionMessage>
+                        <cal:ActionMessage MethodName="OK"/>
                     </i:EventTrigger>
                 </i:Interaction.Triggers>
             </Button>
+            <Button
+                x:Name="TryClose"
+                Width="90"
+                Height="40"
+                Content="Cancel"/>
         </StackPanel>
     </Grid>
 </UserControl>

+ 17 - 57
Furnace/FurnaceUI/Dialog/SelectSequenceViewModel.cs

@@ -1,18 +1,14 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows;
-using FurnaceUI.Models;
+using FurnaceUI.Models;
+using MECF.Framework.Common.CommonData.SorterDefines;
 using MECF.Framework.Common.OperationCenter;
+using MECF.Framework.Common.Utilities;
 
 namespace FurnaceUI.Client.Dialog
 {
     public class SelectSequenceViewModel : FurnaceUIViewModelBase
     {
         public string _dialogResultString = "";
-        public string DialogResultString 
+        public string DialogResultString
         {
             get
             {
@@ -23,29 +19,31 @@ namespace FurnaceUI.Client.Dialog
                 _dialogResultString = value;
                 switch (value)
                 {
-                    case "Auto":
+
+                    case "ResetAll":
                         {
-                            DialogResultView = "Auto";
+                            DialogResultView = N2PurgeModeEnum.ResetAll.ToString();
                             break;
                         }
-                    case "Manual_N2Purge":
+                    case "Auto":
                         {
-                            DialogResultView = "Manual(N2Purge)";
+                            DialogResultView = N2PurgeModeEnum.Auto.ToString();
                             break;
                         }
-                    case "Manual_ATM":
+                    case "N2PurgeMode":
                         {
-                            DialogResultView = "Manual(ATM)";
+                            DialogResultView = N2PurgeModeEnum.N2PurgeMode.ToDescription();
                             break;
                         }
-                    case "Manual_Maintenance":
+
+                    case "ATMMode":
                         {
-                            DialogResultView = "Manual(Maintenance)";
+                            DialogResultView = N2PurgeModeEnum.ATMMode.ToDescription();
                             break;
                         }
-                    case "Auto_Check":
+                    case "ManualMode":
                         {
-                            DialogResultView = "Auto Check";
+                            DialogResultView = N2PurgeModeEnum.ManualMode.ToDescription();
                             break;
                         }
                 }
@@ -54,42 +52,9 @@ namespace FurnaceUI.Client.Dialog
         }
         public string DialogResultView { get; set; }
 
-       
-        private string _productZeroStr;
-
-        public string ProductZeroStr
-        {
-            get => _productZeroStr;
-            set
-            {
-                _productZeroStr = value;
-                NotifyOfPropertyChange(nameof(ProductZeroStr));
-            }
-        }
-
-        protected override void OnViewLoaded(object view)
-        {
-            base.OnViewLoaded(view);
-            LoadSetDefaultOption(view);
-        }
-
-        private void LoadSetDefaultOption(object view)
-        {
-        }
-
-        
-
         public void SelectExistClick(string cmd)
         {
             DialogResultString = cmd;
-            //if (cmd == "Cancel")
-            //{
-            //    ((Window)GetView()).DialogResult = false;
-            //}
-            //else
-            //{
-            //    ((Window)GetView()).DialogResult = true;
-            //}
         }
 
         public void OK()
@@ -98,13 +63,8 @@ namespace FurnaceUI.Client.Dialog
             {
                 return;
             }
-            ((Window)GetView()).DialogResult = true;
             InvokeClient.Instance.Service.DoOperation($"PM1.SetN2PurgeMode", DialogResultString);
+            this.TryClose(true);
         }
-        public void Cancel()
-        {
-            ((Window)GetView()).DialogResult = false;
-        }
-
     }
 }

+ 7 - 13
Furnace/FurnaceUI/Views/Operations/Maintenances/N2PurgeStatusViewModel.cs

@@ -59,31 +59,25 @@ namespace FurnaceUI.Views.Operations.Maintenances
                             _N2PurgeModeDisplay = "Auto";
                             break;
                         }
-                    case "Manual_N2Purge":
+                    case "N2PurgeMode":
                         {
-                            _N2PurgeModeDisplay = "Manual(N2Purge)";
+                            _N2PurgeModeDisplay = "N2 Purge Mode";
                             break;
                         }
-                    case "Manual_ATM":
+                    case "ATMMode":
                         {
-                            _N2PurgeModeDisplay = "Manual(ATM)";
+                            _N2PurgeModeDisplay = "ATM Mode";
                             break;
                         }
-                    case "Manual_Maintenance":
+                    case "ManualMode":
                         {
-                            _N2PurgeModeDisplay = "Manual(Maintenance)";
-                            break;
-                        }
-                    case "Auto_Check":
-                        {
-                            _N2PurgeModeDisplay = "Auto Check";
+                            _N2PurgeModeDisplay = "Manual Mode";
                             break;
                         }
                     default:
                         _N2PurgeModeDisplay = "";
                         break;
                 }
-                //NotifyOfPropertyChange("N2PurgeModeDisplay");
                 return _N2PurgeModeDisplay;
             }
             set
@@ -888,7 +882,7 @@ namespace FurnaceUI.Views.Operations.Maintenances
         {
             base.InvokeAfterUpdateProperty(data);
 
-            if (N2PurgeMode == "Manual_Maintenance")
+            if (N2PurgeMode == "ManualMode")
             {
                 SelectedGasStateType = GasPanelStateType.Manual;
             }