Browse Source

1.将Kepler/Venus DeviceModel里面的ProcessGauge与PressureGauge重新定义
2.将Kepler2300 设置可配置三个Chiller
3.主界面删除下一步功能

lixiang 1 year ago
parent
commit
708d655cae

+ 1 - 1
Venus/Venus_MainPages/ViewModels/OverKepler2200AViewModel.cs

@@ -1368,7 +1368,7 @@ namespace Venus_MainPages.ViewModels
                 AITHeaterData heaterData = obj as AITHeaterData;
                 var _mainWindow = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is Window) as Window;
 
-                heaterView = new HeaterView(heaterData);
+                heaterView = new HeaterView(heaterData,ModuleName);
                 heaterView.WindowStartupLocation = WindowStartupLocation.CenterScreen;
                 heaterView.Owner = _mainWindow;
                 heaterView.Show();          

+ 69 - 2
Venus/Venus_MainPages/ViewModels/OverKepler2300ViewModel.cs

@@ -19,6 +19,7 @@ using Venus_Unity;
 using MECF.Framework.Common.CommonData.DeviceData;
 using System.Windows.Shapes;
 using Path = System.IO.Path;
+using MECF.Framework.Common.Equipment;
 
 namespace Venus_MainPages.ViewModels
 {
@@ -138,12 +139,23 @@ namespace Venus_MainPages.ViewModels
         private string m_SelectedRecipe;
 
         private float m_ChillerTempSetpoint;
+
+        private float m_InnerChillerTempSetpoint;
+        private float m_OuterChillerTempSetpoint;
+        private float m_TopChillerTempSetpoint;
+
         private float m_WallTempSetpoint;
 
         private bool m_HeIsPressureMode=true;
 
         private bool m_ChillerIsOn;
 
+        private bool m_InnerChillerIsOn;
+        private bool m_OuterChillerIsOn;
+        private bool m_TopChillerIsOn;
+
+
+
         private float m_ProcessHighPressure;
         private float m_ProcessLowPressure;
         private float m_ForelinePressurePressure;
@@ -161,6 +173,11 @@ namespace Venus_MainPages.ViewModels
         private bool m_IsLidClosed;
 
         private float m_ChillerTemperature;
+
+        private float m_InnerTemperature;
+        private float m_OuterTemperature;
+        private float m_TopTemperature;
+
         //private float m_HVTemperature;
 
 
@@ -308,6 +325,30 @@ namespace Venus_MainPages.ViewModels
                 SetProperty(ref m_ChillerTemperature, value);
             }
         }
+        public float InnerTemperature
+        {
+            get { return m_InnerTemperature; }
+            set
+            {
+                SetProperty(ref m_InnerTemperature, value);
+            }
+        }
+        public float OuterTemperature
+        {
+            get { return m_OuterTemperature; }
+            set
+            {
+                SetProperty(ref m_OuterTemperature, value);
+            }
+        }
+        public float TopTemperature
+        {
+            get { return m_TopTemperature; }
+            set
+            {
+                SetProperty(ref m_TopTemperature, value);
+            }
+        }
         //public float HVTemperature
         //{
         //    get { return m_HVTemperature; }
@@ -849,6 +890,22 @@ namespace Venus_MainPages.ViewModels
             set { SetProperty(ref m_ChillerTempSetpoint, value); }
         }
 
