Browse Source

VenusDE recipe tolerance enhance

hecl 11 months ago
parent
commit
996eacc709

+ 2 - 1
Venus/Venus_MainPages/ViewModels/OverVenusDEViewModel.cs

@@ -1328,7 +1328,8 @@ namespace Venus_MainPages.ViewModels
             }
             else
             {
-
+                if (HeGasSetpoint == 0)
+                    return;
 
                 if (HeIsPressureMode)
                 {

+ 2 - 2
Venus/Venus_MainPages/Views/OverVenusDEView.xaml

@@ -1217,7 +1217,7 @@
             <ctrls:ZhenValve Width="34" Height="34" Canvas.Top="511" Canvas.Left="1344" Panel.ZIndex="2"/>
             <!--<ctrls:TextboxWithLabel  Canvas.Top="510" Canvas.Left="1367" TextBoxValue="{Binding N2SetPoint,Mode=TwoWay}" IsReadOnly="False"  LabelValue="Turbo N2" ToolTip="{Binding MFCN2Data.SetPoint,StringFormat='F1'}" TextBoxColor="White" />-->
 
-            <ctrls:TextboxWithLabel  Canvas.Top="556" Canvas.Left="952" LabelValue="Pressure(mTorr)" TextBoxValue="{Binding ESCHePressure,StringFormat='F1'}"  TextBoxColor="#D7E4BD"/>
+            <ctrls:TextboxWithLabel  Canvas.Top="556" Canvas.Left="952" LabelValue="Pressure(Torr)" TextBoxValue="{Binding ESCHePressure,StringFormat='F1'}"  TextBoxColor="#D7E4BD"/>
             <Border    BorderBrush="Gray"  BorderThickness="0"  Width="15" Height="6" Canvas.Top="581" Canvas.Left="1033">
                 <Border.Background>
                     <LinearGradientBrush StartPoint="0.5 0" EndPoint="0.5 1">
@@ -1761,7 +1761,7 @@
                 <ColumnDefinition Width="4*"/>
             </Grid.ColumnDefinitions>
 
-            <TextBlock Grid.Row="0" Text="Chiller Temp.(°C)" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="1,0,0,0"/>
+            <TextBlock Grid.Row="0" Text="ESC Temp.(°C)" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="1,0,0,0"/>
             <TextBlock Grid.Row="1" Text="Wall Temp.(°C)" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="1,0,0,0"/>
 
             <TextBox Grid.Row="0" Grid.Column="1" Width="Auto" Height="Auto" Text="{Binding ChillerTempSetpoint,UpdateSourceTrigger=PropertyChanged}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderBrush="White"  BorderThickness="0" />

+ 1 - 1
Venus/Venus_MainPages/Views/OverVenusSEView.xaml

@@ -1133,7 +1133,7 @@
             <ctrls:TextboxWithLabel  Canvas.Top="633" Canvas.Left="960" TextBoxValue="{Binding HeGasSetpoint,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"    LabelValue="Pressure(Torr)"  TextBoxColor="White" IsReadOnly="False"/>
             <Ellipse Width="20" Height="20"  Canvas.Top="651.5" Canvas.Left="865" Fill="{Binding MFCHeData.IsWarning,Converter={StaticResource boolToColor4}}"  Stroke="Silver" StrokeThickness="2" ToolTip="Pressure Alarm"></Ellipse>
 
-            <ctrls:TextboxWithLabel  Canvas.Top="633" Canvas.Left="1280" LabelValue="CM3(Torr)" TextBoxValue="{Binding  ForelinePressure,StringFormat='F1'}" TextBoxColor="#D7E4BD" />
+            <ctrls:TextboxWithLabel  Canvas.Top="633" Canvas.Left="1280" LabelValue="CM3(mTorr)" TextBoxValue="{Binding  ForelinePressure,StringFormat='F1'}" TextBoxColor="#D7E4BD" />
             <ctrls:TextboxWithLabel  Canvas.Top="464" Canvas.Left="1290" LabelValue="Position(‰)" TextBoxValue="{Binding PendulumValvePosition,StringFormat='F0'}" TextBoxColor="#D7E4BD" />
             <!--<ctrls:TextboxWithLabel  Canvas.Top="510" Canvas.Left="1367" TextBoxValue="{Binding N2SetPoint,Mode=TwoWay}" IsReadOnly="False"  LabelValue="Turbo N2" ToolTip="{Binding MFCN2Data.SetPoint,StringFormat='F1'}" TextBoxColor="White" />-->
 

+ 6 - 0
Venus/Venus_RT/Devices/AdTecRF.cs

@@ -20,6 +20,9 @@ using Venus_Core;
 using System.Collections.Generic;
 using System.Diagnostics;
 using System.Net.Sockets;
+using Venus_RT.Modules;
+using System.Windows.Interop;
+using Venus_RT.Modules.PMs;
 
 namespace Venus_RT.Devices
 {
@@ -645,7 +648,10 @@ namespace Venus_RT.Devices
                     if (errCode == 99)
                         LOG.Write(eEvent.EV_DEVICE_INFO, Module, "Source Generator " + code);
                     else
+                    {
                         LOG.Write(eEvent.ERR_RF, Module, "Source Generator " + code);
+                        Singleton<RouteManager>.Instance.GetPM(ModuleHelper.Converter(Module)).PostMsg(PMEntity.MSG.Error);
+                    }
                 }
             }
 

+ 1 - 0
Venus/Venus_RT/Devices/JetPMBase.cs

@@ -73,6 +73,7 @@ namespace Venus_RT.Devices
         public abstract double TargetPressure { get; }
         public virtual double ESCHePressure { get; }
         public virtual int ESCOutputVoltage { get; }
+        public virtual float MagnetIntensity { get; }
         public virtual double ESCPositiveOutputCurrent { get; }//R+
         public virtual double ESCNegativeOutputCurrent { get; }//R-
 

+ 48 - 25
Venus/Venus_RT/Devices/JetVenusDEPM.cs

@@ -2,12 +2,12 @@
 using Aitex.Core.RT.DataCenter;
 using Aitex.Core.RT.Device;
 using Aitex.Core.RT.Device.Unit;
-using Aitex.Core.RT.Fsm;
 using Aitex.Core.RT.Log;
 using Aitex.Core.RT.OperationCenter;
 using Aitex.Core.RT.SCCore;
 using Aitex.Core.UI.Control;
 using Aitex.Core.Util;
+using Aitex.Core.RT.Fsm;
 using MECF.Framework.Common.Device.Bases;
 using MECF.Framework.Common.Equipment;
 using MECF.Framework.Common.SubstrateTrackings;
@@ -246,7 +246,7 @@ namespace Venus_RT.Devices
                     _Chiller = DEVICE.GetDevice<AIRSYSChiller>($"{Module}.{VenusDevice.Chiller}");
                 }
             }
