ソースを参照

1.kepler2300 添加三个chiller功能(模拟器功能暂无)
2.优化Recipe已知bug

# Conflicts:
# Venus/Venus_MainPages/Views/OverKepler2300View.xaml

lixiang 1 年間 前
コミット
124b11b9f3
共有26 個のファイルを変更した497 個の追加108 個の削除を含む
  1. 1 1
      Venus/Framework/Common/IOCore/IoProviderManager.cs
  2. 1 1
      Venus/Framework/SequenceControl/SequenceControl.csproj
  3. 8 0
      Venus/Venus_Core/DeviceName.cs
  4. 4 0
      Venus/Venus_Core/VenusDevice.cs
  5. 2 2
      Venus/Venus_MainPages/ViewModels/OverKepler2200AViewModel.cs
  6. 73 14
      Venus/Venus_MainPages/ViewModels/OverKepler2300ViewModel.cs
  7. 2 2
      Venus/Venus_MainPages/ViewModels/OverVenusViewModel.cs
  8. 71 27
      Venus/Venus_MainPages/ViewModels/RecipeViewModel.cs
  9. 1 1
      Venus/Venus_MainPages/ViewModels/RoleViewModel.cs
  10. 1 1
      Venus/Venus_MainPages/ViewModels/TopViewModel.cs
  11. 35 24
      Venus/Venus_MainPages/Views/OverKepler2300View.xaml
  12. 15 9
      Venus/Venus_MainPages/Views/OverVenusView.xaml
  13. 1 1
      Venus/Venus_MainPages/Views/TopView.xaml
  14. 1 1
      Venus/Venus_RT/Config/IoProviderConfig.xml
  15. BIN
      Venus/Venus_RT/Config/PM/Kepler2300/Kepler2300DeviceModel.xml
  16. BIN
      Venus/Venus_RT/Config/PM/Venus/VenusDeviceModel.xml
  17. 145 1
      Venus/Venus_RT/Config/System.sccfg
  18. 36 1
      Venus/Venus_RT/Devices/DeviceManager.cs
  19. 2 2
      Venus/Venus_RT/Devices/JetKepler2200APM.cs
  20. 80 7
      Venus/Venus_RT/Devices/JetKepler2300PM.cs
  21. 8 5
      Venus/Venus_RT/Devices/JetPMBase.cs
  22. 2 2
      Venus/Venus_RT/Devices/JetVenusPM.cs
  23. 4 1
      Venus/Venus_RT/Modules/PMs/PMProcessRoutine.cs
  24. 1 1
      Venus/Venus_RT/Modules/PMs/PMRoutineBase.cs
  25. 2 3
      Venus/Venus_Setup/Venus_RT.iss
  26. 1 1
      Venus/Venus_UI/Config/UIMenu.json

+ 1 - 1
Venus/Framework/Common/IOCore/IoProviderManager.cs

@@ -270,7 +270,7 @@ namespace MECF.Framework.RT.Core.IoProviders
 
                     if (mapModule == "TM")
                     {
-                        mapFile = element.GetAttribute("map_file").Trim();
+                        mapFile ="TM"+"\\"+ element.GetAttribute("map_file").Trim();
                     }
                     else
                     {

+ 1 - 1
Venus/Framework/SequenceControl/SequenceControl.csproj

@@ -41,7 +41,7 @@
       <HintPath>..\..\ThirdParty\dlls\DocumentFormat.OpenXml.dll</HintPath>
     </Reference>
     <Reference Include="log4net">
-      <HintPath>..\..\ThirdParty\dlls\log4net.dll</HintPath>
+      <HintPath>..\..\ThirdParty\log4net.dll</HintPath>
     </Reference>
     <Reference Include="PresentationCore" />
     <Reference Include="PresentationFramework" />

+ 8 - 0
Venus/Venus_Core/DeviceName.cs

@@ -95,4 +95,12 @@ namespace Venus_Core
             return default(EfemOperation);
         }
     }
+
+    public enum ChillerType
+    { 
+    Chiller,
+    InnerChiller,
+    OuterChiller,
+    TopChiller
+    }
 }

+ 4 - 0
Venus/Venus_Core/VenusDevice.cs

@@ -64,6 +64,10 @@
 
         MainPump,
         Chiller,
+        InnerChiller,
+        OuterChiller,
+        TopChiller,
+
 
         Rf,
         BiasRf,

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

@@ -1359,12 +1359,12 @@ namespace Venus_MainPages.ViewModels
             var value = (QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.Chiller.ChillerTemperatureOffset").ToString());
             float x;
             float.TryParse(value, out x);
-            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.HeatChiller", ChillerTempSetpoint, x);
+            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.HeatChiller", ChillerType.Chiller.ToString(), ChillerTempSetpoint, x);
         }
 
         private void OnOffChiller()
         {
-            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.OnOffChiller", !ChillerIsOn);
+            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.OnOffChiller", ChillerType.Chiller.ToString(),!ChillerIsOn);
         }
 
 

+ 73 - 14
Venus/Venus_MainPages/ViewModels/OverKepler2300ViewModel.cs

@@ -865,7 +865,21 @@ namespace Venus_MainPages.ViewModels
             get { return m_ChillerIsOn; }
             set { SetProperty(ref m_ChillerIsOn, value); }
         }
-
+        public bool InnerChillerIsOn
+        {
+            get { return m_InnerChillerIsOn; }
+            set { SetProperty(ref m_InnerChillerIsOn, value); }
+        }
+        public bool OuterChillerIsOn
+        {
+            get { return m_OuterChillerIsOn; }
+            set { SetProperty(ref m_OuterChillerIsOn, value); }
+        }
+        public bool TopChillerIsOn
+        {
+            get { return m_TopChillerIsOn; }
+            set { SetProperty(ref m_TopChillerIsOn, value); }
+        }
         public double ChamberPressureFeedBack
         {
             get { return m_ChamberPressureFeedBack; }
@@ -979,14 +993,14 @@ namespace Venus_MainPages.ViewModels
         public DelegateCommand<object> RunRecipeCommand =>
             _RunRecipeCommand ?? (_RunRecipeCommand = new DelegateCommand<object>(OnRunRecipe));
 
-        private DelegateCommand _SetChillerTempCommand;
-        public DelegateCommand SetChillerTempCommand =>
-            _SetChillerTempCommand ?? (_SetChillerTempCommand = new DelegateCommand(OnSetChillerTemp));
+        private DelegateCommand<object> _SetChillerTempCommand;
+        public DelegateCommand<object> SetChillerTempCommand =>
+            _SetChillerTempCommand ?? (_SetChillerTempCommand = new DelegateCommand<object>(OnSetChillerTemp));
 
 
-        private DelegateCommand _OnOffChillerCommand;
-        public DelegateCommand OnOffChillerCommand =>
-            _OnOffChillerCommand ?? (_OnOffChillerCommand = new DelegateCommand(OnOffChiller));
+        private DelegateCommand<object> _OnOffChillerCommand;
+        public DelegateCommand<object> OnOffChillerCommand =>
+            _OnOffChillerCommand ?? (_OnOffChillerCommand = new DelegateCommand<object>(OnOffChiller));
 
 
         private DelegateCommand<object> _HeaterCommand;
@@ -1355,17 +1369,62 @@ namespace Venus_MainPages.ViewModels
             InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.RunRecipe}",recipeName);
         }
 
