Преглед на файлове

Merge branch 'Master_ELK02_Release_Development' of http://git.jetplasma-oa.com/Jet/FurnaceELK into Master_ELK02_Release_Development

huangping преди 3 седмици
родител
ревизия
62fe7a89d3

+ 2 - 2
Furnace/FurnaceRT/Equipments/PMs/PMN2Purge.cs

@@ -36,7 +36,7 @@ namespace FurnaceRT.Equipments.PMs
             DATA.Subscribe($"{Module}.CheckO2Location", () => GetCheckO2Location(), SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.O2SetCheckSetPoint", () => GetO2SetCheckSetPoint(), SubscriptionAttribute.FLAG.IgnoreSaveDB);
 
-            DATA.Subscribe($"{Module}.N2PurgeMode", () => SC.ContainsItem("PM1.SelectN2PurgeMode") ? SC.GetStringValue("PM1.SelectN2PurgeMode") : ""); 
+            DATA.Subscribe($"{Module}.N2PurgeMode", () => SC.ContainsItem("PM1.SelectN2PurgeMode") ? SC.GetStringValue("PM1.SelectN2PurgeMode") : "");
         }
         private void InitN2PurgeConfigData()
         {
@@ -121,7 +121,7 @@ namespace FurnaceRT.Equipments.PMs
                 if (operateItem.Item1 is IoMFC)
                 {
                     var ioMFc = (operateItem.Item1 as IoMFC);
-                    ioMFc.SetPoint = float.Parse(operateItem.Item2.ToString());
+                    { ioMFc.SetMfcValue(out _, 0, new object[] { float.Parse(operateItem.Item2.ToString()) }); }
                 }
 
                 if (operateItem.Item1 is IoValve)

+ 69 - 60
Furnace/FurnaceSimulator/Instances/SimulatorSystem.cs

@@ -19,6 +19,7 @@ namespace FurnaceSimulator.Instances
         private PeriodicJob _thread;
         private int _shuttleServoStation;
         private int _robotServoStation;
+        private bool _enableN2purge = false;
 
         Random _rd = new Random();
 
@@ -198,72 +199,72 @@ namespace FurnaceSimulator.Instances
 
         private bool OnMonitor()
         {
-           //return true;
-                //MonitorValve();
-                MonitorLP("PM1", "LP1");
-                MonitorLP("PM1", "LP2");
-                MonitorFIMS("PM1", "FIMS1");
-                MonitorFIMS("PM1", "FIMS2");
-                MonitorBuffer();
-                MonitorMFC();
-                MonitorDoor();
-                MonitorRAxis("PM1");
-                MonitorZAxis("PM1");
-                MonitorHeater();
-                MonitorAPC();
-                //   MonitorHeaterBand();
-
-                if (IO.DO[$"PM1.DO_ShutterOpen"].Value)
-                {
-                    IO.DI[$"PM1.DI_FurnaceShutterOpened"].Value = IO.DO[$"PM1.DO_ShutterOpen"].Value;
-                    IO.DI[$"PM1.DI_FurnaceShutterClosed"].Value = IO.DO[$"PM1.DO_ShutterClose"].Value;
-                }
-                if (IO.DO[$"PM1.DO_ShutterClose"].Value)
-                {
-                    IO.DI[$"PM1.DI_FurnaceShutterOpened"].Value = IO.DO[$"PM1.DO_ShutterOpen"].Value;
-                    IO.DI[$"PM1.DI_FurnaceShutterClosed"].Value = IO.DO[$"PM1.DO_ShutterClose"].Value;
-                }
+            //return true;
+            //MonitorValve();
+            MonitorLP("PM1", "LP1");
+            MonitorLP("PM1", "LP2");
+            MonitorFIMS("PM1", "FIMS1");
+            MonitorFIMS("PM1", "FIMS2");
+            MonitorBuffer();
+            MonitorMFC();
+            MonitorDoor();
+            MonitorRAxis("PM1");
+            MonitorZAxis("PM1");
+            MonitorHeater();
+            MonitorAPC();
+            //   MonitorHeaterBand();
+
+            if (IO.DO[$"PM1.DO_ShutterOpen"].Value)
+            {
+                IO.DI[$"PM1.DI_FurnaceShutterOpened"].Value = IO.DO[$"PM1.DO_ShutterOpen"].Value;
+                IO.DI[$"PM1.DI_FurnaceShutterClosed"].Value = IO.DO[$"PM1.DO_ShutterClose"].Value;
+            }
+            if (IO.DO[$"PM1.DO_ShutterClose"].Value)
+            {
+                IO.DI[$"PM1.DI_FurnaceShutterOpened"].Value = IO.DO[$"PM1.DO_ShutterOpen"].Value;
+                IO.DI[$"PM1.DI_FurnaceShutterClosed"].Value = IO.DO[$"PM1.DO_ShutterClose"].Value;
+            }
 
-                IO.AI[$"PM1.AI_BufferTargetPosFb"].FloatValue = IO.AO[$"PM1.AO_TargetPositionBufferAxis"].FloatValue;
-                IO.AI[$"PM1.AI_BoatTargetPosFb"].FloatValue = IO.AO[$"PM1.AO_BoatPosition"].FloatValue;
+            IO.AI[$"PM1.AI_BufferTargetPosFb"].FloatValue = IO.AO[$"PM1.AO_TargetPositionBufferAxis"].FloatValue;
+            IO.AI[$"PM1.AI_BoatTargetPosFb"].FloatValue = IO.AO[$"PM1.AO_BoatPosition"].FloatValue;
 
-                IO.DI[$"PM1.DI_VaccumPumpBothOn"].Value = true;
+            IO.DI[$"PM1.DI_VaccumPumpBothOn"].Value = true;
 
 
-                if (IO.DO[$"PM1.DO_ValveAV91"] != null && IO.DI[$"PM1.DI_AV91_1RHCAirInOpened"] != null) { IO.DI[$"PM1.DI_AV91_1RHCAirInOpened"].Value = IO.DO[$"PM1.DO_ValveAV91"].Value; }
-                if (IO.DO[$"PM1.DO_ValveAV91"] != null && IO.DI[$"PM1.DI_AV91_2RHCAirInOpened"] != null) { IO.DI[$"PM1.DI_AV91_2RHCAirInOpened"].Value = IO.DO[$"PM1.DO_ValveAV91"].Value; }
-                if (IO.DO[$"PM1.DO_ValveAV91"] != null && IO.DI[$"PM1.DI_AV91_3RHCAirOutOpened"] != null) { IO.DI[$"PM1.DI_AV91_3RHCAirOutOpened"].Value = IO.DO[$"PM1.DO_ValveAV91"].Value; }
-                if (IO.DO[$"PM1.DO_ValveAV91"] != null && IO.DI[$"PM1.DI_AV91_4RHCAirOutOpened"] != null) { IO.DI[$"PM1.DI_AV91_4RHCAirOutOpened"].Value = IO.DO[$"PM1.DO_ValveAV91"].Value; }
-                if (IO.DO[$"PM1.DO_ValveAV91"] != null && IO.DI[$"PM1.DI_AV91_1RHCAirInClosed"] != null) { IO.DI[$"PM1.DI_AV91_1RHCAirInClosed"].Value = !IO.DO[$"PM1.DO_ValveAV91"].Value; }
-                if (IO.DO[$"PM1.DO_ValveAV91"] != null && IO.DI[$"PM1.DI_AV91_2RHCAirInClosed"] != null) { IO.DI[$"PM1.DI_AV91_2RHCAirInClosed"].Value = !IO.DO[$"PM1.DO_ValveAV91"].Value; }
-                if (IO.DO[$"PM1.DO_ValveAV91"] != null && IO.DI[$"PM1.DI_AV91_3RHCAirOutClosed"] != null) { IO.DI[$"PM1.DI_AV91_3RHCAirOutClosed"].Value = !IO.DO[$"PM1.DO_ValveAV91"].Value; }
-                if (IO.DO[$"PM1.DO_ValveAV91"] != null && IO.DI[$"PM1.DI_AV91_4RHCAirOutClosed"] != null) { IO.DI[$"PM1.DI_AV91_4RHCAirOutClosed"].Value = !IO.DO[$"PM1.DO_ValveAV91"].Value; }
-                if (IO.DO[$"PM1.DO_LAExhaustValveOpen"] != null && IO.DO[$"PM1.DO_LAExhaustValveClose"] != null &&
-                    (IO.DO[$"PM1.DO_LAExhaustValveOpen"].Value || IO.DO[$"PM1.DO_LAExhaustValveClose"].Value))
-                {
-                    IO.DI[$"PM1.DI_AV66CommonExhaustOpened"].Value = IO.DO[$"PM1.DO_LAExhaustValveOpen"].Value;
-                    IO.DI[$"PM1.DI_AV66CommonExhaustClosed"].Value = IO.DO[$"PM1.DO_LAExhaustValveClose"].Value;
-                }
+            if (IO.DO[$"PM1.DO_ValveAV91"] != null && IO.DI[$"PM1.DI_AV91_1RHCAirInOpened"] != null) { IO.DI[$"PM1.DI_AV91_1RHCAirInOpened"].Value = IO.DO[$"PM1.DO_ValveAV91"].Value; }
+            if (IO.DO[$"PM1.DO_ValveAV91"] != null && IO.DI[$"PM1.DI_AV91_2RHCAirInOpened"] != null) { IO.DI[$"PM1.DI_AV91_2RHCAirInOpened"].Value = IO.DO[$"PM1.DO_ValveAV91"].Value; }
+            if (IO.DO[$"PM1.DO_ValveAV91"] != null && IO.DI[$"PM1.DI_AV91_3RHCAirOutOpened"] != null) { IO.DI[$"PM1.DI_AV91_3RHCAirOutOpened"].Value = IO.DO[$"PM1.DO_ValveAV91"].Value; }
+            if (IO.DO[$"PM1.DO_ValveAV91"] != null && IO.DI[$"PM1.DI_AV91_4RHCAirOutOpened"] != null) { IO.DI[$"PM1.DI_AV91_4RHCAirOutOpened"].Value = IO.DO[$"PM1.DO_ValveAV91"].Value; }
+            if (IO.DO[$"PM1.DO_ValveAV91"] != null && IO.DI[$"PM1.DI_AV91_1RHCAirInClosed"] != null) { IO.DI[$"PM1.DI_AV91_1RHCAirInClosed"].Value = !IO.DO[$"PM1.DO_ValveAV91"].Value; }
+            if (IO.DO[$"PM1.DO_ValveAV91"] != null && IO.DI[$"PM1.DI_AV91_2RHCAirInClosed"] != null) { IO.DI[$"PM1.DI_AV91_2RHCAirInClosed"].Value = !IO.DO[$"PM1.DO_ValveAV91"].Value; }
+            if (IO.DO[$"PM1.DO_ValveAV91"] != null && IO.DI[$"PM1.DI_AV91_3RHCAirOutClosed"] != null) { IO.DI[$"PM1.DI_AV91_3RHCAirOutClosed"].Value = !IO.DO[$"PM1.DO_ValveAV91"].Value; }
+            if (IO.DO[$"PM1.DO_ValveAV91"] != null && IO.DI[$"PM1.DI_AV91_4RHCAirOutClosed"] != null) { IO.DI[$"PM1.DI_AV91_4RHCAirOutClosed"].Value = !IO.DO[$"PM1.DO_ValveAV91"].Value; }
+            if (IO.DO[$"PM1.DO_LAExhaustValveOpen"] != null && IO.DO[$"PM1.DO_LAExhaustValveClose"] != null &&
+                (IO.DO[$"PM1.DO_LAExhaustValveOpen"].Value || IO.DO[$"PM1.DO_LAExhaustValveClose"].Value))
+            {
+                IO.DI[$"PM1.DI_AV66CommonExhaustOpened"].Value = IO.DO[$"PM1.DO_LAExhaustValveOpen"].Value;
+                IO.DI[$"PM1.DI_AV66CommonExhaustClosed"].Value = IO.DO[$"PM1.DO_LAExhaustValveClose"].Value;
+            }
 
-                if (IO.DO[$"PM1.DO_FFUAirInValveOpen"] != null && IO.DO[$"PM1.DO_FFUAirInValveClose"] != null &&
-                    (IO.DO[$"PM1.DO_FFUAirInValveOpen"].Value || IO.DO[$"PM1.DO_FFUAirInValveClose"].Value))
-                {
-                    //  IO.DI[$"PM1.DI_AV65FFUAirInOpened"].Value = IO.DO[$"PM1.DO_FFUAirInValveOpen"].Value;
-                    //IO.DI[$"PM1.DI_AV65FFUAirInClosed"].Value = IO.DO[$"PM1.DO_FFUAirInValveClose"].Value;
-                }
+            if (IO.DO[$"PM1.DO_FFUAirInValveOpen"] != null && IO.DO[$"PM1.DO_FFUAirInValveClose"] != null &&
+                (IO.DO[$"PM1.DO_FFUAirInValveOpen"].Value || IO.DO[$"PM1.DO_FFUAirInValveClose"].Value))
+            {
+                //  IO.DI[$"PM1.DI_AV65FFUAirInOpened"].Value = IO.DO[$"PM1.DO_FFUAirInValveOpen"].Value;
+                //IO.DI[$"PM1.DI_AV65FFUAirInClosed"].Value = IO.DO[$"PM1.DO_FFUAirInValveClose"].Value;
+            }
 
-                if (IO.AI[$"PM1.AI_FOUPRobotActionCommand"] != null && IO.AO[$"PM1.AO_FOUPRobotActionCommand"] != null)
-                {
-                    IO.AI[$"PM1.AI_FOUPRobotActionCommand"].FloatValue = IO.AO[$"PM1.AO_FOUPRobotActionCommand"].FloatValue;
-                }
+            if (IO.AI[$"PM1.AI_FOUPRobotActionCommand"] != null && IO.AO[$"PM1.AO_FOUPRobotActionCommand"] != null)
+            {
+                IO.AI[$"PM1.AI_FOUPRobotActionCommand"].FloatValue = IO.AO[$"PM1.AO_FOUPRobotActionCommand"].FloatValue;
+            }
 
-                if (IO.AI[$"PM1.AI_WaferRobotActionCommand"] != null && IO.AO[$"PM1.AO_WaferRobotActionCommand"] != null)
-                {
-                    IO.AI[$"PM1.AI_WaferRobotActionCommand"].FloatValue = IO.AO[$"PM1.AO_WaferRobotActionCommand"].FloatValue;
-                }
+            if (IO.AI[$"PM1.AI_WaferRobotActionCommand"] != null && IO.AO[$"PM1.AO_WaferRobotActionCommand"] != null)
+            {
+                IO.AI[$"PM1.AI_WaferRobotActionCommand"].FloatValue = IO.AO[$"PM1.AO_WaferRobotActionCommand"].FloatValue;
+            }
+
+            return true;
 
-                return true;
-         
         }
 
         public void Terminate()
@@ -716,7 +717,11 @@ namespace FurnaceSimulator.Instances
                 {
                     IO.AI[$"PM1.AI_O2Concentration"].FloatValue = i;
 
-                 // System.Threading.Thread.Sleep(300); // 延迟500毫秒以便观察输出
+                    if (_enableN2purge)
+                    {
+                        System.Threading.Thread.Sleep(300);
+
+                    }
                 }
                 increasing = false; // 切换方向
             }