-			else
+            else
             if (SC.GetValue<bool>($"{Module}.Chiller.EnableChiller") &&
                 SC.GetValue<int>($"{Module}.Chiller.CommunicationType") == (int)CommunicationType.RS485 &&
                 SC.GetValue<bool>($"{Module}.Chiller.ShareCOM"))
@@ -391,7 +391,7 @@ namespace Venus_RT.Devices
                 { ValveType.MainPurge,_MainPurgeValve},
                 { ValveType.SecondPurge,  _SecondPurgeValve},
             };
-			SensorWithAlarm();
+            SensorWithAlarm();
         }
         #endregion
 
@@ -459,6 +459,20 @@ namespace Venus_RT.Devices
 
         public override bool IsMfc8ValveOpened => _Mfc8Valve.Status;
 
+        public override double MFC1FeedBack => DEVICE.GetDevice<IoMfc>($"{Module}.MfcGas1").FeedBack;
+        public override double MFC2FeedBack => DEVICE.GetDevice<IoMfc>($"{Module}.MfcGas2").FeedBack;
+        public override double MFC3FeedBack => DEVICE.GetDevice<IoMfc>($"{Module}.MfcGas3").FeedBack;
+        public override double MFC4FeedBack => DEVICE.GetDevice<IoMfc>($"{Module}.MfcGas4").FeedBack;
+        public override double MFC5FeedBack => DEVICE.GetDevice<IoMfc>($"{Module}.MfcGas5").FeedBack;
+        public override double MFC6FeedBack => DEVICE.GetDevice<IoMfc>($"{Module}.MfcGas6").FeedBack;
+        public override double MFC7FeedBack => DEVICE.GetDevice<IoMfc>($"{Module}.MfcGas7").FeedBack;
+        public override double MFC8FeedBack => DEVICE.GetDevice<IoMfc>($"{Module}.MfcGas8").FeedBack;
+        public override double MFC9FeedBack => DEVICE.GetDevice<IoMfc>($"{Module}.MfcGas9").FeedBack;
+        public override double MFC10FeedBack => DEVICE.GetDevice<IoMfc>($"{Module}.MfcGas10").FeedBack;
+        public override double MFC11FeedBack => DEVICE.GetDevice<IoMfc>($"{Module}.MfcGas11").FeedBack;
+        public override double MFC12FeedBack => DEVICE.GetDevice<IoMfc>($"{Module}.MfcGas12").FeedBack;
+        public override double HeliumFeedBack => DEVICE.GetDevice<IoMfc>($"{Module}.MfcHe").FeedBack;
+
         public bool IsMfc9ValveOpened => _Mfc9Valve.Status;
 
         public bool IsMfc10ValveOpened => _Mfc10Valve.Status;