-        private void OnSetChillerTemp()
+        private void OnSetChillerTemp(object obj)
         {
-            var value = (QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.Chiller.ChillerTemperatureOffset").ToString());
-            float x;
-            float.TryParse(value, out x);
-            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.HeatChiller", ChillerTempSetpoint, x);
+            float offset;
+            float setPoint;
+           var chillerType= (ChillerType)Enum.Parse(typeof(ChillerType), obj.ToString());
+            switch (chillerType)
+            {
+                case ChillerType.Chiller:
+                    var value = (QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.Chiller.ChillerTemperatureOffset").ToString());                
+                    float.TryParse(value, out offset);
+                    setPoint = ChillerTempSetpoint;
+                    break;
+                case ChillerType.InnerChiller:
+                    var Innervalue = (QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.InnerChiller.ChillerTemperatureOffset").ToString());
+                    float.TryParse(Innervalue, out offset);
+                    setPoint = InnerChillerTempSetpoint;
+                    break;
+                case ChillerType.OuterChiller:
+                    var Outervalue = (QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.OuterChiller.ChillerTemperatureOffset").ToString());
+                    float.TryParse(Outervalue, out offset);
+                    setPoint = OuterChillerTempSetpoint;
+                    break;
+                case ChillerType.TopChiller:
+                    var Topvalue = (QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.TopChiller.ChillerTemperatureOffset").ToString());
+                    float.TryParse(Topvalue, out offset);
+                    setPoint = TopChillerTempSetpoint;
+                    break;
+                default:
+                    return;
+            }
+            //var value = (QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.Chiller.ChillerTemperatureOffset").ToString());
+            //float x;
+            //float.TryParse(value, out x);
+            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.HeatChiller", chillerType.ToString(),setPoint, offset);
         }
 
-        private void OnOffChiller()
+        private void OnOffChiller(object obj)
         {
-            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.OnOffChiller", !ChillerIsOn);
+            var chillerType = (ChillerType)Enum.Parse(typeof(ChillerType), obj.ToString());
+            switch (chillerType)
+            {
+                case ChillerType.Chiller:
+                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.OnOffChiller", chillerType.ToString(), !ChillerIsOn);
+                    break;
+                case ChillerType.InnerChiller:
+                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.OnOffChiller", chillerType.ToString(), !InnerChillerIsOn);
+                    break;
+                case ChillerType.OuterChiller:
+                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.OnOffChiller", chillerType.ToString(), !OuterChillerIsOn);
+                    break;
+                case ChillerType.TopChiller:
+                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.OnOffChiller", chillerType.ToString(), !TopChillerIsOn);
+                    break;
+                default:
+                    return;
+            }
         }
 
 

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

@@ -1383,12 +1383,12 @@ namespace Venus_MainPages.ViewModels
             var value = (QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.Chiller.ChillerTemperatureOffset").ToString());
             float x;
             float.TryParse(value, out x);
-            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.HeatChiller", ChillerTempSetpoint, x);
+            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.HeatChiller", ChillerType.Chiller.ToString(),ChillerTempSetpoint, x);
         }
 
         private void OnOffChiller()
         {
-            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.OnOffChiller", !ChillerIsOn);
+            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.OnOffChiller", ChillerType.Chiller.ToString(),!ChillerIsOn);
         }
 
 

+ 71 - 27
Venus/Venus_MainPages/ViewModels/RecipeViewModel.cs

@@ -1,4 +1,5 @@
 using Aitex.Core.Common.DeviceData;
+using Aitex.Core.RT.IOCore;
 using Aitex.Core.RT.Log;
 using Aitex.Core.UI.View.Common;
 using MECF.Framework.Common.CommonData;
@@ -622,34 +623,48 @@ namespace Venus_MainPages.ViewModels
         {
             var t = ((sender as MenuItem).Parent as ContextMenu).PlacementTarget as TextBox;
             int insertIndex = Convert.ToInt32(t.Text);
+            
+            //RecipeStep recipeStep;
             //OnAddStep(insertIndex);
-            var recipeStep = new RecipeStep();
-            switch (currentChamber)
+            if (copyIndex == -1)
             {
-                case JetChamber.Venus:
-                case JetChamber.Kepler2300:
-                    recipeStep.LstUnit.Add(new PressureByPressureModeUnit());
-                    recipeStep.LstUnit.Add(new TCPUnit());
-                    recipeStep.LstUnit.Add(new BiasUnit());
-                    recipeStep.LstUnit.Add(new GasControlUnit());
-                    recipeStep.LstUnit.Add(new ESCHVUnit());
-                    recipeStep.LstUnit.Add(new ProcessKitUnit());
-                    break;
+                var recipeStep = new RecipeStep();
+                switch (currentChamber)
+                {
+                    case JetChamber.Venus:
+                    case JetChamber.Kepler2300:
+                        recipeStep.LstUnit.Add(new PressureByPressureModeUnit());
+                        recipeStep.LstUnit.Add(new TCPUnit());
+                        recipeStep.LstUnit.Add(new BiasUnit());
+                        recipeStep.LstUnit.Add(new GasControlUnit());
+                        recipeStep.LstUnit.Add(new ESCHVUnit());
+                        recipeStep.LstUnit.Add(new ProcessKitUnit());
+                        break;
 
-                case JetChamber.Kepler2200A:
-                    recipeStep.LstUnit.Add(new Kepler2200GasControlUnit());
+                    case JetChamber.Kepler2200A:
+                        recipeStep.LstUnit.Add(new Kepler2200GasControlUnit());
 
-                    recipeStep.LstUnit.Add(new HeaterUnit());
-                    recipeStep.LstUnit.Add(new Kepler2200RFUnit());
+                        recipeStep.LstUnit.Add(new HeaterUnit());
+                        recipeStep.LstUnit.Add(new Kepler2200RFUnit());
 
 
 
 
 
-                    break;
+                        break;
+                }
+
+                CurrentRecipe.Steps.Insert(insertIndex - 1, recipeStep);
             }
-            
-            CurrentRecipe.Steps.Insert(insertIndex-1, recipeStep);
+            else
+            {
+                var t1 = JsonConvert.SerializeObject(CurrentRecipe);
+               var recipeStep = Recipe.Load(t1).Steps[copyIndex - 1];
+
+                CurrentRecipe.Steps.Insert(insertIndex - 1, recipeStep);
+
+            }
+           
             for (int i = 0; i < CurrentRecipe.Steps.Count; i++)
             {
                 CurrentRecipe.Steps[i].StepNo = i + 1;
@@ -838,20 +853,20 @@ namespace Venus_MainPages.ViewModels
 
                                         MenuItem menuItemDelete = new MenuItem();
 
-                                        menuItemDelete.Header = "删除";
+                                        menuItemDelete.Header = "Delete";
                                         menuItemDelete.Click += MenuItemDelete_Click;
 
                                         MenuItem menuItemLeftInsert = new MenuItem();
-                                        menuItemLeftInsert.Header = "左插入";
+                                        menuItemLeftInsert.Header = "Left Insert";
                                         menuItemLeftInsert.Click += MenuItemLeftInsert_Click;
 
                                         MenuItem menuItemRightInsert = new MenuItem();
-                                        menuItemRightInsert.Header = "右插入";
+                                        menuItemRightInsert.Header = "Right Insert";
                                         menuItemRightInsert.Click += MenuItemRightInsert_Click;
 
                                         MenuItem menuItemCopy = new MenuItem();
                                         menuItemCopy.Tag = textBox.Text;
-                                        menuItemCopy.Header = "复制";
+                                        menuItemCopy.Header = "Copy";
                                         menuItemCopy.Click += MenuItemCopy_Click;
 
                                         contextmenu.Items.Add(menuItemCopy);
@@ -1178,18 +1193,47 @@ namespace Venus_MainPages.ViewModels
             GC.WaitForPendingFinalizers(); // Doesn't help either
 
             CurrentRecipe = recipe;
-            Grid grid = new Grid();
-            grid.Margin = new Thickness(15);
+            if (CurrentRecipe.Header.Type==Venus_Core.RecipeType.Process && CurrentRecipe.Header.ChuckRecipe != "" && CurrentRecipe.Header.ChuckRecipe != null)
+            {
+                Grid chuckGrid = new Grid();
+                chuckGrid.IsEnabled = false;
+                chuckGrid.Margin = new Thickness(15);
+                string chuckRecipeData = m_uiRecipeManager.LoadRecipe(ModuleName, CurrentRecipe.Header.ChuckRecipe);
+                //index = 0;
+                var chuckRecipe = Recipe.Load(chuckRecipeData);
+                for (int i = 0; i < chuckRecipe.Steps.Count; i++)
+                {
+                    RecipeStepToGridColumn(chuckRecipe.Steps[i], chuckGrid, i, false);
+                }
+                bodyStackPanel.Children.Add(chuckGrid);
+            }
+            Grid proressGrid = new Grid();
+            proressGrid.Margin = new Thickness(15);
             //index = 0;
 
             for (int i = 0; i < recipe.Steps.Count; i++)
             {
-                RecipeStepToGridColumn(recipe.Steps[i], grid, i, false);
+                RecipeStepToGridColumn(recipe.Steps[i], proressGrid, i, false);
             }
-            bodyStackPanel.Children.Add(grid);
+            bodyStackPanel.Children.Add(proressGrid);
+
 
+            currentRecipeGrid = proressGrid;
 
-            currentRecipeGrid = grid;
+            if (CurrentRecipe.Header.Type == Venus_Core.RecipeType.Process && CurrentRecipe.Header.DechuckRecipe != "" && CurrentRecipe.Header.DechuckRecipe != null)
+            {
+                Grid deChuckGrid = new Grid();
+                deChuckGrid.IsEnabled = false;
+                deChuckGrid.Margin = new Thickness(15);
+                string DechuckRecipeData = m_uiRecipeManager.LoadRecipe(ModuleName, CurrentRecipe.Header.DechuckRecipe);
+                //index = 0;
+                var dechuckRecipe = Recipe.Load(DechuckRecipeData);
+                for (int i = 0; i < dechuckRecipe.Steps.Count; i++)
+                {
+                    RecipeStepToGridColumn(dechuckRecipe.Steps[i], deChuckGrid, i, false);
+                }
+                bodyStackPanel.Children.Add(deChuckGrid);
+            }
         }
         private void OnAddStep(int index)
         {

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

@@ -36,7 +36,7 @@ namespace Venus_MainPages.ViewModels
         }
         private void OnSave()
         {
-            SerializeHelper.Instance.WriteToJsonFile<List<VenusMenu>>(VenusMenus, "Config/VenusMenu.json");
+            SerializeHelper.Instance.WriteToJsonFile<List<VenusMenu>>(VenusMenus, "Config/UIMenu.json");
         }
 
         private void OnChecked(object obj)

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

@@ -270,7 +270,7 @@ namespace Venus_MainPages.ViewModels
             PMDIsInstalled = allModules.Contains("PMD");
             LLAIsInstalled = allModules.Contains("LLA");
             LLBIsInstalled = allModules.Contains("LLB");
-            TMIsInstalled = allModules.Contains("TM");
+            TMIsInstalled  = allModules.Contains("TM");
             EFEMIsInstalled = allModules.Contains("EFEM");
 
 

+ 35 - 24
Venus/Venus_MainPages/Views/OverKepler2300View.xaml

@@ -772,7 +772,6 @@
                        IsBRFOn="{Binding BRFData.IsRfOn}"
                        IsSRFOn="{Binding SRFData.IsRfOn}"
                        IsHasWafer="{Binding IsHasWafer}"
-                           WaferID="{Binding WaferID}"
                         />
 
             <Ellipse Width="20" Height="20" Fill="{Binding LiftPinIsUp,Converter={StaticResource boolToColor}}"  Canvas.Left="1065" Canvas.Top="466" Stroke="Silver" StrokeThickness="2"/>
@@ -1002,7 +1001,7 @@
             <!--<Button Width="120" Height="30" Content="Abort"            Canvas.Left="910" Canvas.Top="690"  IsEnabled="{Binding IsAutoMode}"/>
             <Button Width="120" Height="30" Content="Chamber Offline"  Canvas.Left="1110" Canvas.Top="690" IsEnabled="{Binding IsAutoMode}"/>-->
         </Canvas>
-        <Grid Width="360" Height="190" Canvas.Left="1350" Canvas.Top="5"  unity:GridOptions.LineBrush="#afb4db"  unity:GridOptions.ShowBorder="True" Background="#E9EDF4">
+        <Grid Width="350" Height="150" Canvas.Left="1350" Canvas.Top="20"  unity:GridOptions.LineBrush="#afb4db"  unity:GridOptions.ShowBorder="True" Background="#E9EDF4">
             <Grid.RowDefinitions>
                 <RowDefinition/>
                 <RowDefinition/>
@@ -1011,7 +1010,6 @@
                 <RowDefinition/>
                 <RowDefinition/>
                 <RowDefinition/>
-                <RowDefinition/>
 
             </Grid.RowDefinitions>
             <Grid.ColumnDefinitions>
@@ -1021,11 +1019,10 @@
             <TextBlock Grid.Row="0" Text="Recipe Name"        FontSize="15"  Padding="10,2,0,0" Background="#D0D8E8"/>
             <TextBlock Grid.Row="1" Text="Step Num/All"        FontSize="15"  Padding="10,2,0,0" Background="#D0D8E8"/>
             <TextBlock Grid.Row="2" Text="Step Type"          FontSize="15"  Padding="10,2,0,0" Background="#D0D8E8"/>
-            <TextBlock Grid.Row="3" Text="Step Description"          FontSize="15"  Padding="10,2,0,0" Background="#D0D8E8"/>
-            <TextBlock Grid.Row="4" Text="Step Elpased Time"  FontSize="15"  Padding="10,2,0,0" Background="#D0D8E8"/>
-            <TextBlock Grid.Row="5" Text="Step Time(s)"       FontSize="15"  Padding="10,2,0,0" Background="#D0D8E8"/>
-            <TextBlock Grid.Row="6" Text="Next Step"       FontSize="15"  Padding="10,2,0,0" Background="#D0D8E8"/>
-            <TextBlock Grid.Row="7" Text="Cycle Num/All"  FontSize="15" Padding="10,2,0,0" Background="#D0D8E8"/>
+            <TextBlock Grid.Row="3" Text="Step Elpased Time"  FontSize="15"  Padding="10,2,0,0" Background="#D0D8E8"/>
+            <TextBlock Grid.Row="4" Text="Step Time(s)"       FontSize="15"  Padding="10,2,0,0" Background="#D0D8E8"/>
+            <TextBlock Grid.Row="5" Text="Next Step"       FontSize="15"  Padding="10,2,0,0" Background="#D0D8E8"/>
+            <TextBlock Grid.Row="6" Text="Cycle Num/All"  FontSize="15" Padding="10,2,0,0" Background="#D0D8E8"/>
 
 
             <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding CurrentRecipeResult.RecipeName}" FontSize="15" Padding="10,2,0,0" Background="#E9EDF4"/>
@@ -1038,11 +1035,10 @@
                 </TextBlock.Text>
             </TextBlock>
             <TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding CurrentRecipeResult.RecipeStepType}"  FontSize="15" Padding="10,2,0,0"/>
-            <TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding CurrentRecipeResult.RecipeStepDescription}"  FontSize="15" Padding="10,2,0,0"/>
-            <TextBlock Grid.Row="4" Grid.Column="1" Text="{Binding CurrentRecipeResult.RecipeStepDuringTime, StringFormat=hh\\:mm\\:ss}"  FontSize="15" Padding="10,2,0,0"/>
-            <TextBlock Grid.Row="5" Grid.Column="1" Text="{Binding CurrentRecipeResult.RecipeStepSetTime}"  FontSize="15" Padding="10,2,0,0"/>
-            <customControls:PathButton BorderThickness="0" PathData="{StaticResource Icon_Next}" Background="Transparent" DefaultFillBrush="Black"  Foreground="White"  Cursor="Hand" Grid.Row="6" Grid.Column="1"    Visibility="{Binding IsProcessing,Converter={StaticResource BoolToVisibility2}}" Command="{Binding EndStepCommand}" Margin="15,0,0,0" HorizontalAlignment="Left"/>
-            <TextBlock Grid.Row="7" Grid.Column="1"   FontSize="15" Padding="10,2,0,0" Background="#E9EDF4">
+            <TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding CurrentRecipeResult.RecipeStepDuringTime, StringFormat=hh\\:mm\\:ss}"  FontSize="15" Padding="10,2,0,0"/>
+            <TextBlock Grid.Row="4" Grid.Column="1" Text="{Binding CurrentRecipeResult.RecipeStepSetTime}"  FontSize="15" Padding="10,2,0,0"/>
+            <customControls:PathButton BorderThickness="0" PathData="{StaticResource Icon_Next}" Background="Transparent" DefaultFillBrush="Black"  Foreground="White"  Cursor="Hand" Grid.Row="5" Grid.Column="1"    Visibility="{Binding IsProcessing,Converter={StaticResource BoolToVisibility2}}" Command="{Binding EndStepCommand}" Margin="15,0,0,0" HorizontalAlignment="Left"/>
+            <TextBlock Grid.Row="6" Grid.Column="1"   FontSize="15" Padding="10,2,0,0" Background="#E9EDF4">
                 <TextBlock.Text>
                     <MultiBinding StringFormat="{}{0}/{1}">
                         <Binding Path="CurrentRecipeResult.RecipeCurrentCounter"></Binding>
@@ -1051,6 +1047,7 @@
                 </TextBlock.Text>
             </TextBlock>
         </Grid>
+
         <Grid Width="300" Height="260"  Canvas.Left="500" Canvas.Top="402" Background="#E8E8E8" unity:GridOptions.LineBrush="#afb4db" unity:GridOptions.ShowBorder="True">
             <Grid.RowDefinitions>
                 <RowDefinition/>
@@ -1169,23 +1166,37 @@
                 <ColumnDefinition Width="*"/>
                 <ColumnDefinition Width="4*"/>
             </Grid.ColumnDefinitions>
-          
-            <TextBlock Grid.Row="0" Text="Chiller Temp.(°C)" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="1,0,0,0"/>
-            <!--<TextBlock Grid.Row="1" Text="Wall Temp.(°C)" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="1,0,0,0"/>-->
 
-            <TextBox Grid.Row="0" Grid.Column="1" Width="Auto" Height="Auto" Text="{Binding ChillerTempSetpoint,UpdateSourceTrigger=PropertyChanged}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderBrush="White"  BorderThickness="0" />
-            <!--<TextBox Grid.Row="1" Grid.Column="1" Width="Auto" Height="Auto" Text="{Binding WallTempSetpoint}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderBrush="White"  BorderThickness="0" />-->
+            <TextBlock Grid.Row="0" Text="Inner 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 InnerChillerTempSetpoint,UpdateSourceTrigger=PropertyChanged}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderBrush="White"  BorderThickness="0" />
+            <TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding InnerTemperature,StringFormat='F1'}" FontSize="15" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center" />
 
-            <TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding ChillerTemperature,StringFormat='F1'}" FontSize="15" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center" />
-           
+            <TextBlock Grid.Row="1" Text="Outer Temp.(°C)" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="1,0,0,0"/>
+            <TextBox   Grid.Row="1" Grid.Column="1"  Width="Auto" Height="Auto" Text="{Binding OuterChillerTempSetpoint,UpdateSourceTrigger=PropertyChanged}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderBrush="White"  BorderThickness="0" />
+            <TextBlock Grid.Row="1" Grid.Column="2" Text="{Binding OuterTemperature,StringFormat='F1'}" FontSize="15" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center" />
+
+            <TextBlock Grid.Row="2" Text="Top Temp.(°C)" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="1,0,0,0"/>
+            <TextBox   Grid.Row="2" Grid.Column="1"  Width="Auto" Height="Auto" Text="{Binding TopChillerTempSetpoint,UpdateSourceTrigger=PropertyChanged}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderBrush="White"  BorderThickness="0" />
+            <TextBlock Grid.Row="2" Grid.Column="2" Text="{Binding TopTemperature,StringFormat='F1'}" FontSize="15" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center" />
 
             <StackPanel Orientation="Horizontal" Grid.Row="0" Grid.Column="3">
