Explorar o código

kepler2200A 添加 IOHighTemperatureHeater驱动,并添加模拟器与UI界面功能

lixiang hai 1 ano
pai
achega
5f00a42d13
Modificáronse 28 ficheiros con 766 adicións e 491 borrados
  1. 1 0
      Venus/Framework/Common/Common.csproj
  2. 31 0
      Venus/Framework/Common/CommonData/DeviceData/AITHighTemperatureHeaterData.cs
  3. 3 1
      Venus/Framework/Common/DataCenter/IQueryDataService.cs
  4. 5 2
      Venus/Framework/Common/IOCore/IoProviderManager.cs
  5. 17 0
      Venus/Venus_Core/HighTemperatureHeaterPosition.cs
  6. 2 0
      Venus/Venus_Core/VenusMenu.cs
  7. 1 0
      Venus/Venus_Core/Venus_Core.csproj
  8. 57 15
      Venus/Venus_MainPages/ViewModels/OverKepler2200AViewModel.cs
  9. 4 0
      Venus/Venus_MainPages/ViewModels/OverKepler2300ViewModel.cs
  10. 10 7
      Venus/Venus_MainPages/ViewModels/OverVenusViewModel.cs
  11. 7 1
      Venus/Venus_MainPages/ViewModels/RecipeViewModel.cs
  12. 18 59
      Venus/Venus_MainPages/Views/OverKepler2200AView.xaml
  13. 7 7
      Venus/Venus_MainPages/Views/OverKepler2300View.xaml
  14. 7 7
      Venus/Venus_MainPages/Views/OverVenusView.xaml
  15. 4 2
      Venus/Venus_MainPages/Views/RecipeView.xaml
  16. 1 1
      Venus/Venus_MainPages/Views/TopView.xaml
  17. BIN=BIN
      Venus/Venus_RT/Config/PM/Kepler2200A/Kepler2200ADeviceModel.xml
  18. 2 2
      Venus/Venus_RT/Config/PM/Kepler2200A/Kepler2200AInterlock.xml
  19. 90 96
      Venus/Venus_RT/Config/PM/Kepler2200A/Kepler2200AIoDefine.xml
  20. 281 0
      Venus/Venus_RT/Devices/IODevices/IoHighTemperatureHeater.cs
  21. 6 2
      Venus/Venus_RT/Devices/IODevices/IoPressureControl.cs
  22. 7 3
      Venus/Venus_RT/Devices/JetKepler2200APM.cs
  23. 1 0
      Venus/Venus_RT/Venus_RT.csproj
  24. 90 96
      Venus/Venus_Simulator/Config/_ioDefineKepler2200A.xml
  25. 94 177
      Venus/Venus_Simulator/Instances/SimulatorSystem.cs
  26. 18 11
      Venus/Venus_UI/Config/UIMenu.json
  27. 1 1
      Venus/Venus_UI/Views/ShellView.xaml
  28. 1 1
      Venus/Venus_UI/Views/ShellView.xaml.cs

+ 1 - 0
Venus/Framework/Common/Common.csproj

@@ -188,6 +188,7 @@
     <Compile Include="CommonData\DeviceData\AITCylinderData.cs" />
     <Compile Include="CommonData\DeviceData\AITEmoData.cs" />
     <Compile Include="CommonData\DeviceData\AITHeaterData.cs" />
+    <Compile Include="CommonData\DeviceData\AITHighTemperatureHeaterData.cs" />
     <Compile Include="CommonData\DeviceData\AITHVData.cs" />
     <Compile Include="CommonData\DeviceData\AITLidData.cs" />
     <Compile Include="CommonData\DeviceData\AITMfcData.cs" />

+ 31 - 0
Venus/Framework/Common/CommonData/DeviceData/AITHighTemperatureHeaterData.cs

@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MECF.Framework.Common.CommonData.DeviceData
+{
+    [DataContract]
+    [Serializable]
+    public class AITHighTemperatureHeaterData
+    {
+        [DataMember]
+        public string Module { get; set; }
+
+        [DataMember]
+        public string DeviceName { get; set; }
+
+        [DataMember]
+        public string DisplayName { get; set; }
+        [DataMember]
+        public string HighTemperatureHeaterPosition { get; set; }
+
+        [DataMember]
+        public bool HighTemperatureHeaterIson { get; set; }
+
+        [DataMember]
+        public float HighTemperatureHeaterTemperature { get; set; }
+    }
+}

+ 3 - 1
Venus/Framework/Common/DataCenter/IQueryDataService.cs

@@ -84,8 +84,10 @@ namespace MECF.Framework.Common.DataCenter
     [ServiceKnownType(typeof(AITRfidReaderData))]
 	[ServiceKnownType(typeof(AITAlignerData))]
 	[ServiceKnownType(typeof(AITWaferIdReaderData))]
+    [ServiceKnownType(typeof(AITHighTemperatureHeaterData))]
+
+
 
-    
 
     [ServiceKnownType(typeof(ModuleName))]
     [ServiceKnownType(typeof(LidState))]

+ 5 - 2
Venus/Framework/Common/IOCore/IoProviderManager.cs

@@ -279,15 +279,18 @@ namespace MECF.Framework.RT.Core.IoProviders
                         switch (jetChamber)
                         {
                             case JetChamber.Venus:
-                                //mapFile = jetChamber.ToString() + "\\" + "_ioDefineVenus.xml";
                                 mapFile= "PM" + "\\" + "Venus" + "\\" + "VenusIoDefine.xml";
                                 break;
 
                             case JetChamber.Kepler2300:
+                                mapFile = "PM" + "\\" + "Kepler2300" + "\\" + "Kepler2300IoDefine.xml";
+                                break;
                             case JetChamber.Kepler2200A:
+                                mapFile = "PM" + "\\" + "Kepler2200A" + "\\" + "Kepler2200AIoDefine.xml";
+                                break;
                             case JetChamber.Kepler2200B:
                                 //mapFile = jetChamber.ToString() + "\\" + "_ioDefineKepler.xml";
-                                mapFile= "PM" + "\\" + "Kepler2300" + "\\" + "Kepler2300IoDefine.xml";
+                                mapFile= "PM" + "\\" + "Kepler2200B" + "\\" + "Kepler2200BIoDefine.xml";
                                 break;
 
                         }

+ 17 - 0
Venus/Venus_Core/HighTemperatureHeaterPosition.cs

@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Venus_Core
+{
+    public enum HighTemperatureHeaterPosition
+    {
+        Error,
+        Origin,
+        Position1,
+        Position2,
+        Position3
+    }
+}

+ 2 - 0
Venus/Venus_Core/VenusMenu.cs

@@ -12,6 +12,8 @@ namespace Venus_Core
     {
         [DataMember(Name = "Id")]
         public string Id { get; set; }
+        [DataMember(Name = "Name")]
+        public string Name { get; set; }
         [DataMember(Name = "MenuItem")]
         public List<SubItem> MenuItem { get; set; }
         [DataMember(Name = "IsShow")]

+ 1 - 0
Venus/Venus_Core/Venus_Core.csproj

@@ -57,6 +57,7 @@
     <Compile Include="EventDefine.cs" />
     <Compile Include="FADefine.cs" />
     <Compile Include="GlobalEvents.cs" />
+    <Compile Include="HighTemperatureHeaterPosition.cs" />
     <Compile Include="InvokeName.cs" />
     <Compile Include="MFCCalibrationData.cs" />
     <Compile Include="PartialPressureResult.cs" />

+ 57 - 15
Venus/Venus_MainPages/ViewModels/OverKepler2200AViewModel.cs

@@ -20,6 +20,7 @@ using MECF.Framework.Common.CommonData.DeviceData;
 using System.Windows.Shapes;
 using Path = System.IO.Path;
 using MECF.Framework.Common.Equipment;
+using System.Windows.Controls;
 
 namespace Venus_MainPages.ViewModels
 {
@@ -200,9 +201,16 @@ namespace Venus_MainPages.ViewModels
         private string m_ModuleName;
         private int? currentRecipeNumber;
 
+        private AITHighTemperatureHeaterData m_HighTemperatureHeaterData;
+
+        private ComboBoxItem m_SelectedPosition;
+
+        private int m_HighTemperatureHeaterTemperatureSetpoint;
+
         #endregion
 
         #region  属性
+       
         public List<string> CurrentModuleRecipes
         {
             get { return m_CurrentModuleRecipes; }
@@ -887,6 +895,21 @@ namespace Venus_MainPages.ViewModels
             get { return m_WaferID; }
             set { SetProperty(ref m_WaferID, value); }
         }
+        public AITHighTemperatureHeaterData HighTemperatureHeaterData
+        {
+            get { return m_HighTemperatureHeaterData; }
+            set { SetProperty(ref m_HighTemperatureHeaterData, value); }
+        }
+        public ComboBoxItem SelectedPosition
+        {
+            get { return m_SelectedPosition; }
+            set { SetProperty(ref m_SelectedPosition, value); }
+        }
+        public int HighTemperatureHeaterTemperatureSetpoint
+        {
+            get { return m_HighTemperatureHeaterTemperatureSetpoint; }
+            set { SetProperty(ref m_HighTemperatureHeaterTemperatureSetpoint, value); }
+        }
         #endregion
 
         #region 命令
@@ -1007,6 +1030,14 @@ namespace Venus_MainPages.ViewModels
         public DelegateCommand EndStepCommand =>
             _EndStepCommand ?? (_EndStepCommand = new DelegateCommand(OnEndStep));
 
+        private DelegateCommand _GotoPositionCommand;
+        public DelegateCommand GotoPositionCommand =>
+            _GotoPositionCommand ?? (_GotoPositionCommand = new DelegateCommand(OnGotoPosition));
+
+        private DelegateCommand _SwitchHighTemperatureHeaterCommand;
+        public DelegateCommand SwitchHighTemperatureHeaterCommand =>
+            _SwitchHighTemperatureHeaterCommand ?? (_SwitchHighTemperatureHeaterCommand = new DelegateCommand(OnSwitchHighTemperatureHeater));
+
         #endregion
 
         #region 构造函数
@@ -1365,13 +1396,7 @@ namespace Venus_MainPages.ViewModels
             InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.RunRecipe}",recipeName);
         }
 
-        private void OnSetChillerTemp()
-        {
-            var value = (QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.Chiller.ChillerTemperatureOffset").ToString());
-            float x;
-            float.TryParse(value, out x);
-            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.HeatChiller", ChillerType.Chiller.ToString(), ChillerTempSetpoint, x);
-        }
+       
 
         private void OnOffChiller()
         {
@@ -1381,13 +1406,16 @@ namespace Venus_MainPages.ViewModels
 
         private void OnHeater(object obj)
         {
-                AITHeaterData heaterData = obj as AITHeaterData;
-                var _mainWindow = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is Window) as Window;
-
-                heaterView = new HeaterView(heaterData);
-                heaterView.WindowStartupLocation = WindowStartupLocation.CenterScreen;
-                heaterView.Owner = _mainWindow;
-                heaterView.Show();          
+            if (IsAutoMode == true)
+            {
+                return;
+            }
+            AITHeaterData heaterData = obj as AITHeaterData;
+            var _mainWindow = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is Window) as Window;
+            heaterView = new HeaterView(heaterData);
+            heaterView.WindowStartupLocation = WindowStartupLocation.CenterScreen;
+            heaterView.Owner = _mainWindow;
+            heaterView.Show();
         }
 
         private void OnEndStep()
@@ -1401,6 +1429,19 @@ namespace Venus_MainPages.ViewModels
                 InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Abort");
             }
         }
+
+        private void OnGotoPosition()
+        {
+            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.HighTemperatureHeater.GotoPosition", SelectedPosition.Content);
+        }
+        private void OnSwitchHighTemperatureHeater()
+        {
+            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.HighTemperatureHeater.SwitchHighTemperatureHeater", !HighTemperatureHeaterData.HighTemperatureHeaterIson);
+        }
+        private void OnSetChillerTemp()
+        {
+            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.HighTemperatureHeater.SetHighTemperatureHeaterTemperature", HighTemperatureHeaterTemperatureSetpoint);
+        }
         #endregion
 
         #region 私有方法
@@ -1573,6 +1614,7 @@ namespace Venus_MainPages.ViewModels
             { 
                 ChamberPressureFeedBack =  ProcessHighPressure;
             }
+            HighTemperatureHeaterData = CommonFunction.GetValue<AITHighTemperatureHeaterData>(RtDataValues, $"{ModuleName}.HighTemperatureHeater.DeviceData");
         }       
         public void addDataKeys()
         {
@@ -1687,7 +1729,7 @@ namespace Venus_MainPages.ViewModels
             m_RtDataKeys.Add($"{ModuleName}.HasWafer");
             m_RtDataKeys.Add($"{ModuleName}.CurrentRecipeResult");
 
-
+            m_RtDataKeys.Add($"{ModuleName}.HighTemperatureHeater.DeviceData");
         }
         #endregion
     }

+ 4 - 0
Venus/Venus_MainPages/ViewModels/OverKepler2300ViewModel.cs

@@ -1426,6 +1426,10 @@ namespace Venus_MainPages.ViewModels
 
         private void OnHeater(object obj)
         {
+            if (IsAutoMode == true)
+            {
+                return;
+            }
             AITHeaterData heaterData = obj as AITHeaterData;
             var _mainWindow = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is Window) as Window;
             heaterView = new HeaterView(heaterData, ModuleName);

+ 10 - 7
Venus/Venus_MainPages/ViewModels/OverVenusViewModel.cs

@@ -1405,13 +1405,16 @@ namespace Venus_MainPages.ViewModels
 
         private void OnHeater(object obj)
         {
-                AITHeaterData heaterData = obj as AITHeaterData;
-                var _mainWindow = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is Window) as Window;
-
-                heaterView = new HeaterView(heaterData);
-                heaterView.WindowStartupLocation = WindowStartupLocation.CenterScreen;
-                heaterView.Owner = _mainWindow;
-                heaterView.Show();          
+            if (IsAutoMode == true)
+            {
+                return;
+            }
+            AITHeaterData heaterData = obj as AITHeaterData;
+            var _mainWindow = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is Window) as Window;
+            heaterView = new HeaterView(heaterData);
+            heaterView.WindowStartupLocation = WindowStartupLocation.CenterScreen;
+            heaterView.Owner = _mainWindow;
+            heaterView.Show();
         }
 
         private void OnEndStep()

+ 7 - 1
Venus/Venus_MainPages/ViewModels/RecipeViewModel.cs

@@ -73,6 +73,7 @@ namespace Venus_MainPages.ViewModels
         private EPDType currentEPDType=EPDType.None;
         private JetChamber currentChamber;
         private bool isInstalledEPD;
+        private bool m_IsFrozen;
         #endregion
 
         #region  属性
@@ -95,11 +96,16 @@ namespace Venus_MainPages.ViewModels
             get { return m_recipeType; }
             set { SetProperty(ref m_recipeType, value); }
         }
+        public bool IsFrozen
+        {
+            get { return m_IsFrozen; }
+            set { SetProperty(ref m_IsFrozen, value); }
+        }
         #endregion
 
         #region 命令
 
-      
+
 
         private DelegateCommand<Object> _MouseRightButtonDownCommand;
         public DelegateCommand<Object> MouseRightButtonDownCommand =>

+ 18 - 59
Venus/Venus_MainPages/Views/OverKepler2200AView.xaml

@@ -103,13 +103,14 @@
 
             </Grid.ColumnDefinitions>
             <TextBlock Text="Heater Position" Width="100" Padding="4,8,0,0"/>
-            <ComboBox Grid.Column="1" SelectedIndex="0"  Height="25" Margin="1,2,0,2">
-                <ComboBoxItem>Home</ComboBoxItem>
+            <ComboBox Grid.Column="1" SelectedIndex="0"  Height="25" Margin="1,2,0,2" SelectedValue="{Binding SelectedPosition}">
+                <ComboBoxItem>Origin</ComboBoxItem>
                 <ComboBoxItem>Position1</ComboBoxItem>
                 <ComboBoxItem>Position2</ComboBoxItem>
+                <ComboBoxItem>Position3</ComboBoxItem>
             </ComboBox>
-            <TextBlock Grid.Column="2" Text="Home"  Width="100" Padding="30,8,0,0"/>
-            <Button    Grid.Column="3" Content="Set" Width="60" Style="{x:Null}" Height="25" Cursor="Hand"/>
+            <TextBlock Grid.Column="2" Text="{Binding HighTemperatureHeaterData.HighTemperatureHeaterPosition}"  Width="100" Padding="30,8,0,0"/>
+            <Button    Grid.Column="3" Content="Set" Width="60" Style="{x:Null}" Height="25" Cursor="Hand" Command="{Binding GotoPositionCommand}"/>
         </Grid>
        
         <Canvas Canvas.Top="40" >
@@ -707,7 +708,7 @@
             
 
             <!--turbo-->
-            <ctrls:Turbo Width="40" Height="40"  Canvas.Top="521" Canvas.Left="1242" IsOpen="{Binding TurboIsOpen}">
+            <ctrls:Turbo Width="40" Height="40"  Canvas.Top="521" Canvas.Left="1242" IsOpen="{Binding TurboIsOpen}" IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}">
                 <ctrls:Turbo.ContextMenu>
                     <ContextMenu>
                         <MenuItem Header="ON" Command="{Binding OpenTurboPumpCommand}" IsChecked="{Binding TurboIsOpen,Mode=OneWay}" IsEnabled="{Binding TurboIsOpen,Converter={StaticResource BoolToBool},Mode=OneWay}"/>
@@ -717,7 +718,7 @@
             </ctrls:Turbo>
 
             <!--蝶阀-->
-            <ctrls:ButterflyValve Canvas.Top="475" Canvas.Left="1245" RotateTransformValue="{Binding PositionValue}" IsOpen="{Binding PendulumValveData.IsOpen,Mode=TwoWay}">
+            <ctrls:ButterflyValve Canvas.Top="475" Canvas.Left="1245" RotateTransformValue="{Binding PositionValue}" IsOpen="{Binding PendulumValveData.IsOpen,Mode=TwoWay}" IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}">
                 <i:Interaction.Triggers>
                     <i:EventTrigger EventName="MouseLeftButtonUp">
                         <i:InvokeCommandAction Command="{Binding OpenButterflyValveViewCommand}"/>
@@ -790,11 +791,11 @@
             </StackPanel>-->
             <StackPanel Canvas.Top="645" Canvas.Left="1160" Orientation="Vertical">
                 <TextBlock Text="Foreline Heater"/>
