Browse Source

同步仿真逻辑

jiangjy 3 weeks ago
parent
commit
34d6d62d74
1 changed files with 69 additions and 60 deletions
  1. 69 60
      Furnace/FurnaceSimulator/Instances/SimulatorSystem.cs

+ 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 = true;
 
         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; // 切换方向
             }