+        public float InnerChillerTempSetpoint
+        {
+            get { return m_InnerChillerTempSetpoint; }
+            set { SetProperty(ref m_InnerChillerTempSetpoint, value); }
+        }
+        public float OuterChillerTempSetpoint
+        {
+            get { return m_OuterChillerTempSetpoint; }
+            set { SetProperty(ref m_OuterChillerTempSetpoint, value); }
+        }
+        public float TopChillerTempSetpoint
+        {
+            get { return m_TopChillerTempSetpoint; }
+            set { SetProperty(ref m_TopChillerTempSetpoint, value); }
+        }
+
         public float WallTempSetpoint
         {
             get { return m_WallTempSetpoint; }
@@ -1367,8 +1424,7 @@ namespace Venus_MainPages.ViewModels
         {
                 AITHeaterData heaterData = obj as AITHeaterData;
                 var _mainWindow = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is Window) as Window;
-
-                heaterView = new HeaterView(heaterData);
+                heaterView = new HeaterView(heaterData, ModuleName);
                 heaterView.WindowStartupLocation = WindowStartupLocation.CenterScreen;
                 heaterView.Owner = _mainWindow;
                 heaterView.Show();          
@@ -1502,6 +1558,11 @@ namespace Venus_MainPages.ViewModels
 
             ChillerTemperature = float.Parse(RtDataValues[$"{ModuleName}.Chiller.Temp"].ToString());
 
+            InnerTemperature = float.Parse(RtDataValues[$"{ModuleName}.ChillerInnerTemp"].ToString());
+            OuterTemperature = float.Parse(RtDataValues[$"{ModuleName}.ChillerOuterTemp"].ToString());
+            TopTemperature   = float.Parse(RtDataValues[$"{ModuleName}.ChillerTopTemp"].ToString());
+
+
             //HVTemperature = float.Parse(RtDataValues[$"{ModuleName}.{VenusDevice.ESCHV}.Temp"].ToString());
 
 
@@ -1670,6 +1731,12 @@ namespace Venus_MainPages.ViewModels
             m_RtDataKeys.Add($"{ModuleName}.HasWafer");
             m_RtDataKeys.Add($"{ModuleName}.CurrentRecipeResult");
 
+            m_RtDataKeys.Add($"{ModuleName}.ChillerInnerTemp");
+            m_RtDataKeys.Add($"{ModuleName}.ChillerOuterTemp");
+            m_RtDataKeys.Add($"{ModuleName}.ChillerTopTemp");
+
+
+
 
         }
         #endregion

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

@@ -1390,8 +1390,7 @@ namespace Venus_MainPages.ViewModels
         {
                 AITHeaterData heaterData = obj as AITHeaterData;
                 var _mainWindow = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is Window) as Window;
-
-                heaterView = new HeaterView(heaterData);
+                heaterView = new HeaterView(heaterData,ModuleName);
                 heaterView.WindowStartupLocation = WindowStartupLocation.CenterScreen;
                 heaterView.Owner = _mainWindow;
                 heaterView.Show();          

+ 74 - 4
Venus/Venus_MainPages/ViewModels/RecipeViewModel.cs

@@ -1,6 +1,7 @@
 using Aitex.Core.Common.DeviceData;
 using Aitex.Core.RT.Log;
 using Aitex.Core.UI.View.Common;
+using MECF.Framework.Common.CommonData;
 //using MECF.Framework.Common.CommonData;
 using MECF.Framework.Common.DataCenter;
 using MECF.Framework.Common.OperationCenter;
@@ -33,6 +34,7 @@ using Venus_Themes.UserControls;
 using WPF.Themes.UserControls;
 using Xceed.Wpf.Toolkit.Primitives;
 using Xceed.Wpf.Toolkit.PropertyGrid.Attributes;
+using RecipeStep = Venus_Core.RecipeStep;
 
 namespace Venus_MainPages.ViewModels
 {
@@ -436,7 +438,7 @@ namespace Venus_MainPages.ViewModels
         }
         private IEnumerable<string> GetFilesNames(string path)
         {
-            return Directory.GetFiles(path, "*.rcp")
+            return Directory.GetFiles(path, "*.rcp")?
       .Select(Path.GetFileNameWithoutExtension);
         }
         private void LoadHeadWrapPanel(WrapPanel HeadWrapPanel, Recipe recipe)