-                <Ellipse Width="18" Height="18" Fill="{Binding ChillerIsOn,Converter={StaticResource boolToColor}}"  Stroke="Silver" StrokeThickness="2"/>
-                <Button Margin="5,0,0,0" Height="20" Width="70"  Style="{x:Null}" Content="ON/OFF"          Command="{Binding OnOffChillerCommand}"    CommandParameter="True"  IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Cursor="Hand"/>
-                <Button Margin="5,0,0,0" Height="20" Width="70"  Style="{x:Null}" Content="Set"             Command="{Binding SetChillerTempCommand}"  CommandParameter="True"  IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Cursor="Hand"/>
+                <Ellipse Width="18" Height="18" Fill="{Binding InnerChillerIsOn,Converter={StaticResource boolToColor}}"  Stroke="Silver" StrokeThickness="2"/>
+                <Button Margin="5,0,0,0" Height="20" Width="70"  Style="{x:Null}" Content="ON/OFF"          Command="{Binding OnOffChillerCommand}"    CommandParameter="InnerChiller"  IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Cursor="Hand"/>
+                <Button Margin="5,0,0,0" Height="20" Width="70"  Style="{x:Null}" Content="Set"             Command="{Binding SetChillerTempCommand}"  CommandParameter="InnerChiller"  IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Cursor="Hand"/>
+
+            </StackPanel>
+            <StackPanel Orientation="Horizontal" Grid.Row="1" Grid.Column="3">
+                <Ellipse Width="18" Height="18" Fill="{Binding OuterChillerIsOn,Converter={StaticResource boolToColor}}"  Stroke="Silver" StrokeThickness="2"/>
+                <Button Margin="5,0,0,0" Height="20" Width="70"  Style="{x:Null}" Content="ON/OFF"          Command="{Binding OnOffChillerCommand}"    CommandParameter="OuterChiller"  IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Cursor="Hand"/>
+                <Button Margin="5,0,0,0" Height="20" Width="70"  Style="{x:Null}" Content="Set"             Command="{Binding SetChillerTempCommand}"  CommandParameter="OuterChiller"  IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Cursor="Hand"/>
+
+            </StackPanel>
+            <StackPanel Orientation="Horizontal" Grid.Row="2" Grid.Column="3">
+                <Ellipse Width="18" Height="18" Fill="{Binding TopChillerIsOn,Converter={StaticResource boolToColor}}"  Stroke="Silver" StrokeThickness="2"/>
+                <Button Margin="5,0,0,0" Height="20" Width="70"  Style="{x:Null}" Content="ON/OFF"          Command="{Binding OnOffChillerCommand}"    CommandParameter="TopChiller"  IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Cursor="Hand"/>
+                <Button Margin="5,0,0,0" Height="20" Width="70"  Style="{x:Null}" Content="Set"             Command="{Binding SetChillerTempCommand}"  CommandParameter="TopChiller"  IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Cursor="Hand"/>
 
             </StackPanel>