@@ -725,7 +730,11 @@ namespace FurnaceSimulator.Instances
                 for (int i = end; i >= start; i--)
                 {
                     IO.AI[$"PM1.AI_O2Concentration"].FloatValue = i;
-                  //  System.Threading.Thread.Sleep(300);// 延迟500毫秒以便观察输出
+                    if (_enableN2purge)
+                    {
+                        System.Threading.Thread.Sleep(300); // 延迟500毫秒以便观察输出
+
+                    }
                 }
                 increasing = true; // 切换方向
             }

+ 12 - 12
Furnace/FurnaceUI/Views/Operations/PressureDetailView.xaml

@@ -176,14 +176,14 @@
                                         <Border>
                                             <Label Content="Press1"/>
                                         </Border>
-                                         <TextBox  Tag="None"  IsReadOnly="True"    Margin="0,0,1,0" Text="{Binding APCData.Pressure1Feedback, StringFormat={}{0:f3}, Mode=OneWay}"     />
+                                        <TextBox  Tag="None"  IsReadOnly="True"    Margin="0,0,1,0" Text="{Binding Pressure1Feedback, StringFormat={}{0:f3}, Mode=OneWay}"     />
                                          <TextBox  Tag="None"  IsReadOnly="True"    Width="40"  Text="{Binding DefaultUnit}"     />
                                     </StackPanel>
                                     <StackPanel Orientation="Horizontal">
                                         <Border>
                                             <Label Content="Press2"/>
                                         </Border>