@@ -620,20 +622,88 @@ namespace Venus_MainPages.ViewModels
         {
             var t = ((sender as MenuItem).Parent as ContextMenu).PlacementTarget as TextBox;
             int insertIndex = Convert.ToInt32(t.Text);
-            OnAddStep(insertIndex);
+            //OnAddStep(insertIndex);
+            var recipeStep = new RecipeStep();
+            switch (currentChamber)
+            {
+                case JetChamber.Venus:
+                case JetChamber.Kepler2300:
+                    recipeStep.LstUnit.Add(new PressureByPressureModeUnit());
+                    recipeStep.LstUnit.Add(new TCPUnit());
+                    recipeStep.LstUnit.Add(new BiasUnit());
+                    recipeStep.LstUnit.Add(new GasControlUnit());
+                    recipeStep.LstUnit.Add(new ESCHVUnit());
+                    recipeStep.LstUnit.Add(new ProcessKitUnit());
+                    break;
+
+                case JetChamber.Kepler2200A:
+                    recipeStep.LstUnit.Add(new Kepler2200GasControlUnit());
+
+                    recipeStep.LstUnit.Add(new HeaterUnit());
+                    recipeStep.LstUnit.Add(new Kepler2200RFUnit());
+
+
+
 
+
+                    break;
+            }
+            
+            CurrentRecipe.Steps.Insert(insertIndex-1, recipeStep);
+            for (int i = 0; i < CurrentRecipe.Steps.Count; i++)
+            {
+                CurrentRecipe.Steps[i].StepNo = i + 1;
+            }
+            LoadRecipe(CurrentRecipe);
         }
         private void MenuItemRightInsert_Click(object sender, RoutedEventArgs e)
         {
             var t = ((sender as MenuItem).Parent as ContextMenu).PlacementTarget as TextBox;
             int insertIndex = Convert.ToInt32(t.Text);
-            OnAddStep(insertIndex + 1);
+            //OnAddStep(insertIndex + 1);
+            var recipeStep = new RecipeStep();
+            switch (currentChamber)
+            {
+                case JetChamber.Venus:
+                case JetChamber.Kepler2300:
+                    recipeStep.LstUnit.Add(new PressureByPressureModeUnit());
+                    recipeStep.LstUnit.Add(new TCPUnit());
+                    recipeStep.LstUnit.Add(new BiasUnit());
+                    recipeStep.LstUnit.Add(new GasControlUnit());
+                    recipeStep.LstUnit.Add(new ESCHVUnit());
+                    recipeStep.LstUnit.Add(new ProcessKitUnit());
+                    break;
+
+                case JetChamber.Kepler2200A:
+                    recipeStep.LstUnit.Add(new Kepler2200GasControlUnit());
+
+                    recipeStep.LstUnit.Add(new HeaterUnit());
+                    recipeStep.LstUnit.Add(new Kepler2200RFUnit());
+
+
+
+
+
+                    break;
+            }
+            CurrentRecipe.Steps.Insert(insertIndex, recipeStep);
+            for (int i=0;i< CurrentRecipe.Steps.Count;i++)
+            {
+                CurrentRecipe.Steps[i].StepNo = i + 1;
+            }
+            LoadRecipe(CurrentRecipe);
         }
         private void MenuItemDelete_Click(object sender, RoutedEventArgs e)
         {
             var t = ((sender as MenuItem).Parent as ContextMenu).PlacementTarget as TextBox;
             int deleteIndex = Convert.ToInt32(t.Text);
-            OnDeleteStep(deleteIndex - 1);
+            //OnDeleteStep(deleteIndex - 1);
+            CurrentRecipe.Steps.RemoveAt(deleteIndex-1);
+            for (int i = 0; i < CurrentRecipe.Steps.Count; i++)
+            {
+                CurrentRecipe.Steps[i].StepNo = i + 1;
+            }
+            LoadRecipe(CurrentRecipe);
         }
         private void MenuItemCopy_Click(object sender, RoutedEventArgs e)
         {

+ 12 - 0
Venus/Venus_MainPages/Views/HeaterView.xaml.cs

@@ -1,5 +1,6 @@
 using Aitex.Core.Common.DeviceData;
 using MECF.Framework.Common.DataCenter;
+using MECF.Framework.Common.Equipment;
 using MECF.Framework.Common.OperationCenter;
 using System;
 using System.Windows;
@@ -23,6 +24,17 @@ namespace Venus_MainPages.Views
             timer.Tick += timer_Tick;
             timer.Start();
         }