-            
 
         </Grid>
         <Grid Visibility="Hidden"  Height="120" Width="300"  Canvas.Left="400" Canvas.Top="70" Background="#E8E8E8"  unity:GridOptions.ShowBorder="True">

+ 15 - 9
Venus/Venus_MainPages/Views/OverVenusView.xaml

@@ -1238,15 +1238,21 @@
 
         <Border BorderThickness="0,0,0,1" BorderBrush="Black" Canvas.Top="20" Canvas.Left="40">
             <StackPanel Orientation="Horizontal" Margin="0,0,0,5">
-                <customControls:PathButton PathData="{StaticResource Icon_Home}"  DefaultFillBrush="White"  Command="{Binding PMInitCommnad}"  Width="120" Height="30" Content="Initialize"    Margin="10,0,0,0"/>
-                <customControls:PathButton PathData="{StaticResource Icon_Abort}" DefaultFillBrush="White"  Command="{Binding PMAbortCommnad}" Width="120" Height="30" Content="Abort"   Margin="50,0,30,0"/>
-                <!--<customControls:AduRadioButtonIcon Content="MF"  IsChecked="{Binding IsAutoMode,Converter={StaticResource BoolToBool},Mode=TwoWay}" Height="40" />
-                <Border BorderThickness="1" Height="30" Width="2" BorderBrush="Black" Margin="10,0,0,0">
-                    <Border.RenderTransform>
-                        <RotateTransform  Angle="15" CenterX="1" CenterY="15"></RotateTransform>
-                    </Border.RenderTransform>
-                </Border>
-                <customControls:AduRadioButtonIcon Content="AF" IsChecked="{Binding IsAutoMode,Mode=TwoWay}"   Margin="-10,0,30,0" Height="40"   />-->
+                <customControls:PathButton PathData="{StaticResource Icon_Home}"  DefaultFillBrush="White"  Command="{Binding PMInitCommnad}"  Width="160" Height="30" Content="Initialize"    Margin="10,0,0,0"/>
+
+                <customControls:PathButton PathData="{StaticResource Icon_Abort}" DefaultFillBrush="White"  Command="{Binding PMAbortCommnad}" Width="120" Height="30" Content="Abort"   Margin="50,0,30,0">
+                    <customControls:PathButton.ContextMenu>
+                        <ContextMenu>
+                            <MenuItem Width="120" Header="Abort"/>
+                            <MenuItem Width="120" Header="Abort"/>
+                            <MenuItem Width="120" Header="Abort"/>
+
+                        </ContextMenu>
+                    </customControls:PathButton.ContextMenu>
+                </customControls:PathButton>
+               
+
+               
                 <RadioButton Content="Manual"  FontSize="15"   Width="120" Height="28" Margin="0 0 5 0" Style="{StaticResource Button_RadioButton}" IsChecked="{Binding IsAutoMode,Converter={StaticResource BoolToBool},Mode=TwoWay}"/>
                 <RadioButton Content="Auto"    FontSize="15"   Width="120" Height="28" Margin="0 0 30 0" Style="{StaticResource Button_RadioButton}" IsChecked="{Binding IsAutoMode,Mode=TwoWay}"/>
                 <customControls:PathButton  Width="130" Height="30" Content="Vent"          Command="{Binding VentCommand}"         IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" />

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