-                                         <TextBox  Tag="None"  IsReadOnly="True"    Margin="0,0,1,0" Text="{Binding APCData.Pressure2Feedback, StringFormat={}{0:f1}, Mode=OneWay}"     />
+                                        <TextBox  Tag="None"  IsReadOnly="True"    Margin="0,0,1,0" Text="{Binding Pressure2Feedback, StringFormat={}{0:f1}, Mode=OneWay}"     />
                                          <TextBox  Tag="None"  IsReadOnly="True"    Width="40"   Text="{Binding DefaultUnit}"     />
                                     </StackPanel>
                                 </StackPanel>
@@ -289,7 +289,7 @@
                                     <StackPanel Orientation="Vertical">
                                         <StackPanel Orientation="Horizontal">
                                             <Border>
-                                                <Label Content="PH(Pa):" Width="130"/>
+                                                <Label Content="PH(Torr):" Width="130"/>
                                             </Border>
                                              <TextBox  Tag="None"  IsReadOnly="True"     Text="{Binding LeakCheckHighLimit ,UpdateSourceTrigger=PropertyChanged}" Width="235"/>
                                         </StackPanel>
@@ -310,7 +310,7 @@
                                     <StackPanel Orientation="Vertical">
                                         <StackPanel Orientation="Horizontal">
                                             <Border>