-                <Button Height="18" Width="50" Content="{Binding ForelineHeaterData.FeedBack}" ToolTip="{Binding ForelineHeaterData,Converter={StaticResource HeaterToStringConverter}}" Foreground="White" ContentStringFormat="F1"  Background="{Binding ForelineHeaterData.IsPowerOnSetPoint,Converter={StaticResource boolToColor5}}" Style="{x:Null}" Command="{Binding HeaterCommand}" CommandParameter="{Binding ForelineHeaterData}" Cursor="Hand"/>
+                <Button Height="18" Width="50" Content="{Binding ForelineHeaterData.FeedBack}" ToolTip="{Binding ForelineHeaterData,Converter={StaticResource HeaterToStringConverter}}" Foreground="#40E0D0" ContentStringFormat="F1"  Background="{Binding ForelineHeaterData.IsPowerOnSetPoint,Converter={StaticResource boolToColor5}}" Style="{x:Null}" Command="{Binding HeaterCommand}" CommandParameter="{Binding ForelineHeaterData}" Cursor="Hand" />
             </StackPanel>
             <StackPanel Canvas.Top="320" Canvas.Left="1210" Orientation="Vertical">
                 <TextBlock Text="Wall Heater"/>
-                <Button Height="18" Width="50" Content="{Binding WallHeaterData.FeedBack}" ToolTip="{Binding WallHeaterData,Converter={StaticResource HeaterToStringConverter}}"  Foreground="White" ContentStringFormat="F1" Background="{Binding WallHeaterData.IsPowerOnSetPoint,Converter={StaticResource boolToColor5}}" Style="{x:Null}" Command="{Binding HeaterCommand}" CommandParameter="{Binding WallHeaterData}" Cursor="Hand"/>
+                <Button Height="18" Width="50" Content="{Binding WallHeaterData.FeedBack}" ToolTip="{Binding WallHeaterData,Converter={StaticResource HeaterToStringConverter}}" Foreground="#40E0D0"  ContentStringFormat="F1" Background="{Binding WallHeaterData.IsPowerOnSetPoint,Converter={StaticResource boolToColor5}}" Style="{x:Null}" Command="{Binding HeaterCommand}" CommandParameter="{Binding WallHeaterData}" Cursor="Hand"/>
             </StackPanel>
 
             <!--Chamber-->
@@ -821,8 +822,8 @@
             <Button Height="20" Width="70" Content="Lid Up"                                                      Canvas.Left="1310" Canvas.Top="366" Command="{Binding LidUpDownCommand}" CommandParameter="Up" Style="{StaticResource SysBtnStyle}" IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}"/>
             <Ellipse Width="20" Height="20" Fill="{Binding IsLidClosed,Converter={StaticResource boolToColor}}" Canvas.Left="1280" Canvas.Top="390" Stroke="Silver" StrokeThickness="2"/>
             <Button Height="20" Width="70" Content="Lid Down"                                                    Canvas.Left="1310" Canvas.Top="390" Command="{Binding LidUpDownCommand}" CommandParameter="Down" Style="{StaticResource SysBtnStyle}" IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}"/>-->
-            
-            <ctrls:Pump Canvas.Top="700"  Canvas.Left="1245" Width="35" Height="35" IsOpen="{Binding PumpIsOpen,Mode=TwoWay}">
+
+            <ctrls:Pump Canvas.Top="700"  Canvas.Left="1245" Width="35" Height="35" IsOpen="{Binding PumpIsOpen,Mode=TwoWay}" IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}">
                 <ctrls:Pump.ContextMenu>
                     <ContextMenu>
                         <MenuItem Header="ON"  Command="{Binding OpenPumpCommand}" IsChecked="{Binding PumpIsOpen,Mode=OneWay}" IsEnabled="{Binding PumpIsOpen,Converter={StaticResource BoolToBool},Mode=OneWay}"/>
@@ -1113,52 +1114,10 @@
         </Grid>
         <Ellipse Width="20" Height="20" Fill="{Binding SRFData.IsRfOn,Converter={StaticResource boolToColor}}"  Canvas.Left="500" Canvas.Top="375" Stroke="Silver" StrokeThickness="2"/>
         <Button Height="20" Width="100" Content="RF ON/OFF" Canvas.Left="530" Canvas.Top="375" Command="{Binding SetSRfCommand}"  Style="{StaticResource SysBtnStyle}"  IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}"/>
-        <!--<Ellipse Width="20" Height="20" Fill="{Binding BRFData.IsRfOn,Converter={StaticResource boolToColor}}"  Canvas.Left="650" Canvas.Top="375" Stroke="Silver" StrokeThickness="2"/>
-        <Button Height="20" Width="100" Content="BRF ON/OFF" Canvas.Left="680" Canvas.Top="375" Command="{Binding SetBRfCommand}"  Style="{StaticResource SysBtnStyle}"  IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}"/>-->
-
-        <!--<Ellipse Width="20" Height="20" Fill="{Binding ESCHVData.IsOn,Converter={StaticResource boolToColor}}" Canvas.Left="500" Canvas.Top="205" Stroke="Silver" StrokeThickness="2"/>
-        <Button Height="20" Width="100" Content="HV ON/OFF" Canvas.Left="530" Canvas.Top="205" Command="{Binding HVCommand}" CommandParameter="True" Style="{StaticResource SysBtnStyle}"  IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}"/>-->
-
-
-        <!--<Grid Width="320" Height="80"  Background="#E8E8E8" unity:GridOptions.LineBrush="#afb4db" unity:GridOptions.ShowBorder="True" Canvas.Left="500" Canvas.Top="230">
-            <Grid.RowDefinitions>
-                <RowDefinition/>
-                <RowDefinition/>
-                <RowDefinition/>
-            </Grid.RowDefinitions>
-            <Grid.ColumnDefinitions>
-                <ColumnDefinition Width="2*"/>
-                <ColumnDefinition Width="*"/>
-                <ColumnDefinition Width="*"/>
-            </Grid.ColumnDefinitions>
-            <TextBlock Grid.Row="0" Text="ESC Voltage(V)"     FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="1,0,0,0"/>
-            <TextBlock Grid.Row="1" Text="ESC Current Leak(uA)"      FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="1,0,0,0"/>
-            <TextBlock Grid.Row="2" Text="ESC Temp.(°C)" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="1,0,0,0"/>
-            --><!--<TextBlock Grid.Row="3" Text="Chiller Temp.(°C)" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="1,0,0,0"/>
-            <TextBlock Grid.Row="4" 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 ESCVoltage}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderBrush="White"  BorderThickness="0"/>
-            <TextBlock Grid.Row="1" Grid.ColumnSpan="2" Grid.Column="1" Width="Auto" Height="Auto"   TextBlock.TextAlignment="Center" VerticalAlignment="Bottom" Block.TextAlignment="Center" Margin="0,0,0,4">
-                <TextBlock.Text>
-                    <MultiBinding StringFormat="{}{0}-{1}={2}">
-                        <Binding Path="ESCHVData.PositiveOutputCurrent"></Binding>
-                        <Binding Path="ESCHVData.NegativeOutputCurrent"></Binding>
-                        <Binding Path="ESCHVData.Leak"></Binding>
-                    </MultiBinding>
-                </TextBlock.Text>
-            </TextBlock>
-            <TextBlock Grid.Row="2" Grid.ColumnSpan="2" Grid.Column="1" Width="Auto" Height="Auto" Text="{Binding HVTemperature,StringFormat='F1'}" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center"/>
-            --><!--<TextBox Grid.Row="3" Grid.Column="1" Width="Auto" Height="Auto" Text="0.0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderBrush="White"  BorderThickness="0" />
-            <TextBox Grid.Row="4" Grid.Column="1" Width="Auto" Height="Auto" Text="0.0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderBrush="White"  BorderThickness="0" />--><!--
-
-            <TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding ESCHVData.OutputVoltage}" FontSize="15" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center"/>
-
 
-        </Grid>-->
 
-        <Ellipse Width="20" Height="20" Fill="{Binding SRFData.IsRfOn,Converter={StaticResource boolToColor}}"  Canvas.Left="500" Canvas.Top="605" Stroke="Silver" StrokeThickness="2"/>
-        <Button Height="20" Width="100" Content="Heater ON/OFF" Canvas.Left="530" Canvas.Top="605" Command="{Binding SetSRfCommand}"  Style="{StaticResource SysBtnStyle}"  IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}"/>
+        <Ellipse Width="20" Height="20" Fill="{Binding HighTemperatureHeaterData.HighTemperatureHeaterIson,Converter={StaticResource boolToColor}}"  Canvas.Left="500" Canvas.Top="605" Stroke="Silver" StrokeThickness="2"/>
+        <Button Height="20" Width="100" Content="Heater ON/OFF" Canvas.Left="530" Canvas.Top="605"   Style="{StaticResource SysBtnStyle}"  IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Command="{Binding SwitchHighTemperatureHeaterCommand}"/>
         
         <Grid Width="390" Height="80"  Background="#E8E8E8" unity:GridOptions.LineBrush="#afb4db" unity:GridOptions.ShowBorder="True" Canvas.Left="500" Canvas.Top="638">
             <Grid.RowDefinitions>
@@ -1175,19 +1134,19 @@
             </Grid.ColumnDefinitions>
 
             <TextBlock Grid.Row="0" Text="Heater Temp.(°C)" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="4,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" />
-            <TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding ChillerTemperature,StringFormat='F1'}" FontSize="15" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center" />
-            <Button Grid.Row="0" Grid.Column="3" 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"/>
+            <TextBox Grid.Row="0" Grid.Column="1" Width="Auto" Height="Auto" Text="{Binding HighTemperatureHeaterTemperatureSetpoint,UpdateSourceTrigger=PropertyChanged}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderBrush="White"  BorderThickness="0" />
+            <TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding HighTemperatureHeaterData.HighTemperatureHeaterTemperature,StringFormat='F1'}" FontSize="15" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center" />
+            <Button Grid.Row="0" Grid.Column="3" Margin="5,0,0,0" Height="20" Width="70"  Style="{x:Null}" Content="Set"             Command="{Binding SetChillerTempCommand}"    IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Cursor="Hand"/>
 
             <TextBlock Grid.Row="1" Text="Heater Ratio" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="4,0,0,0"/>
             <TextBox Grid.Row="1"  Grid.Column="1"  Width="Auto" Height="Auto"  HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderBrush="White"  BorderThickness="0" />
             <TextBlock Grid.Row="1" Grid.Column="2" Text="0.0" FontSize="15" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center" />
-            <Button  Grid.Row="1" Grid.Column="3" 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"/>
+            <Button  Grid.Row="1" Grid.Column="3" Margin="5,0,0,0" Height="20" Width="70"  Style="{x:Null}" Content="Set"             Command="{Binding SetChillerTempCommand}"    IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Cursor="Hand"/>
 
             <TextBlock Grid.Row="2" Text="Heater Temp Range Rate" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="4,0,0,0"/>
             <TextBox Grid.Row="2" Grid.Column="1" Width="Auto" Height="Auto"  HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderBrush="White"  BorderThickness="0" />
             <TextBlock Grid.Row="2" Grid.Column="2" Text="0.0" FontSize="15" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center" />
-            <Button  Grid.Row="2" Grid.Column="3" 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"/>
+            <Button  Grid.Row="2" Grid.Column="3" Margin="5,0,0,0" Height="20" Width="70"  Style="{x:Null}" Content="Set"             Command="{Binding SetChillerTempCommand}"    IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Cursor="Hand"/>
 
         </Grid>
 

+ 7 - 7
Venus/Venus_MainPages/Views/OverKepler2300View.xaml

@@ -674,7 +674,7 @@
 
 
             <!--turbo-->
-            <ctrls:Turbo Width="40" Height="40"  Canvas.Top="521" Canvas.Left="1242" IsOpen="{Binding TurboIsOpen}">
+            <ctrls:Turbo Width="40" Height="40"  Canvas.Top="521" Canvas.Left="1242" IsOpen="{Binding TurboIsOpen}" IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}">
                 <ctrls:Turbo.ContextMenu>
                     <ContextMenu>
                         <MenuItem Header="ON" Command="{Binding OpenTurboPumpCommand}" IsChecked="{Binding TurboIsOpen,Mode=OneWay}" IsEnabled="{Binding TurboIsOpen,Converter={StaticResource BoolToBool},Mode=OneWay}"/>
@@ -684,7 +684,7 @@
             </ctrls:Turbo>
 
             <!--蝶阀-->
-            <ctrls:ButterflyValve Canvas.Top="475" Canvas.Left="1245" RotateTransformValue="{Binding PositionValue}" IsOpen="{Binding PendulumValveData.IsOpen,Mode=TwoWay}">
+            <ctrls:ButterflyValve Canvas.Top="475" Canvas.Left="1245" RotateTransformValue="{Binding PositionValue}" IsOpen="{Binding PendulumValveData.IsOpen,Mode=TwoWay}" IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}">
                 <i:Interaction.Triggers>
                     <i:EventTrigger EventName="MouseLeftButtonUp">
                         <i:InvokeCommandAction Command="{Binding OpenButterflyValveViewCommand}"/>
@@ -753,19 +753,19 @@
             <ctrls:TextboxWithLabel  Canvas.Top="400" Canvas.Left="1290" LabelValue="Wall   Heater"   TextBoxValue="{Binding WallHeaterData.CoolantOutletTcFeedback}"     TextBoxColor="{Binding WallHeaterData.IsPowerOn,Converter={StaticResource boolToColor}}"  Cursor="Hand"/>-->
             <StackPanel Canvas.Top="470" Canvas.Left="960" Orientation="Vertical">
                 <TextBlock Text="Valve Heater"/>
-                <Button Height="18" Width="50" Content="{Binding ValveHeaterData.FeedBack}" ToolTip="{Binding ValveHeaterData,Converter={StaticResource HeaterToStringConverter}}" Foreground="White" ContentStringFormat="F1" Background="{Binding ValveHeaterData.IsPowerOnSetPoint,Converter={StaticResource boolToColor5}}" Style="{x:Null}" Command="{Binding HeaterCommand}" CommandParameter="{Binding ValveHeaterData}" Cursor="Hand"/>
+                <Button Height="18" Width="50" Content="{Binding ValveHeaterData.FeedBack}" ToolTip="{Binding ValveHeaterData,Converter={StaticResource HeaterToStringConverter}}" Foreground="#40E0D0" ContentStringFormat="F1" Background="{Binding ValveHeaterData.IsPowerOnSetPoint,Converter={StaticResource boolToColor5}}" Style="{x:Null}" Command="{Binding HeaterCommand}" CommandParameter="{Binding ValveHeaterData}" Cursor="Hand"/>
             </StackPanel>
             <StackPanel Canvas.Top="645" Canvas.Left="1160" Orientation="Vertical">
                 <TextBlock Text="Foreline Heater"/>
-                <Button Height="18" Width="50" Content="{Binding ForelineHeaterData.FeedBack}" ToolTip="{Binding ForelineHeaterData,Converter={StaticResource HeaterToStringConverter}}" Foreground="White" ContentStringFormat="F1"  Background="{Binding ForelineHeaterData.IsPowerOnSetPoint,Converter={StaticResource boolToColor5}}" Style="{x:Null}" Command="{Binding HeaterCommand}" CommandParameter="{Binding ForelineHeaterData}" Cursor="Hand"/>
+                <Button Height="18" Width="50" Content="{Binding ForelineHeaterData.FeedBack}" ToolTip="{Binding ForelineHeaterData,Converter={StaticResource HeaterToStringConverter}}" Foreground="#40E0D0" ContentStringFormat="F1"  Background="{Binding ForelineHeaterData.IsPowerOnSetPoint,Converter={StaticResource boolToColor5}}" Style="{x:Null}" Command="{Binding HeaterCommand}" CommandParameter="{Binding ForelineHeaterData}" Cursor="Hand"/>
             </StackPanel>
             <StackPanel Canvas.Top="320" Canvas.Left="1280" Orientation="Vertical">
                 <TextBlock Text="Wall Heater"/>
-                <Button Height="18" Width="50" Content="{Binding WallHeaterData.FeedBack}" ToolTip="{Binding WallHeaterData,Converter={StaticResource HeaterToStringConverter}}"  Foreground="White" ContentStringFormat="F1" Background="{Binding WallHeaterData.IsPowerOnSetPoint,Converter={StaticResource boolToColor5}}" Style="{x:Null}" Command="{Binding HeaterCommand}" CommandParameter="{Binding WallHeaterData}" Cursor="Hand"/>
+                <Button Height="18" Width="50" Content="{Binding WallHeaterData.FeedBack}" ToolTip="{Binding WallHeaterData,Converter={StaticResource HeaterToStringConverter}}"   Foreground="#40E0D0" ContentStringFormat="F1" Background="{Binding WallHeaterData.IsPowerOnSetPoint,Converter={StaticResource boolToColor5}}" Style="{x:Null}" Command="{Binding HeaterCommand}" CommandParameter="{Binding WallHeaterData}" Cursor="Hand"/>
             </StackPanel>
             <StackPanel Canvas.Top="420" Canvas.Left="1280" Orientation="Vertical">
                 <TextBlock Text="Pendulum Heater"/>
-                <Button Height="18" Width="50" Content="{Binding PendulumHeaterData.FeedBack}" ToolTip="{Binding PendulumHeaterData,Converter={StaticResource HeaterToStringConverter}}"  Foreground="White" ContentStringFormat="F1" Background="{Binding PendulumHeaterData.IsPowerOnSetPoint,Converter={StaticResource boolToColor5}}" Style="{x:Null}" Command="{Binding HeaterCommand}" CommandParameter="{Binding PendulumHeaterData}" Cursor="Hand"/>
+                <Button Height="18" Width="50" Content="{Binding PendulumHeaterData.FeedBack}" ToolTip="{Binding PendulumHeaterData,Converter={StaticResource HeaterToStringConverter}}" Foreground="#40E0D0"  ContentStringFormat="F1" Background="{Binding PendulumHeaterData.IsPowerOnSetPoint,Converter={StaticResource boolToColor5}}" Style="{x:Null}" Command="{Binding HeaterCommand}" CommandParameter="{Binding PendulumHeaterData}" Cursor="Hand"/>
             </StackPanel>
             <!--Chamber-->
             <ctrls:Chamber Canvas.Left="1034" Canvas.Top="224" 
@@ -791,7 +791,7 @@
             <Ellipse Width="20" Height="20" Fill="{Binding IsLidClosed,Converter={StaticResource boolToColor}}" Canvas.Left="1280" Canvas.Top="390" Stroke="Silver" StrokeThickness="2"/>
             <Button Height="20" Width="70" Content="Lid Down"                                                    Canvas.Left="1310" Canvas.Top="390" Command="{Binding LidUpDownCommand}" CommandParameter="Down" Style="{StaticResource SysBtnStyle}" IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}"/>-->
 