@@ -56,7 +56,7 @@
             <userControls:StateTitle Title="PMC"   Grid.Column="2"  Grid.Row="1"  TextBoxValue="{Binding RtDataValues[PMC.FsmState]}"    TextBoxColor="{Binding RtDataValues[PMC.FsmState],Converter={StaticResource PMStateConverter}}"  Visibility="{Binding PMCIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
             <userControls:StateTitle Title="PMD"   Grid.Column="3"  Grid.Row="1"  TextBoxValue="{Binding RtDataValues[PMD.FsmState]}"    TextBoxColor="{Binding RtDataValues[PMD.FsmState],Converter={StaticResource PMStateConverter}}"  Visibility="{Binding PMDIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
 
-            <userControls:StateTitle Title="TM"    Grid.Row="2"    TextBoxValue="{Binding RtDataValues[TM.FsmState]}"     TextBoxColor="{Binding RtDataValues[TM.FsmState],Converter={StaticResource TMStateConverter}}"/>
+            <userControls:StateTitle Title="TM"    Grid.Row="2"    TextBoxValue="{Binding RtDataValues[TM.FsmState]}"     TextBoxColor="{Binding RtDataValues[TM.FsmState],Converter={StaticResource TMStateConverter}}" Visibility="{Binding TMIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
 
             <StackPanel Orientation="Horizontal" Grid.Column="1"  Grid.Row="2" Grid.ColumnSpan="3">
                 <Label Content="Log" Style="{StaticResource TopLable_LeftTop}" Canvas.Left="520" Width="100" Canvas.Top="76" BorderThickness="1" BorderBrush="White"  HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Height="30"/>

+ 1 - 1
Venus/Venus_RT/Config/IoProviderConfig.xml

@@ -92,7 +92,7 @@
     </Blocks>
   </IoProvider>
   
-	<IoProvider load_condition="0" module="TM" name="PLC" map_module="TM" map_file="TM\\_ioDefineVenus_MF.xml" class="MECF.Framework.RT.Core.IoProviders.MCProtocolPlc" assembly="MECF.Framework.RT.Core">
+	<IoProvider load_condition="0" module="TM" name="PLC" map_module="TM" map_file="_ioDefineVenus_MF.xml" class="MECF.Framework.RT.Core.IoProviders.MCProtocolPlc" assembly="MECF.Framework.RT.Core">
 		<Parameter ip="127.0.0.1" port="6831" network_id="1" station_id="1"></Parameter>
 		<Blocks>
 			<Block type="di" offset="0" size="640" value_type=""></Block>

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


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


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

@@ -272,6 +272,42 @@
 			<config default="20" name="ToleranceAlarmRange" nameView="Tolerance Alarm Range" description="Tolerance Alarm Range" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="60" name="ToleranceAlarmTime" nameView="Tolerance Alarm Time" description="Tolerance Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
 		</configs>
+		<configs name="InnerChiller" nameView="InnerChiller" >
+			<config default="false" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
+			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:SMC; 2, AIRSYS" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="COM45" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="10" name="ChillerTemperatureOffset" nameView="Chiller Temperature Offset" description="" max="100" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="300" name="SetPointLimitMax" nameView="Chiller Set Point Limit Max" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="0" name="SetPointLimitMin" nameView="Chiller Set Point Limit Min" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="true" name="EnableToleranceAlarm" nameView="Enable Tolerance Alarm" description="Enable Tolerance Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20" name="ToleranceAlarmRange" nameView="Tolerance Alarm Range" description="Tolerance Alarm Range" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
+			<config default="60" name="ToleranceAlarmTime" nameView="Tolerance Alarm Time" description="Tolerance Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
+		</configs>
+		<configs name="OuterChiller" nameView="OuterChiller" >
+			<config default="false" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
+			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:SMC; 2, AIRSYS" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="COM46" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="10" name="ChillerTemperatureOffset" nameView="Chiller Temperature Offset" description="" max="100" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="300" name="SetPointLimitMax" nameView="Chiller Set Point Limit Max" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="0" name="SetPointLimitMin" nameView="Chiller Set Point Limit Min" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="true" name="EnableToleranceAlarm" nameView="Enable Tolerance Alarm" description="Enable Tolerance Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20" name="ToleranceAlarmRange" nameView="Tolerance Alarm Range" description="Tolerance Alarm Range" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
+			<config default="60" name="ToleranceAlarmTime" nameView="Tolerance Alarm Time" description="Tolerance Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
+		</configs>
+		<configs name="TopChiller" nameView="TopChiller" >
+			<config default="false" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
+			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:SMC; 2, AIRSYS" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="COM47" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="10" name="ChillerTemperatureOffset" nameView="Chiller Temperature Offset" description="" max="100" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="300" name="SetPointLimitMax" nameView="Chiller Set Point Limit Max" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="0" name="SetPointLimitMin" nameView="Chiller Set Point Limit Min" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="true" name="EnableToleranceAlarm" nameView="Enable Tolerance Alarm" description="Enable Tolerance Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20" name="ToleranceAlarmRange" nameView="Tolerance Alarm Range" description="Tolerance Alarm Range" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
+			<config default="60" name="ToleranceAlarmTime" nameView="Tolerance Alarm Time" description="Tolerance Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
+		</configs>
 		<configs name="DryPump" nameView="Dry Pump" >
 			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:Sky; 2:Edwards" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