@@ -492,6 +506,14 @@ namespace Venus_RT.Devices
 
         public override bool LinerDoorClosed => _PM_LinerDoor_Closed.Value;
 
+        public override float PendulumPressure => _pendulumValve.Pressure;
+
+        public override float PendulumPosition => _pendulumValve.Position;
+
+        public override float BiasForwardPower => _GeneratorBias.ForwardPower;
+
+        public override float MagnetIntensity => _Magnet.MagnetPowerIntensity;
+
         public override bool SlitDoorClosed
         {
             get
@@ -878,8 +900,8 @@ namespace Venus_RT.Devices
             _GasFinalValve.TurnValve(false, out _);
             //_SoftPumpValve.TurnValve(false, out _);
             _FastPumpValve.TurnValve(false, out _);
-            _TurboPumpPumpingValve.TurnValve(false, out _);
-            _TurboPumpPurgeValve.TurnValve(false, out _);
+            //_TurboPumpPumpingValve.TurnValve(false, out _);
+            //_TurboPumpPurgeValve.TurnValve(false, out _);
             _GuageValve.TurnValve(false, out _);
             _PurgeValve.TurnValve(false, out _);
             _N2Valve.TurnValve(false, out _);
@@ -976,9 +998,9 @@ namespace Venus_RT.Devices
         public override bool GeneratorBiasSetpower(float val)
         {
             if (_GeneratorBias == null) return false;
-            
-            _GeneratorBias.SetPower((ushort)val);               
-  
+
+            _GeneratorBias.SetPower((ushort)val);
+
             return true;
         }
 
@@ -1309,7 +1331,7 @@ namespace Venus_RT.Devices
         {
             if (on && (!TurboPumpInterlock || !IsCDA_OK || !IsTurboPumpAtSpeed || !IsWLK))
             {
-                LOG.Write(eEvent.ERR_PENDULUM_VALVE,Module, "Cannot open PendulumValve, as Interlock not arrival");
+                LOG.Write(eEvent.ERR_PENDULUM_VALVE, Module, "Cannot open PendulumValve, as Interlock not arrival");
                 return false;
             }
             return _pendulumValve.TurnValve(on);
@@ -1392,7 +1414,7 @@ namespace Venus_RT.Devices
 
         public override bool EndPick()
         {
-        	if (!SetLinerDoor(false, out string reason))
+            if (!SetLinerDoor(false, out string reason))
             {
                 LOG.Write(eEvent.ERR_PM, Module, $"Set Liner Door Close failed:{reason}");
                 return false;
@@ -1404,17 +1426,7 @@ namespace Venus_RT.Devices
             }
             return true;
         }
-        public override bool EndPlaceIsOK()
-        {
-            return CheckSlitDoorClose() && LiftPinIsDown;
-        }
-        public override bool EndPickIsOK()
-        {
-            return CheckSlitDoorClose();
-        }
-
-        #endregion
-		private void ALARM_Notify()
+        private void ALARM_Notify()
         {
             Singleton<RouteManager>.Instance.GetPM(Module).PostMsg(FSM_MSG.ALARM);
         }
@@ -1428,18 +1440,28 @@ namespace Venus_RT.Devices
             _GasBoxDoor.WarningAction += ALARM_Notify;
             _GasBoxPressure.WarningAction += ALARM_Notify;
         }
+        public override bool EndPlaceIsOK()
+        {
+            return CheckSlitDoorClose() && LiftPinIsDown;
+        }
+        public override bool EndPickIsOK()
+        {
+            return CheckSlitDoorClose();
+        }
+
+        #endregion
 
         protected override void CheckPermanentInterlock()
         {
-            if (ProcessPressure > 950 && _GuageValve.SetPoint)
+            if (ChamberPressure > 950 && _GuageValve.SetPoint)
             {
                 _GuageValve.TurnValve(false, out _);
-                LOG.Write(eEvent.WARN_DEVICE_INFO, Module, $"Process pressure:{ProcessPressure} exceed 950 mtorr, Guage Valve (DO-31) closed automaticlly.");
+                LOG.Write(eEvent.WARN_DEVICE_INFO, Module, $"Process pressure:{ChamberPressure} exceed 950 mtorr, Guage Valve (DO-31) closed automaticlly.");
             }
-            if (ProcessPressure < 950 && !_GuageValve.SetPoint)
+            if (ChamberPressure < 950 && !_GuageValve.SetPoint)
             {
                 _GuageValve.TurnValve(true, out _);
-                LOG.Write(eEvent.WARN_DEVICE_INFO, Module, $"Process pressure:{ProcessPressure} exceed 950 mtorr, Guage Valve (DO-31) closed automaticlly.");
+                LOG.Write(eEvent.WARN_DEVICE_INFO, Module, $"Process pressure:{ChamberPressure} exceed 950 mtorr, Guage Valve (DO-31) closed automaticlly.");
             }
         }
         public override void PMInError()
@@ -1449,6 +1471,7 @@ namespace Venus_RT.Devices
             GeneratorBiasPowerOn(false);
             OpenValve(ValveType.TurboPumpPumping, true);
             OpenValve(ValveType.TurboPumpPurge, true);
+            _pendulumValve.SetPosition(1000);
             OnOffSetESCHV(false);
         }
 