-            <ctrls:Pump Canvas.Top="700"  Canvas.Left="1245" Width="35" Height="35" IsOpen="{Binding PumpIsOpen,Mode=TwoWay}">
+            <ctrls:Pump Canvas.Top="700"  Canvas.Left="1245" Width="35" Height="35" IsOpen="{Binding PumpIsOpen,Mode=TwoWay}" IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}">
                 <ctrls:Pump.ContextMenu>
                     <ContextMenu>
                         <MenuItem Header="ON"  Command="{Binding OpenPumpCommand}" IsChecked="{Binding PumpIsOpen,Mode=OneWay}" IsEnabled="{Binding PumpIsOpen,Converter={StaticResource BoolToBool},Mode=OneWay}"/>

+ 7 - 7
Venus/Venus_MainPages/Views/OverVenusView.xaml

@@ -702,7 +702,7 @@
             <TextBlock Text=" He&#10;ISO" Canvas.Top="482" Canvas.Left="1068"/>
 
             <!--turbo-->
-            <ctrls:Turbo Width="40" Height="40"  Canvas.Top="521" Canvas.Left="1242" IsOpen="{Binding TurboIsOpen}">
+            <ctrls:Turbo Width="40" Height="40"  Canvas.Top="521" Canvas.Left="1242" IsOpen="{Binding TurboIsOpen}" IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}">
                 <ctrls:Turbo.ContextMenu>
                     <ContextMenu>
                         <MenuItem Header="ON" Command="{Binding OpenTurboPumpCommand}" IsChecked="{Binding TurboIsOpen,Mode=OneWay}" IsEnabled="{Binding TurboIsOpen,Converter={StaticResource BoolToBool},Mode=OneWay}"/>
@@ -712,7 +712,7 @@
             </ctrls:Turbo>
 
             <!--蝶阀-->
-            <ctrls:ButterflyValve Canvas.Top="475" Canvas.Left="1245" RotateTransformValue="{Binding PositionValue}" IsOpen="{Binding PendulumValveData.IsOpen,Mode=TwoWay}">
+            <ctrls:ButterflyValve Canvas.Top="475" Canvas.Left="1245" RotateTransformValue="{Binding PositionValue}" IsOpen="{Binding PendulumValveData.IsOpen,Mode=TwoWay}" IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}">
                 <i:Interaction.Triggers>
                     <i:EventTrigger EventName="MouseLeftButtonUp">
                         <i:InvokeCommandAction Command="{Binding OpenButterflyValveViewCommand}"/>
@@ -781,15 +781,15 @@
             <ctrls:TextboxWithLabel  Canvas.Top="400" Canvas.Left="1290" LabelValue="Wall   Heater"   TextBoxValue="{Binding WallHeaterData.CoolantOutletTcFeedback}"     TextBoxColor="{Binding WallHeaterData.IsPowerOn,Converter={StaticResource boolToColor}}"  Cursor="Hand"/>-->
             <StackPanel Canvas.Top="470" Canvas.Left="960" Orientation="Vertical">
                 <TextBlock Text="Valve Heater"/>
-                <Button Height="18" Width="50" Content="{Binding ValveHeaterData.FeedBack}" ToolTip="{Binding ValveHeaterData,Converter={StaticResource HeaterToStringConverter}}" Foreground="White" ContentStringFormat="F1" Background="{Binding ValveHeaterData.IsPowerOnSetPoint,Converter={StaticResource boolToColor5}}" Style="{x:Null}" Command="{Binding HeaterCommand}" CommandParameter="{Binding ValveHeaterData}" Cursor="Hand"/>
+                <Button Height="18" Width="50" Content="{Binding ValveHeaterData.FeedBack}" ToolTip="{Binding ValveHeaterData,Converter={StaticResource HeaterToStringConverter}}" Foreground="#40E0D0" ContentStringFormat="F1" Background="{Binding ValveHeaterData.IsPowerOnSetPoint,Converter={StaticResource boolToColor5}}" Style="{x:Null}" Command="{Binding HeaterCommand}" CommandParameter="{Binding ValveHeaterData}" Cursor="Hand"/>
             </StackPanel>
             <StackPanel Canvas.Top="645" Canvas.Left="1160" Orientation="Vertical">
                 <TextBlock Text="Foreline Heater"/>
-                <Button Height="18" Width="50" Content="{Binding ForelineHeaterData.FeedBack}" ToolTip="{Binding ForelineHeaterData,Converter={StaticResource HeaterToStringConverter}}" Foreground="White" ContentStringFormat="F1"  Background="{Binding ForelineHeaterData.IsPowerOnSetPoint,Converter={StaticResource boolToColor5}}" Style="{x:Null}" Command="{Binding HeaterCommand}" CommandParameter="{Binding ForelineHeaterData}" Cursor="Hand"/>
+                <Button Height="18" Width="50" Content="{Binding ForelineHeaterData.FeedBack}" ToolTip="{Binding ForelineHeaterData,Converter={StaticResource HeaterToStringConverter}}" Foreground="#40E0D0" ContentStringFormat="F1"  Background="{Binding ForelineHeaterData.IsPowerOnSetPoint,Converter={StaticResource boolToColor5}}" Style="{x:Null}" Command="{Binding HeaterCommand}" CommandParameter="{Binding ForelineHeaterData}" Cursor="Hand"/>
             </StackPanel>
             <StackPanel Canvas.Top="380" Canvas.Left="1280" Orientation="Vertical">
                 <TextBlock Text="Wall Heater"/>
-                <Button Height="18" Width="50" Content="{Binding WallHeaterData.FeedBack}" ToolTip="{Binding WallHeaterData,Converter={StaticResource HeaterToStringConverter}}"  Foreground="White" ContentStringFormat="F1" Background="{Binding WallHeaterData.IsPowerOnSetPoint,Converter={StaticResource boolToColor5}}" Style="{x:Null}" Command="{Binding HeaterCommand}" CommandParameter="{Binding WallHeaterData}" Cursor="Hand"/>
+                <Button Height="18" Width="50" Content="{Binding WallHeaterData.FeedBack}" ToolTip="{Binding WallHeaterData,Converter={StaticResource HeaterToStringConverter}}" Foreground="#40E0D0"  ContentStringFormat="F1"  Background="{Binding WallHeaterData.IsPowerOnSetPoint,Converter={StaticResource boolToColor5}}" Style="{x:Null}" Command="{Binding HeaterCommand}" CommandParameter="{Binding WallHeaterData}" Cursor="Hand"/>
             </StackPanel>
 
             <!--Chamber-->
@@ -810,8 +810,8 @@
             <Button  Height="20" Width="70"  Content="Pin Up" Canvas.Left="1130" Canvas.Top="466" Command="{Binding PinUpDownCommand}" CommandParameter="True" Style="{StaticResource SysBtnStyle}" IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}"/>
             <Ellipse Width="20"  Height="20" Fill="{Binding LiftPinIsUp,Converter={StaticResource boolToColor2}}" Canvas.Left="1105" Canvas.Top="490" Stroke="Silver" StrokeThickness="2"/>
             <Button  Height="20" Width="70"  Content="Pin Down" Canvas.Left="1130" Canvas.Top="490" Command="{Binding PinUpDownCommand}" CommandParameter="False" Style="{StaticResource SysBtnStyle}" IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}"/>
-            
-            <ctrls:Pump Canvas.Top="700"  Canvas.Left="1245" Width="35" Height="35" IsOpen="{Binding PumpIsOpen,Mode=TwoWay}">
+
+            <ctrls:Pump Canvas.Top="700"  Canvas.Left="1245" Width="35" Height="35" IsOpen="{Binding PumpIsOpen,Mode=TwoWay}" IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}">
                 <ctrls:Pump.ContextMenu>
                     <ContextMenu>
                         <MenuItem Header="ON"  Command="{Binding OpenPumpCommand}" IsChecked="{Binding PumpIsOpen,Mode=OneWay}" IsEnabled="{Binding PumpIsOpen,Converter={StaticResource BoolToBool},Mode=OneWay}"/>

+ 4 - 2
Venus/Venus_MainPages/Views/RecipeView.xaml

@@ -98,15 +98,17 @@
         <Grid x:Name="gridDisplay" Grid.Column="2">
             <Grid.RowDefinitions>
                 <RowDefinition Height="40" />
-                <RowDefinition Height="706*" />
+                <RowDefinition Height="706*"/>
             </Grid.RowDefinitions>
             <StackPanel Grid.Row="0" Orientation="Horizontal">
                 <customeControls:PathButton PathData="{StaticResource Icon_Save}"    Content="Save"           DefaultFillBrush="White"     Command="{Binding SaveRecipeCommand}"    Margin="30,4,22,0"        FontSize="16" Height="30"   Width="140"   VerticalContentAlignment="Center"  HorizontalAlignment="Right" VerticalAlignment="Top"/>
                 <customeControls:PathButton PathData="{StaticResource Icon_Add}"     Content="Add Step"       DefaultFillBrush="White"     Command="{Binding AddStepCommand}"       Margin="30,4,22,0"        FontSize="16" Height="30"   Width="140"   VerticalContentAlignment="Center"  HorizontalAlignment="Right" VerticalAlignment="Top"/>
                 <customeControls:PathButton PathData="{StaticResource Icon_Delete}"  Content="Del Step"       DefaultFillBrush="White"     Command="{Binding DeleteStepCommand}"    Margin="30,4,22,0"        FontSize="16" Height="30"   Width="140"   VerticalContentAlignment="Center"  HorizontalAlignment="Right" VerticalAlignment="Top"/>
                 <customeControls:PathButton PathData="{StaticResource Icon_Refresh}"  Content="Refresh"        DefaultFillBrush="White"     Command="{Binding RefreshCommand}"      Margin="30,4,22,0"        FontSize="16" Height="30"   Width="140"   VerticalContentAlignment="Center"  HorizontalAlignment="Right" VerticalAlignment="Top"/>
+                <RadioButton Content="Unfrozen"   FontSize="15"   Width="120" Height="30" Margin="30,4,10,0"  Style="{StaticResource Button_RadioButton}" IsChecked="{Binding IsFrozen,Converter={StaticResource BoolToBool},Mode=TwoWay}"/>
+                <RadioButton Content="Frozen"     FontSize="15"   Width="120" Height="30" Margin="0 4 30 0" Style="{StaticResource Button_RadioButton}" IsChecked="{Binding IsFrozen,Mode=TwoWay}"/>
             </StackPanel>
-            <Grid x:Name="grid1" Grid.Row="1">
+            <Grid x:Name="grid1" Grid.Row="1" IsEnabled="{Binding IsFrozen,Converter={StaticResource BoolToBool}}">
                 <Grid.RowDefinitions>
                     <RowDefinition  Height="Auto"/>
                     <RowDefinition  />

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

@@ -27,7 +27,7 @@
     </UserControl.Resources>
 
     <Canvas Background="{StaticResource Login_BG}">
-        <TextBlock Style="{StaticResource textBlockStyle}" Text="{Binding Title}" FontSize="60"    FontStyle="Italic" Canvas.Left="5"/>
+        <TextBlock Style="{StaticResource textBlockStyle}" Text="JetPlasma" FontSize="45"     Canvas.Left="5" Canvas.Top="15"/>
         <TextBlock Text="{Binding SoftwareVersion}" Foreground="White"    FontSize="20"  Canvas.Left="70" Canvas.Top="80" />
 
         <Grid Canvas.Left="240" Width="1620" Height="104">

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


+ 2 - 2
Venus/Venus_RT/Config/PM/Kepler2200A/Kepler2200AInterlock.xml

@@ -4,7 +4,7 @@
 
  
 
-  <Action do="DO_PVN21" value="true" tip="PVN21" tip.zh-CN="" tip.en-US="DO-00" >
+  <!--<Action do="DO_PVN21" value="true" tip="PVN21" tip.zh-CN="" tip.en-US="DO-00" >
 	<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
 	<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
 	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
@@ -211,5 +211,5 @@
 
   <Action do="DO_Lid_Down" value="true" tip="Lid Down" tip.zh-CN="" tip.en-US="DO-51">
     <Limit di="DI_Lid_Down_Limit_Pos_SW"			value="false" tip="Lid Down Limit Pos SW"			tip.zh-CN="" tip.en-US="DI-75"/>
-  </Action>
+  </Action>-->
 </Interlock>

+ 90 - 96
Venus/Venus_RT/Config/PM/Kepler2200A/Kepler2200AIoDefine.xml

@@ -2,7 +2,7 @@
 <IO_DEFINE xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
 
 	<!--文件根据210-0062-100_ IO LIST_KPL2200_PM_20230726.xlsx生成-->
-	<!--生成时间:08/03/2023 08:56:15-->
+	<!--生成时间:10/08/2023 10:07:36-->
 	<Dig_In>
 		<DI_ITEM Index="0" Name="DI_Lid_Closed" Device="" Addr="w20.00" />
 		<DI_ITEM Index="1" Name="DI_ATM_Switch" Device="ATM_SW" Addr="w20.01" />
@@ -24,17 +24,17 @@
 		<DI_ITEM Index="17" Name="" />
 		<DI_ITEM Index="18" Name="DI_Foreline_Pressure_10t_Guage_Alarm" Device="VG_FL" Addr="w21.02" />
 		<DI_ITEM Index="19" Name="" />
-		<DI_ITEM Index="20" Name="DI_S_Valve_TC_Deviation_out_of_range" Device="" Addr="w21.04" />
+		<DI_ITEM Index="20" Name="" Device="" Addr="" />
 		<DI_ITEM Index="21" Name="DI_S_Valve_Control_TC_Broken_Alarm" Device="" Addr="w21.05" />
-		<DI_ITEM Index="22" Name="DI_S_Valve_Monitor_TC_Broken_Alarm" Device="" Addr="w21.06" />
+		<DI_ITEM Index="22" Name="" Device="" Addr="" />
 		<DI_ITEM Index="23" Name="DI_S_Valve_Heater_On_FB" Device="" Addr="w21.07" />
-		<DI_ITEM Index="24" Name="DI_Foreline_TC_Deviation_out_of_range" Device="" Addr="w21.08" />
-		<DI_ITEM Index="25" Name="DI_Foreline_Control_TC_Broken_Alarm" Device="" Addr="w21.09" />
-		<DI_ITEM Index="26" Name="DI_Foreline_Monitor_TC_Broken_Alarm" Device="" Addr="w21.10" />
-		<DI_ITEM Index="27" Name="DI_Foreline_Heater_On_FB" Device="" Addr="w21.11" />
-		<DI_ITEM Index="28" Name="DI_CHB_Wall_TC_Deviation_out_of_range" Device="" Addr="w21.12" />
+		<DI_ITEM Index="24" Name="" Device="" Addr="" />
+		<DI_ITEM Index="25" Name="" Device="" Addr="" />
+		<DI_ITEM Index="26" Name="" Device="" Addr="" />
+		<DI_ITEM Index="27" Name="" Device="" Addr="" />
+		<DI_ITEM Index="28" Name="" Device="" Addr="" />
 		<DI_ITEM Index="29" Name="DI_CHB_H-HT_Control_TC_Broken_Alarm" Device="" Addr="w21.13" />
-		<DI_ITEM Index="30" Name="DI_CHB_Wall_Monitor_TC_Broken_Alarm" Device="" Addr="w21.14" />
+		<DI_ITEM Index="30" Name="" Device="" Addr="" />
 		<DI_ITEM Index="31" Name="DI_CHB_H-HT_Heater_On_FB" Device="" Addr="w21.15" />
 		<DI_ITEM Index="32" Name="DI_CHB_H-HT_OT_Switch_Alarm" Device="" Addr="w22.00" />
 		<DI_ITEM Index="33" Name="" />
@@ -48,7 +48,7 @@
 		<DI_ITEM Index="41" Name="DI_MFC7_Pressure_Switch" Device="PG7" Addr="w22.09" Note="Gas Box" />
 		<DI_ITEM Index="42" Name="DI_MFC8_Pressure_Switch" Device="PG8" Addr="w22.10" Note="Gas Box" />
 		<DI_ITEM Index="43" Name="DI_N2_Purge_Pressure_Switch" Device="N2_P" Addr="w22.11" Note="Gas Box" />
-		<!--<DI_ITEM Index="44" Name="DI_ESC_He_Pressure_100t_Guage_Alarm" Device="VG_He" Addr="w22.12" Note="ESC配置" />-->
+		<DI_ITEM Index="44" Name="" Device="VG_He" Addr="" Note="ESC配置" />
 		<DI_ITEM Index="45" Name="" />
 		<DI_ITEM Index="46" Name="" />
 		<DI_ITEM Index="47" Name="" />
@@ -60,18 +60,18 @@
 		<DI_ITEM Index="53" Name="DI_Turbo_Pump_Water_Flow_Switch" Device="" Addr="w23.05" />
 		<DI_ITEM Index="54" Name="DI_Source_RF_Water_Flow_Switch" Device="" Addr="w23.06" />
 		<DI_ITEM Index="55" Name="" />
-		<DI_ITEM Index="56" Name="DI_P_Valve_TC_Deviation_out_of_range" Device="" Addr="w23.08" />
-		<DI_ITEM Index="57" Name="DI_P_Valve_Control_TC_Broken_Alarm" Device="" Addr="w23.09" />
-		<DI_ITEM Index="58" Name="DI_P_Valve_Monitor_TC_Broken_Alarm" Device="" Addr="w23.10" />
-		<DI_ITEM Index="59" Name="DI_P_Valve_Heater_On_FB" Device="" Addr="w23.11" />
+		<DI_ITEM Index="56" Name="" Device="" Addr="" />
+		<DI_ITEM Index="57" Name="" Device="" Addr="" />
+		<DI_ITEM Index="58" Name="" Device="" Addr="" />
+		<DI_ITEM Index="59" Name="" Device="" Addr="" />
 		<DI_ITEM Index="60" Name="" />
-		<DI_ITEM Index="61" Name="DI_Gas_Line_TC_Deviation_out_of_range" Device="" Addr="w23.13" />
+		<DI_ITEM Index="61" Name="" Device="" Addr="" />
 		<DI_ITEM Index="62" Name="DI_Gas_Line_Control_TC_Broken_Alarm" Device="" Addr="w23.14" />
-		<DI_ITEM Index="63" Name="DI_Gas_Line_Monitor_TC_Broken_Alarm" Device="" Addr="w23.15" />
+		<DI_ITEM Index="63" Name="" Device="" Addr="" />
 		<DI_ITEM Index="64" Name="DI_Gas_Line_Heater_On_FB" Device="" Addr="w24.00" />