+        public HeaterView(AITHeaterData heaterData,string moduleName)
+        {
+            DataContext = this;
+            HeaterData = heaterData;
+            InitializeComponent();
+            ModuleName= moduleName;
+            DispatcherTimer timer = new DispatcherTimer();
+            timer.Interval = TimeSpan.FromSeconds(0.5);
+            timer.Tick += timer_Tick;
+            timer.Start();
+        }
         void timer_Tick(object sender, EventArgs e)
         {
             HeaterData = (AITHeaterData)QueryDataClient.Instance.Service.GetData($"{ModuleName}.{HeaterData.DeviceName}.DeviceData");

+ 4 - 4
Venus/Venus_MainPages/Views/OperationOverView.xaml

@@ -68,7 +68,7 @@
                 <RowDefinition/>
                 <RowDefinition/>
                 <RowDefinition/>
-                <RowDefinition/>
+                <RowDefinition Height="0"/>
                 <RowDefinition/>
 
             </Grid.RowDefinitions>
@@ -118,7 +118,7 @@
                 <RowDefinition/>
                 <RowDefinition/>
                 <RowDefinition/>
-                <RowDefinition/>
+                <RowDefinition Height="0"/>
                 <RowDefinition/>
 
             </Grid.RowDefinitions>
@@ -168,7 +168,7 @@
                 <RowDefinition/>
                 <RowDefinition/>
                 <RowDefinition/>
-                <RowDefinition/>
+                <RowDefinition Height="0"/>
                 <RowDefinition/>
 
             </Grid.RowDefinitions>
@@ -218,7 +218,7 @@
                 <RowDefinition/>
                 <RowDefinition/>
                 <RowDefinition/>
-                <RowDefinition/>
+                <RowDefinition Height="0"/>
                 <RowDefinition/>
 
             </Grid.RowDefinitions>

+ 17 - 6
Venus/Venus_MainPages/Views/OverKepler2300View.xaml

@@ -1167,22 +1167,33 @@
                 <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="Inner 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" />
+            <TextBox Grid.Row="0" Grid.Column="1" Grid.RowSpan="2" Width="Auto" Height="Auto" Text="{Binding InnerChillerTempSetpoint,UpdateSourceTrigger=PropertyChanged}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderBrush="White"  BorderThickness="0" />
             <!--<TextBox Grid.Row="1" Grid.Column="1" Width="Auto" Height="Auto" Text="{Binding WallTempSetpoint}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderBrush="White"  BorderThickness="0" />-->
 
-            <TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding ChillerTemperature,StringFormat='F1'}" FontSize="15" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center" />
-           
+            <TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding InnerTemperature,StringFormat='F1'}" FontSize="15" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center" />
+
+            <TextBlock Grid.Row="1" Text="Outer Temp.(°C)" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="1,0,0,0"/>
+            <TextBlock Grid.Row="1" Grid.Column="2" Text="{Binding OuterTemperature,StringFormat='F1'}" FontSize="15" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center" />
+
+            <TextBlock Grid.Row="2" Text="Top Temp.(°C)" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="1,0,0,0"/>
+            <TextBox   Grid.Row="2" Grid.Column="1"  Width="Auto" Height="Auto" Text="{Binding TopChillerTempSetpoint,UpdateSourceTrigger=PropertyChanged}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderBrush="White"  BorderThickness="0" />
+            <TextBlock Grid.Row="2" Grid.Column="2" Text="{Binding TopTemperature,StringFormat='F1'}" FontSize="15" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center" />
 