@@ -738,6 +774,42 @@
 			<config default="20" name="ToleranceAlarmRange" nameView="Tolerance Alarm Range" description="Tolerance Alarm Range" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="60" name="ToleranceAlarmTime" nameView="Tolerance Alarm Time" description="Tolerance Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
 		</configs>
+		<configs name="InnerChiller" nameView="InnerChiller" >
+			<config default="true" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />			
+			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:SMC; 2, AIRSYS" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="COM45" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="10" name="ChillerTemperatureOffset" nameView="Chiller Temperature Offset" description="" max="100" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="300" name="SetPointLimitMax" nameView="Chiller Set Point Limit Max" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="0" name="SetPointLimitMin" nameView="Chiller Set Point Limit Min" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="true" name="EnableToleranceAlarm" nameView="Enable Tolerance Alarm" description="Enable Tolerance Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20" name="ToleranceAlarmRange" nameView="Tolerance Alarm Range" description="Tolerance Alarm Range" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
+			<config default="60" name="ToleranceAlarmTime" nameView="Tolerance Alarm Time" description="Tolerance Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
+		</configs>
+		<configs name="OuterChiller" nameView="OuterChiller" >
+			<config default="true" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
+			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:SMC; 2, AIRSYS" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="COM46" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="10" name="ChillerTemperatureOffset" nameView="Chiller Temperature Offset" description="" max="100" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="300" name="SetPointLimitMax" nameView="Chiller Set Point Limit Max" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="0" name="SetPointLimitMin" nameView="Chiller Set Point Limit Min" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="true" name="EnableToleranceAlarm" nameView="Enable Tolerance Alarm" description="Enable Tolerance Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20" name="ToleranceAlarmRange" nameView="Tolerance Alarm Range" description="Tolerance Alarm Range" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
+			<config default="60" name="ToleranceAlarmTime" nameView="Tolerance Alarm Time" description="Tolerance Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
+		</configs>
+		<configs name="TopChiller" nameView="TopChiller" >
+			<config default="true" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
+			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:SMC; 2, AIRSYS" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="COM47" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="10" name="ChillerTemperatureOffset" nameView="Chiller Temperature Offset" description="" max="100" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="300" name="SetPointLimitMax" nameView="Chiller Set Point Limit Max" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="0" name="SetPointLimitMin" nameView="Chiller Set Point Limit Min" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="true" name="EnableToleranceAlarm" nameView="Enable Tolerance Alarm" description="Enable Tolerance Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20" name="ToleranceAlarmRange" nameView="Tolerance Alarm Range" description="Tolerance Alarm Range" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
+			<config default="60" name="ToleranceAlarmTime" nameView="Tolerance Alarm Time" description="Tolerance Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
+		</configs>
 		<configs name="DryPump" nameView="Dry Pump" >
 			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:Sky; 2:Edwards" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
@@ -1188,6 +1260,42 @@
 			<config default="20" name="ToleranceAlarmRange" nameView="Tolerance Alarm Range" description="Tolerance Alarm Range" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="60" name="ToleranceAlarmTime" nameView="Tolerance Alarm Time" description="Tolerance Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
 		</configs>
+		<configs name="InnerChiller" nameView="InnerChiller" >
+			<config default="false" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
+			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:SMC; 2, AIRSYS" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="COM45" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="10" name="ChillerTemperatureOffset" nameView="Chiller Temperature Offset" description="" max="100" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="300" name="SetPointLimitMax" nameView="Chiller Set Point Limit Max" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="0" name="SetPointLimitMin" nameView="Chiller Set Point Limit Min" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="true" name="EnableToleranceAlarm" nameView="Enable Tolerance Alarm" description="Enable Tolerance Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20" name="ToleranceAlarmRange" nameView="Tolerance Alarm Range" description="Tolerance Alarm Range" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
+			<config default="60" name="ToleranceAlarmTime" nameView="Tolerance Alarm Time" description="Tolerance Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
+		</configs>
+		<configs name="OuterChiller" nameView="OuterChiller" >
+			<config default="false" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
+			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:SMC; 2, AIRSYS" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="COM46" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="10" name="ChillerTemperatureOffset" nameView="Chiller Temperature Offset" description="" max="100" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="300" name="SetPointLimitMax" nameView="Chiller Set Point Limit Max" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="0" name="SetPointLimitMin" nameView="Chiller Set Point Limit Min" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="true" name="EnableToleranceAlarm" nameView="Enable Tolerance Alarm" description="Enable Tolerance Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20" name="ToleranceAlarmRange" nameView="Tolerance Alarm Range" description="Tolerance Alarm Range" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
+			<config default="60" name="ToleranceAlarmTime" nameView="Tolerance Alarm Time" description="Tolerance Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
+		</configs>
+		<configs name="TopChiller" nameView="TopChiller" >
+			<config default="false" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
+			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:SMC; 2, AIRSYS" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="COM47" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="10" name="ChillerTemperatureOffset" nameView="Chiller Temperature Offset" description="" max="100" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="300" name="SetPointLimitMax" nameView="Chiller Set Point Limit Max" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="0" name="SetPointLimitMin" nameView="Chiller Set Point Limit Min" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="true" name="EnableToleranceAlarm" nameView="Enable Tolerance Alarm" description="Enable Tolerance Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20" name="ToleranceAlarmRange" nameView="Tolerance Alarm Range" description="Tolerance Alarm Range" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
+			<config default="60" name="ToleranceAlarmTime" nameView="Tolerance Alarm Time" description="Tolerance Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
+		</configs>
 		<configs name="DryPump" nameView="Dry Pump" >
 			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:Sky; 2:Edwards" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
@@ -1573,7 +1681,7 @@
 	</configs>
 
   <!--PMD-->
-  <configs name="PMD" nameView="PMD" >
+    <configs name="PMD" nameView="PMD" >
     <config default="2" name="ChamberType"  nameView="Chamber Type" description="0=>Venus,1=>Kepler2300,2=>Kepler2200A,3=>Kepler2200B" max="3" min="0" paramter="" tag=""  unit="" type="Integer" visible="false"/>
     <config default="100" name="TurboN2FlowSetPoint" nameView="TurboN2SetPoint" description="" max="200" min="0" paramter="" tag="" unit="mtorr" type="Double" />
     <config default="120" name="PrepareTransferTimeout" nameView="Prepare Transfer Timeout" description="prepare transfer time out" max="99999" min="1" paramter="" tag="" unit="s" type="Integer" />
@@ -1638,6 +1746,42 @@
       <config default="20" name="ToleranceAlarmRange" nameView="Tolerance Alarm Range" description="Tolerance Alarm Range" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
       <config default="60" name="ToleranceAlarmTime" nameView="Tolerance Alarm Time" description="Tolerance Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
     </configs>