-		<DI_ITEM Index="65" Name="DI_Gas_Line_OT_Switch_Alarm" Device="" Addr="w24.01" />
+		<DI_ITEM Index="65" Name="" Device="" Addr="" />
 		<DI_ITEM Index="66" Name="DI_S_Valve_OT_Switch_Alarm" Device="" Addr="w24.02" />
-		<DI_ITEM Index="67" Name="DI_Foreline_OT_Switch_Alarm" Device="" Addr="w24.03" />
+		<DI_ITEM Index="67" Name="" Device="" Addr="" />
 		<DI_ITEM Index="68" Name="" />
 		<DI_ITEM Index="69" Name="" />
 		<DI_ITEM Index="70" Name="" />
@@ -82,21 +82,21 @@
 		<DI_ITEM Index="75" Name="DI_Lid_Down_Limit_Pos_SW" Device="" Addr="w24.11" />
 		<DI_ITEM Index="76" Name="DI_Arm_Not_Extend_to_PM" Device="" Addr="w24.12" />
 		<DI_ITEM Index="77" Name="DI_TM_Safety_Door_Colse" Device="" Addr="w24.13" />
-		<DI_ITEM Index="78" Name="DI_ESC_Inner_Coolant_Flow_SW" Device="" Addr="w24.14" />
-		<DI_ITEM Index="79" Name="DI_ESC_Outer_Coolant_Flow_SW" Device="" Addr="w24.15" />
+		<DI_ITEM Index="78" Name="" Device="" Addr="" />
+		<DI_ITEM Index="79" Name="" Device="" Addr="" />
 		<DI_ITEM Index="80" Name="DI_Top_Plate_Coolant_Flow_SW" Device="" Addr="w25.00" />
 		<DI_ITEM Index="81" Name="" />
 		<DI_ITEM Index="82" Name="" />
 		<DI_ITEM Index="83" Name="DI_Lid_Servo_Alarm" Device="" Addr="w25.03" />
-		<DI_ITEM Index="84" Name="DI_ADAM-1_communication_Alarm" Device="" Addr="w25.04" />
-		<DI_ITEM Index="85" Name="DI_ADAM-2_communication_Alarm" Device="" Addr="w25.05" />
+		<DI_ITEM Index="84" Name="" Device="" Addr="" />
+		<DI_ITEM Index="85" Name="" Device="" Addr="" />
 		<DI_ITEM Index="86" Name="" />
-		<DI_ITEM Index="87" Name="DI_ESC_inner_coolant_inlet_TC_Broken_Alarm" Device="" Addr="w25.07" />
-		<DI_ITEM Index="88" Name="DI_ESC_inner_coolant_outlet_TC_Broken_Alarm" Device="" Addr="w25.08" />
-		<DI_ITEM Index="89" Name="DI_ESC_outer_coolant_inlet_TC_Broken_Alarm" Device="" Addr="w25.09" />
-		<DI_ITEM Index="90" Name="DI_ESC_outer_coolant_outlet_TC_Broken_Alarm" Device="" Addr="w25.10" />
-		<DI_ITEM Index="91" Name="DI_Top_Plate_coolant_inlet_TC_Broken_Alarm" Device="" Addr="w25.11" />
-		<DI_ITEM Index="92" Name="DI_Top_Plate_coolant_outlet_TC_Broken_Alarm" Device="" Addr="w25.12" />
+		<DI_ITEM Index="87" Name="" Device="" Addr="" />
+		<DI_ITEM Index="88" Name="" Device="" Addr="" />
+		<DI_ITEM Index="89" Name="" Device="" Addr="" />
+		<DI_ITEM Index="90" Name="" Device="" Addr="" />
+		<DI_ITEM Index="91" Name="" Device="" Addr="" />
+		<DI_ITEM Index="92" Name="" Device="" Addr="" />
 		<DI_ITEM Index="93" Name="" />
 		<DI_ITEM Index="94" Name="" />
 		<DI_ITEM Index="95" Name="" />
@@ -144,15 +144,15 @@
 		<DO_ITEM Index="23" Name="DO_Fast_Pumping_Valve" Device="PV3" Addr="w1.07" />
 		<DO_ITEM Index="24" Name="DO_Slit_Door_Open" Device="PV4" Addr="w1.08" />
 		<DO_ITEM Index="25" Name="DO_Slit_Door_Close" Device="PV4" Addr="w1.09" />
-    <DO_ITEM Index="26" Name="DO_Lift_Pin_Up" Device="PV5" Addr="w1.10" />
-    <DO_ITEM Index="27" Name="DO_Lift_Pin_Down" Device="PV5" Addr="w1.11" />
+		<DO_ITEM Index="26" Name="" />
+		<DO_ITEM Index="27" Name="" />
 		<DO_ITEM Index="28" Name="" />
 		<DO_ITEM Index="29" Name="DO_Turbo_Pump_Pumping_Valve" Device="PV6" Addr="w1.13" />
 		<DO_ITEM Index="30" Name="DO_Turbo_Pump_Purge_Valve" Device="PV7" Addr="w1.14" />
 		<DO_ITEM Index="31" Name="DO_Gauge_Valve" Device="PV8" Addr="w1.15" />
 		<DO_ITEM Index="32" Name="DO_Reset_Signal" Device="" Addr="w2.00" />
 		<DO_ITEM Index="33" Name="DO_S_Valve_Heater_On" Device="" Addr="w2.01" />
-		<!--<DO_ITEM Index="34" Name="DO_Foreline_Heater_On" Device="" Addr="w2.02" />-->
+		<DO_ITEM Index="34" Name="" Device="" Addr="" />
 		<DO_ITEM Index="35" Name="DO_CHB_H-HT_Heater_On" Device="" Addr="w2.03" />
 		<DO_ITEM Index="36" Name="" />
 		<DO_ITEM Index="37" Name="" />
@@ -164,7 +164,7 @@
 		<DO_ITEM Index="43" Name="" />
 		<DO_ITEM Index="44" Name="" />
 		<DO_ITEM Index="45" Name="" />
-		<!--<DO_ITEM Index="46" Name="DO_P_Valve_Heater_On" Device="" Addr="w2.14" />-->
+		<DO_ITEM Index="46" Name="" Device="" Addr="" />
 		<DO_ITEM Index="47" Name="DO_Gas_Line_Heater_On" Device="" Addr="w2.15" />
 		<DO_ITEM Index="48" Name="" />
 		<DO_ITEM Index="49" Name="" />
@@ -232,36 +232,36 @@
 		<DO_ITEM Index="111" Name="" />
 	</Dig_Out>
 	<Ana_Out>
-		<AO_ITEM Index="0" Name="AO_MFC1_Flow_Setpoint" Device="" Addr="d1000" Note="MFC" />
-		<AO_ITEM Index="1" Name="AO_MFC2_Flow_Setpoint" Device="" Addr="d1002" Note="MFC" />
-		<AO_ITEM Index="2" Name="AO_MFC3_Flow_Setpoint" Device="" Addr="d1004" Note="MFC" />
-		<AO_ITEM Index="3" Name="AO_MFC4_Flow_Setpoint" Device="" Addr="d1006" Note="MFC" />
-		<AO_ITEM Index="4" Name="AO_MFC5_Flow_Setpoint" Device="" Addr="d1008" Note="MFC" />
-		<AO_ITEM Index="5" Name="AO_MFC6_Flow_Setpoint" Device="" Addr="d1010" Note="MFC" />
-		<AO_ITEM Index="6" Name="AO_MFC7_Flow_Setpoint" Device="" Addr="d1012" Note="MFC" />
-		<AO_ITEM Index="7" Name="AO_MFC8_Flow_Setpoint" Device="" Addr="d1014" Note="MFC" />
-		<!--<AO_ITEM Index="8" Name="AO_He_Flow_Setpoint" Device="" Addr="d1016" Note="MFC" />-->
-		<AO_ITEM Index="9" Name="AO_Turbo_Pump_N2_Flow_Setpoint" Device="" Addr="d1018" Note="MFC" />
-		<AO_ITEM Index="10" Name="AO_S_Valve_Temperature_Setpoint" Device="" Addr="d1020" Note="以前是Valve" />
-		<AO_ITEM Index="11" Name="AO_S_Valve_Temp_Limit_Setpoint" Device="" Addr="d1022" />
-		<!--<AO_ITEM Index="12" Name="AO_Foreline_Temperature_Setpoint" Device="" Addr="d1024" Note="前级管道设定温度" />
-		<AO_ITEM Index="13" Name="AO_Foreline_Temp_Limit_Setpoint" Device="" Addr="d1026" Note="Temp Limit" />-->
-		<AO_ITEM Index="14" Name="AO_CHB_H-HT_Temperature_Setpoint" Device="" Addr="d1028" Note="H-HT设定温度" />
-		<AO_ITEM Index="15" Name="AO_CHB_H-HT_Temp_Limit_Setpoint" Device="" Addr="d1030" Note="H-HT极限温度设定" />
-		<AO_ITEM Index="16" Name="AO_Heartbeat" Device="" Addr="d1032" Note="PC to PLC" />
-		<!--<AO_ITEM Index="17" Name="AO_ESC_He_Pressure_Setpoint" Device="" Addr="d1034" Note="ESC配置" />
-		<AO_ITEM Index="18" Name="AO_ESC_He_Control_Mode" Device="" Addr="d1036" />
-		<AO_ITEM Index="19" Name="AO_P_Valve_Temperature_Setpoint" Device="" Addr="d1038" Note="钟摆阀门加热设定温度" />
-		<AO_ITEM Index="20" Name="AO_P_Valve_Temp_Limit_Setpoint" Device="" Addr="d1040" Note="钟摆阀门Temp Limit" />-->
-		<AO_ITEM Index="21" Name="AO_Gas_Line_Temperature_Setpoint" Device="" Addr="d1042" Note="Gas Line加热设定温度" />
-		<AO_ITEM Index="22" Name="AO_Gas_Line_Temp_Limit_Setpoint" Device="" Addr="d1044" Note="Gas LineTemp Limit" />
+		<AO_ITEM Index="0"  Name="AO_MFC1_Flow_Setpoint"             BufferOffset="0" Device="" Addr="d1000" Note="MFC" />
+		<AO_ITEM Index="1"  Name="AO_MFC2_Flow_Setpoint"             BufferOffset="2" Device="" Addr="d1002" Note="MFC" />
+		<AO_ITEM Index="2"  Name="AO_MFC3_Flow_Setpoint"             BufferOffset="4" Device="" Addr="d1004" Note="MFC" />
+		<AO_ITEM Index="3"  Name="AO_MFC4_Flow_Setpoint"             BufferOffset="6" Device="" Addr="d1006" Note="MFC" />
+		<AO_ITEM Index="4"  Name="AO_MFC5_Flow_Setpoint"             BufferOffset="8" Device="" Addr="d1008" Note="MFC" />
+		<AO_ITEM Index="5"  Name="AO_MFC6_Flow_Setpoint"             BufferOffset="10" Device="" Addr="d1010" Note="MFC" />
+		<AO_ITEM Index="6"  Name="AO_MFC7_Flow_Setpoint"             BufferOffset="12" Device="" Addr="d1012" Note="MFC" />
+		<AO_ITEM Index="7"  Name="AO_MFC8_Flow_Setpoint"             BufferOffset="14" Device="" Addr="d1014" Note="MFC" />
+		<AO_ITEM Index="8"  Name="" Device="" Addr="" Note="MFC" />
+		<AO_ITEM Index="9"  Name="AO_Turbo_Pump_N2_Flow_Setpoint"    BufferOffset="18" Device="" Addr="d1018" Note="MFC" />
+		<AO_ITEM Index="10" Name="AO_S_Valve_Temperature_Setpoint"   BufferOffset="20" Device="" Addr="d1020" Note="以前是Valve" />
+		<AO_ITEM Index="11" Name="AO_S_Valve_Temp_Limit_Setpoint"    BufferOffset="22" Device="" Addr="d1022" />
+		<AO_ITEM Index="12" Name="" Device="" Addr="" Note="前级管道设定温度" />
+		<AO_ITEM Index="13" Name="" Device="" Addr="" Note="Temp Limit" />
+		<AO_ITEM Index="14" Name="AO_CHB_H-HT_Temperature_Setpoint"  BufferOffset="28" Device="" Addr="d1028" Note="H-HT设定温度" />
+		<AO_ITEM Index="15" Name="AO_CHB_H-HT_Temp_Limit_Setpoint"   BufferOffset="30" Device="" Addr="d1030" Note="H-HT极限温度设定" />
+		<AO_ITEM Index="16" Name="AO_Heartbeat" Device=""            BufferOffset="32" Addr="d1032" Note="PC to PLC" />
+		<AO_ITEM Index="17" Name="" Device="" Addr="" Note="ESC配置" />
+		<AO_ITEM Index="18" Name="" Device="" Addr="" />
+		<AO_ITEM Index="19" Name="" Device="" Addr="" Note="钟摆阀门加热设定温度" />
+		<AO_ITEM Index="20" Name="" Device="" Addr="" Note="钟摆阀门Temp Limit" />
+		<AO_ITEM Index="21" Name="AO_Gas_Line_Temperature_Setpoint" BufferOffset="42" Device="" Addr="d1042" Note="Gas Line加热设定温度" />
+		<AO_ITEM Index="22" Name="AO_Gas_Line_Temp_Limit_Setpoint"  BufferOffset="44" Device="" Addr="d1044" Note="Gas LineTemp Limit" />
 		<AO_ITEM Index="23" Name="" />
 		<AO_ITEM Index="24" Name="" />
 		<AO_ITEM Index="25" Name="" />
 		<AO_ITEM Index="26" Name="" />
 		<AO_ITEM Index="27" Name="" />
 		<AO_ITEM Index="28" Name="" />
-		<AO_ITEM Index="29" Name="AO_CHB_H-HT_Power_Distribute_Percent" Device="" Addr="d1058" />
+		<AO_ITEM Index="29" Name="AO_CHB_H-HT_Power_Distribute_Percent" BufferOffset="58" Device="" Addr="d1058" />
 		<AO_ITEM Index="30" Name="" />
 		<AO_ITEM Index="31" Name="" />
 		<AO_ITEM Index="32" Name="" />
@@ -284,52 +284,52 @@
 		<AO_ITEM Index="49" Name="" />
 	</Ana_Out>
 	<Ana_In>
-		<AI_ITEM Index="0" Name="AI_Chamber_Pressure_10t" Device="" Addr="d2000" Note="float" />
-		<AI_ITEM Index="1" Name="AI_Process_Pressure_100mt" Device="" Addr="d2002" Note="float" />
-		<AI_ITEM Index="2" Name="AI_Foreline_Pressure_10t" Device="" Addr="d2004" Note="float" />
-		<!--<AI_ITEM Index="3" Name="AI_ESC_He_Pressure_100t" Device="" Addr="d2006" Note="float" />-->
-		<AI_ITEM Index="4" Name="AI_MFC1_Flow" Device="" Addr="d2008" Note="float" />
-		<AI_ITEM Index="5" Name="AI_MFC2_Flow" Device="" Addr="d2010" Note="float" />
-		<AI_ITEM Index="6" Name="AI_MFC3_Flow" Device="" Addr="d2012" Note="float" />
-		<AI_ITEM Index="7" Name="AI_MFC4_Flow" Device="" Addr="d2014" Note="float" />
-		<AI_ITEM Index="8" Name="AI_MFC5_Flow" Device="" Addr="d2016" Note="float" />
-		<AI_ITEM Index="9" Name="AI_MFC6_Flow" Device="" Addr="d2018" Note="float" />
-		<AI_ITEM Index="10" Name="AI_MFC7_Flow" Device="" Addr="d2020" Note="float" />
-		<AI_ITEM Index="11" Name="AI_MFC8_Flow" Device="" Addr="d2022" Note="float" />
-		<!--<AI_ITEM Index="12" Name="AI_ESC_He_Flow" Device="" Addr="d2024" Note="float" />-->
-		<AI_ITEM Index="13" Name="AI_Turbo_Pump_N2_Flow" Device="" Addr="d2026" Note="float" />
-		<AI_ITEM Index="14" Name="AI_S_Valve_Control_TC_Temp" Device="" Addr="d2028" Note="float" />
+		<AI_ITEM Index="0" Name="AI_Chamber_Pressure_10t"                BufferOffset="0" Device="" Addr="d2000" Note="float" />
+		<AI_ITEM Index="1" Name="AI_Process_Pressure_100mt" Device=""    BufferOffset="2" Addr="d2002" Note="float" />
+		<AI_ITEM Index="2" Name="AI_Foreline_Pressure_10t" Device=""     BufferOffset="4" Addr="d2004" Note="float" />
+		<AI_ITEM Index="3" Name="" Device="" Addr="" Note="float" />
+		<AI_ITEM Index="4" Name="AI_MFC1_Flow"                           BufferOffset="8" Device="" Addr="d2008" Note="float" />
+		<AI_ITEM Index="5" Name="AI_MFC2_Flow"                           BufferOffset="10" Device="" Addr="d2010" Note="float" />
+		<AI_ITEM Index="6" Name="AI_MFC3_Flow"                           BufferOffset="12" Device="" Addr="d2012" Note="float" />
+		<AI_ITEM Index="7" Name="AI_MFC4_Flow"                           BufferOffset="14" Device="" Addr="d2014" Note="float" />
+		<AI_ITEM Index="8" Name="AI_MFC5_Flow"                           BufferOffset="16" Device="" Addr="d2016" Note="float" />
+		<AI_ITEM Index="9" Name="AI_MFC6_Flow"                           BufferOffset="18" Device="" Addr="d2018" Note="float" />
+		<AI_ITEM Index="10" Name="AI_MFC7_Flow"                          BufferOffset="20"  Device="" Addr="d2020" Note="float" />
+		<AI_ITEM Index="11" Name="AI_MFC8_Flow"                          BufferOffset="22" Device="" Addr="d2022" Note="float" />
+		<AI_ITEM Index="12" Name=""                                      BufferOffset="0" Device="" Addr="" Note="float" />
+		<AI_ITEM Index="13" Name="AI_Turbo_Pump_N2_Flow"                 BufferOffset="26" Device="" Addr="d2026" Note="float" />
+		<AI_ITEM Index="14" Name="AI_S_Valve_Control_TC_Temp"            BufferOffset="28" Device="" Addr="d2028" Note="float" />
 		<AI_ITEM Index="15" Name="" />
-		<!--<AI_ITEM Index="16" Name="AI_Foreline_Control_TC_Temp" Device="" Addr="d2032" Note="float" />-->
+		<AI_ITEM Index="16" Name="" Device=""                            BufferOffset="0" Addr="" Note="float" />
 		<AI_ITEM Index="17" Name="" />