-            <StackPanel Orientation="Horizontal" Grid.Row="0" Grid.Column="3">
+            <StackPanel Orientation="Horizontal" Grid.Row="0" Grid.Column="3" Grid.RowSpan="2">
+                <Ellipse Width="18" Height="18" Fill="{Binding ChillerIsOn,Converter={StaticResource boolToColor}}"  Stroke="Silver" StrokeThickness="2"/>
+                <Button Margin="5,0,0,0" Height="20" Width="70"  Style="{x:Null}" Content="ON/OFF"          Command="{Binding OnOffChillerCommand}"    CommandParameter="True"  IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Cursor="Hand"/>
+                <Button Margin="5,0,0,0" Height="20" Width="70"  Style="{x:Null}" Content="Set"             Command="{Binding SetChillerTempCommand}"  CommandParameter="True"  IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Cursor="Hand"/>
+
+            </StackPanel>
+            <StackPanel Orientation="Horizontal" Grid.Row="2" Grid.Column="3">
                 <Ellipse Width="18" Height="18" Fill="{Binding ChillerIsOn,Converter={StaticResource boolToColor}}"  Stroke="Silver" StrokeThickness="2"/>
                 <Button Margin="5,0,0,0" Height="20" Width="70"  Style="{x:Null}" Content="ON/OFF"          Command="{Binding OnOffChillerCommand}"    CommandParameter="True"  IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Cursor="Hand"/>
                 <Button Margin="5,0,0,0" Height="20" Width="70"  Style="{x:Null}" Content="Set"             Command="{Binding SetChillerTempCommand}"  CommandParameter="True"  IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Cursor="Hand"/>
 
             </StackPanel>
-            
 
         </Grid>
         <Grid Visibility="Hidden"  Height="120" Width="300"  Canvas.Left="400" Canvas.Top="70" Background="#E8E8E8"  unity:GridOptions.ShowBorder="True">

BIN
Venus/Venus_RT/Config/PM/Kepler2200A/Kepler2200ADeviceModel.xml


BIN
Venus/Venus_RT/Config/PM/Kepler2300/Kepler2300DeviceModel.xml


BIN
Venus/Venus_RT/Config/PM/Venus/VenusDeviceModel.xml


+ 1 - 1
Venus/Venus_RT/Config/System.sccfg

@@ -259,7 +259,7 @@
 			<config default="5" name="CheckStableTimeout" nameView="稳定条件:在多长时间内处于稳定状态" max="100" min="0" paramter="" tag="" unit="%" visible="false" type="Double" />
 		</configs>
 
-		<configs name="Chiller" nameView="Chiller" >
+		<configs name="Chiller" nameView="Chiller">
 			<config default="true" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
 			<!--<config default="false" name="ChillerSameWithPMB" nameView="Chiller Same With PMB" description="enable chiller same with PMB or not" max="1" min="0" tag="" unit="" type="Bool" />-->
 			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:SMC; 2, AIRSYS" max="10" min="0" paramter="" tag="" unit="" type="Integer" />

+ 12 - 0
Venus/Venus_RT/Devices/JetKepler2300PM.cs

@@ -13,6 +13,7 @@ using Venus_RT.Devices.EPD;
 using MECF.Framework.Common.SubstrateTrackings;
 using IoMfc = Venus_RT.Devices.IODevices.IoMfc;
 using System.Threading.Tasks;