+		<configs name="InnerChiller" nameView="InnerChiller" >
+			<config default="false" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
+			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:SMC; 2, AIRSYS" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="COM45" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="10" name="ChillerTemperatureOffset" nameView="Chiller Temperature Offset" description="" max="100" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="300" name="SetPointLimitMax" nameView="Chiller Set Point Limit Max" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="0" name="SetPointLimitMin" nameView="Chiller Set Point Limit Min" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="true" name="EnableToleranceAlarm" nameView="Enable Tolerance Alarm" description="Enable Tolerance Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20" name="ToleranceAlarmRange" nameView="Tolerance Alarm Range" description="Tolerance Alarm Range" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
+			<config default="60" name="ToleranceAlarmTime" nameView="Tolerance Alarm Time" description="Tolerance Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
+		</configs>
+		<configs name="OuterChiller" nameView="OuterChiller" >
+			<config default="false" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
+			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:SMC; 2, AIRSYS" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="COM46" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="10" name="ChillerTemperatureOffset" nameView="Chiller Temperature Offset" description="" max="100" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="300" name="SetPointLimitMax" nameView="Chiller Set Point Limit Max" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="0" name="SetPointLimitMin" nameView="Chiller Set Point Limit Min" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="true" name="EnableToleranceAlarm" nameView="Enable Tolerance Alarm" description="Enable Tolerance Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20" name="ToleranceAlarmRange" nameView="Tolerance Alarm Range" description="Tolerance Alarm Range" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
+			<config default="60" name="ToleranceAlarmTime" nameView="Tolerance Alarm Time" description="Tolerance Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
+		</configs>
+		<configs name="TopChiller" nameView="TopChiller" >
+			<config default="false" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
+			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:SMC; 2, AIRSYS" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="COM47" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="10" name="ChillerTemperatureOffset" nameView="Chiller Temperature Offset" description="" max="100" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="300" name="SetPointLimitMax" nameView="Chiller Set Point Limit Max" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="0" name="SetPointLimitMin" nameView="Chiller Set Point Limit Min" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
+			<config default="true" name="EnableToleranceAlarm" nameView="Enable Tolerance Alarm" description="Enable Tolerance Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20" name="ToleranceAlarmRange" nameView="Tolerance Alarm Range" description="Tolerance Alarm Range" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
+			<config default="60" name="ToleranceAlarmTime" nameView="Tolerance Alarm Time" description="Tolerance Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
+		</configs>
     <configs name="DryPump" nameView="Dry Pump" >
       <config default="1" name="MFG" nameView="MFG" description="厂商, 1:Sky; 2:Edwards" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
       <config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />

+ 36 - 1
Venus/Venus_RT/Devices/DeviceManager.cs

@@ -132,7 +132,42 @@ namespace Venus_RT.Instances
                     AddCustomModuleDevice(new AIRSYSChiller(mod, "Chiller"));
                 }
             }
-                
+            if (SC.GetValue<bool>($"{mod}.InnerChiller.EnableChiller") &&
+               SC.GetValue<int>($"{mod}.InnerChiller.CommunicationType") == (int)CommunicationType.RS232)
+            {
+                if (SC.GetValue<int>($"{mod}.InnerChiller.MFG") == (int)ChillerMFG.SMC)
+                {
+                    AddCustomModuleDevice(new SMCChiller(mod, "InnerChiller"));
+                }
+                else if (SC.GetValue<int>($"{mod}.InnerChiller.MFG") == (int)ChillerMFG.AIRSYS)
+                {
+                    AddCustomModuleDevice(new AIRSYSChiller(mod, "InnerChiller"));
+                }
+            }
+            if (SC.GetValue<bool>($"{mod}.OuterChiller.EnableChiller") &&
+               SC.GetValue<int>($"{mod}.OuterChiller.CommunicationType") == (int)CommunicationType.RS232)
+            {
+                if (SC.GetValue<int>($"{mod}.OuterChiller.MFG") == (int)ChillerMFG.SMC)
+                {
+                    AddCustomModuleDevice(new SMCChiller(mod, "OuterChiller"));
+                }
+                else if (SC.GetValue<int>($"{mod}.OuterChiller.MFG") == (int)ChillerMFG.AIRSYS)
+                {
+                    AddCustomModuleDevice(new AIRSYSChiller(mod, "OuterChiller"));
+                }
+            }
+            if (SC.GetValue<bool>($"{mod}.TopChiller.EnableChiller") &&
+              SC.GetValue<int>($"{mod}.TopChiller.CommunicationType") == (int)CommunicationType.RS232)
+            {
+                if (SC.GetValue<int>($"{mod}.TopChiller.MFG") == (int)ChillerMFG.SMC)
+                {
+                    AddCustomModuleDevice(new SMCChiller(mod, "TopChiller"));
+                }
+                else if (SC.GetValue<int>($"{mod}.TopChiller.MFG") == (int)ChillerMFG.AIRSYS)
+                {
+                    AddCustomModuleDevice(new AIRSYSChiller(mod, "TopChiller"));
+                }
+            }
             if (SC.GetValue<bool>($"{mod}.Match.EnableMatch") &&
                 SC.GetValue<int>($"{mod}.Match.CommunicationType") == (int)CommunicationType.RS232 &&
                 SC.GetValue<int>($"{mod}.Match.MFG") == (int)MatchMFG.AdTec)

+ 2 - 2
Venus/Venus_RT/Devices/JetKepler2200APM.cs

@@ -740,14 +740,14 @@ namespace Venus_RT.Devices
             return _pendulumValve.Position;
         }
 
-        public override async void HeatChiller(double value, double offset)
+        public override async void HeatChiller(ChillerType chillerType, double value, double offset)
         {
             _Chiller?.SetChillerTemp((float)value, (float)offset);
             await Task.Delay(1000);
             _Chiller?.SetChillerOnOff(true);
         }
 
-        public override void OnOffChiller(bool onoff)
+        public override void OnOffChiller(ChillerType chillerType, bool onoff)
         {
             _Chiller?.SetChillerOnOff(onoff);
         }

+ 80 - 7
Venus/Venus_RT/Devices/JetKepler2300PM.cs

@@ -78,6 +78,10 @@ namespace Venus_RT.Devices
         private readonly PendulumValve _pendulumValve;
 
         private readonly ChillerBase _Chiller;
+        private readonly ChillerBase _InnerChiller;
+        private readonly ChillerBase _OuterChiller;
+        private readonly ChillerBase _TopChiller;
+
 
         private readonly RfPowerBase _Generator;//srf=>AdTecGenerator
         private readonly RfPowerBase _GeneratorBias;//brf=>CometRF
@@ -366,7 +370,42 @@ namespace Venus_RT.Devices
                 }
             }
 
-
+            if (SC.GetValue<bool>($"{Module}.InnerChiller.EnableChiller") &&
+                SC.GetValue<int>($"{Module}.InnerChiller.CommunicationType") == (int)CommunicationType.RS232)
+            {
+                if (SC.GetValue<int>($"{Module}.InnerChiller.MFG") == (int)ChillerMFG.SMC)
+                {
+                    _InnerChiller = DEVICE.GetDevice<SMCChiller>($"{Module}.{VenusDevice.InnerChiller}");
+                }
+                else if (SC.GetValue<int>($"{Module}.InnerChiller.MFG") == (int)ChillerMFG.AIRSYS)
+                {
+                    _InnerChiller = DEVICE.GetDevice<AIRSYSChiller>($"{Module}.{VenusDevice.InnerChiller}");
+                }
+            }
+            if (SC.GetValue<bool>($"{Module}.OuterChiller.EnableChiller") &&
+               SC.GetValue<int>($"{Module}.OuterChiller.CommunicationType") == (int)CommunicationType.RS232)
+            {
+                if (SC.GetValue<int>($"{Module}.OuterChiller.MFG") == (int)ChillerMFG.SMC)
+                {
+                    _OuterChiller = DEVICE.GetDevice<SMCChiller>($"{Module}.{VenusDevice.OuterChiller}");
+                }
+                else if (SC.GetValue<int>($"{Module}.OuterChiller.MFG") == (int)ChillerMFG.AIRSYS)
+                {
+                    _OuterChiller = DEVICE.GetDevice<AIRSYSChiller>($"{Module}.{VenusDevice.OuterChiller}");
+                }
+            }
+            if (SC.GetValue<bool>($"{Module}.TopChiller.EnableChiller") &&
+              SC.GetValue<int>($"{Module}.TopChiller.CommunicationType") == (int)CommunicationType.RS232)
+            {
+                if (SC.GetValue<int>($"{Module}.TopChiller.MFG") == (int)ChillerMFG.SMC)
+                {
+                    _TopChiller = DEVICE.GetDevice<SMCChiller>($"{Module}.{VenusDevice.TopChiller}");
+                }
+                else if (SC.GetValue<int>($"{Module}.TopChiller.MFG") == (int)ChillerMFG.AIRSYS)
+                {
+                    _TopChiller = DEVICE.GetDevice<AIRSYSChiller>($"{Module}.{VenusDevice.TopChiller}");
+                }
+            }
             // RS223 AdTec Generator
             if (SC.GetValue<int>($"{Module}.Rf.CommunicationType") == (int)CommunicationType.RS232 &&
                 SC.GetValue<int>($"{Module}.Rf.MFG") == (int)GeneratorMFG.AdTec)