-		<AI_ITEM Index="18" Name="AI_CHB_H-HT_Control_TC_Temp" Device="" Addr="d2036" Note="float" />
+		<AI_ITEM Index="18" Name="AI_CHB_H-HT_Control_TC_Temp"           BufferOffset="36" Device="" Addr="d2036" Note="float" />
 		<AI_ITEM Index="19" Name="" />
 		<AI_ITEM Index="20" Name="" />
 		<AI_ITEM Index="21" Name="" />
-		<AI_ITEM Index="22" Name="AI_Heartbeat_FB" Device="" Addr="d2044" Note="float" />
-		<AI_ITEM Index="23" Name="AI_Second" Device="" Addr="d2046" Note="float" />
-		<AI_ITEM Index="24" Name="AI_Minute" Device="" Addr="d2048" Note="float" />
-		<AI_ITEM Index="25" Name="AI_Time" Device="" Addr="d2050" Note="float" />
-		<AI_ITEM Index="26" Name="AI_Day" Device="" Addr="d2052" Note="float" />
-		<AI_ITEM Index="27" Name="AI_Month" Device="" Addr="d2054" Note="float" />
-		<AI_ITEM Index="28" Name="AI_Year" Device="" Addr="d2056" Note="float" />
+		<AI_ITEM Index="22" Name="AI_Heartbeat_FB"                       BufferOffset="44" Device="" Addr="d2044" Note="float" />
+		<AI_ITEM Index="23" Name="AI_Second"                             BufferOffset="46" Device="" Addr="d2046" Note="float" />
+		<AI_ITEM Index="24" Name="AI_Minute"                             BufferOffset="48" Device="" Addr="d2048" Note="float" />
+		<AI_ITEM Index="25" Name="AI_Time"                               BufferOffset="50" Device="" Addr="d2050" Note="float" />
+		<AI_ITEM Index="26" Name="AI_Day"                                BufferOffset="52" Device="" Addr="d2052" Note="float" />
+		<AI_ITEM Index="27" Name="AI_Month"                              BufferOffset="54" Device="" Addr="d2054" Note="float" />
+		<AI_ITEM Index="28" Name="AI_Year"                               BufferOffset="56" Device="" Addr="d2056" Note="float" />
 		<AI_ITEM Index="29" Name="" />
 		<AI_ITEM Index="30" Name="" />
-		<AI_ITEM Index="31" Name="AI_Chamber_Pressure_Virtual" Device="" Addr="d2062" Note="float" />
-		<!--<AI_ITEM Index="32" Name="AI_P_Valve_Control_TC_Temp" Device="" Addr="d2064" Note="float" />-->
-		<AI_ITEM Index="33" Name="AI_Gas_Line_Control_TC_Temp" Device="" Addr="d2066" Note="float" />
+		<AI_ITEM Index="31" Name="AI_Chamber_Pressure_Virtual"           BufferOffset="62" Device="" Addr="d2062" Note="float" />
+		<AI_ITEM Index="32" Name=""                                      BufferOffset="0" Device="" Addr="" Note="float" />
+		<AI_ITEM Index="33" Name="AI_Gas_Line_Control_TC_Temp"           BufferOffset="66" Device="" Addr="d2066" Note="float" />
 		<AI_ITEM Index="34" Name="" />
-		<!--<AI_ITEM Index="35" Name="AI_S_Valve_Monitor_TC1_Temp" Device="" Addr="d2070" Note="float" />-->
+		<AI_ITEM Index="35" Name="" Device=""                            BufferOffset="0" Addr="" Note="float" />
 		<AI_ITEM Index="36" Name="" />
 		<AI_ITEM Index="37" Name="" />
 		<AI_ITEM Index="38" Name="" />
-		<!--<AI_ITEM Index="39" Name="AI_Foreline_Monitor_TC1_Temp" Device="" Addr="d2078" Note="float" />
-		<AI_ITEM Index="40" Name="AI_Foreline_Monitor_TC2_Temp" Device="" Addr="d2080" Note="float" />
-		<AI_ITEM Index="41" Name="AI_Foreline_Monitor_TC3_Temp" Device="" Addr="d2082" Note="float" />-->
+		<AI_ITEM Index="39" Name="" Device="" Addr="" Note="float" />
+		<AI_ITEM Index="40" Name="" Device="" Addr="" Note="float" />
+		<AI_ITEM Index="41" Name="" Device="" Addr="" Note="float" />
 		<AI_ITEM Index="42" Name="" />
-		<!--<AI_ITEM Index="43" Name="AI_CHB_Wall_Monitor_TC1_Temp" Device="" Addr="d2086" Note="float" />
-		<AI_ITEM Index="44" Name="AI_CHB_Wall_Monitor_TC2_Temp" Device="" Addr="d2088" Note="float" />
-		<AI_ITEM Index="45" Name="AI_CHB_Wall_Monitor_TC3_Temp" Device="" Addr="d2090" Note="float" />-->
+		<AI_ITEM Index="43" Name="" Device="" Addr="" Note="float" />
+		<AI_ITEM Index="44" Name="" Device="" Addr="" Note="float" />
+		<AI_ITEM Index="45" Name="" Device="" Addr="" Note="float" />
 		<AI_ITEM Index="46" Name="" />
 		<AI_ITEM Index="47" Name="" />
 		<AI_ITEM Index="48" Name="" />
@@ -337,11 +337,5 @@
 		<AI_ITEM Index="50" Name="" />
 		<AI_ITEM Index="51" Name="" />
 		<AI_ITEM Index="52" Name="" />
-		<!--<AI_ITEM Index="53" Name="AI_ESC_inner_coolant_inlet_TC_Temp" Device="" Addr="d2106" Note="float" />
-		<AI_ITEM Index="54" Name="AI_ESC_inner_coolant_outlet_TC_Temp" Device="" Addr="d2108" Note="float" />
-		<AI_ITEM Index="55" Name="AI_ESC_outer_coolant_inlet_TC_Temp" Device="" Addr="d2110" Note="float" />
-		<AI_ITEM Index="56" Name="AI_ESC_outer_coolant_outlet_TC_Temp" Device="" Addr="d2112" Note="float" />
-		<AI_ITEM Index="57" Name="AI_Top_Plate_coolant_inlet_TC_Temp" Device="" Addr="d2114" Note="float" />
-		<AI_ITEM Index="58" Name="AI_Top_Plate_coolant_outlet_TC_Temp" Device="" Addr="d2116" Note="float" />-->
 	</Ana_In>
 </IO_DEFINE>

+ 281 - 0
Venus/Venus_RT/Devices/IODevices/IoHighTemperatureHeater.cs