+using Aitex.Core.RT.DataCenter;
 
 namespace Venus_RT.Devices
 {
@@ -100,6 +101,12 @@ namespace Venus_RT.Devices
         private readonly double _foreline_interlock_pressure = 750;
 
 
+        private float _chillerInnerTemp=>GetAiValue($"{Module}.AI_ESC_inner_coolant_outlet_TC_Temp");
+        private float _chillerOuterTemp => GetAiValue($"{Module}.AI_ESC_outer_coolant_outlet_TC_Temp");
+        private float _chillerTopTemp => GetAiValue($"{Module}.AI_Top_Plate_coolant_outlet_TC_Temp");
+
+
+
         // 盖子的状态
         public override bool IsLidClosed => _Lid.OFFFeedback;
         public override bool IsLidLoadlockClosed => _LidLoadlock.OFFFeedback;
@@ -398,6 +405,11 @@ namespace Venus_RT.Devices
 
             _foreline_interlock_pressure = SC.GetValue<double>($"{Module}.ForelineInterlockPressure");
 
+
+            DATA.Subscribe($"{Module}.ChillerInnerTemp", () => _chillerInnerTemp);
+            DATA.Subscribe($"{Module}.ChillerOuterTemp", () => _chillerOuterTemp);
+            DATA.Subscribe($"{Module}.ChillerTopTemp",   () => _chillerTopTemp);
+
         }
 
         #endregion

+ 90 - 39
Venus/Venus_RT/Modules/PMs/PMEntity.cs

@@ -532,47 +532,61 @@ namespace Venus_RT.Modules.PMs
             // Swap Wafer With PM
             Transition(PMState.DropDownReady,   MSG.PreparePlace,   FnStartSwapPlace,       PMState.PreparePlace);
 
+            #region 注
+            //Transition(PMState.Idle, MSG.PartialPressure, (a) => 
+            //{
+            //    return _pmPartialPressureRoutine.Start(a) == RState.Running;
+            //}, PMState.PartialPressureTesting);
+            //Transition(PMState.PartialPressureTesting, FSM_MSG.TIMER, (a) => 
+            //{
+            //    RState ret = _pmPartialPressureRoutine.Monitor();
+            //    if (ret == RState.Failed || ret == RState.Timeout)
+            //    {
+            //        PostMsg(MSG.Error);
+            //        return false;
+            //    }
+            //    return ret == RState.End;
+            //}, PMState.Idle);
+            //Transition(PMState.PartialPressureTesting, MSG.Abort, (a) => 
+            //{
+            //    _pmPartialPressureRoutine.Abort();
+            //    return true;
+            //}, PMState.Idle);
 
-            Transition(PMState.Idle, MSG.PartialPressure, (a) => 
-            {
-                return _pmPartialPressureRoutine.Start(a) == RState.Running;
-            }, PMState.PartialPressureTesting);
-            Transition(PMState.PartialPressureTesting, FSM_MSG.TIMER, (a) => 
-            {
-                RState ret = _pmPartialPressureRoutine.Monitor();
-                if (ret == RState.Failed || ret == RState.Timeout)
-                {
-                    PostMsg(MSG.Error);
-                    return false;
-                }
-                return ret == RState.End;
-            }, PMState.Idle);
-            Transition(PMState.PartialPressureTesting, MSG.Abort, (a) => 
-            {
-                _pmPartialPressureRoutine.Abort();
-                return true;
-            }, PMState.Idle);
+            //Transition(PMState.Idle, MSG.VATPerformance, (a) =>
+            //{
+            //    return _pmVATPerformanceRoutine.Start(a) == RState.Running;
+            //}, PMState.VATPerformanceTesting);
+            //Transition(PMState.VATPerformanceTesting, FSM_MSG.TIMER, (a) =>
+            //{
+            //    RState ret = _pmVATPerformanceRoutine.Monitor();
+            //    if (ret == RState.Failed || ret == RState.Timeout)
+            //    {
+            //        PostMsg(MSG.Error);
+            //        return false;
+            //    }
+            //    return ret == RState.End;
+            //}, PMState.Idle);
+            //Transition(PMState.VATPerformanceTesting, MSG.Abort, (a) =>
+            //{
+            //    _pmVATPerformanceRoutine.Abort();
+            //    return true;
+            //}, PMState.Idle);
+            #endregion
 
+            Transition(PMState.Idle, MSG.PartialPressure, FnStartPartialPressure, PMState.PartialPressureTesting);
+            
+            Transition(PMState.PartialPressureTesting, FSM_MSG.TIMER, FnPartialPressureTimeout, PMState.Idle);
+           
+            Transition(PMState.PartialPressureTesting, MSG.Abort, FnAbortPartialPressure, PMState.Idle);
 