@@ -753,16 +792,50 @@ namespace Venus_RT.Devices
             return _pendulumValve.Position;
         }
 
-        public override async void HeatChiller(double value, double offset)
+        public override async void HeatChiller(ChillerType chillerType, double value, double offset)
         {
-            _Chiller?.SetChillerTemp((float)value, (float)offset);
-            await Task.Delay(1000);
-            _Chiller?.SetChillerOnOff(true);
+            switch (chillerType)
+            {
+                case ChillerType.Chiller:
+                    _Chiller?.SetChillerTemp((float)value, (float)offset);
+                    await Task.Delay(1000);
+                    _Chiller?.SetChillerOnOff(true);
+                    break;
+                case ChillerType.InnerChiller:
+                    _InnerChiller?.SetChillerTemp((float)value, (float)offset);
+                    await Task.Delay(1000);
+                    _InnerChiller?.SetChillerOnOff(true);
+                    break;
+                case ChillerType.OuterChiller:
+                    _OuterChiller?.SetChillerTemp((float)value, (float)offset);
+                    await Task.Delay(1000);
+                    _OuterChiller?.SetChillerOnOff(true);
+                    break;
+                case ChillerType.TopChiller:
+                    _TopChiller?.SetChillerTemp((float)value, (float)offset);
+                    await Task.Delay(1000);
+                    _TopChiller?.SetChillerOnOff(true);
+                    break;
+            }         
         }
 
-        public override void OnOffChiller(bool onoff)
+        public override void OnOffChiller(ChillerType chillerType, bool onoff)
         {
-            _Chiller?.SetChillerOnOff(onoff);
+            switch (chillerType)
+            {
+                case ChillerType.Chiller:
+                    _Chiller?.SetChillerOnOff(onoff);
+                    break;
+                case ChillerType.InnerChiller:
+                    _InnerChiller?.SetChillerOnOff(onoff);
+                    break;
+                case ChillerType.OuterChiller:
+                    _OuterChiller?.SetChillerOnOff(onoff);
+                    break;
+                case ChillerType.TopChiller:
+                    _TopChiller?.SetChillerOnOff(onoff);
+                    break;
+            }
         }
 
         public override bool CheckChillerStatus()

+ 8 - 5
Venus/Venus_RT/Devices/JetPMBase.cs

@@ -8,7 +8,7 @@ using Venus_Core;
 
 using Aitex.Core.RT.Device.Unit;
 using Venus_RT.Modules;
-
+using System;
 
 namespace Venus_RT.Devices
 {
@@ -255,11 +255,14 @@ namespace Venus_RT.Devices
             });
 
             OP.Subscribe($"{Module}.HeatChiller", (cmd, args) => {
-                HeatChiller((float)args[0], (float)args[1]);
+                var chillerType = (ChillerType)Enum.Parse(typeof(ChillerType), args[0].ToString());
+                HeatChiller(chillerType, (float)args[1], (float)args[2]);
                 return true;
             });
             OP.Subscribe($"{Module}.OnOffChiller", (cmd, args) => {
-                OnOffChiller((bool)args[0]);
+                var chillerType = (ChillerType)Enum.Parse(typeof(ChillerType), args[0].ToString());
+
+                OnOffChiller(chillerType, (bool)args[1]);
                 return true;
             });
             OP.Subscribe($"{Module}.WallChiller", (cmd, args) => {
@@ -353,9 +356,9 @@ namespace Venus_RT.Devices
 
         public abstract int GetPVPosition();
 
-        public abstract  void HeatChiller(double value, double offset);
+        public abstract  void HeatChiller(ChillerType chillerType,double value, double offset);
 
-        public abstract void OnOffChiller(bool onoff);
+        public abstract void OnOffChiller(ChillerType chillerType,bool onoff);
 
         public abstract bool CheckChillerStatus();
 

+ 2 - 2
Venus/Venus_RT/Devices/JetVenusPM.cs

@@ -725,14 +725,14 @@ namespace Venus_RT.Devices
             return _pendulumValve.Position;
         }
 
-        public override async void HeatChiller(double value, double offset)
+        public override async void HeatChiller(ChillerType chillerType, double value, double offset)
         {
             _Chiller?.SetChillerTemp((float)value, (float)offset);
             await Task.Delay(1000);
             _Chiller?.SetChillerOnOff(true);
         }
 
-        public override void OnOffChiller(bool onoff)
+        public override void OnOffChiller(ChillerType chillerType, bool onoff)
         {
             _Chiller?.SetChillerOnOff(onoff);
         }

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

@@ -270,7 +270,10 @@ namespace Venus_RT.Modules.PMs
         private bool PrepareTemp()
         {
             currentRecipeResult.RecipeCurrentCounter = 1;
-            return SetCoolantTemp(ChillerTemp, _OffsetTemp);
+            
+            return true;
+            //2023/08/17注释,kepler2300变三个chiller
+            //return SetCoolantTemp(ChillerTemp, _OffsetTemp);
         }
 
         private bool IsTempReady()

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

@@ -135,7 +135,7 @@ namespace Venus_RT.Modules.PMs
                 Notify($"水冷当前温度{_chamber.CoolantOutletTempFB} ℃, 大于目标 {target.ToString()} ℃");
             }
 
-            _chamber.HeatChiller(target, offset);
+            //_chamber.HeatChiller(target, offset);
             Notify($"检查水冷温度值,当前温度{_chamber.CoolantOutletTempFB} ℃, 目标 {target.ToString()} ℃");
 
             return true;

+ 2 - 3
Venus/Venus_Setup/Venus_RT.iss

@@ -33,9 +33,8 @@ Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"
 
 
 [Files]
-Source: "..\Venus_RT\bin\Release\*";Excludes:"Config,Recipes,Logs"; DestDir: "{app}"; Flags: recursesubdirs createallsubdirs
-Source: "..\Venus_RT\bin\Release\Config\*"; Excludes:"_sc.data";DestDir: "{app}\Config"; 
-Source: "..\Venus_RT\bin\Release\Config\*"; Excludes:"_sc.data.bak";DestDir: "{app}\Config";
+Source: "..\Venus_RT\bin\Release\*";Excludes:"Config,Recipes,Logs,LeakCheck,Objects,PartialPressureResult,VATPerformanceResult"; DestDir: "{app}"; Flags: recursesubdirs createallsubdirs
+Source: "..\Venus_RT\bin\Release\Config\*"; Excludes:"*.data,*.bak";DestDir: "{app}\Config";  Flags: recursesubdirs
 
 
 [Icons]

+ 1 - 1
Venus/Venus_UI/Config/UIMenu.json

@@ -12,7 +12,7 @@
       },
       {
         "Id": "Platform",
-        "IsShow": "true",
+        "IsShow": "false",
         "Name": "Platform",
         "View": "PlatformView"
       },