@@ -0,0 +1,281 @@
+using Aitex.Core.Common.DeviceData;
+using Aitex.Core.RT.DataCenter;
+using Aitex.Core.RT.Device;
+using Aitex.Core.RT.IOCore;
+using Aitex.Core.RT.Log;
+using Aitex.Core.RT.OperationCenter;
+using Aitex.Core.Util;
+using MECF.Framework.Common.CommonData.DeviceData;
+using MECF.Framework.Common.Equipment;
+using System;
+using System.Xml;
+using Venus_Core;
+
+namespace Venus_RT.Devices.IODevices
+{
+    public class IoHighTemperatureHeater : BaseDevice, IDevice
+    {
+        private readonly DIAccessor _diPowerOnFeedback;
+        private readonly DOAccessor _doPowerOn;
+
+        private readonly AIAccessor _aiTemperatureFeedback;
+        private readonly AOAccessor _aoTemperatureSetPoint;
+
+        private readonly DIAccessor _diGoPosition1Feedback;
+        private readonly DOAccessor _doGoPosition1On;
+
+        private readonly DIAccessor _diGoPosition2Feedback;
+        private readonly DOAccessor _doGoPosition2On;
+
+        private readonly DIAccessor _diGoPosition3Feedback;
+        private readonly DOAccessor _doGoPosition3On;
+
+        private readonly DIAccessor _diGoOriginFeedback;
+        private readonly DOAccessor _doGoOriginOn;
+
+        private readonly DeviceTimer _originTimer    = new DeviceTimer();
+        private readonly DeviceTimer _position1Timer = new DeviceTimer();
+        private readonly DeviceTimer _position2Timer = new DeviceTimer();
+        private readonly DeviceTimer _position3Timer = new DeviceTimer();
+
+        private int _goPositionTime = 5 * 1000;
+
+        private AITHighTemperatureHeaterData DeviceData
+        {
+            get
+            {
+                return new AITHighTemperatureHeaterData
+                {
+                    Module = Module,
+                    DeviceName = Name,
+                    DisplayName = Display,
+                    HighTemperatureHeaterPosition = CurrentPosition.ToString(),
+                    HighTemperatureHeaterIson = HighTemperatureHeaterIsOn,
+                    HighTemperatureHeaterTemperature = HighTemperatureHighHeaterTemperature
+                };
+            }
+        }
+
+        public HighTemperatureHeaterPosition CurrentPosition
+        {
+            get 
+            {
+                if (_diGoOriginFeedback.Value == true && _diGoPosition1Feedback.Value == false && _diGoPosition2Feedback.Value == false && _diGoPosition3Feedback.Value == false)
+                {
+                    return HighTemperatureHeaterPosition.Origin;
+                }
+                else if (_diGoOriginFeedback.Value == false && _diGoPosition1Feedback.Value == true && _diGoPosition2Feedback.Value == false && _diGoPosition3Feedback.Value == false)
+                {
+                    return HighTemperatureHeaterPosition.Position1;
+                }
+                else if (_diGoOriginFeedback.Value == false && _diGoPosition1Feedback.Value == false && _diGoPosition2Feedback.Value == true && _diGoPosition3Feedback.Value == false)
+                {
+                    return HighTemperatureHeaterPosition.Position2;
+                }
+                else if (_diGoOriginFeedback.Value == false && _diGoPosition1Feedback.Value == false && _diGoPosition2Feedback.Value == false && _diGoPosition3Feedback.Value == true)
+                {
+                    return HighTemperatureHeaterPosition.Position3;
+                }
+                else
+                {
+                    return HighTemperatureHeaterPosition.Error;
+                }
+            }
+        }
+
+        public bool HighTemperatureHeaterIsOn
+        {
+            get 
+            {
+                if (_diPowerOnFeedback.Value == true && _doPowerOn.Value == true)
+                {
+                    return true;
+                }
+                else
+                {
+                    return false;
+                }
+            }
+            set
+            {
+                _doPowerOn.Value = value;
+            }
+        }
+        public float HighTemperatureHighHeaterTemperature
+        {
+            get
+            {
+               if (_aiTemperatureFeedback == null) return -1;
+                //return _aiMonitorTcFeedback.Value;
+                return _GetRealFloat(_aiTemperatureFeedback);
+            }
+            set
+            {
+                _SetRealFloat(_aoTemperatureSetPoint, value);
+            }
+        }
+        public IoHighTemperatureHeater(string module, XmlElement node, string ioModule = "")
+        {
+            base.Module = module;
+            base.Name = node.GetAttribute("id");
+            base.Display = node.GetAttribute("display");
+            base.DeviceID = node.GetAttribute("schematicId");
+
+            _diPowerOnFeedback     = ParseDiNode("diPowerOnFeedback", node, ioModule);
+            _doPowerOn             = ParseDoNode("doPowerOn", node, ioModule);
+
+            _aiTemperatureFeedback = ParseAiNode("aiTemperatureFeedback", node, ioModule);
+            _aoTemperatureSetPoint = ParseAoNode("aoTemperatureSetPoint", node, ioModule);
+
+            _diGoPosition1Feedback = ParseDiNode("diGoPosition1Feedback", node, ioModule);
+            _doGoPosition1On       = ParseDoNode("doGoPosition1On", node, ioModule);
+
+            _diGoPosition2Feedback = ParseDiNode("diGoPosition2Feedback", node, ioModule);
+            _doGoPosition2On       = ParseDoNode("doGoPosition2On", node, ioModule);
+
+            _diGoPosition3Feedback = ParseDiNode("diGoPosition3Feedback", node, ioModule);
+            _doGoPosition3On       = ParseDoNode("doGoPosition3On", node, ioModule);
+
+            _diGoOriginFeedback    = ParseDiNode("diGoOriginFeedback", node, ioModule);
+            _doGoOriginOn          = ParseDoNode("doGoOriginOn", node, ioModule);
+
+        }
+        public bool GotoPosition(HighTemperatureHeaterPosition highTemperatureHeaterPosition)
+        {
+            if (CurrentPosition == highTemperatureHeaterPosition)
+            {
+                return true;
+            }
+            switch (highTemperatureHeaterPosition)
+            {
+                case HighTemperatureHeaterPosition.Origin:
+                    _doGoOriginOn.Value = true;
+                    _originTimer.Start(_goPositionTime);
+                    break;
+                case HighTemperatureHeaterPosition.Position1:
+                    _doGoPosition1On.Value = true;
+                    _position1Timer.Start(_goPositionTime);
+
+                    break;
+                case HighTemperatureHeaterPosition.Position2:
+                    _doGoPosition2On.Value = true;
+                    _position2Timer.Start(_goPositionTime);
+                    break;
+                case HighTemperatureHeaterPosition.Position3:
+                    _doGoPosition3On.Value = true;
+                    _position3Timer.Start(_goPositionTime);
+                    break;
+            }
+            return true;
+        }
+        public bool Initialize()
+        {
+            OP.Subscribe($"{Module}.{Name}.GotoPosition", (cmd, args) => {
+
+                var currentPosition = (HighTemperatureHeaterPosition)Enum.Parse(typeof(HighTemperatureHeaterPosition), args[0].ToString());
+                GotoPosition(currentPosition);
+                return true;
+            });
+            OP.Subscribe($"{Module}.{Name}.SwitchHighTemperatureHeater", (cmd, args) => {
+
+                HighTemperatureHeaterIsOn = Convert.ToBoolean(args[0].ToString());
+                return true;
+            });
+            OP.Subscribe($"{Module}.{Name}.SetHighTemperatureHeaterTemperature", (cmd, args) => {
+
+                HighTemperatureHighHeaterTemperature = Convert.ToSingle( args[0]);
+                return true;
+            });
+            DATA.Subscribe($"{Module}.{Name}.DeviceData", () => DeviceData, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            return true;
+        }
+        public void Stop()
+        {
+            
+        }
+
+        public void Terminate()
+        {
+
+        }
+
+        public void Monitor()
+        {
+            if (_originTimer.IsTimeout())
+            {
+                _originTimer.Stop();
+                if (_diGoOriginFeedback.Value == false)
+                {
+                    LOG.Write(eEvent.ERR_DEVICE_INFO, Module, $"{Name} {_goPositionTime/1000} s 内未到原点");
+                }
+            }
+            else if (_originTimer.IsIdle()==false)
+            {
+                if (_diGoOriginFeedback.Value == true)
+                {
+                    LOG.Write(eEvent.EV_DEVICE_INFO, Module, $"{Name} 到 原点");
+                    _doGoOriginOn.Value = false;
+                    _originTimer.Stop();
+                }
+            }
+
+            if (_position1Timer.IsTimeout())
+            {
+                _position1Timer.Stop();
+                if (_diGoPosition1Feedback.Value == false)
+                {
+                    LOG.Write(eEvent.ERR_DEVICE_INFO, Module, $"{Name} {_goPositionTime/1000} s 内未到Position1");
+                }
+            }
+            else if (_position1Timer.IsIdle() == false)
+            {
+                if (_diGoPosition1Feedback.Value == true)
+                {
+                    LOG.Write(eEvent.EV_DEVICE_INFO, Module, $"{Name}  到 Position1");
+                    _doGoPosition1On.Value = false;
+                    _position1Timer.Stop();
+                }
+            }
+
+            if (_position2Timer.IsTimeout())
+            {
+                _position2Timer.Stop();
+                if (_diGoPosition2Feedback.Value == false)
+                {
+                    LOG.Write(eEvent.ERR_DEVICE_INFO, Module, $"{Name} {_goPositionTime/1000} s 内未到Position2");
+                }
+            }
+            else if (_position2Timer.IsIdle() == false)
+            {
+                if (_diGoPosition2Feedback.Value == true)
+                {
+                    LOG.Write(eEvent.EV_DEVICE_INFO, Module, $"{Name}  到 Position2");
+                    _doGoPosition2On.Value = false;
+                    _position2Timer.Stop();
+                }
+            }
+
+            if (_position3Timer.IsTimeout())
+            {
+                _position3Timer.Stop();
+                if (_diGoPosition3Feedback.Value == false)
+                {
+                    LOG.Write(eEvent.ERR_DEVICE_INFO, Module, $"{Name} {_goPositionTime/1000} s 内未到Position3");
+                }
+            }
+            else if (_position3Timer.IsIdle() == false)
+            {
+                if (_diGoPosition3Feedback.Value == true)
+                {
+                    LOG.Write(eEvent.EV_DEVICE_INFO, Module, $"{Name}  到 Position3");
+                    _doGoPosition3On.Value = false;
+                    _position3Timer.Stop();
+                }
+            }
+        }
+        public void Reset()
+        {
+
+        }
+    }
+}

+ 6 - 2
Venus/Venus_RT/Devices/IODevices/IoPressureControl.cs

@@ -211,8 +211,12 @@ namespace Venus_RT.Devices
             _trigProcessLowGauge.CLK = ProcessLow.GaugeAlarm;
             if (_trigProcessLowGauge.Q) LOG.Write(eEvent.ERR_DEVICE_INFO, Module, "Process Low Gauge Alarm");
 
-            _trigESCHePressureGauge.CLK = ESCHeGauge.GaugeAlarm;
-            if (_trigESCHePressureGauge.Q) LOG.Write(eEvent.ERR_DEVICE_INFO, Module, "ESC He Pressure Gauge Alarm");
+            if (ESCHeGauge != null)
+            {
+                _trigESCHePressureGauge.CLK = ESCHeGauge.GaugeAlarm;
+                if (_trigESCHePressureGauge.Q) LOG.Write(eEvent.ERR_DEVICE_INFO, Module, "ESC He Pressure Gauge Alarm");
+            }
+            
 
           
             //MFPressureWrite();

+ 7 - 3
Venus/Venus_RT/Devices/JetKepler2200APM.cs

@@ -72,6 +72,8 @@ namespace Venus_RT.Devices
         private readonly IoSensor _GasBoxDoor;
         private readonly IoSensor _GasBoxPressure;
 
+        private readonly IoHighTemperatureHeater _highTemperatureHeater;
+
 
         private readonly PumpBase _MainPump;
         private readonly ESC5HighVoltage _ESCHV;
@@ -135,8 +137,8 @@ namespace Venus_RT.Devices
         public override bool IsATM => _ATM_sw.Value;
 
         public override bool PVN22ValveIsOpen => _PVN22Valve.Status;
-        public override bool LiftPinIsDown => _LiftPin.OFFFeedback;
-        public override bool LiftPinIsUp => _LiftPin.ONFeedback;
+        public override bool LiftPinIsDown =>false;
+        public override bool LiftPinIsUp => false;
 
         public override bool IsATMLoadlock => _ATM_Loadlock_sw.Value;
         public override bool IsVACLoadLock => LoadlockPressure <= 1000;
@@ -157,7 +159,7 @@ namespace Venus_RT.Devices
         public override double ForelinePressure => _pressureController.ForelineGauge.Value;
         public override double TargetPressure => _pressureController.TargetPressure;
         public override double LoadlockPressure => 0;
-        public override double ESCHePressure => _pressureController.ESCHeGauge.Value;
+        public override double ESCHePressure => 0;
 
         public override int ESCOutputVoltage => _ESCHV.OutputVoltage;
         public override double ESCPositiveOutputCurrent => _ESCHV.PositiveOutputCurrent;
@@ -333,6 +335,8 @@ namespace Venus_RT.Devices
             _gasLineN2 = DEVICE.GetDevice<IoGasStick>($"{Module}.GasStickN2");
             _backsideHe = DEVICE.GetDevice<IoBacksideHe>($"{Module}.BacksideHelium");
 
+            _highTemperatureHeater= DEVICE.GetDevice<IoHighTemperatureHeater>($"{Module}.HighTemperatureHeater");
+
             _MainPump = DEVICE.GetDevice<PumpBase>($"{Module}.{VenusDevice.MainPump}");
             // RS232 Dry pump, SKY
             if (SC.GetValue<int>($"{Module}.DryPump.CommunicationType") == (int)CommunicationType.RS232)

+ 1 - 0
Venus/Venus_RT/Venus_RT.csproj

@@ -140,6 +140,7 @@
     <Compile Include="Devices\IODevices\IoGasStick.cs" />
     <Compile Include="Devices\IODevices\IoHeartbeat.cs" />
     <Compile Include="Devices\IODevices\IoHeater.cs" />
+    <Compile Include="Devices\IODevices\IoHighTemperatureHeater.cs" />
     <Compile Include="Devices\IODevices\IoLid.cs" />
     <Compile Include="Devices\IODevices\IoMfc.cs" />
     <Compile Include="Devices\IODevices\IoPressureControl.cs" />

+ 90 - 96
Venus/Venus_Simulator/Config/_ioDefineKepler2200A.xml

@@ -2,7 +2,7 @@
 <IO_DEFINE xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
 
 	<!--文件根据210-0062-100_ IO LIST_KPL2200_PM_20230726.xlsx生成-->
-	<!--生成时间:08/03/2023 08:56:15-->
+	<!--生成时间:10/08/2023 10:07:36-->
 	<Dig_In>
 		<DI_ITEM Index="0" Name="DI_Lid_Closed" Device="" Addr="w20.00" />
 		<DI_ITEM Index="1" Name="DI_ATM_Switch" Device="ATM_SW" Addr="w20.01" />
@@ -24,17 +24,17 @@
 		<DI_ITEM Index="17" Name="" />
 		<DI_ITEM Index="18" Name="DI_Foreline_Pressure_10t_Guage_Alarm" Device="VG_FL" Addr="w21.02" />
 		<DI_ITEM Index="19" Name="" />
-		<DI_ITEM Index="20" Name="DI_S_Valve_TC_Deviation_out_of_range" Device="" Addr="w21.04" />
+		<DI_ITEM Index="20" Name="" Device="" Addr="" />
 		<DI_ITEM Index="21" Name="DI_S_Valve_Control_TC_Broken_Alarm" Device="" Addr="w21.05" />
-		<DI_ITEM Index="22" Name="DI_S_Valve_Monitor_TC_Broken_Alarm" Device="" Addr="w21.06" />
+		<DI_ITEM Index="22" Name="" Device="" Addr="" />
 		<DI_ITEM Index="23" Name="DI_S_Valve_Heater_On_FB" Device="" Addr="w21.07" />
-		<DI_ITEM Index="24" Name="DI_Foreline_TC_Deviation_out_of_range" Device="" Addr="w21.08" />
-		<DI_ITEM Index="25" Name="DI_Foreline_Control_TC_Broken_Alarm" Device="" Addr="w21.09" />
-		<DI_ITEM Index="26" Name="DI_Foreline_Monitor_TC_Broken_Alarm" Device="" Addr="w21.10" />
-		<DI_ITEM Index="27" Name="DI_Foreline_Heater_On_FB" Device="" Addr="w21.11" />
-		<DI_ITEM Index="28" Name="DI_CHB_Wall_TC_Deviation_out_of_range" Device="" Addr="w21.12" />
+		<DI_ITEM Index="24" Name="" Device="" Addr="" />
+		<DI_ITEM Index="25" Name="" Device="" Addr="" />
+		<DI_ITEM Index="26" Name="" Device="" Addr="" />
+		<DI_ITEM Index="27" Name="" Device="" Addr="" />
+		<DI_ITEM Index="28" Name="" Device="" Addr="" />
 		<DI_ITEM Index="29" Name="DI_CHB_H-HT_Control_TC_Broken_Alarm" Device="" Addr="w21.13" />
-		<DI_ITEM Index="30" Name="DI_CHB_Wall_Monitor_TC_Broken_Alarm" Device="" Addr="w21.14" />
+		<DI_ITEM Index="30" Name="" Device="" Addr="" />
 		<DI_ITEM Index="31" Name="DI_CHB_H-HT_Heater_On_FB" Device="" Addr="w21.15" />
 		<DI_ITEM Index="32" Name="DI_CHB_H-HT_OT_Switch_Alarm" Device="" Addr="w22.00" />
 		<DI_ITEM Index="33" Name="" />
@@ -48,7 +48,7 @@
 		<DI_ITEM Index="41" Name="DI_MFC7_Pressure_Switch" Device="PG7" Addr="w22.09" Note="Gas Box" />
 		<DI_ITEM Index="42" Name="DI_MFC8_Pressure_Switch" Device="PG8" Addr="w22.10" Note="Gas Box" />
 		<DI_ITEM Index="43" Name="DI_N2_Purge_Pressure_Switch" Device="N2_P" Addr="w22.11" Note="Gas Box" />
-		<DI_ITEM Index="44" Name="DI_ESC_He_Pressure_100t_Guage_Alarm" Device="VG_He" Addr="w22.12" Note="ESC配置" />
+		<DI_ITEM Index="44" Name="" Device="VG_He" Addr="" Note="ESC配置" />
 		<DI_ITEM Index="45" Name="" />
 		<DI_ITEM Index="46" Name="" />
 		<DI_ITEM Index="47" Name="" />
@@ -60,18 +60,18 @@
 		<DI_ITEM Index="53" Name="DI_Turbo_Pump_Water_Flow_Switch" Device="" Addr="w23.05" />
 		<DI_ITEM Index="54" Name="DI_Source_RF_Water_Flow_Switch" Device="" Addr="w23.06" />
 		<DI_ITEM Index="55" Name="" />
-		<DI_ITEM Index="56" Name="DI_P_Valve_TC_Deviation_out_of_range" Device="" Addr="w23.08" />
-		<DI_ITEM Index="57" Name="DI_P_Valve_Control_TC_Broken_Alarm" Device="" Addr="w23.09" />
-		<DI_ITEM Index="58" Name="DI_P_Valve_Monitor_TC_Broken_Alarm" Device="" Addr="w23.10" />
-		<DI_ITEM Index="59" Name="DI_P_Valve_Heater_On_FB" Device="" Addr="w23.11" />
+		<DI_ITEM Index="56" Name="" Device="" Addr="" />
+		<DI_ITEM Index="57" Name="" Device="" Addr="" />
+		<DI_ITEM Index="58" Name="" Device="" Addr="" />
+		<DI_ITEM Index="59" Name="" Device="" Addr="" />
 		<DI_ITEM Index="60" Name="" />
-		<DI_ITEM Index="61" Name="DI_Gas_Line_TC_Deviation_out_of_range" Device="" Addr="w23.13" />
+		<DI_ITEM Index="61" Name="" Device="" Addr="" />
 		<DI_ITEM Index="62" Name="DI_Gas_Line_Control_TC_Broken_Alarm" Device="" Addr="w23.14" />
-		<DI_ITEM Index="63" Name="DI_Gas_Line_Monitor_TC_Broken_Alarm" Device="" Addr="w23.15" />
+		<DI_ITEM Index="63" Name="" Device="" Addr="" />
 		<DI_ITEM Index="64" Name="DI_Gas_Line_Heater_On_FB" Device="" Addr="w24.00" />
-		<DI_ITEM Index="65" Name="DI_Gas_Line_OT_Switch_Alarm" Device="" Addr="w24.01" />
+		<DI_ITEM Index="65" Name="" Device="" Addr="" />
 		<DI_ITEM Index="66" Name="DI_S_Valve_OT_Switch_Alarm" Device="" Addr="w24.02" />
-		<DI_ITEM Index="67" Name="DI_Foreline_OT_Switch_Alarm" Device="" Addr="w24.03" />
+		<DI_ITEM Index="67" Name="" Device="" Addr="" />
 		<DI_ITEM Index="68" Name="" />
 		<DI_ITEM Index="69" Name="" />
 		<DI_ITEM Index="70" Name="" />
@@ -82,21 +82,21 @@
 		<DI_ITEM Index="75" Name="DI_Lid_Down_Limit_Pos_SW" Device="" Addr="w24.11" />
 		<DI_ITEM Index="76" Name="DI_Arm_Not_Extend_to_PM" Device="" Addr="w24.12" />
 		<DI_ITEM Index="77" Name="DI_TM_Safety_Door_Colse" Device="" Addr="w24.13" />
-		<DI_ITEM Index="78" Name="DI_ESC_Inner_Coolant_Flow_SW" Device="" Addr="w24.14" />
-		<DI_ITEM Index="79" Name="DI_ESC_Outer_Coolant_Flow_SW" Device="" Addr="w24.15" />
+		<DI_ITEM Index="78" Name="" Device="" Addr="" />
+		<DI_ITEM Index="79" Name="" Device="" Addr="" />
 		<DI_ITEM Index="80" Name="DI_Top_Plate_Coolant_Flow_SW" Device="" Addr="w25.00" />
 		<DI_ITEM Index="81" Name="" />
 		<DI_ITEM Index="82" Name="" />
 		<DI_ITEM Index="83" Name="DI_Lid_Servo_Alarm" Device="" Addr="w25.03" />
-		<DI_ITEM Index="84" Name="DI_ADAM-1_communication_Alarm" Device="" Addr="w25.04" />
-		<DI_ITEM Index="85" Name="DI_ADAM-2_communication_Alarm" Device="" Addr="w25.05" />
+		<DI_ITEM Index="84" Name="" Device="" Addr="" />
+		<DI_ITEM Index="85" Name="" Device="" Addr="" />
 		<DI_ITEM Index="86" Name="" />
-		<DI_ITEM Index="87" Name="DI_ESC_inner_coolant_inlet_TC_Broken_Alarm" Device="" Addr="w25.07" />
-		<DI_ITEM Index="88" Name="DI_ESC_inner_coolant_outlet_TC_Broken_Alarm" Device="" Addr="w25.08" />
-		<DI_ITEM Index="89" Name="DI_ESC_outer_coolant_inlet_TC_Broken_Alarm" Device="" Addr="w25.09" />
-		<DI_ITEM Index="90" Name="DI_ESC_outer_coolant_outlet_TC_Broken_Alarm" Device="" Addr="w25.10" />
-		<DI_ITEM Index="91" Name="DI_Top_Plate_coolant_inlet_TC_Broken_Alarm" Device="" Addr="w25.11" />
-		<DI_ITEM Index="92" Name="DI_Top_Plate_coolant_outlet_TC_Broken_Alarm" Device="" Addr="w25.12" />
+		<DI_ITEM Index="87" Name="" Device="" Addr="" />
+		<DI_ITEM Index="88" Name="" Device="" Addr="" />
+		<DI_ITEM Index="89" Name="" Device="" Addr="" />
+		<DI_ITEM Index="90" Name="" Device="" Addr="" />
+		<DI_ITEM Index="91" Name="" Device="" Addr="" />
+		<DI_ITEM Index="92" Name="" Device="" Addr="" />
 		<DI_ITEM Index="93" Name="" />
 		<DI_ITEM Index="94" Name="" />
 		<DI_ITEM Index="95" Name="" />
@@ -144,15 +144,15 @@
 		<DO_ITEM Index="23" Name="DO_Fast_Pumping_Valve" Device="PV3" Addr="w1.07" />
 		<DO_ITEM Index="24" Name="DO_Slit_Door_Open" Device="PV4" Addr="w1.08" />
 		<DO_ITEM Index="25" Name="DO_Slit_Door_Close" Device="PV4" Addr="w1.09" />
-    <DO_ITEM Index="26" Name="DO_Lift_Pin_Up" Device="PV5" Addr="w1.10" />
-    <DO_ITEM Index="27" Name="DO_Lift_Pin_Down" Device="PV5" Addr="w1.11" />
+		<DO_ITEM Index="26" Name="" />
+		<DO_ITEM Index="27" Name="" />
 		<DO_ITEM Index="28" Name="" />
 		<DO_ITEM Index="29" Name="DO_Turbo_Pump_Pumping_Valve" Device="PV6" Addr="w1.13" />
 		<DO_ITEM Index="30" Name="DO_Turbo_Pump_Purge_Valve" Device="PV7" Addr="w1.14" />
 		<DO_ITEM Index="31" Name="DO_Gauge_Valve" Device="PV8" Addr="w1.15" />
 		<DO_ITEM Index="32" Name="DO_Reset_Signal" Device="" Addr="w2.00" />
 		<DO_ITEM Index="33" Name="DO_S_Valve_Heater_On" Device="" Addr="w2.01" />
-		<DO_ITEM Index="34" Name="DO_Foreline_Heater_On" Device="" Addr="w2.02" />
+		<DO_ITEM Index="34" Name="" Device="" Addr="" />
 		<DO_ITEM Index="35" Name="DO_CHB_H-HT_Heater_On" Device="" Addr="w2.03" />
 		<DO_ITEM Index="36" Name="" />
 		<DO_ITEM Index="37" Name="" />
@@ -164,7 +164,7 @@
 		<DO_ITEM Index="43" Name="" />
 		<DO_ITEM Index="44" Name="" />
 		<DO_ITEM Index="45" Name="" />
-		<DO_ITEM Index="46" Name="DO_P_Valve_Heater_On" Device="" Addr="w2.14" />
+		<DO_ITEM Index="46" Name="" Device="" Addr="" />
 		<DO_ITEM Index="47" Name="DO_Gas_Line_Heater_On" Device="" Addr="w2.15" />
 		<DO_ITEM Index="48" Name="" />
 		<DO_ITEM Index="49" Name="" />
@@ -232,36 +232,36 @@
 		<DO_ITEM Index="111" Name="" />
 	</Dig_Out>
 	<Ana_Out>
-		<AO_ITEM Index="0" Name="AO_MFC1_Flow_Setpoint" Device="" Addr="d1000" Note="MFC" />
-		<AO_ITEM Index="1" Name="AO_MFC2_Flow_Setpoint" Device="" Addr="d1002" Note="MFC" />
-		<AO_ITEM Index="2" Name="AO_MFC3_Flow_Setpoint" Device="" Addr="d1004" Note="MFC" />
-		<AO_ITEM Index="3" Name="AO_MFC4_Flow_Setpoint" Device="" Addr="d1006" Note="MFC" />
-		<AO_ITEM Index="4" Name="AO_MFC5_Flow_Setpoint" Device="" Addr="d1008" Note="MFC" />
-		<AO_ITEM Index="5" Name="AO_MFC6_Flow_Setpoint" Device="" Addr="d1010" Note="MFC" />
-		<AO_ITEM Index="6" Name="AO_MFC7_Flow_Setpoint" Device="" Addr="d1012" Note="MFC" />
-		<AO_ITEM Index="7" Name="AO_MFC8_Flow_Setpoint" Device="" Addr="d1014" Note="MFC" />
-		<AO_ITEM Index="8" Name="AO_He_Flow_Setpoint" Device="" Addr="d1016" Note="MFC" />
-		<AO_ITEM Index="9" Name="AO_Turbo_Pump_N2_Flow_Setpoint" Device="" Addr="d1018" Note="MFC" />
-		<AO_ITEM Index="10" Name="AO_S_Valve_Temperature_Setpoint" Device="" Addr="d1020" Note="以前是Valve" />
-		<AO_ITEM Index="11" Name="AO_S_Valve_Temp_Limit_Setpoint" Device="" Addr="d1022" />
-		<AO_ITEM Index="12" Name="AO_Foreline_Temperature_Setpoint" Device="" Addr="d1024" Note="前级管道设定温度" />
-		<AO_ITEM Index="13" Name="AO_Foreline_Temp_Limit_Setpoint" Device="" Addr="d1026" Note="Temp Limit" />
-		<AO_ITEM Index="14" Name="AO_CHB_H-HT_Temperature_Setpoint" Device="" Addr="d1028" Note="H-HT设定温度" />
-		<AO_ITEM Index="15" Name="AO_CHB_H-HT_Temp_Limit_Setpoint" Device="" Addr="d1030" Note="H-HT极限温度设定" />
-		<AO_ITEM Index="16" Name="AO_Heartbeat" Device="" Addr="d1032" Note="PC to PLC" />
-		<AO_ITEM Index="17" Name="AO_ESC_He_Pressure_Setpoint" Device="" Addr="d1034" Note="ESC配置" />
-		<AO_ITEM Index="18" Name="AO_ESC_He_Control_Mode" Device="" Addr="d1036" />
-		<AO_ITEM Index="19" Name="AO_P_Valve_Temperature_Setpoint" Device="" Addr="d1038" Note="钟摆阀门加热设定温度" />
-		<AO_ITEM Index="20" Name="AO_P_Valve_Temp_Limit_Setpoint" Device="" Addr="d1040" Note="钟摆阀门Temp Limit" />
-		<AO_ITEM Index="21" Name="AO_Gas_Line_Temperature_Setpoint" Device="" Addr="d1042" Note="Gas Line加热设定温度" />
-		<AO_ITEM Index="22" Name="AO_Gas_Line_Temp_Limit_Setpoint" Device="" Addr="d1044" Note="Gas LineTemp Limit" />
+		<AO_ITEM Index="0"  Name="AO_MFC1_Flow_Setpoint"             BufferOffset="0" Device="" Addr="d1000" Note="MFC" />
+		<AO_ITEM Index="1"  Name="AO_MFC2_Flow_Setpoint"             BufferOffset="2" Device="" Addr="d1002" Note="MFC" />
+		<AO_ITEM Index="2"  Name="AO_MFC3_Flow_Setpoint"             BufferOffset="4" Device="" Addr="d1004" Note="MFC" />
+		<AO_ITEM Index="3"  Name="AO_MFC4_Flow_Setpoint"             BufferOffset="6" Device="" Addr="d1006" Note="MFC" />
+		<AO_ITEM Index="4"  Name="AO_MFC5_Flow_Setpoint"             BufferOffset="8" Device="" Addr="d1008" Note="MFC" />
+		<AO_ITEM Index="5"  Name="AO_MFC6_Flow_Setpoint"             BufferOffset="10" Device="" Addr="d1010" Note="MFC" />
+		<AO_ITEM Index="6"  Name="AO_MFC7_Flow_Setpoint"             BufferOffset="12" Device="" Addr="d1012" Note="MFC" />
+		<AO_ITEM Index="7"  Name="AO_MFC8_Flow_Setpoint"             BufferOffset="14" Device="" Addr="d1014" Note="MFC" />
+		<AO_ITEM Index="8"  Name="" Device="" Addr="" Note="MFC" />
+		<AO_ITEM Index="9"  Name="AO_Turbo_Pump_N2_Flow_Setpoint"    BufferOffset="18" Device="" Addr="d1018" Note="MFC" />
+		<AO_ITEM Index="10" Name="AO_S_Valve_Temperature_Setpoint"   BufferOffset="20" Device="" Addr="d1020" Note="以前是Valve" />
+		<AO_ITEM Index="11" Name="AO_S_Valve_Temp_Limit_Setpoint"    BufferOffset="22" Device="" Addr="d1022" />
+		<AO_ITEM Index="12" Name="" Device="" Addr="" Note="前级管道设定温度" />
+		<AO_ITEM Index="13" Name="" Device="" Addr="" Note="Temp Limit" />
+		<AO_ITEM Index="14" Name="AO_CHB_H-HT_Temperature_Setpoint"  BufferOffset="28" Device="" Addr="d1028" Note="H-HT设定温度" />
+		<AO_ITEM Index="15" Name="AO_CHB_H-HT_Temp_Limit_Setpoint"   BufferOffset="30" Device="" Addr="d1030" Note="H-HT极限温度设定" />
+		<AO_ITEM Index="16" Name="AO_Heartbeat" Device=""            BufferOffset="32" Addr="d1032" Note="PC to PLC" />
+		<AO_ITEM Index="17" Name="" Device="" Addr="" Note="ESC配置" />
+		<AO_ITEM Index="18" Name="" Device="" Addr="" />
+		<AO_ITEM Index="19" Name="" Device="" Addr="" Note="钟摆阀门加热设定温度" />
+		<AO_ITEM Index="20" Name="" Device="" Addr="" Note="钟摆阀门Temp Limit" />
+		<AO_ITEM Index="21" Name="AO_Gas_Line_Temperature_Setpoint" BufferOffset="42" Device="" Addr="d1042" Note="Gas Line加热设定温度" />
+		<AO_ITEM Index="22" Name="AO_Gas_Line_Temp_Limit_Setpoint"  BufferOffset="44" Device="" Addr="d1044" Note="Gas LineTemp Limit" />
 		<AO_ITEM Index="23" Name="" />
 		<AO_ITEM Index="24" Name="" />
 		<AO_ITEM Index="25" Name="" />
 		<AO_ITEM Index="26" Name="" />
 		<AO_ITEM Index="27" Name="" />
 		<AO_ITEM Index="28" Name="" />
-		<AO_ITEM Index="29" Name="AO_CHB_H-HT_Power_Distribute_Percent" Device="" Addr="d1058" />
+		<AO_ITEM Index="29" Name="AO_CHB_H-HT_Power_Distribute_Percent" BufferOffset="58" Device="" Addr="d1058" />
 		<AO_ITEM Index="30" Name="" />
 		<AO_ITEM Index="31" Name="" />
 		<AO_ITEM Index="32" Name="" />
@@ -284,52 +284,52 @@
 		<AO_ITEM Index="49" Name="" />
 	</Ana_Out>
 	<Ana_In>
-		<AI_ITEM Index="0" Name="AI_Chamber_Pressure_10t" Device="" Addr="d2000" Note="float" />
-		<AI_ITEM Index="1" Name="AI_Process_Pressure_100mt" Device="" Addr="d2002" Note="float" />
-		<AI_ITEM Index="2" Name="AI_Foreline_Pressure_10t" Device="" Addr="d2004" Note="float" />
-		<AI_ITEM Index="3" Name="AI_ESC_He_Pressure_100t" Device="" Addr="d2006" Note="float" />
-		<AI_ITEM Index="4" Name="AI_MFC1_Flow" Device="" Addr="d2008" Note="float" />
-		<AI_ITEM Index="5" Name="AI_MFC2_Flow" Device="" Addr="d2010" Note="float" />
-		<AI_ITEM Index="6" Name="AI_MFC3_Flow" Device="" Addr="d2012" Note="float" />
-		<AI_ITEM Index="7" Name="AI_MFC4_Flow" Device="" Addr="d2014" Note="float" />
-		<AI_ITEM Index="8" Name="AI_MFC5_Flow" Device="" Addr="d2016" Note="float" />
-		<AI_ITEM Index="9" Name="AI_MFC6_Flow" Device="" Addr="d2018" Note="float" />
-		<AI_ITEM Index="10" Name="AI_MFC7_Flow" Device="" Addr="d2020" Note="float" />
-		<AI_ITEM Index="11" Name="AI_MFC8_Flow" Device="" Addr="d2022" Note="float" />
-		<AI_ITEM Index="12" Name="AI_ESC_He_Flow" Device="" Addr="d2024" Note="float" />
-		<AI_ITEM Index="13" Name="AI_Turbo_Pump_N2_Flow" Device="" Addr="d2026" Note="float" />
-		<AI_ITEM Index="14" Name="AI_S_Valve_Control_TC_Temp" Device="" Addr="d2028" Note="float" />
+		<AI_ITEM Index="0" Name="AI_Chamber_Pressure_10t"                BufferOffset="0" Device="" Addr="d2000" Note="float" />
+		<AI_ITEM Index="1" Name="AI_Process_Pressure_100mt" Device=""    BufferOffset="2" Addr="d2002" Note="float" />
+		<AI_ITEM Index="2" Name="AI_Foreline_Pressure_10t" Device=""     BufferOffset="4" Addr="d2004" Note="float" />
+		<AI_ITEM Index="3" Name="" Device="" Addr="" Note="float" />
+		<AI_ITEM Index="4" Name="AI_MFC1_Flow"                           BufferOffset="8" Device="" Addr="d2008" Note="float" />
+		<AI_ITEM Index="5" Name="AI_MFC2_Flow"                           BufferOffset="10" Device="" Addr="d2010" Note="float" />
+		<AI_ITEM Index="6" Name="AI_MFC3_Flow"                           BufferOffset="12" Device="" Addr="d2012" Note="float" />
+		<AI_ITEM Index="7" Name="AI_MFC4_Flow"                           BufferOffset="14" Device="" Addr="d2014" Note="float" />
+		<AI_ITEM Index="8" Name="AI_MFC5_Flow"                           BufferOffset="16" Device="" Addr="d2016" Note="float" />
+		<AI_ITEM Index="9" Name="AI_MFC6_Flow"                           BufferOffset="18" Device="" Addr="d2018" Note="float" />
+		<AI_ITEM Index="10" Name="AI_MFC7_Flow"                          BufferOffset="20"  Device="" Addr="d2020" Note="float" />
+		<AI_ITEM Index="11" Name="AI_MFC8_Flow"                          BufferOffset="22" Device="" Addr="d2022" Note="float" />
+		<AI_ITEM Index="12" Name=""                                      BufferOffset="0" Device="" Addr="" Note="float" />
+		<AI_ITEM Index="13" Name="AI_Turbo_Pump_N2_Flow"                 BufferOffset="26" Device="" Addr="d2026" Note="float" />
+		<AI_ITEM Index="14" Name="AI_S_Valve_Control_TC_Temp"            BufferOffset="28" Device="" Addr="d2028" Note="float" />
 		<AI_ITEM Index="15" Name="" />
-		<AI_ITEM Index="16" Name="AI_Foreline_Control_TC_Temp" Device="" Addr="d2032" Note="float" />
+		<AI_ITEM Index="16" Name="" Device=""                            BufferOffset="0" Addr="" Note="float" />
 		<AI_ITEM Index="17" Name="" />
-		<AI_ITEM Index="18" Name="AI_CHB_H-HT_Control_TC_Temp" Device="" Addr="d2036" Note="float" />
+		<AI_ITEM Index="18" Name="AI_CHB_H-HT_Control_TC_Temp"           BufferOffset="36" Device="" Addr="d2036" Note="float" />
 		<AI_ITEM Index="19" Name="" />
 		<AI_ITEM Index="20" Name="" />
 		<AI_ITEM Index="21" Name="" />
-		<AI_ITEM Index="22" Name="AI_Heartbeat_FB" Device="" Addr="d2044" Note="float" />
-		<AI_ITEM Index="23" Name="AI_Second" Device="" Addr="d2046" Note="float" />
-		<AI_ITEM Index="24" Name="AI_Minute" Device="" Addr="d2048" Note="float" />
-		<AI_ITEM Index="25" Name="AI_Time" Device="" Addr="d2050" Note="float" />
-		<AI_ITEM Index="26" Name="AI_Day" Device="" Addr="d2052" Note="float" />
-		<AI_ITEM Index="27" Name="AI_Month" Device="" Addr="d2054" Note="float" />
-		<AI_ITEM Index="28" Name="AI_Year" Device="" Addr="d2056" Note="float" />
+		<AI_ITEM Index="22" Name="AI_Heartbeat_FB"                       BufferOffset="44" Device="" Addr="d2044" Note="float" />
+		<AI_ITEM Index="23" Name="AI_Second"                             BufferOffset="46" Device="" Addr="d2046" Note="float" />
+		<AI_ITEM Index="24" Name="AI_Minute"                             BufferOffset="48" Device="" Addr="d2048" Note="float" />
+		<AI_ITEM Index="25" Name="AI_Time"                               BufferOffset="50" Device="" Addr="d2050" Note="float" />
+		<AI_ITEM Index="26" Name="AI_Day"                                BufferOffset="52" Device="" Addr="d2052" Note="float" />
+		<AI_ITEM Index="27" Name="AI_Month"                              BufferOffset="54" Device="" Addr="d2054" Note="float" />
+		<AI_ITEM Index="28" Name="AI_Year"                               BufferOffset="56" Device="" Addr="d2056" Note="float" />
 		<AI_ITEM Index="29" Name="" />
 		<AI_ITEM Index="30" Name="" />
-		<AI_ITEM Index="31" Name="AI_Chamber_Pressure_Virtual" Device="" Addr="d2062" Note="float" />
-		<AI_ITEM Index="32" Name="AI_P_Valve_Control_TC_Temp" Device="" Addr="d2064" Note="float" />
-		<AI_ITEM Index="33" Name="AI_Gas_Line_Control_TC_Temp" Device="" Addr="d2066" Note="float" />
+		<AI_ITEM Index="31" Name="AI_Chamber_Pressure_Virtual"           BufferOffset="62" Device="" Addr="d2062" Note="float" />
+		<AI_ITEM Index="32" Name=""                                      BufferOffset="0" Device="" Addr="" Note="float" />
+		<AI_ITEM Index="33" Name="AI_Gas_Line_Control_TC_Temp"           BufferOffset="66" Device="" Addr="d2066" Note="float" />
 		<AI_ITEM Index="34" Name="" />
-		<AI_ITEM Index="35" Name="AI_S_Valve_Monitor_TC1_Temp" Device="" Addr="d2070" Note="float" />
+		<AI_ITEM Index="35" Name="" Device=""                            BufferOffset="0" Addr="" Note="float" />
 		<AI_ITEM Index="36" Name="" />
 		<AI_ITEM Index="37" Name="" />
 		<AI_ITEM Index="38" Name="" />
-		<AI_ITEM Index="39" Name="AI_Foreline_Monitor_TC1_Temp" Device="" Addr="d2078" Note="float" />
-		<AI_ITEM Index="40" Name="AI_Foreline_Monitor_TC2_Temp" Device="" Addr="d2080" Note="float" />
-		<AI_ITEM Index="41" Name="AI_Foreline_Monitor_TC3_Temp" Device="" Addr="d2082" Note="float" />
+		<AI_ITEM Index="39" Name="" Device="" Addr="" Note="float" />
+		<AI_ITEM Index="40" Name="" Device="" Addr="" Note="float" />
+		<AI_ITEM Index="41" Name="" Device="" Addr="" Note="float" />
 		<AI_ITEM Index="42" Name="" />
-		<AI_ITEM Index="43" Name="AI_CHB_Wall_Monitor_TC1_Temp" Device="" Addr="d2086" Note="float" />
-		<AI_ITEM Index="44" Name="AI_CHB_Wall_Monitor_TC2_Temp" Device="" Addr="d2088" Note="float" />
-		<AI_ITEM Index="45" Name="AI_CHB_Wall_Monitor_TC3_Temp" Device="" Addr="d2090" Note="float" />
+		<AI_ITEM Index="43" Name="" Device="" Addr="" Note="float" />
+		<AI_ITEM Index="44" Name="" Device="" Addr="" Note="float" />
+		<AI_ITEM Index="45" Name="" Device="" Addr="" Note="float" />
 		<AI_ITEM Index="46" Name="" />
 		<AI_ITEM Index="47" Name="" />
 		<AI_ITEM Index="48" Name="" />
@@ -337,11 +337,5 @@
 		<AI_ITEM Index="50" Name="" />
 		<AI_ITEM Index="51" Name="" />
 		<AI_ITEM Index="52" Name="" />
-		<AI_ITEM Index="53" Name="AI_ESC_inner_coolant_inlet_TC_Temp" Device="" Addr="d2106" Note="float" />
-		<AI_ITEM Index="54" Name="AI_ESC_inner_coolant_outlet_TC_Temp" Device="" Addr="d2108" Note="float" />
-		<AI_ITEM Index="55" Name="AI_ESC_outer_coolant_inlet_TC_Temp" Device="" Addr="d2110" Note="float" />
-		<AI_ITEM Index="56" Name="AI_ESC_outer_coolant_outlet_TC_Temp" Device="" Addr="d2112" Note="float" />
-		<AI_ITEM Index="57" Name="AI_Top_Plate_coolant_inlet_TC_Temp" Device="" Addr="d2114" Note="float" />
-		<AI_ITEM Index="58" Name="AI_Top_Plate_coolant_outlet_TC_Temp" Device="" Addr="d2116" Note="float" />
 	</Ana_In>
 </IO_DEFINE>

+ 94 - 177
Venus/Venus_Simulator/Instances/SimulatorSystem.cs

@@ -34,7 +34,7 @@ namespace Venus_Simulator.Instances
 
         private Dictionary<ModuleName, DeviceSimulator> _MockDevices = new Dictionary<ModuleName, DeviceSimulator>();
 
-
+        private Dictionary<ModuleName,JetChamber> jetChambers = new Dictionary<ModuleName,JetChamber>();
         public SimulatorSystem()
         {
             //_MockDevices.Add(ModuleName.PMB, new SkyPumpMock());
@@ -42,7 +42,11 @@ namespace Venus_Simulator.Instances
             //_MockDevices.Add(ModuleName.PMB, new AdTecMatchMock());
 
             // TODO
-            
+            jetChambers.Add(ModuleName.PMA, SimulatorJetChamber.CurrentPMAChamber);
+            jetChambers.Add(ModuleName.PMB, SimulatorJetChamber.CurrentPMBChamber);
+            jetChambers.Add(ModuleName.PMC, SimulatorJetChamber.CurrentPMCChamber);
+            jetChambers.Add(ModuleName.PMD, SimulatorJetChamber.CurrentPMDChamber);
+
         }
 
         ~SimulatorSystem()
@@ -276,8 +280,6 @@ namespace Venus_Simulator.Instances
 
                     IO.DI[$"{mod}.DI_Water_Leak_Sensor"].Value = true;
 
-                    IO.DI[$"{mod}.DI_Lift_Pin_Up_POS"].Value = false;
-                    IO.DI[$"{mod}.DI_Lift_Pin_Down_POS"].Value = true;
                     IO.DI[$"{mod}.DI_Source_RF_Generator_Interlock"].Value = true;
                     IO.DI[$"{mod}.DI_Source_RF_Fan"].Value = true;
                     IO.DI[$"{mod}.DI_Turbo_Pump_Interlock"].Value = true;
@@ -286,21 +288,12 @@ namespace Venus_Simulator.Instances
                     IO.DI[$"{mod}.DI_Slit_Door_Open_POS"].Value = false;
                     IO.DI[$"{mod}.DI_Slit_Door_Close_POS"].Value = true;
                     IO.DI[$"{mod}.DI_CDA_Pressure_Switch"].Value = true;
+                                     
 
-                    IO.DI[$"{mod}.DI_S_Valve_TC_Deviation_out_of_range"].Value = false;
-                    IO.DI[$"{mod}.DI_S_Valve_Control_TC_Broken_Alarm"].Value = false;
-                    IO.DI[$"{mod}.DI_S_Valve_Monitor_TC_Broken_Alarm"].Value = false;
-                    IO.DI[$"{mod}.DI_S_Valve_Heater_On_FB"].Value = false;
-
-                    IO.DI[$"{mod}.DI_Foreline_TC_Deviation_out_of_range"].Value = false;
-                    IO.DI[$"{mod}.DI_Foreline_Control_TC_Broken_Alarm"].Value = false;
-                    IO.DI[$"{mod}.DI_Foreline_Monitor_TC_Broken_Alarm"].Value = false;
-                    IO.DI[$"{mod}.DI_Foreline_Heater_On_FB"].Value = false;
-
-                    IO.DI[$"{mod}.DI_CHB_Wall_TC_Deviation_out_of_range"].Value = false;
+                    
                     IO.DI[$"{mod}.DI_CHB_H-HT_Control_TC_Broken_Alarm"].Value = false;
 
-                    IO.DI[$"{mod}.DI_CHB_Wall_Monitor_TC_Broken_Alarm"].Value = false;
+                    
                     IO.DI[$"{mod}.DI_CHB_H-HT_Heater_On_FB"].Value = false;
                     IO.DI[$"{mod}.DI_CHB_H-HT_OT_Switch_Alarm"].Value = false;
                     IO.DI[$"{mod}.DI_PN2_Pressure_Switch"].Value = true;
@@ -315,7 +308,7 @@ namespace Venus_Simulator.Instances
                     IO.DI[$"{mod}.DI_MFC7_Pressure_Switch"].Value = true;
                     IO.DI[$"{mod}.DI_MFC8_Pressure_Switch"].Value = true;
                     IO.DI[$"{mod}.DI_N2_Purge_Pressure_Switch"].Value = true;
-                    IO.DI[$"{mod}.DI_ESC_He_Pressure_100t_Guage_Alarm"].Value = false;
+
 
                     IO.DI[$"{mod}.DI_Gas_Box_Door_Switch"].Value = true;
                     IO.DI[$"{mod}.DI_Lid_Up_Limit_Pos_SW"].Value = true;
@@ -323,8 +316,7 @@ namespace Venus_Simulator.Instances
                     IO.DI[$"{mod}.DI_Lid_Down_Limit_Pos_SW"].Value = true;
                     IO.DI[$"{mod}.DI_Gas_Box_Pressure_Switch"].Value = true;
                     IO.DI[$"{mod}.DI_TM_Safety_Door_Colse"].Value = true;
-                    IO.DI[$"{mod}.DI_ESC_Inner_Coolant_Flow_SW"].Value = true;
-                    IO.DI[$"{mod}.DI_ESC_Outer_Coolant_Flow_SW"].Value = true;
+                    
                     IO.DI[$"{mod}.DI_Arm_Not_Extend_to_PM"].Value = true;
                     IO.DI[$"{mod}.DI_Source_RF_Water_Flow_Switch"].Value = true;
                     //// pressure
@@ -337,7 +329,7 @@ namespace Venus_Simulator.Instances
 
                     SetAiValue($"{mod}.AI_S_Valve_Control_TC_Temp", 28);
 
-                    SetAiValue($"{mod}.AI_Foreline_Control_TC_Temp", 28);
+                   
 
                     SetAiValue($"{mod}.AI_CHB_H-HT_Control_TC_Temp", 28);
 
@@ -425,163 +417,50 @@ namespace Venus_Simulator.Instances
         {
             try
             {
-
-                switch (SimulatorJetChamber.CurrentPMAChamber)
+                foreach (var item in jetChambers)
                 {
-                    case JetChamber.Venus:
-                        // PMA
-                        MonitorSlitDoor(ModuleName.PMA);
-                        MonitorPin(ModuleName.PMA);
-                        MonitorPressure(ModuleName.PMA);
-                        MonitorExtendAndRetract(ModuleName.PMA);
-                        //MonitorTemperature(ModuleName.PMA);
-                        MonitorGas(ModuleName.PMA);
-                        //MonitorRF(ModuleName.PMA);
-                        ChangeTime(ModuleName.PMA);
-                        //MonitorIOPumpCtrl(ModuleName.PMA);
-                        break;
-                    case JetChamber.Kepler2300:                 
-                    case JetChamber.Kepler2200B:
-                        // PMA
-                        MonitorSlitDoor(ModuleName.PMA);
-                        MonitorPin(ModuleName.PMA);
-                        MonitorPressure_Kepler(ModuleName.PMA);
-
-                        //MonitorTemperature(ModuleName.PMA);
-                        MonitorGas(ModuleName.PMA);
-                        //MonitorRF(ModuleName.PMA);
-                        ChangeTime(ModuleName.PMA);
-                        //MonitorIOPumpCtrl(ModuleName.PMA);
-                        MonitorLid(ModuleName.PMA);
-                        break;
-                    case JetChamber.Kepler2200A:
-                        MonitorSlitDoor(ModuleName.PMC);
-                        MonitorPin(ModuleName.PMC);
-                        MonitorPressure_Kepler2200A(ModuleName.PMC);
-                        //MonitorTemperature(ModuleName.PMB);
-                        MonitorGas(ModuleName.PMC);
-                        // MonitorRF(ModuleName.PMB);
-                        ChangeTime(ModuleName.PMC);
-                        //MonitorIOPumpCtrl(ModuleName.PMB);
-                        MonitorLid(ModuleName.PMC);
-                        break;
-                }
-                switch (SimulatorJetChamber.CurrentPMBChamber)
-                {
-                    case JetChamber.Venus:
-                        // PMB
-                        MonitorSlitDoor(ModuleName.PMB);
-                        MonitorPin(ModuleName.PMB);
-                        MonitorPressure(ModuleName.PMB);
-                        //MonitorTemperature(ModuleName.PMB);
-                        MonitorGas(ModuleName.PMB);
-                        // MonitorRF(ModuleName.PMB);
-                        ChangeTime(ModuleName.PMB);
-                        //MonitorIOPumpCtrl(ModuleName.PMB);
-                        break;
-
-                    case JetChamber.Kepler2300:                  
-                    case JetChamber.Kepler2200B:
-                        // PMB
-                        MonitorSlitDoor(ModuleName.PMB);
-                        MonitorPin(ModuleName.PMB);
-                        MonitorPressure_Kepler(ModuleName.PMB);
-                        //MonitorTemperature(ModuleName.PMB);
-                        MonitorGas(ModuleName.PMB);
-                        // MonitorRF(ModuleName.PMB);
-                        ChangeTime(ModuleName.PMB);
-                        //MonitorIOPumpCtrl(ModuleName.PMB);
-                        MonitorLid(ModuleName.PMB);
-                        break;
-                    case JetChamber.Kepler2200A:
-                        MonitorSlitDoor(ModuleName.PMC);
-                        MonitorPin(ModuleName.PMC);
-                        MonitorPressure_Kepler2200A(ModuleName.PMC);
-                        //MonitorTemperature(ModuleName.PMB);
-                        MonitorGas(ModuleName.PMC);
-                        // MonitorRF(ModuleName.PMB);
-                        ChangeTime(ModuleName.PMC);
-                        //MonitorIOPumpCtrl(ModuleName.PMB);
-                        MonitorLid(ModuleName.PMC);
-                        break;
-                }
-                switch (SimulatorJetChamber.CurrentPMCChamber)
-                {
-                    case JetChamber.Venus:
-                        // PMC
-                        MonitorSlitDoor(ModuleName.PMC);
-                        MonitorPin(ModuleName.PMC);
-                        MonitorPressure(ModuleName.PMC);
-                        //MonitorTemperature(ModuleName.PMB);
-                        MonitorGas(ModuleName.PMC);
-                        // MonitorRF(ModuleName.PMB);
-                        ChangeTime(ModuleName.PMC);
-                        //MonitorIOPumpCtrl(ModuleName.PMB);
-                        break;
-
-                    case JetChamber.Kepler2300:                    
-                    case JetChamber.Kepler2200B:
-                        // PMC
-                        MonitorSlitDoor(ModuleName.PMC);
-                        MonitorPin(ModuleName.PMC);
-                        MonitorPressure_Kepler(ModuleName.PMC);
-                        //MonitorTemperature(ModuleName.PMB);
-                        MonitorGas(ModuleName.PMC);
-                        // MonitorRF(ModuleName.PMB);
-                        ChangeTime(ModuleName.PMC);
-                        //MonitorIOPumpCtrl(ModuleName.PMB);
-                        MonitorLid(ModuleName.PMC);
-                        break;
-                    case JetChamber.Kepler2200A:
-                        MonitorSlitDoor(ModuleName.PMC);
-                        MonitorPin(ModuleName.PMC);
-                        MonitorPressure_Kepler2200A(ModuleName.PMC);
-                        //MonitorTemperature(ModuleName.PMB);
-                        MonitorGas(ModuleName.PMC);
-                        // MonitorRF(ModuleName.PMB);
-                        ChangeTime(ModuleName.PMC);
-                        //MonitorIOPumpCtrl(ModuleName.PMB);
-                        MonitorLid(ModuleName.PMC);
-                        break;
-                }
-                switch (SimulatorJetChamber.CurrentPMDChamber)
-                {
-                    case JetChamber.Venus:
-                        // PMD
-                        MonitorSlitDoor(ModuleName.PMD);
-                        MonitorPin(ModuleName.PMD);
-                        MonitorPressure(ModuleName.PMD);
-                        //MonitorTemperature(ModuleName.PMB);
-                        MonitorGas(ModuleName.PMD);
-                        // MonitorRF(ModuleName.PMB);
-                        ChangeTime(ModuleName.PMD);
-                        //MonitorIOPumpCtrl(ModuleName.PMB);
-                        break;
-
-                    case JetChamber.Kepler2300:                  
-                    case JetChamber.Kepler2200B:
-                        // PMD
-                        MonitorSlitDoor(ModuleName.PMD);
-                        MonitorPin(ModuleName.PMD);
-                        MonitorPressure_Kepler(ModuleName.PMD);
-                        //MonitorTemperature(ModuleName.PMB);
-                        MonitorGas(ModuleName.PMD);
-                        // MonitorRF(ModuleName.PMB);
-                        ChangeTime(ModuleName.PMD);
-                        //MonitorIOPumpCtrl(ModuleName.PMB);
-                        MonitorLid(ModuleName.PMD);
-                        break;
-                    case JetChamber.Kepler2200A:
-                        MonitorSlitDoor(ModuleName.PMC);
-                        MonitorPin(ModuleName.PMC);
-                        MonitorPressure_Kepler2200A(ModuleName.PMC);
-                        //MonitorTemperature(ModuleName.PMB);
-                        MonitorGas(ModuleName.PMC);
-                        // MonitorRF(ModuleName.PMB);
-                        ChangeTime(ModuleName.PMC);
-                        //MonitorIOPumpCtrl(ModuleName.PMB);
-                        MonitorLid(ModuleName.PMC);
-                        break;
+                    switch (item.Value)
+                    {
+                        case JetChamber.Venus:
+                            MonitorSlitDoor(item.Key);
+                            MonitorPin(item.Key);
+                            MonitorPressure(item.Key);
+                            MonitorExtendAndRetract(item.Key);
+                            MonitorGas(item.Key);
+                            this.SimulateHe(item.Key);
+
+                            //MonitorRF(item.Key);
+                            ChangeTime(item.Key);
+                            //MonitorIOPumpCtrl(item.Key);
+                            break;
+                        case JetChamber.Kepler2300:
+                            MonitorSlitDoor(item.Key);
+                            MonitorPin(item.Key);
+                            MonitorPressure_Kepler(item.Key);
+
+                            //MonitorTemperature(item.Key);
+                            MonitorGas(item.Key);
+                            this.SimulateHe(item.Key);
+
+                            //MonitorRF(item.Key);
+                            ChangeTime(item.Key);
+                            //MonitorIOPumpCtrl(item.Key);
+                            MonitorLid(item.Key);
+                            break;
+                        case JetChamber.Kepler2200A:
+                            MonitorSlitDoor(item.Key);
+                            MonitorPressure_Kepler2200A(item.Key);
+                            //MonitorTemperature(item.Key);
+                            MonitorGas(item.Key);
+                            // MonitorRF(item.Key);
+                            ChangeTime(item.Key);
+                            //MonitorIOPumpCtrl(item.Key);
+                            MonitorLid(item.Key);
+                            MonitorIOHighTemperatureHeater(item.Key);
+                            break;
+                        case JetChamber.Kepler2200B:
+                            break;
+                    }
                 }
 
                 ChangeTime(ModuleName.TM);
@@ -1608,7 +1487,6 @@ namespace Venus_Simulator.Instances
             this.SimulateMFC(mod, 7);
             this.SimulateMFC(mod, 8);
             this.SimulateN2(mod);
-            this.SimulateHe(mod);
         }
 
         private void SimulateMFC(ModuleName mod, byte gasNum)
@@ -1657,6 +1535,45 @@ namespace Venus_Simulator.Instances
             if (IO.DO[$"{mod}.DO_Pump_Run"].Value) IO.DI[$"{mod}.DI_Dry_Pump_Running"].Value = true;
             if (IO.DO[$"{mod}.DO_Pump_Stop"].Value) IO.DI[$"{mod}.DI_Dry_Pump_Running"].Value = false;
         }
+        void MonitorIOHighTemperatureHeater(ModuleName mod)
+        {
+            if (IO.DO[$"{mod}.DO_Lift_Servo_Go_Position1"].Value)
+            {
+                IO.DI[$"{mod}.DI_Lift_Servo_Go_Position1_Complete"].Value = true;
+                IO.DI[$"{mod}.DI_Lift_Servo_Go_Position2_Complete"].Value = false;
+                IO.DI[$"{mod}.DI_Lift_Servo_Go_Position3_Complete"].Value = false;
+                IO.DI[$"{mod}.DI_Lift_Servo_with_origin"].Value = false;
+            }
+            if (IO.DO[$"{mod}.DO_Lift_Servo_Go_Position2"].Value)
+            {
+                IO.DI[$"{mod}.DI_Lift_Servo_Go_Position1_Complete"].Value = false;
+                IO.DI[$"{mod}.DI_Lift_Servo_Go_Position2_Complete"].Value = true;
+                IO.DI[$"{mod}.DI_Lift_Servo_Go_Position3_Complete"].Value = false;
+                IO.DI[$"{mod}.DI_Lift_Servo_with_origin"].Value = false;
+            }
+            if (IO.DO[$"{mod}.DO_Lift_Servo_Go_Position3"].Value)
+            {
+                IO.DI[$"{mod}.DI_Lift_Servo_Go_Position1_Complete"].Value = false;
+                IO.DI[$"{mod}.DI_Lift_Servo_Go_Position2_Complete"].Value = false;
+                IO.DI[$"{mod}.DI_Lift_Servo_Go_Position3_Complete"].Value = true;
+                IO.DI[$"{mod}.DI_Lift_Servo_with_origin"].Value = false;
+            }
+            if (IO.DO[$"{mod}.DO_Lift_Servo_Origin"].Value)
+            {
+                IO.DI[$"{mod}.DI_Lift_Servo_Go_Position1_Complete"].Value = false;
+                IO.DI[$"{mod}.DI_Lift_Servo_Go_Position2_Complete"].Value = false;
+                IO.DI[$"{mod}.DI_Lift_Servo_Go_Position3_Complete"].Value = false;
+                IO.DI[$"{mod}.DI_Lift_Servo_with_origin"].Value = true;
+            }
+
+            IO.DI[$"{mod}.DI_CHB_H-HT_Heater_On_FB"].Value = IO.DO[$"{mod}.DO_CHB_H-HT_Heater_On"].Value;
+
+            var sp = GetAoValue($"{mod}.AO_CHB_H-HT_Temperature_Setpoint");
+            var mock_fb = _rd.Next((int)sp - 1, (int)sp + 1) + _rd.NextDouble();
+
+            //var mock_sp = _rd.Next(sp - 3, sp + 3);
+            SetAiValue($"{mod}.AI_CHB_H-HT_Control_TC_Temp", (float)mock_fb);
+        }
 
         public void Terminate()
         {

+ 18 - 11
Venus/Venus_UI/Config/UIMenu.json

@@ -1,6 +1,7 @@
 [
   {
     "Id": "Operation",
+    "Name": "Operation",
     "IsShow": "true",
 
     "MenuItem": [
@@ -23,12 +24,6 @@
         "View": "SequenceView"
       },
       {
-        "Id": "Efem",
-        "IsShow": "true",
-        "Name": "EFEM",
-        "View": "EfemView"
-      },
-      {
         "Id": "Fa",
         "IsShow": "true",
         "Name": "FA",
@@ -36,9 +31,10 @@
       }
     ]
   },
-
   {
     "Id": "PMA",
+    "Name": "PMA",
+
     "IsShow": "true",
     "MenuItem": [
       {
@@ -98,6 +94,7 @@
   },
   {
     "Id": "PMB",
+    "Name": "PMB",
     "IsShow": "true",
 
     "MenuItem": [
@@ -153,6 +150,7 @@
   },
   {
     "Id": "PMC",
+    "Name": "PMC",
     "IsShow": "true",
     "MenuItem": [
       {
@@ -202,7 +200,7 @@
   },
   {
     "Id": "PMD",
-
+    "Name": "PMD",
     "IsShow": "true",
 
     "MenuItem": [
@@ -254,23 +252,30 @@
   },
   {
     "Id": "TM",
+    "Name": "Transfer",
     "IsShow": "true",
     "MenuItem": [
       {
+        "Id": "Efem",
+        "IsShow": "true",
+        "Name": "EFEM",
+        "View": "EfemView"
+      },
+      {
         "Id": "TMOperation",
         "IsShow": "true",
-        "Name": "TMOperation",
+        "Name": "TM Operation",
         "View": "TMOperationView"
       },
       {
         "Id": "TMTransfer",
         "IsShow": "true",
-        "Name": "TMTransfer",
+        "Name": "TM Transfer",
         "View": "TMView"
       },
       {
         "Id": "IO",
-        "Name": "IO",
+        "Name": "TM IO",
         "View": "IOView",
         "IsShow": "true"
       },
@@ -285,6 +290,7 @@
   },
   {
     "Id": "Configuration",
+    "Name": "Configuration",
     "IsShow": "true",
     "MenuItem": [
       {
@@ -303,6 +309,7 @@
   },
   {
     "Id": "DataLog",
+    "Name": "DataLog",
     "IsShow": "true",
     "MenuItem": [
       {

+ 1 - 1
Venus/Venus_UI/Views/ShellView.xaml

@@ -8,7 +8,7 @@
         WindowStartupLocation="CenterScreen"
         xmlns:prism="http://prismlibrary.com/"
         mc:Ignorable="d"
-        Title="JetPlasma" Height="450" Width="800" Loaded="CustomWnd_Loaded" Closed="CustomWnd_Closed">
+        Title="" Height="450" Width="800" Loaded="CustomWnd_Loaded" Closed="CustomWnd_Closed">
     <Window.Resources>
        
 

+ 1 - 1
Venus/Venus_UI/Views/ShellView.xaml.cs

@@ -117,7 +117,7 @@ namespace Venus_UI.Views
                     aduRadioButtonIcon.IsChecked = true;
                 }
                 IconElement.SetPathData(aduRadioButtonIcon,(Geometry)aduRadioButtonIcon.FindResource($"Icon_{VenusMenu[i].Id}"));
-                aduRadioButtonIcon.Content = VenusMenu[i].Id;
+                aduRadioButtonIcon.Content = VenusMenu[i].Name;
                 aduRadioButtonIcon.Click += AduRadioButtonIcon_Click;
                 aduRadioButtonIcon.SelectBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#6AD7FF"));
                 aduRadioButtonIcon.SelectColor = new SolidColorBrush((Colors.Black));