-            Transition(PMState.Idle, MSG.VATPerformance, (a) =>
-            {
-                return _pmVATPerformanceRoutine.Start(a) == RState.Running;
-            }, PMState.VATPerformanceTesting);
-            Transition(PMState.VATPerformanceTesting, FSM_MSG.TIMER, (a) =>
-            {
-                RState ret = _pmVATPerformanceRoutine.Monitor();
-                if (ret == RState.Failed || ret == RState.Timeout)
-                {
-                    PostMsg(MSG.Error);
-                    return false;
-                }
-                return ret == RState.End;
-            }, PMState.Idle);
-            Transition(PMState.VATPerformanceTesting, MSG.Abort, (a) =>
-            {
-                _pmVATPerformanceRoutine.Abort();
-                return true;
-            }, PMState.Idle);
+            Transition(PMState.Idle, MSG.VATPerformance, FnStartVATPerformance, PMState.VATPerformanceTesting);
+
+            Transition(PMState.VATPerformanceTesting, FSM_MSG.TIMER, FnVATPerformanceTimeout, PMState.Idle);
+
+            Transition(PMState.VATPerformanceTesting, MSG.Abort, FnAbortVATPerformance, PMState.Idle);
+
+            
          
 
             Running = true;
@@ -1342,7 +1356,44 @@ namespace Venus_RT.Modules.PMs
         {
             return true;
         }
-
+        private bool FnStartPartialPressure(object[] param)
+        {
+            return _pmPartialPressureRoutine.Start(param) == RState.Running;
+        }
+        private bool FnPartialPressureTimeout(object[] param)
+        {
+            RState ret = _pmPartialPressureRoutine.Monitor();
+            if (ret == RState.Failed || ret == RState.Timeout)
+            {
+                PostMsg(MSG.Error);
+                return false;
+            }
+            return ret == RState.End;
+        }
+        private bool FnAbortPartialPressure(object[] param)
+        {
+            _pmPartialPressureRoutine.Abort();
+            return true;
+        }
+        private bool FnStartVATPerformance(object[] param)
+        {
+            return _pmVATPerformanceRoutine.Start(param) == RState.Running;
+        }
+        private bool FnVATPerformanceTimeout(object[] param)
+        {
+            RState ret = _pmVATPerformanceRoutine.Monitor();
+            if (ret == RState.Failed || ret == RState.Timeout)
+            {
+                PostMsg(MSG.Error);
+                return false;
+            }
+            return ret == RState.End;
+        }
+        private bool FnAbortVATPerformance(object[] param)
+        {
+            _pmVATPerformanceRoutine.Abort();
+            return true;
+        }
         #endregion
 
         private void _debugRoutine()

+ 6 - 0
Venus/Venus_Simulator/Instances/SimulatorSystem.cs

@@ -254,6 +254,11 @@ namespace Venus_Simulator.Instances
 
                     SetAiValue($"{mod}.AI_CHB_Wall_Control_TC_Temp", 28);
 
+                    SetAiValue($"{mod}.AI_ESC_inner_coolant_outlet_TC_Temp", 20);
+                    SetAiValue($"{mod}.AI_ESC_outer_coolant_outlet_TC_Temp", 30);
+                    SetAiValue($"{mod}.AI_Top_Plate_coolant_outlet_TC_Temp", 40);
+
+
 
                     // Datetime
                     SetAiValue($"{mod}.AI_Year", DateTime.Today.Year);
@@ -336,6 +341,7 @@ namespace Venus_Simulator.Instances
 
                     SetAiValue($"{mod}.AI_CHB_H-HT_Control_TC_Temp", 28);
 
+
                     // Datetime
                     SetAiValue($"{mod}.AI_Year", DateTime.Today.Year);
                     SetAiValue($"{mod}.AI_Month", DateTime.Today.Month);