-                                                <Label Content="PL(Pa):" Width="130"/>
+                                                <Label Content="PL(Torr):" Width="130"/>
                                             </Border>
                                              <TextBox  Tag="None"  IsReadOnly="True"     Text="{Binding LeakCheckLowLimit ,UpdateSourceTrigger=PropertyChanged}" Width="235"/>
                                         </StackPanel>
@@ -330,7 +330,7 @@
                                     <StackPanel Orientation="Vertical">
                                         <StackPanel Orientation="Horizontal">
                                             <Border>
-                                                <Label Content="BP(Pa):" Width="130"/>
+                                                <Label Content="BP(Torr):" Width="130"/>
                                             </Border>
                                              <TextBox  Tag="None"  IsReadOnly="True"    Text="{Binding LeakCheckBasePressure ,UpdateSourceTrigger=PropertyChanged}" Width="235"/>
                                         </StackPanel>
@@ -345,7 +345,7 @@
                                     <StackPanel Orientation="Vertical">
                                         <StackPanel Orientation="Horizontal">
                                             <Border>
-                                                <Label Content="BPLimit(Pa):" Width="130"/>
+                                                <Label Content="BPLimit(Torr):" Width="130"/>
                                             </Border>
                                              <TextBox  Tag="None"  IsReadOnly="True"    Text="{Binding LeakCheckBasePressureLimit ,UpdateSourceTrigger=PropertyChanged}" Width="235"/>
                                         </StackPanel>