+ 37 - 36
Venus/Venus_RT/Devices/JetVenusSEPM.cs

@@ -1,12 +1,12 @@
 using Aitex.Core.Common.DeviceData;
 using Aitex.Core.RT.Device;
 using Aitex.Core.RT.Device.Unit;
-using Aitex.Core.RT.Fsm;
 using Aitex.Core.RT.Log;
 using Aitex.Core.RT.OperationCenter;
 using Aitex.Core.RT.SCCore;
 using Aitex.Core.UI.Control;
 using Aitex.Core.Util;
+using Aitex.Core.RT.Fsm;
 using MECF.Framework.Common.Device.Bases;
 using MECF.Framework.Common.Equipment;
 using MECF.Framework.Common.SubstrateTrackings;
@@ -379,7 +379,7 @@ namespace Venus_RT.Devices
                 { ValveType.SecondPurge,  _SecondPurgeValve},
                 { ValveType.PV14,  _PV14Valve},
             };
-			SensorWithAlarm();
+            SensorWithAlarm();
             //_ESCHV.SetDownRampTime(5);
         }
         #endregion
@@ -550,7 +550,7 @@ namespace Venus_RT.Devices
         {
             get
             {
-                switch(SC.GetValue<int>($"{Module}.Chiller.CommunicationType"))
+                switch (SC.GetValue<int>($"{Module}.Chiller.CommunicationType"))
                 {
                     case (int)CommunicationType.RS232:
                         return _Chiller.CoolantInletTcFeedback;
@@ -805,8 +805,8 @@ namespace Venus_RT.Devices
             _GasFinalValve.TurnValve(false, out _);
             _SoftPumpValve.TurnValve(false, out _);
             _FastPumpValve.TurnValve(false, out _);
-            _TurboPumpPumpingValve.TurnValve(false, out _);
-            _TurboPumpPurgeValve.TurnValve(false, out _);
+            //_TurboPumpPumpingValve.TurnValve(false, out _);
+            //_TurboPumpPurgeValve.TurnValve(false, out _);
             _GuageValve.TurnValve(false, out _);
 
             _N2Valve.TurnValve(false, out _);
@@ -1010,27 +1010,27 @@ namespace Venus_RT.Devices
         {
             if (Valve2IO.ContainsKey(vlvType))
             {
-                    if (vlvType == ValveType.TurboPumpPurge && on)
+                if (vlvType == ValveType.TurboPumpPurge && on)
+                {
+                    if (!IsISOOpen)
                     {
-                        if (!IsISOOpen)
-                        {
-                           LOG.Write(eEvent.WARN_DEFAULT_WARN, Module, $"Chamber TurboPumpPumping valve is not open, can not turn on TurboPumpPurge valve.");
-                           return;
-                        }
+                        LOG.Write(eEvent.WARN_DEFAULT_WARN, Module, $"Chamber TurboPumpPumping valve is not open, can not turn on TurboPumpPurge valve.");
+                        return;
                     }
-                    else if (vlvType == ValveType.TurboPumpPumping && !on)
+                }
+                else if (vlvType == ValveType.TurboPumpPumping && !on)
+                {
+                    if (IsTurboPumpRunning)
                     {
-                        if (IsTurboPumpRunning)
+                        if (IsPenVOpen)
                         {
-                            if (IsPenVOpen)
-                            {
                             LOG.Write(eEvent.WARN_DEFAULT_WARN, Module, $"Chamber TurboPump is open but Pendulum Valve is open, can not turn off TurboPumpPumping valve.");
                             return;
-                            }
                         }
-
                     }
-                
+
+                }
+
                 if (vlvType == ValveType.TurboPumpPurge && !_TurboPumpPumpingValve.Status && on)
                 {
                     LOG.Write(eEvent.WARN_DEVICE_INFO, Module, $"cannot open Turbo Pump Purge, cause Turbo Pump Valve not open");
@@ -1321,20 +1321,6 @@ namespace Venus_RT.Devices
 
         #endregion
 
-		private void ALARM_Notify()
-        {
-            Singleton<RouteManager>.Instance.GetPM(Module).PostMsg(FSM_MSG.ALARM);
-        }
-
-        private void SensorWithAlarm()
-        {
-            _WLK_sw.WarningAction += ALARM_Notify;
-            _PM_Lid_Closed.WarningAction += ALARM_Notify;
-            _RFG_Interlock.WarningAction += ALARM_Notify;
-            _TurboPumpInterlock.WarningAction += ALARM_Notify;
-            _GasBoxDoor.WarningAction += ALARM_Notify;
-            _GasBoxPressure.WarningAction += ALARM_Notify;
-        }
         private void GasRFInterlock()
         {
             if (_Generator.IsPowerOn)
@@ -1351,16 +1337,16 @@ namespace Venus_RT.Devices
 
         protected override void CheckPermanentInterlock()
         {
-            if (ProcessPressure >= 98 && _GuageValve.SetPoint)
+            if (ChamberPressure >= 98 && _GuageValve.SetPoint)
             {
                 _GuageValve.TurnValve(false, out _);
-                LOG.Write(eEvent.WARN_DEVICE_INFO, Module, $"Process pressure:{ProcessPressure} exceed 98 mtorr, Guage Valve (DO-31) closed automaticlly.");
+                LOG.Write(eEvent.WARN_DEVICE_INFO, Module, $"Process pressure:{ChamberPressure} exceed 98 mtorr, Guage Valve (DO-31) closed automaticlly.");
             }
 
-            if (ProcessPressure < 98 && !_GuageValve.SetPoint)
+            if (ChamberPressure < 98 && !_GuageValve.SetPoint)
             {
                 _GuageValve.TurnValve(true, out _);
-                LOG.Write(eEvent.WARN_DEVICE_INFO, Module, $"Process pressure:{ProcessPressure} less than 98 mtorr, Guage Valve (DO-31) open automaticlly.");
+                LOG.Write(eEvent.WARN_DEVICE_INFO, Module, $"Process pressure:{ChamberPressure} less than 98 mtorr, Guage Valve (DO-31) open automaticlly.");
             }
 
         }
@@ -1384,6 +1370,20 @@ namespace Venus_RT.Devices
                 return true;
             }
         }
+        private void ALARM_Notify()
+        {
+            Singleton<RouteManager>.Instance.GetPM(Module).PostMsg(FSM_MSG.ALARM);
+        }
+
+        private void SensorWithAlarm()
+        {
+            _WLK_sw.WarningAction += ALARM_Notify;
+            _PM_Lid_Closed.WarningAction += ALARM_Notify;
+            _RFG_Interlock.WarningAction += ALARM_Notify;
+            _TurboPumpInterlock.WarningAction += ALARM_Notify;
+            _GasBoxDoor.WarningAction += ALARM_Notify;
+            _GasBoxPressure.WarningAction += ALARM_Notify;
+        }
         public override void PMInError()
         {
             CloseValves();
@@ -1391,6 +1391,7 @@ namespace Venus_RT.Devices
             GeneratorBiasPowerOn(false);
             OpenValve(ValveType.TurboPumpPumping, true);
             OpenValve(ValveType.TurboPumpPurge, true);
+            _pendulumValve.SetPosition(1000);
             OnOffSetESCHV(false);
         }
 

+ 8 - 8
Venus/Venus_RT/Devices/PendulumValve.cs

@@ -596,14 +596,14 @@ namespace Venus_RT.Devices
                 LOG.Write(eEvent.ERR_DEVICE_INFO, Module, $"Chamber Pressure:{_chamber.ChamberPressure} is higher than {_chamberPressureLimit}{m_PressureType} and Chamber.TurboPumpSpeed is higher than {_turboPumpSpeedLimit}, can not turn on pendulum valve.");
                 return false;
             }
-            if (_chamber.IsTurboPumpRunning)
-            {
-                if (!_chamber.IsISOOpen)
-                {
-                    LOG.Write(eEvent.ERR_DEVICE_INFO, Module, $"Chamber TurboPumpingvalve is not open, can not turn on pendulum valve.");
-                    return false;
-                }
-            }
+            //if (_chamber.IsTurboPumpRunning)
+            //{
+            //    if (!_chamber.IsISOOpen)
+            //    {
+            //        LOG.Write(eEvent.ERR_DEVICE_INFO, Module, $"Chamber TurboPumpingvalve is not open, can not turn on pendulum valve.");
+            //        return false;
+            //    }
+            //}
 
             return true;
         }

+ 13 - 12
Venus/Venus_RT/Devices/TruPlasmaRF.cs

@@ -110,6 +110,18 @@ namespace Venus_RT.Devices
             }
         }
         public GeneratorStatus Status { get; set; }
+        private float _forwardPower;
+        public override float ForwardPower
+        {
+            get
+            {
+                return _forwardPower;
+            }
+            set
+            {
+                _forwardPower = CalibrationData(value, false);
+            }
+        }
         private bool GetBitValue(byte value, int bit)
         {
             return (value & (byte)Math.Pow(2, bit)) > 0 ? true : false;
@@ -356,17 +368,6 @@ namespace Venus_RT.Devices
 
         #endregion
     }
-    static class TruPlasmaMatchMessage
-    {
-        public const string PRESET = "G";
-        public const string AUTO = "L";
-        public const string MANUAL = "M";
-        public const string PRESET_MEM = "P";
-        public const string START_QUERY = "S3";
-        public const string STOP_QUERY = "SP";
-        public const string WRITE_POS = "$APGR";
-        public const string READ_POS = "$APRR";
-    }
 
     class TruPlasmaMatch : RfMatchBase
     {
@@ -626,7 +627,7 @@ namespace Venus_RT.Devices
             byte[] val1Bytes = BitConverter.GetBytes(c1val / 100);
             byte[] val2Bytes = BitConverter.GetBytes(c2val / 100);
             List<byte> Act = new List<byte>() { 0x00 };
-            List<byte> Ctr123 = new List<byte> { 0x04, 0x00, 0x00 };
+            List<byte> Ctr123 = new List<byte> { 0x04, 0x10, 0x80 };
             List<byte> baseBytes = new List<byte>() { };
             baseBytes.AddRange(Len);
             baseBytes.AddRange(DstSrc);

+ 1 - 1
Venus/Venus_RT/Modules/PMs/PMProcessRoutine.cs

@@ -627,7 +627,7 @@ namespace Venus_RT.Modules.PMs
             _chamber.OpenValve(ValveType.TurboPumpPumping, true);
             _chamber.OpenValve(ValveType.TurboPumpPurge, true);
 
-            if (_chamber.ChamberType == JetChamber.VenusSE)
+            if (_chamber.ChamberType == JetChamber.VenusSE || _chamber.ChamberType == JetChamber.VenusDE)
             {
                 await Task.Delay(3000);
                 _chamber.OnOffSetESCHV(false);

+ 11 - 1
Venus/Venus_RT/Modules/PMs/ProcessDefine.cs

@@ -45,6 +45,7 @@ namespace Venus_RT.Modules.PMs
         //private RecipeToleranceChecker _HeliumToleranceChecker;
         private RecipeToleranceChecker _PressureToleranceChecker;
         private RecipeToleranceChecker _HighTemperatureToleranceChecker;
+        private RecipeToleranceChecker _MagnetToleranceChecker;
 
 
 
@@ -1047,12 +1048,21 @@ namespace Venus_RT.Modules.PMs
 
         private RState MagnetUnit_Check(ProcessUnitBase unit, RecipeStep step)
         {
+            var ProcessMagnetUnit = unit as MagnetUnit;
+            if (ProcessMagnetUnit.ToleranceMode != ToleranceMode.None)
+            {
+                return _MagnetToleranceChecker.Monitor(Chamber.MagnetIntensity);
+            }
             return RState.Running;
         }
 
         private void MagnetUnit_End(ProcessUnitBase unit, RecipeStep step)
         {
-
+            var ProcessMagnetUnit = unit as MagnetUnit;
+            if (ProcessMagnetUnit.ToleranceMode != ToleranceMode.None)
+            {
+                _MagnetToleranceChecker.End();
+            }
         }
         private RState RFBoxUnit_Start(ProcessUnitBase unit, RecipeStep step)
         {

+ 2 - 1
Venus/Venus_RT/Modules/PMs/PumpDownRoutine.cs

@@ -55,7 +55,8 @@ namespace Venus_RT.Modules.PMs
             {
                 Reset();
                 _chamber.CloseValves();
-
+                if(_chamber.ChamberType == JetChamber.VenusSE || _chamber.ChamberType == JetChamber.VenusDE)
+                    _chamber.OpenValve(ValveType.TurboPumpPurge, false);
                 _roughPumpPressure = SC.GetValue<int>($"{Module}.Pump.PumpCrossingPressure");
                 _pump_delay = SC.GetValue<int>($"{Module}.Pump.PumpValveDelay") * 1000;
                 _basePressure = (objs.Length >= 1) ? Convert.ToInt32(objs[0]) : SC.GetValue<int>($"{Module}.Pump.PumpBasePressure");

+ 1 - 4
Venus/Venus_RT/Modules/PMs/VenusVentRoutine.cs

@@ -96,10 +96,7 @@ namespace Venus_RT.Modules.PMs
 
         private bool PendulumValveClose()
         {
-            if (_chamber.PendulumValveIsOpen())
-            {
-                _chamber.TurnPendulumValve(false);
-            }
+            _chamber.TurnPendulumValve(false);
 
             return true;
         }