@@ -380,14 +380,14 @@
 
                                 <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
                                     <Border>
-                                        <Label Content="Monitor Pressure(Pa):" Width="160" />
+                                        <Label Content="Monitor Pressure(Torr):" Width="170" />
                                     </Border>
                                      <TextBox  Tag="None"  IsReadOnly="True"    Text="{Binding LeakCheckDelayMonitorPressure ,UpdateSourceTrigger=PropertyChanged}" Width="220" Margin="0"/>
                                 </StackPanel>
 
                                 <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
                                     <Border>
-                                        <Label Content="Start Pressure(Pa):" Width="160" />
+                                        <Label Content="Start Pressure(Torr):" Width="170" />
                                     </Border>
                                      <TextBox  Tag="None"  IsReadOnly="True"    Text="{Binding LeakCheckDelayStartPressure ,UpdateSourceTrigger=PropertyChanged}" Width="220" Margin="0"/>
                                 </StackPanel>
@@ -416,7 +416,7 @@
                                     <StackPanel Orientation="Vertical">
                                         <StackPanel Orientation="Horizontal">
                                             <Border>
-                                                <Label Content="Leak Limit(Pa):" Width="130"/>
+                                                <Label Content="Leak Limit(Torr):" Width="130"/>
                                             </Border>
                                              <TextBox  Tag="None"  IsReadOnly="True"    Text="{Binding LeakCheckLeakLimit ,UpdateSourceTrigger=PropertyChanged}" Width="235"/>
                                         </StackPanel>
@@ -432,21 +432,21 @@
 
                                 <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
                                     <Border>
-                                        <Label Content="Actual(Pa):" Width="160" />
+                                        <Label Content="Actual(Torr):" Width="160" />
                                     </Border>
                                      <TextBox  Tag="None"  IsReadOnly="True"    Text="{Binding LeakCheckActualLeak ,UpdateSourceTrigger=PropertyChanged}" Width="220" Margin="0"/>
                                 </StackPanel>
 
                                 <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
                                     <Border>
-                                        <Label Content="Monitor Pressure(Pa):" Width="160" />
+                                        <Label Content="Monitor Pressure(Torr):" Width="160" />
                                     </Border>
                                      <TextBox  Tag="None"  IsReadOnly="True"    Text="{Binding LeakCheckMonitorPressure ,UpdateSourceTrigger=PropertyChanged}"  Width="220" Margin="0"/>
                                 </StackPanel>
 
                                 <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
                                     <Border>
-                                        <Label Content="Start Pressure(Pa):" Width="160" />
+                                        <Label Content="Start Pressure(Torr):" Width="160" />
                                     </Border>
                                      <TextBox  Tag="None"  IsReadOnly="True"    Text="{Binding LeakCheckStartPressure ,UpdateSourceTrigger=PropertyChanged}" Width="220" Margin="0"/>
                                 </StackPanel>

+ 4 - 1
Furnace/FurnaceUI/Views/Operations/PressureDetailViewModel.cs

@@ -53,7 +53,10 @@ namespace FurnaceUI.Views.Operations
 
         [Subscription("PM1.APC.DeviceData")]
         public AITAPCData APCData { get; set; }
-
+        [Subscription("PM1.APC.Pressure1Feedback")]
+        public float Pressure1Feedback { get; set; }
+        [Subscription("PM1.APC.Pressure2Feedback")]
+        public float Pressure2Feedback { get; set; }
         public PressureDetailViewModel()
         {
             DefaultUnit = (string)QueryDataClient.Instance.Service.GetConfig($"PM1.APC.PressureUnit");