Browse Source

1.Stable与Tolerance 功能优化
2.IoHeater Device 功能重写,添加配置文件控制

lixiang 1 year ago
parent
commit
552d60ca99

+ 2 - 2
Venus/Framework/Common/Device/Common/DeviceManagerBase.cs

@@ -49,10 +49,10 @@ namespace Aitex.Core.RT.Device
 
                     device.Monitor();
 
-                    _trigExceed500.CLK = _peformanceTimer.GetElapseTime() > 500;
+                    _trigExceed500.CLK = _peformanceTimer.GetElapseTime() > 2000;
                     if (_trigExceed500.Q)
                     {
-                        //LOG.Warning($"{device.Module}.{device.Name} monitor time {_peformanceTimer.GetElapseTime()} ms");
+                        LOG.Warning($"{device.Module}.{device.Name} monitor time {_peformanceTimer.GetElapseTime()} ms");
                     }
                 }
                 catch (Exception ex)

+ 22 - 8
Venus/Framework/Common/Tolerance/RecipeToleranceChecker.cs

@@ -12,16 +12,18 @@ namespace Aitex.Core.RT.Tolerance
         string _Module;
 
         public bool IsStable = true;
+        private bool _IsStableType;
         public RecipeToleranceChecker(string module)
         {
             _stopwatch = new Stopwatch();
             _Module = module;
         }
-        public void Start( List<ToleranceObject> toleranceObjects)
+        public void Start(List<ToleranceObject> toleranceObjects, bool isStableType)
         {
             _stopwatch.Restart();
             _toleranceObjects = toleranceObjects;
             IsStable = false;
+            _IsStableType = isStableType;
         }
         public RState Monitor(params double[] feedBacks)
         {
@@ -31,22 +33,33 @@ namespace Aitex.Core.RT.Tolerance
             }
             for (int i = 0; i < _toleranceObjects.Count; i++)
             {
-                if (_stopwatch.ElapsedMilliseconds > _toleranceObjects[i].DelayTime)
+                if (_stopwatch.ElapsedMilliseconds > _toleranceObjects[i].DelayTime || (_IsStableType && _stopwatch.ElapsedMilliseconds>500))
                 {
-                    if ((feedBacks[i] < _toleranceObjects[i].AlarmMin || feedBacks[i] > _toleranceObjects[i].AlarmMax) && _toleranceObjects[i].AlarmFlag == false && _toleranceObjects[i].SetPoint!=0 && _toleranceObjects[i].WarningFlag == true)
+                    if (_IsStableType)
+                    {
+                        _toleranceObjects[i].AlarmFlag = false;
+                        _toleranceObjects[i].WarningFlag = false;
+                    }
+                    if ((feedBacks[i] < _toleranceObjects[i].AlarmMin || feedBacks[i] > _toleranceObjects[i].AlarmMax) && _toleranceObjects[i].AlarmFlag == false && _toleranceObjects[i].SetPoint != 0 && _toleranceObjects[i].WarningFlag == true)
                     {
                         _toleranceObjects[i].AlarmFlag = true;
-                        LOG.Write(eEvent.ERR_PM_TOLERANCE, _Module, $"{_toleranceObjects[i].Name}:Currnt Value:{feedBacks[i]},Over Range {_toleranceObjects[i].AlarmMin}-{_toleranceObjects[i].AlarmMax}" );
-                        return RState.Failed;
+                        if (_IsStableType == false)
+                        {
+                            LOG.Write(eEvent.ERR_PM_TOLERANCE, _Module, $"{_toleranceObjects[i].Name}:Currnt Value:{feedBacks[i]},Over Range {_toleranceObjects[i].AlarmMin}-{_toleranceObjects[i].AlarmMax}");
+                            return RState.Failed;
+                        }
                     }
                     else if ((feedBacks[i] < _toleranceObjects[i].WarningMin || feedBacks[i] > _toleranceObjects[i].WarningMax) && _toleranceObjects[i].WarningFlag == false && _toleranceObjects[i].SetPoint != 0)
                     {
                         IsStable = false;
                         _toleranceObjects[i].WarningFlag = true;
-                        LOG.Write(eEvent.WARN_PM_TOLERANCE, _Module, $"{_toleranceObjects[i].Name}:Currnt Value:{feedBacks[i]},Over Range {_toleranceObjects[i].WarningMin}-{_toleranceObjects[i].WarningMax}");
+                        if (_IsStableType == false)
+                        {
+                            LOG.Write(eEvent.WARN_PM_TOLERANCE, _Module, $"{_toleranceObjects[i].Name}:Currnt Value:{feedBacks[i]},Over Range {_toleranceObjects[i].WarningMin}-{_toleranceObjects[i].WarningMax}");
+                        }                   
                     }
                     else
-                    {
+                    {                  
                         IsStable = true;
                     }
                 }
@@ -55,6 +68,7 @@ namespace Aitex.Core.RT.Tolerance
         }
         public void End()
         {
+            IsStable = true;
             _stopwatch.Stop();
         }
     }
@@ -77,7 +91,7 @@ namespace Aitex.Core.RT.Tolerance
         {
             Name = name;
             SetPoint = setPoint;
-           
+
             DelayTime = delayTime;
             if (toleranceMode == ToleranceMode.Percent)
             {

+ 1 - 4
Venus/Framework/Common/Tolerance/ToleranceChecker.cs

@@ -1,7 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
+
 using Aitex.Core.Util;
 
 namespace Aitex.Core.RT.Tolerance

+ 13 - 29
Venus/Venus_Core/ProcessUnitDefine.cs

@@ -119,8 +119,17 @@ namespace Venus_Core
     public class HeaterUnit : ProcessUnitBase
     {
         public string UnitName { get; set; } = "HeaterUnit";
+        [IsTolerance]
+        public ToleranceMode ToleranceMode { get; set; }
+        [IsTolerance]
+        [CustomName("ToleranceDelayTime(ms)")]
+        public int ToleranceDelayTime { get; set; }
         [CustomName("Heater Temperature(℃)")]
         public int HeaterTemp { get; set; }
+        [IsTolerance]
+        public int HeaterTempWarningRange { get; set; }
+        [IsTolerance]
+        public int HeaterTempAlarmRange { get; set; }
         [CustomName("Heater Ratio")]
         public int HeaterRatio { get; set; }
         public Suspect SuspectPosition { get; set; }
@@ -407,39 +416,14 @@ namespace Venus_Core
     public class ESCHVUnit : ProcessUnitBase
     {
         public string UnitName { get; set; } = "ESCHVUnit";
-        [IsTolerance]
-        public ToleranceMode ToleranceMode { get; set; }
-        [IsTolerance]
-        [CustomName("ToleranceDelayTime(ms)")]
-        public int ToleranceDelayTime { get; set; }
         public int BacksideHelium { get; set; }
-        //[IsTolerance]
-        //public float HeliumWarningRange { get; set; }
-        //[IsTolerance]
-        //public float HeliumAlarmRange { get; set; }
-        public int MinHeFlow { get; set; }
-        public int MaxHeFlow { get; set; }
-        [CustomName("CheckDelay(ms)")]
+        [CustomName("HeCheckDelayTime(ms)")]
         public int CheckDelay { get; set; }
+        public float MinHeFlow { get; set; }
+        public float MaxHeFlow { get; set; }
+
         public int ESCClampValtage { get; set; }
-        public int Temperature { get; set; }
     }
-    //public class SEESCHVUnit : ProcessUnitBase
-    //{
-    //    public string UnitName { get; set; } = "SEESCHVUnit";
-    //    [IsTolerance]
-    //    public ToleranceMode ToleranceMode { get; set; }
-    //    [IsTolerance]
-    //    [CustomName("ToleranceDelayTime(ms)")]
-    //    public int ToleranceDelayTime { get; set; }
-    //    public int BacksideHelium { get; set; }
-    //    [IsTolerance]
-    //    public int HeliumWarningRange { get; set; }
-    //    [IsTolerance]
-    //    public int HeliumAlarmRange { get; set; }
-    //    public int ESCClampValtage { get; set; }
-    //    public int Temperature { get; set; }
-    //}
     public class ProcessKitUnit : ProcessUnitBase
     {
         public string UnitName { get; set; } = "ProcessKitUnit";

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

@@ -714,7 +714,7 @@ namespace Venus_MainPages.ViewModels
                     case "ChamberType":
                         control = new ComboBox();
                         control.IsEnabled = false;
-                        control.Height = 23;
+                        //control.Height = 23;
                         control.SetBinding(ComboBox.SelectedItemProperty, binding);
                         ItemsControlHelper.SetEnumValuesToItemsSource(control, true);
                         break;
@@ -723,7 +723,7 @@ namespace Venus_MainPages.ViewModels
                         cb.IsEnabled = false;
                         cb.SelectionChanged += ChangeUI;
                         control = cb;
-                        control.Height = 23;
+                        //control.Height = 23;
                         ItemsControlHelper.SetEnumValuesToItemsSource(control, true);
 
                         control.SetBinding(ComboBox.SelectedItemProperty, binding);
@@ -754,7 +754,7 @@ namespace Venus_MainPages.ViewModels
                             ItemsSource = GetFilesNames(Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", $"{ModuleName}\\Chuck"))
 
                         };
-                        control.Height = 23;
+                        //control.Height = 23;
                         control.MinWidth = 100;
                         control.MaxWidth = 300;
                         control.SetBinding(ComboBox.SelectedItemProperty, binding);
@@ -783,7 +783,7 @@ namespace Venus_MainPages.ViewModels
                         {
                             ItemsSource = GetFilesNames(Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", $"{ModuleName}\\DeChuck"))
                         };
-                        control.Height = 23;
+                        //control.Height = 23;
                         control.MinWidth = 100;
                         control.MaxWidth = 300;
                         control.SetBinding(ComboBox.SelectedItemProperty, binding);

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

@@ -71,6 +71,7 @@
 
             </Style.Triggers>
         </Style>
+
     </UserControl.Resources>
     <i:Interaction.Triggers>
         <i:EventTrigger EventName="Loaded">
@@ -159,7 +160,7 @@
 
                 </Grid>
                 
-                <ScrollViewer Grid.Row="1"  HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
+                <ScrollViewer Grid.Row="1"  HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" FontSize="14">
                     <StackPanel   x:Name="bodyStackPanel" Orientation="Horizontal" Grid.Row="1" ScrollViewer.VerticalScrollBarVisibility="Visible"/>
                 </ScrollViewer>
             </Grid>

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


+ 18 - 114
Venus/Venus_RT/Config/System_Kepler2200.sccfg

@@ -559,41 +559,17 @@
 			<config default="30" name="GasPurgeCycleCount" nameView="Gas Purge Cycle Count" description="" max="200" min="0" paramter="" tag="" unit="times" type="Integer" />
 			<config default="5" name="GasPurgeFlowTime" nameView="Gas Purge Flow Time" description="" max="300" min="0" paramter="" tag="" unit="second" type="Integer" />
 			<config default="10" name="GasPurgePumpTime" nameView="Gas Purge Pump Time" description="" max="300" min="0" paramter="" tag="" unit="second" type="Integer" />
-		</configs>
-		<configs name="HeaterChamber" nameView="Heater Substrate" >
-			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
-			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
-			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="100" name="HeaterWarningRange" nameView="Heater deviation Warning Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
-			<config default="10" name="HeaterWarningTime" nameView="Heater deviation Warning Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
-
-			<config name="TempOffsetPoint_1" nameView="Temp Offset Point 1" description="温度补偿点 1" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_1" nameView="Offset Value 1" description="补偿值 1" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_2" nameView="Temp Offset Point 2" description="温度补偿点 2" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_2" nameView="Offset Value 2" description="补偿值 2" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_3" nameView="Temp Offset Point 3" description="温度补偿点 3" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_3" nameView="Offset Value 3" description="补偿值 3" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_4" nameView="Temp Offset Point 4" description="温度补偿点 4" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_4" nameView="Offset Value 4" description="补偿值 4" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_5" nameView="Temp Offset Point 5" description="温度补偿点 5" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_5" nameView="Offset Value 5" description="补偿值 5" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_6" nameView="Temp Offset Point 6" description="温度补偿点 6" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_6" nameView="Offset Value 6" description="补偿值 6" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_7" nameView="Temp Offset Point 7" description="温度补偿点 7" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_7" nameView="Offset Value 7" description="补偿值 7" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_8" nameView="Temp Offset Point 8" description="温度补偿点 8" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_8" nameView="Offset Value 8" description="补偿值 8" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
-		</configs>
+		</configs>		
 		<configs name="PendulumHeater" nameView="Heater Pendulum" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
 			<config default="100" name="HeaterWarningRange" nameView="Heater deviation Warning Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterWarningTime" nameView="Heater deviation Warning Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
 
-			<config name="TempOffsetPoint_1" nameView="Temp Offset Point 1" description="温度补偿点 1" unit="degree" type="Integer" max="300" min="0" />
+			<!--<config name="TempOffsetPoint_1" nameView="Temp Offset Point 1" description="温度补偿点 1" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_1" nameView="Offset Value 1" description="补偿值 1" unit="degree" type="Double" max="300" min="0" />
 			<config name="TempOffsetPoint_2" nameView="Temp Offset Point 2" description="温度补偿点 2" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_2" nameView="Offset Value 2" description="补偿值 2" unit="degree" type="Double" max="300" min="0" />
@@ -610,7 +586,7 @@
 			<config name="TempOffsetPoint_8" nameView="Temp Offset Point 8" description="温度补偿点 8" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_8" nameView="Offset Value 8" description="补偿值 8" unit="degree" type="Double" max="300" min="0" />
 			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
+			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />-->
 		</configs>
 		<configs name="ElectrostaticVoltageSource" nameView="Electrostatic Voltage Source">
 			<config default="COM64" name="Port" nameView="Port" description="serial port name of ElectrostaticVoltageSource" max="" min="" paramter="" tag="" unit="" type="String" />
@@ -933,41 +909,17 @@
 			<config default="30" name="GasPurgeCycleCount" nameView="Gas Purge Cycle Count" description="" max="200" min="0" paramter="" tag="" unit="times" type="Integer" />
 			<config default="5" name="GasPurgeFlowTime" nameView="Gas Purge Flow Time" description="" max="300" min="0" paramter="" tag="" unit="second" type="Integer" />
 			<config default="10" name="GasPurgePumpTime" nameView="Gas Purge Pump Time" description="" max="300" min="0" paramter="" tag="" unit="second" type="Integer" />
-		</configs>
-		<configs name="HeaterChamber" nameView="Heater Substrate" >
-			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
-			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
-			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="100" name="HeaterWarningRange" nameView="Heater deviation Warning Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
-			<config default="10" name="HeaterWarningTime" nameView="Heater deviation Warning Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
-
-			<config name="TempOffsetPoint_1" nameView="Temp Offset Point 1" description="温度补偿点 1" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_1" nameView="Offset Value 1" description="补偿值 1" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_2" nameView="Temp Offset Point 2" description="温度补偿点 2" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_2" nameView="Offset Value 2" description="补偿值 2" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_3" nameView="Temp Offset Point 3" description="温度补偿点 3" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_3" nameView="Offset Value 3" description="补偿值 3" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_4" nameView="Temp Offset Point 4" description="温度补偿点 4" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_4" nameView="Offset Value 4" description="补偿值 4" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_5" nameView="Temp Offset Point 5" description="温度补偿点 5" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_5" nameView="Offset Value 5" description="补偿值 5" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_6" nameView="Temp Offset Point 6" description="温度补偿点 6" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_6" nameView="Offset Value 6" description="补偿值 6" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_7" nameView="Temp Offset Point 7" description="温度补偿点 7" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_7" nameView="Offset Value 7" description="补偿值 7" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_8" nameView="Temp Offset Point 8" description="温度补偿点 8" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_8" nameView="Offset Value 8" description="补偿值 8" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
-		</configs>
+		</configs>		
 		<configs name="PendulumHeater" nameView="Heater Pendulum" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
 			<config default="100" name="HeaterWarningRange" nameView="Heater deviation Warning Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterWarningTime" nameView="Heater deviation Warning Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
 
-			<config name="TempOffsetPoint_1" nameView="Temp Offset Point 1" description="温度补偿点 1" unit="degree" type="Integer" max="300" min="0" />
+			<!--<config name="TempOffsetPoint_1" nameView="Temp Offset Point 1" description="温度补偿点 1" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_1" nameView="Offset Value 1" description="补偿值 1" unit="degree" type="Double" max="300" min="0" />
 			<config name="TempOffsetPoint_2" nameView="Temp Offset Point 2" description="温度补偿点 2" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_2" nameView="Offset Value 2" description="补偿值 2" unit="degree" type="Double" max="300" min="0" />
@@ -984,7 +936,7 @@
 			<config name="TempOffsetPoint_8" nameView="Temp Offset Point 8" description="温度补偿点 8" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_8" nameView="Offset Value 8" description="补偿值 8" unit="degree" type="Double" max="300" min="0" />
 			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
+			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />-->
 		</configs>
 		<configs name="ElectrostaticVoltageSource" nameView="Electrostatic Voltage Source">
 			<config default="COM64" name="Port" nameView="Port" description="serial port name of ElectrostaticVoltageSource" max="" min="" paramter="" tag="" unit="" type="String" />
@@ -1307,40 +1259,16 @@
 			<config default="5" name="GasPurgeFlowTime" nameView="Gas Purge Flow Time" description="" max="300" min="0" paramter="" tag="" unit="second" type="Integer" />
 			<config default="10" name="GasPurgePumpTime" nameView="Gas Purge Pump Time" description="" max="300" min="0" paramter="" tag="" unit="second" type="Integer" />
 		</configs>
-		<configs name="HeaterChamber" nameView="Heater Substrate" >
-			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
-			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
-			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="100" name="HeaterWarningRange" nameView="Heater deviation Warning Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
-			<config default="10" name="HeaterWarningTime" nameView="Heater deviation Warning Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
-
-			<config name="TempOffsetPoint_1" nameView="Temp Offset Point 1" description="温度补偿点 1" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_1" nameView="Offset Value 1" description="补偿值 1" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_2" nameView="Temp Offset Point 2" description="温度补偿点 2" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_2" nameView="Offset Value 2" description="补偿值 2" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_3" nameView="Temp Offset Point 3" description="温度补偿点 3" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_3" nameView="Offset Value 3" description="补偿值 3" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_4" nameView="Temp Offset Point 4" description="温度补偿点 4" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_4" nameView="Offset Value 4" description="补偿值 4" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_5" nameView="Temp Offset Point 5" description="温度补偿点 5" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_5" nameView="Offset Value 5" description="补偿值 5" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_6" nameView="Temp Offset Point 6" description="温度补偿点 6" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_6" nameView="Offset Value 6" description="补偿值 6" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_7" nameView="Temp Offset Point 7" description="温度补偿点 7" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_7" nameView="Offset Value 7" description="补偿值 7" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_8" nameView="Temp Offset Point 8" description="温度补偿点 8" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_8" nameView="Offset Value 8" description="补偿值 8" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
-		</configs>
 		<configs name="PendulumHeater" nameView="Heater Pendulum" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
 			<config default="100" name="HeaterWarningRange" nameView="Heater deviation Warning Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterWarningTime" nameView="Heater deviation Warning Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
 
-			<config name="TempOffsetPoint_1" nameView="Temp Offset Point 1" description="温度补偿点 1" unit="degree" type="Integer" max="300" min="0" />
+			<!--<config name="TempOffsetPoint_1" nameView="Temp Offset Point 1" description="温度补偿点 1" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_1" nameView="Offset Value 1" description="补偿值 1" unit="degree" type="Double" max="300" min="0" />
 			<config name="TempOffsetPoint_2" nameView="Temp Offset Point 2" description="温度补偿点 2" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_2" nameView="Offset Value 2" description="补偿值 2" unit="degree" type="Double" max="300" min="0" />
@@ -1357,7 +1285,7 @@
 			<config name="TempOffsetPoint_8" nameView="Temp Offset Point 8" description="温度补偿点 8" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_8" nameView="Offset Value 8" description="补偿值 8" unit="degree" type="Double" max="300" min="0" />
 			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
+			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />-->
 		</configs>
 		<configs name="ElectrostaticVoltageSource" nameView="Electrostatic Voltage Source">
 			<config default="COM64" name="Port" nameView="Port" description="serial port name of ElectrostaticVoltageSource" max="" min="" paramter="" tag="" unit="" type="String" />
@@ -1680,40 +1608,16 @@
 			<config default="5" name="GasPurgeFlowTime" nameView="Gas Purge Flow Time" description="" max="300" min="0" paramter="" tag="" unit="second" type="Integer" />
 			<config default="10" name="GasPurgePumpTime" nameView="Gas Purge Pump Time" description="" max="300" min="0" paramter="" tag="" unit="second" type="Integer" />
 		</configs>
-		<configs name="HeaterChamber" nameView="Heater Substrate" >
-			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
-			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
-			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="100" name="HeaterWarningRange" nameView="Heater deviation Warning Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
-			<config default="10" name="HeaterWarningTime" nameView="Heater deviation Warning Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
-
-			<config name="TempOffsetPoint_1" nameView="Temp Offset Point 1" description="温度补偿点 1" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_1" nameView="Offset Value 1" description="补偿值 1" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_2" nameView="Temp Offset Point 2" description="温度补偿点 2" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_2" nameView="Offset Value 2" description="补偿值 2" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_3" nameView="Temp Offset Point 3" description="温度补偿点 3" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_3" nameView="Offset Value 3" description="补偿值 3" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_4" nameView="Temp Offset Point 4" description="温度补偿点 4" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_4" nameView="Offset Value 4" description="补偿值 4" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_5" nameView="Temp Offset Point 5" description="温度补偿点 5" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_5" nameView="Offset Value 5" description="补偿值 5" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_6" nameView="Temp Offset Point 6" description="温度补偿点 6" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_6" nameView="Offset Value 6" description="补偿值 6" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_7" nameView="Temp Offset Point 7" description="温度补偿点 7" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_7" nameView="Offset Value 7" description="补偿值 7" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_8" nameView="Temp Offset Point 8" description="温度补偿点 8" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_8" nameView="Offset Value 8" description="补偿值 8" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
-		</configs>
 		<configs name="PendulumHeater" nameView="Heater Pendulum" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
 			<config default="100" name="HeaterWarningRange" nameView="Heater deviation Warning Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterWarningTime" nameView="Heater deviation Warning Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
 
-			<config name="TempOffsetPoint_1" nameView="Temp Offset Point 1" description="温度补偿点 1" unit="degree" type="Integer" max="300" min="0" />
+			<!--<config name="TempOffsetPoint_1" nameView="Temp Offset Point 1" description="温度补偿点 1" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_1" nameView="Offset Value 1" description="补偿值 1" unit="degree" type="Double" max="300" min="0" />
 			<config name="TempOffsetPoint_2" nameView="Temp Offset Point 2" description="温度补偿点 2" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_2" nameView="Offset Value 2" description="补偿值 2" unit="degree" type="Double" max="300" min="0" />
@@ -1730,7 +1634,7 @@
 			<config name="TempOffsetPoint_8" nameView="Temp Offset Point 8" description="温度补偿点 8" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_8" nameView="Offset Value 8" description="补偿值 8" unit="degree" type="Double" max="300" min="0" />
 			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
+			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />-->
 		</configs>
 		<configs name="ElectrostaticVoltageSource" nameView="Electrostatic Voltage Source">
 			<config default="COM64" name="Port" nameView="Port" description="serial port name of ElectrostaticVoltageSource" max="" min="" paramter="" tag="" unit="" type="String" />

+ 36 - 104
Venus/Venus_RT/Config/System_Kepler2300.sccfg

@@ -669,33 +669,10 @@
 			<config default="5" name="GasPurgeFlowTime" nameView="Gas Purge Flow Time" description="" max="300" min="0" paramter="" tag="" unit="second" type="Integer" />
 			<config default="10" name="GasPurgePumpTime" nameView="Gas Purge Pump Time" description="" max="300" min="0" paramter="" tag="" unit="second" type="Integer" />
 		</configs>
-		<configs name="HeaterChamber" nameView="Heater Substrate" >
-			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
-			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
-			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="100" name="HeaterWarningRange" nameView="Heater deviation Warning Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
-			<config default="10" name="HeaterWarningTime" nameView="Heater deviation Warning Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
-
-			<config name="TempOffsetPoint_1" nameView="Temp Offset Point 1" description="温度补偿点 1" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_1" nameView="Offset Value 1" description="补偿值 1" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_2" nameView="Temp Offset Point 2" description="温度补偿点 2" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_2" nameView="Offset Value 2" description="补偿值 2" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_3" nameView="Temp Offset Point 3" description="温度补偿点 3" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_3" nameView="Offset Value 3" description="补偿值 3" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_4" nameView="Temp Offset Point 4" description="温度补偿点 4" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_4" nameView="Offset Value 4" description="补偿值 4" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_5" nameView="Temp Offset Point 5" description="温度补偿点 5" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_5" nameView="Offset Value 5" description="补偿值 5" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_6" nameView="Temp Offset Point 6" description="温度补偿点 6" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_6" nameView="Offset Value 6" description="补偿值 6" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_7" nameView="Temp Offset Point 7" description="温度补偿点 7" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_7" nameView="Offset Value 7" description="补偿值 7" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_8" nameView="Temp Offset Point 8" description="温度补偿点 8" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_8" nameView="Offset Value 8" description="补偿值 8" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
-		</configs>
+		
 		<configs name="WallHeater" nameView="Heater Wall" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -722,6 +699,8 @@
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
 		<configs name="ForelineHeater" nameView="Heater Foreline" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -748,6 +727,8 @@
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
 		<configs name="ValveHeater" nameView="Valve Heater" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -774,6 +755,8 @@
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
 		<configs name="PendulumHeater" nameView="Heater Pendulum" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -1216,33 +1199,10 @@
 			<config default="5" name="GasPurgeFlowTime" nameView="Gas Purge Flow Time" description="" max="300" min="0" paramter="" tag="" unit="second" type="Integer" />
 			<config default="10" name="GasPurgePumpTime" nameView="Gas Purge Pump Time" description="" max="300" min="0" paramter="" tag="" unit="second" type="Integer" />
 		</configs>
-		<configs name="HeaterChamber" nameView="Heater Substrate" >
-			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
-			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
-			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="100" name="HeaterWarningRange" nameView="Heater deviation Warning Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
-			<config default="10" name="HeaterWarningTime" nameView="Heater deviation Warning Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
-
-			<config name="TempOffsetPoint_1" nameView="Temp Offset Point 1" description="温度补偿点 1" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_1" nameView="Offset Value 1" description="补偿值 1" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_2" nameView="Temp Offset Point 2" description="温度补偿点 2" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_2" nameView="Offset Value 2" description="补偿值 2" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_3" nameView="Temp Offset Point 3" description="温度补偿点 3" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_3" nameView="Offset Value 3" description="补偿值 3" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_4" nameView="Temp Offset Point 4" description="温度补偿点 4" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_4" nameView="Offset Value 4" description="补偿值 4" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_5" nameView="Temp Offset Point 5" description="温度补偿点 5" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_5" nameView="Offset Value 5" description="补偿值 5" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_6" nameView="Temp Offset Point 6" description="温度补偿点 6" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_6" nameView="Offset Value 6" description="补偿值 6" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_7" nameView="Temp Offset Point 7" description="温度补偿点 7" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_7" nameView="Offset Value 7" description="补偿值 7" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_8" nameView="Temp Offset Point 8" description="温度补偿点 8" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_8" nameView="Offset Value 8" description="补偿值 8" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
-		</configs>
+		
 		<configs name="WallHeater" nameView="Heater Wall" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -1269,6 +1229,8 @@
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
 		<configs name="ForelineHeater" nameView="Heater Foreline" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -1295,6 +1257,8 @@
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
 		<configs name="ValveHeater" nameView="Valve Heater" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -1321,6 +1285,8 @@
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
 		<configs name="PendulumHeater" nameView="Heater Pendulum" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -1763,33 +1729,10 @@
 			<config default="5" name="GasPurgeFlowTime" nameView="Gas Purge Flow Time" description="" max="300" min="0" paramter="" tag="" unit="second" type="Integer" />
 			<config default="10" name="GasPurgePumpTime" nameView="Gas Purge Pump Time" description="" max="300" min="0" paramter="" tag="" unit="second" type="Integer" />
 		</configs>
-		<configs name="HeaterChamber" nameView="Heater Substrate" >
-			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
-			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
-			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="100" name="HeaterWarningRange" nameView="Heater deviation Warning Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
-			<config default="10" name="HeaterWarningTime" nameView="Heater deviation Warning Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
-
-			<config name="TempOffsetPoint_1" nameView="Temp Offset Point 1" description="温度补偿点 1" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_1" nameView="Offset Value 1" description="补偿值 1" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_2" nameView="Temp Offset Point 2" description="温度补偿点 2" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_2" nameView="Offset Value 2" description="补偿值 2" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_3" nameView="Temp Offset Point 3" description="温度补偿点 3" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_3" nameView="Offset Value 3" description="补偿值 3" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_4" nameView="Temp Offset Point 4" description="温度补偿点 4" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_4" nameView="Offset Value 4" description="补偿值 4" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_5" nameView="Temp Offset Point 5" description="温度补偿点 5" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_5" nameView="Offset Value 5" description="补偿值 5" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_6" nameView="Temp Offset Point 6" description="温度补偿点 6" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_6" nameView="Offset Value 6" description="补偿值 6" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_7" nameView="Temp Offset Point 7" description="温度补偿点 7" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_7" nameView="Offset Value 7" description="补偿值 7" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_8" nameView="Temp Offset Point 8" description="温度补偿点 8" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_8" nameView="Offset Value 8" description="补偿值 8" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
-		</configs>
+		
 		<configs name="WallHeater" nameView="Heater Wall" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -1816,6 +1759,8 @@
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
 		<configs name="ForelineHeater" nameView="Heater Foreline" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -1842,6 +1787,8 @@
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
 		<configs name="ValveHeater" nameView="Valve Heater" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -1868,6 +1815,8 @@
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
 		<configs name="PendulumHeater" nameView="Heater Pendulum" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -2310,33 +2259,10 @@
 			<config default="5" name="GasPurgeFlowTime" nameView="Gas Purge Flow Time" description="" max="300" min="0" paramter="" tag="" unit="second" type="Integer" />
 			<config default="10" name="GasPurgePumpTime" nameView="Gas Purge Pump Time" description="" max="300" min="0" paramter="" tag="" unit="second" type="Integer" />
 		</configs>
-		<configs name="HeaterChamber" nameView="Heater Substrate" >
-			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
-			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
-			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="100" name="HeaterWarningRange" nameView="Heater deviation Warning Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
-			<config default="10" name="HeaterWarningTime" nameView="Heater deviation Warning Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
-
-			<config name="TempOffsetPoint_1" nameView="Temp Offset Point 1" description="温度补偿点 1" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_1" nameView="Offset Value 1" description="补偿值 1" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_2" nameView="Temp Offset Point 2" description="温度补偿点 2" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_2" nameView="Offset Value 2" description="补偿值 2" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_3" nameView="Temp Offset Point 3" description="温度补偿点 3" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_3" nameView="Offset Value 3" description="补偿值 3" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_4" nameView="Temp Offset Point 4" description="温度补偿点 4" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_4" nameView="Offset Value 4" description="补偿值 4" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_5" nameView="Temp Offset Point 5" description="温度补偿点 5" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_5" nameView="Offset Value 5" description="补偿值 5" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_6" nameView="Temp Offset Point 6" description="温度补偿点 6" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_6" nameView="Offset Value 6" description="补偿值 6" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_7" nameView="Temp Offset Point 7" description="温度补偿点 7" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_7" nameView="Offset Value 7" description="补偿值 7" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_8" nameView="Temp Offset Point 8" description="温度补偿点 8" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_8" nameView="Offset Value 8" description="补偿值 8" unit="degree" type="Double" max="300" min="0" />
-			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
-			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
-		</configs>
+		
 		<configs name="WallHeater" nameView="Heater Wall" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -2363,6 +2289,8 @@
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
 		<configs name="ForelineHeater" nameView="Heater Foreline" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -2389,6 +2317,8 @@
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
 		<configs name="ValveHeater" nameView="Valve Heater" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -2415,6 +2345,8 @@
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
 		<configs name="PendulumHeater" nameView="Heater Pendulum" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="20"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />

+ 40 - 0
Venus/Venus_RT/Config/System_VenusDE.sccfg

@@ -840,6 +840,8 @@
 			<config default="10" name="GasPurgePumpTime" nameView="Gas Purge Pump Time" description="" max="300" min="0" paramter="" tag="" unit="second" type="Integer" />
 		</configs>
 		<configs name="HeaterChamber" nameView="Heater Substrate" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="0"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -866,6 +868,8 @@
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
 		<configs name="WallHeater" nameView="Heater Wall" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="0"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -892,6 +896,8 @@
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
 		<configs name="ForelineHeater" nameView="Heater Foreline" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="0"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -918,6 +924,8 @@
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
 		<configs name="ValveHeater" nameView="Valve Heater" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="0"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -944,6 +952,8 @@
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
 		<configs name="PendulumHeater" nameView="Heater Pendulum" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="0"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -1451,6 +1461,8 @@
 			<config default="10" name="GasPurgePumpTime" nameView="Gas Purge Pump Time" description="" max="300" min="0" paramter="" tag="" unit="second" type="Integer" />
 		</configs>
 		<configs name="HeaterChamber" nameView="Heater Substrate" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="0"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -1478,6 +1490,8 @@
 		</configs>
 
 		<configs name="WallHeater" nameView="Heater Wall" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="0"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -1505,6 +1519,8 @@
 		</configs>
 
 		<configs name="ForelineHeater" nameView="Heater Foreline" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="0"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -1532,6 +1548,8 @@
 		</configs>
 
 		<configs name="ValveHeater" nameView="Valve Heater" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="0"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -1558,6 +1576,8 @@
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
 		<configs name="PendulumHeater" nameView="Heater Pendulum" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="0"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -2068,6 +2088,8 @@
 			<config default="10" name="GasPurgePumpTime" nameView="Gas Purge Pump Time" description="" max="300" min="0" paramter="" tag="" unit="second" type="Integer" />
 		</configs>
 		<configs name="HeaterChamber" nameView="Heater Substrate" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="0"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -2095,6 +2117,8 @@
 		</configs>
 
 		<configs name="WallHeater" nameView="Heater Wall" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="0"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -2122,6 +2146,8 @@
 		</configs>
 
 		<configs name="ForelineHeater" nameView="Heater Foreline" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="0"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -2149,6 +2175,8 @@
 		</configs>
 
 		<configs name="ValveHeater" nameView="Valve Heater" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="0"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -2175,6 +2203,8 @@
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
 		<configs name="PendulumHeater" nameView="Heater Pendulum" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="0"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -2685,6 +2715,8 @@
 			<config default="10" name="GasPurgePumpTime" nameView="Gas Purge Pump Time" description="" max="300" min="0" paramter="" tag="" unit="second" type="Integer" />
 		</configs>
 		<configs name="HeaterChamber" nameView="Heater Substrate" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="0"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -2712,6 +2744,8 @@
 		</configs>
 
 		<configs name="WallHeater" nameView="Heater Wall" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="0"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -2739,6 +2773,8 @@
 		</configs>
 
 		<configs name="ForelineHeater" nameView="Heater Foreline" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="0"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -2766,6 +2802,8 @@
 		</configs>
 
 		<configs name="ValveHeater" nameView="Valve Heater" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="0"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />
@@ -2792,6 +2830,8 @@
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
 		<configs name="PendulumHeater" nameView="Heater Pendulum" >
+			<config default="false" name="IsOn"                          nameView="Is On"         description="IsOn" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="0"   name="TemperatureSetPoint"           nameView="Temperature"              description="Temperature"                 max="1000" min="0"    paramter="" tag="" unit="℃" type="Double" />
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="10" name="HeaterAlarmTime" nameView="Heater deviation Alarm Time" description="" max="3600" min="0" paramter="" tag="" unit="second" type="Integer" />

File diff suppressed because it is too large
+ 2935 - 2895
Venus/Venus_RT/Config/System_VenusSE.sccfg


+ 2 - 1
Venus/Venus_RT/Devices/ESC5HighVoltage.cs

@@ -357,7 +357,8 @@ namespace Venus_RT.Devices
                 SetPointCommandQueue.Add(_noneParaCommandOp[Operation.EnableOutputVoltage]);
             }
             else
-            { 
+            {
+                SetOutputVoltage(0);
                 SetPointCommandQueue.Add(_noneParaCommandOp[Operation.DisableOutputVoltage]);
 
             }

+ 165 - 139
Venus/Venus_RT/Devices/IODevices/IoHeater.cs

@@ -11,82 +11,76 @@ using Aitex.Core.RT.SCCore;
 using Aitex.Core.RT.Tolerance;
 using Aitex.Core.Util;
 using MECF.Framework.Common.Equipment;
+//using Venus_Core;
 
 namespace Venus_RT.Devices
 {
-    public interface IoHeaterController
-    {
-        bool SetPowerOnOff(bool isOn);
-        bool Ramp(float temp);
+    //public interface IoHeaterController
+    //{
+    //    bool SetPowerOnOff(bool isOn);
+    //    bool Ramp(float temp);
 
-        float GetFeedback();
-        float GetSetPoint();
-        bool GetIsOn();
-    }
+    //    float GetFeedback();
+    //    float GetSetPoint();
+    //    bool GetIsOn();
+    //}
 
     public class IoHeater : BaseDevice, IDevice
     {
-        public IoHeaterController Controller { get; set; }
+        //public IoHeaterController Controller { get; set; }
 
         public double SetPointLimit
         {
             get
             {
                 if (_aoSetPointLimit != null)
-                    //return _aoSetPointLimit.Value;
                     return _GetRealFloat(_aoSetPointLimit);
 
                 return 100;
             }
         }
 
-        //[Subscription(AITHeaterPropertyName.CoolantInletTempFeedback)]
-        public float CoolantInletTcFeedback
-        {
-            get
-            {
-                if (_aiCoolantInletTempFeedback == null) return -1;
-                //return _aiMonitorTcFeedback.Value;
-                return _GetRealFloat(_aiCoolantInletTempFeedback);
-            }
-        }
-
+        //public float CoolantInletTcFeedback
+        //{
+        //    get
+        //    {
+        //        if (_aiCoolantInletTempFeedback == null) return -1;
+        //        return _GetRealFloat(_aiCoolantInletTempFeedback);
+        //    }
+        //}
 
-        //[Subscription(AITHeaterPropertyName.CoolantOutletTempFeedback)]
-        public float CoolantOutletTcFeedback
-        {
-            get
-            {
-                if (_aiCoolantOutletTempFeedback == null) return -1;
-                //return _aiMonitorTcFeedback.Value;
-                return _GetRealFloat(_aiCoolantOutletTempFeedback);
-            }
-        }
+        //public float CoolantOutletTcFeedback
+        //{
+        //    get
+        //    {
+        //        if (_aiCoolantOutletTempFeedback == null) return -1;
+        //        return _GetRealFloat(_aiCoolantOutletTempFeedback);
+        //    }
+        //}
 
-        //[Subscription(AITHeaterPropertyName.MonitorTcFeedback)]
-        public float MonitorTcFeedback
-        {
-            get
-            {
-                if (_aiMonitorTcFeedback == null) return -1;
-                //return _aiMonitorTcFeedback.Value;
-                return _GetRealFloat(_aiMonitorTcFeedback);
-            }
-        }
+        //public float MonitorTcFeedback
+        //{
+        //    get
+        //    {
+        //        if (_aiMonitorTcFeedback == null) return -1;
+        //        return _GetRealFloat(_aiMonitorTcFeedback);
+        //    }
+        //}
 
-        [Subscription(AITHeaterPropertyName.ControlTcFeedback)]
+        //[Subscription(AITHeaterPropertyName.ControlTcFeedback)]
         public float ControlTcFeedback
         {
             get
             {
-                if (Name == "ForelineHeater")
-                {
-                    if (_aiControlTcFeedback == null) return -1;
-                    return _GetRealFloat(_aiControlTcFeedback);
-                }
+                //if (Name == "ForelineHeater")
+                //{
+                //    if (_aiControlTcFeedback == null) return -1;
+                //    return _GetRealFloat(_aiControlTcFeedback);
+                //}
                 if (_aiControlTcFeedback == null) return -1;
                 float real = _GetRealFloat(_aiControlTcFeedback);
-                return real - GetHeaterOffsetSetting(real - _offset);
+                return real;
+                //return real - GetHeaterOffsetSetting(real - _offset);
                 //return ((real - GetHeaterOffsetSetting(real - _offset)) >= ControlTcSetPoint - _offset) ? (real - _offset) : (real - GetHeaterOffsetSetting(real - _offset));
             }
         }
@@ -100,8 +94,8 @@ namespace Venus_RT.Devices
                     //return _aoSetPoint.Value;
                     return _GetRealFloat(_aoSetPoint);
 
-                if (Controller != null)
-                    return Controller.GetSetPoint();
+                //if (Controller != null)
+                //    return Controller.GetSetPoint();
 
                 return 0;
             }
@@ -109,7 +103,6 @@ namespace Venus_RT.Devices
             {
                 if (_aoSetPoint != null)
                 {
-                    //_aoSetPoint.Value = (short)setpoint;
                     _SetRealFloat(_aoSetPoint, value);
                 }
             }
@@ -156,10 +149,10 @@ namespace Venus_RT.Devices
         {
             get
             {
-                if (Controller!=null)
-                {
-                    return Controller.GetIsOn();
-                }
+                //if (Controller != null)
+                //{
+                //    return Controller.GetIsOn();
+                //}
 
                 if (_diPowerOnFeedback != null)
                     return _diPowerOnFeedback.Value;
@@ -190,6 +183,13 @@ namespace Venus_RT.Devices
 
                 return false;
             }
+            set
+            {
+                if (_doPowerOn != null)
+                {
+                    _doPowerOn.Value = value;
+                }
+            }
         }
 
         public string Unit { get; set; }
@@ -199,23 +199,23 @@ namespace Venus_RT.Devices
         //private int _stageSet = 0;
         private float _offset = 0f;
         //private float _offsetSet = 0f;
-        private readonly DIAccessor   _diPowerOnFeedback;
-        private readonly DIAccessor   _diControlTcBroken;
-        private readonly DIAccessor   _diMonitorTcBroken;
-        private readonly DIAccessor   _diDeviation;
-        private readonly DOAccessor   _doPowerOn;
-        private readonly AIAccessor   _aiControlTcFeedback;
-        private readonly AIAccessor   _aiMonitorTcFeedback;
-        private readonly AIAccessor   _aiCoolantInletTempFeedback;
-        private readonly AIAccessor   _aiCoolantOutletTempFeedback;
-        private readonly AOAccessor   _aoSetPoint;
-        private AOAccessor            _aoSetPointLimit;
+        private readonly DIAccessor _diPowerOnFeedback;
+        private readonly DIAccessor _diControlTcBroken;
+        private readonly DIAccessor _diMonitorTcBroken;
+        private readonly DIAccessor _diDeviation;
+        private readonly DOAccessor _doPowerOn;
+        private readonly AIAccessor _aiControlTcFeedback;
+        //private readonly AIAccessor _aiMonitorTcFeedback;
+        //private readonly AIAccessor _aiCoolantInletTempFeedback;
+        //private readonly AIAccessor _aiCoolantOutletTempFeedback;
+        private readonly AOAccessor _aoSetPoint;
+        private AOAccessor _aoSetPointLimit;
         private readonly SCConfigItem _scSetPointLimit;
 
         private readonly R_TRIG _trigMonitorTcBroken = new R_TRIG();
         private readonly R_TRIG _trigControlTcBroken = new R_TRIG();
         private readonly R_TRIG _trigDeviation = new R_TRIG();
-        private readonly R_TRIG _trigCHBWallOTSW = new R_TRIG();
+        //private readonly R_TRIG _trigCHBWallOTSW = new R_TRIG();
 
         private SCConfigItem _scEnableToleranceCheck;
         private SCConfigItem _scDeviationAlarmRange;
@@ -223,10 +223,10 @@ namespace Venus_RT.Devices
         private SCConfigItem _scDeviationWarningRange;
         private SCConfigItem _scDeviationWarningTime;
 
-        private DeviceTimer _timerAlarm = new DeviceTimer();
-        private DeviceTimer _timerWarning = new DeviceTimer();
-        private readonly R_TRIG _trigWarning = new R_TRIG();
-        private readonly R_TRIG _trigAlarm = new R_TRIG();
+        //private DeviceTimer _timerAlarm = new DeviceTimer();
+        //private DeviceTimer _timerWarning = new DeviceTimer();
+        //private readonly R_TRIG _trigWarning = new R_TRIG();
+        //private readonly R_TRIG _trigAlarm = new R_TRIG();
 
         private ToleranceChecker _checkerWarning = new ToleranceChecker();
         private ToleranceChecker _checkerAlarm = new ToleranceChecker();
@@ -234,6 +234,28 @@ namespace Venus_RT.Devices
         private string HeaterDeviationAlarm = "HeaterDeviationAlarm";
         private bool isinit;
 
+        private bool _isOn;
+
+        public bool IsOn
+        {
+            set
+            {
+                _isOn = value;
+            }
+        }
+
+        private float _TemperatureSetPoint;
+        public float TemperatureSetPoint
+        {
+            set
+            {
+                if (value != _TemperatureSetPoint)
+                {
+                    RampTemp(value);
+                    _TemperatureSetPoint = value;
+                }
+            }
+        }
 
         public IoHeater(string module, XmlElement node, string ioModule = "")
         {
@@ -244,18 +266,18 @@ namespace Venus_RT.Devices
 
             Unit = node.GetAttribute("unit");
 
-            _diPowerOnFeedback   = ParseDiNode("diPowerOnFeedback", node, ioModule);
-            _diControlTcBroken   = ParseDiNode("diControlTcBroken", node, ioModule);
-            _diMonitorTcBroken   = ParseDiNode("diMonitorTcBroken", node, ioModule);
-            _doPowerOn           = ParseDoNode("doPowerOn", node, ioModule);
-            _diDeviation         = ParseDiNode("diDeviation", node, ioModule);
+            _diPowerOnFeedback = ParseDiNode("diPowerOnFeedback", node, ioModule);
+            _diControlTcBroken = ParseDiNode("diControlTcBroken", node, ioModule);
+            _diMonitorTcBroken = ParseDiNode("diMonitorTcBroken", node, ioModule);
+            _doPowerOn = ParseDoNode("doPowerOn", node, ioModule);
+            _diDeviation = ParseDiNode("diDeviation", node, ioModule);
             _aiControlTcFeedback = ParseAiNode("aiFeedback", node, ioModule);
-            _aiMonitorTcFeedback = ParseAiNode("aiMonitor", node, ioModule);
-            _aiCoolantInletTempFeedback = ParseAiNode("aiCoolantInletTemp", node, ioModule);
-            _aiCoolantOutletTempFeedback = ParseAiNode("aiCoolantOutletTemp", node, ioModule);
-            _aoSetPoint          = ParseAoNode("aoSetPoint", node, ioModule);
-            _aoSetPointLimit     = ParseAoNode("aoSetPointLimit", node, ioModule);
-            _scSetPointLimit     = ParseScNodeEx("scSetPointLimit", node, ioModule);
+            //_aiMonitorTcFeedback = ParseAiNode("aiMonitor", node, ioModule);
+            //_aiCoolantInletTempFeedback = ParseAiNode("aiCoolantInletTemp", node, ioModule);
+            //_aiCoolantOutletTempFeedback = ParseAiNode("aiCoolantOutletTemp", node, ioModule);
+            _aoSetPoint = ParseAoNode("aoSetPoint", node, ioModule);
+            _aoSetPointLimit = ParseAoNode("aoSetPointLimit", node, ioModule);
+            _scSetPointLimit = ParseScNodeEx("scSetPointLimit", node, ioModule);
         }
 
         //public void UpdateConfig(double setPointLimit)
@@ -270,22 +292,22 @@ namespace Venus_RT.Devices
             {
                 AITHeaterData data = new AITHeaterData()
                 {
-                    Module            = Module,
-                    DeviceName        = Name,
+                    Module = Module,
+                    DeviceName = Name,
                     DeviceSchematicId = DeviceID,
-                    DisplayName       = Display,
-                    FeedBack          = ControlTcFeedback,
-                    MonitorTcFeedBack = MonitorTcFeedback,
-                    CoolantInletTcFeedback = CoolantInletTcFeedback,
-                    CoolantOutletTcFeedback = CoolantOutletTcFeedback,
-                    Scale             = SetPointLimit,
-                    SetPoint          = ControlTcSetPointView,
-                    IsPowerOn         = IsPowerOnFeedback,
+                    DisplayName = Display,
+                    FeedBack = ControlTcFeedback,
+                    //MonitorTcFeedBack = MonitorTcFeedback,
+                    //CoolantInletTcFeedback = CoolantInletTcFeedback,
+                    //CoolantOutletTcFeedback = CoolantOutletTcFeedback,
+                    Scale = SetPointLimit,
+                    SetPoint = ControlTcSetPoint,
+                    IsPowerOn = IsPowerOnFeedback,
                     IsPowerOnSetPoint = IsPowerOnSetPoint,
                     IsControlTcBroken = IsControlTcBroken,
                     IsMonitorTcBroken = IsMonitorTcBroken,
-                    Unit              = Unit,
-                    IsTcDeviation     = IsTcDeviation,
+                    Unit = Unit,
+                    IsTcDeviation = IsTcDeviation,
                 };
 
                 return data;
@@ -301,7 +323,7 @@ namespace Venus_RT.Devices
 
             OP.Subscribe($"{Module}.{Name}.{AITHeaterOperation.Ramp}", (functionName, param) =>
             {
-                float setpoint;            
+                float setpoint;
                 float.TryParse((string)param[0], out setpoint);
                 if (!RampTemp(setpoint)) return false;
                 _controlTcSetPointView = setpoint;
@@ -323,19 +345,18 @@ namespace Venus_RT.Devices
 
         public bool TurnOnOff(bool on)
         {
-            if (Controller!=null)
-            {
-                Controller.SetPowerOnOff(on);
+            //if (Controller != null)
+            //{
+            //    Controller.SetPowerOnOff(on);
+            //    return true;
+            //}
 
-                return true;
-            }
-            
             if (!_doPowerOn.SetValue(on, out string reason))
             {
                 LOG.Write(eEvent.WARN_DEVICE_IO_HEATER, ModuleHelper.Converter(Module), reason);
                 return false;
             }
-
+            SC.SetItemValue($"{Module}.{Name}.IsOn", on);
             LOG.Write(eEvent.INFO_DEVICE_IO_HEATER, ModuleHelper.Converter(Module), $"Set Heater {Name} Power {(on ? "ON" : "OFF")}");
             return true;
         }
@@ -354,13 +375,15 @@ namespace Venus_RT.Devices
                 LOG.Write(eEvent.INFO_DEVICE_IO_HEATER, ModuleHelper.Converter(Module), $"{Name} setpoint = {setpoint}, ignore temperature control");
                 return true;
             }
+            SC.SetItemValue($"{Module}.{Name}.TemperatureSetPoint", setpoint);
 
-            if (Controller != null)
-            {
-                return Controller.Ramp(setpoint);
-            }
+            //if (Controller != null)
+            //{
+            //    SC.SetItemValue($"{Module}.{Name}.TemperatureSetPoint", setpoint);
+            //    return Controller.Ramp(setpoint);
+            //}
 
-            _offset = GetHeaterOffsetSetting(setpoint);
+            //_offset = GetHeaterOffsetSetting(setpoint);
             // offset 处理后的设定值
             _controlTcSetPointView = setpoint;
             if (Name == "ForelineHeater")
@@ -413,6 +436,9 @@ namespace Venus_RT.Devices
                 this.SetBySC(_aoSetPointLimit, _scSetPointLimit);
 
                 CheckDeviation();
+
+                TemperatureSetPoint = (float)SC.GetValue<double>($"{Module}.{Name}.TemperatureSetPoint");
+                IsPowerOnSetPoint = SC.GetValue<bool>($"{Module}.{Name}.IsOn");
             }
             catch (Exception ex)
             {
@@ -425,22 +451,22 @@ namespace Venus_RT.Devices
             if (!_scEnableToleranceCheck.BoolValue)
                 return;
 
-            if (Controller != null && !Controller.GetIsOn())
-            {
-                return;
-            }
+            //if (Controller != null && !Controller.GetIsOn())
+            //{
+            //    return;
+            //}
 
             if (!IsPowerOnFeedback)
                 return;
 
-            _checkerWarning.Monitor(ControlTcFeedback, ControlTcSetPointView - Math.Abs(_scDeviationWarningRange.IntValue)
-                , ControlTcSetPoint + Math.Abs(_scDeviationWarningRange.IntValue),_scDeviationWarningTime.IntValue);
+            _checkerWarning.Monitor(ControlTcFeedback, ControlTcSetPoint - Math.Abs(_scDeviationWarningRange.IntValue)
+                , ControlTcSetPoint + Math.Abs(_scDeviationWarningRange.IntValue), _scDeviationWarningTime.IntValue);
             if (_checkerWarning.Trig)
             {
                 LOG.Write(eEvent.WARN_DEVICE_IO_HEATER, ModuleHelper.Converter(Module), $"{Name} temperature feedback deviation than {Math.Abs(_scDeviationWarningRange.IntValue)} from setpoint for {_scDeviationWarningTime.IntValue} seconds");
             }
 
-            _checkerAlarm.Monitor(ControlTcFeedback, ControlTcSetPointView - Math.Abs(_scDeviationAlarmRange.IntValue)
+            _checkerAlarm.Monitor(ControlTcFeedback, ControlTcSetPoint - Math.Abs(_scDeviationAlarmRange.IntValue)
                 , ControlTcSetPoint + Math.Abs(_scDeviationAlarmRange.IntValue), _scDeviationAlarmTime.IntValue);
             if (_checkerAlarm.Trig)
             {
@@ -469,30 +495,30 @@ namespace Venus_RT.Devices
             }
         }
 
-        private float GetHeaterOffsetSetting(double val)
-        {
-            //if (SC.GetValue<bool>($"{Module}.BiasRf.EnableBiasRF")) return 0;
-            //if (SC.GetValue<bool>($"{Module}.Chiller.EnableChiller")) return 0;
-
-            int[] iTempPoint = new int[10];
-            float[] fOffsetValue = new float[10];
-
-            try
-            {
-                for (int i = 1; i < 10; i++)
-                {
-                    iTempPoint[i] = SC.GetValue<int>($"{Module}.{Name}.TempOffsetPoint_{i}");
-                    fOffsetValue[i] = (float)SC.GetValue<double>($"{Module}.{Name}.OffsetValue_{i}");
-                    if (val < iTempPoint[i])
-                    {
-                        return (fOffsetValue[i] - fOffsetValue[i - 1]) / (iTempPoint[i] - iTempPoint[i - 1]) * ((float)val - iTempPoint[i - 1]) + fOffsetValue[i - 1];
-                    }
-                }
-            }
-            catch
-            { }
-
-            return 0;
-        }
+        //private float GetHeaterOffsetSetting(double val)
+        //{
+        //    //if (SC.GetValue<bool>($"{Module}.BiasRf.EnableBiasRF")) return 0;
+        //    //if (SC.GetValue<bool>($"{Module}.Chiller.EnableChiller")) return 0;
+
+        //    int[] iTempPoint = new int[10];
+        //    float[] fOffsetValue = new float[10];
+
+        //    try
+        //    {
+        //        for (int i = 1; i < 10; i++)
+        //        {
+        //            iTempPoint[i] = SC.GetValue<int>($"{Module}.{Name}.TempOffsetPoint_{i}");
+        //            fOffsetValue[i] = (float)SC.GetValue<double>($"{Module}.{Name}.OffsetValue_{i}");
+        //            if (val < iTempPoint[i])
+        //            {
+        //                return (fOffsetValue[i] - fOffsetValue[i - 1]) / (iTempPoint[i] - iTempPoint[i - 1]) * ((float)val - iTempPoint[i - 1]) + fOffsetValue[i - 1];
+        //            }
+        //        }
+        //    }
+        //    catch
+        //    { }
+
+        //    return 0;
+        //}
     }
 }

+ 15 - 15
Venus/Venus_RT/Devices/IODevices/IoMfc.cs

@@ -704,21 +704,21 @@ namespace Venus_RT.Devices.IODevices
             Ramp(SetPoint, 0);
         }
 
-        private void Ramping()
-        {
-            if (_bRamping)
-            {
-                if (rampTimer.IsTimeout() || rampTime == 0)
-                {
-                    SetPoint = rampTarget;
-                    _bRamping = false;
-                }
-                else
-                {
-                    SetPoint = rampInitValue + (rampTarget - rampInitValue) * rampTimer.GetElapseTime() / rampTime;
-                }
-            }
-        }
+        //private void Ramping()
+        //{
+        //    if (_bRamping)
+        //    {
+        //        if (rampTimer.IsTimeout() || rampTime == 0)
+        //        {
+        //            SetPoint = rampTarget;
+        //            _bRamping = false;
+        //        }
+        //        else
+        //        {
+        //            SetPoint = rampInitValue + (rampTarget - rampInitValue) * rampTimer.GetElapseTime() / rampTime;
+        //        }
+        //    }
+        //}
 
         private void CheckTolerance()
         {

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

@@ -432,13 +432,13 @@ namespace Venus_RT.Devices
 
             //_PressureType = (PressureType)SC.GetValue<int>("System.PressureUnitType");
 
-            DATA.Subscribe($"{Name}.SCR1", () => GetAiValue($"{Module}.AI_CHB_M-HT_SCR1_PWR_OUT"));
-            DATA.Subscribe($"{Name}.SCR2", () => GetAiValue($"{Module}.AI_CHB_M-HT_SCR2_PWR_OUT"));
+            //DATA.Subscribe($"{Name}.SCR1", () => GetAiValue($"{Module}.AI_CHB_M-HT_SCR1_PWR_OUT"));
+            //DATA.Subscribe($"{Name}.SCR2", () => GetAiValue($"{Module}.AI_CHB_M-HT_SCR2_PWR_OUT"));
 
-            DATA.Subscribe($"{Name}.AI_CHB_M-HT_Reference_Power_Output", () => GetAiValue($"{Module}.AI_CHB_M-HT_Reference_Power_Output"));
-            DATA.Subscribe($"{Name}.AI_CHB_M-HT_Max_Power", () => GetAiValue($"{Module}.AI_CHB_M-HT_Max_Power"));
-            DATA.Subscribe($"{Name}.AI_CHB_M-HT_Min_Power", () => GetAiValue($"{Module}.AI_CHB_M-HT_Min_Power"));
-            DATA.Subscribe($"{Name}.AI_CHB_M-HT_Current_Speed", () => GetAiValue($"{Module}.AI_CHB_M-HT_Current_Speed"));
+            //DATA.Subscribe($"{Name}.AI_CHB_M-HT_Reference_Power_Output", () => GetAiValue($"{Module}.AI_CHB_M-HT_Reference_Power_Output"));
+            //DATA.Subscribe($"{Name}.AI_CHB_M-HT_Max_Power", () => GetAiValue($"{Module}.AI_CHB_M-HT_Max_Power"));
+            //DATA.Subscribe($"{Name}.AI_CHB_M-HT_Min_Power", () => GetAiValue($"{Module}.AI_CHB_M-HT_Min_Power"));
+            //DATA.Subscribe($"{Name}.AI_CHB_M-HT_Current_Speed", () => GetAiValue($"{Module}.AI_CHB_M-HT_Current_Speed"));
         }
 
         #endregion

+ 7 - 6
Venus/Venus_RT/Devices/JetKepler2200BPM.cs

@@ -221,6 +221,7 @@ namespace Venus_RT.Devices
         public override float ChamberTemperature => _highTemperatureHeater.HighTemperatureHighHeaterTemperature;
         public override float PendulumPressure => _pendulumValve.Pressure;
         public override float PendulumPosition => _pendulumValve.Position;
+
         public new ModuleName Module { get; }
 
         //public override MovementPosition LiftPinPosition
@@ -462,14 +463,14 @@ namespace Venus_RT.Devices
             _foreline_interlock_pressure = SC.GetValue<double>($"{Module}.ForelineInterlockPressure");
             //_PressureType = (PressureType)SC.GetValue<int>("System.PressureUnitType");
 
-            DATA.Subscribe($"{Name}.SCR1", () => GetAiValue($"{Module}.AI_CHB_M-HT_SCR1_PWR_OUT"));
-            DATA.Subscribe($"{Name}.SCR2", () => GetAiValue($"{Module}.AI_CHB_M-HT_SCR2_PWR_OUT"));
+            //DATA.Subscribe($"{Name}.SCR1", () => GetAiValue($"{Module}.AI_CHB_M-HT_SCR1_PWR_OUT"));
+            //DATA.Subscribe($"{Name}.SCR2", () => GetAiValue($"{Module}.AI_CHB_M-HT_SCR2_PWR_OUT"));
 
 
-            DATA.Subscribe($"{Name}.AI_CHB_M-HT_Reference_Power_Output", () => GetAiValue($"{Module}.AI_CHB_M-HT_Reference_Power_Output"));
-            DATA.Subscribe($"{Name}.AI_CHB_M-HT_Max_Power", () => GetAiValue($"{Module}.AI_CHB_M-HT_Max_Power"));
-            DATA.Subscribe($"{Name}.AI_CHB_M-HT_Min_Power", () => GetAiValue($"{Module}.AI_CHB_M-HT_Min_Power"));
-            DATA.Subscribe($"{Name}.AI_CHB_M-HT_Current_Speed", () => GetAiValue($"{Module}.AI_CHB_M-HT_Current_Speed"));
+            //DATA.Subscribe($"{Name}.AI_CHB_M-HT_Reference_Power_Output", () => GetAiValue($"{Module}.AI_CHB_M-HT_Reference_Power_Output"));
+            //DATA.Subscribe($"{Name}.AI_CHB_M-HT_Max_Power", () => GetAiValue($"{Module}.AI_CHB_M-HT_Max_Power"));
+            //DATA.Subscribe($"{Name}.AI_CHB_M-HT_Min_Power", () => GetAiValue($"{Module}.AI_CHB_M-HT_Min_Power"));
+            //DATA.Subscribe($"{Name}.AI_CHB_M-HT_Current_Speed", () => GetAiValue($"{Module}.AI_CHB_M-HT_Current_Speed"));
 
         }
 

+ 5 - 5
Venus/Venus_RT/Devices/JetKepler2300PM.cs

@@ -1112,11 +1112,11 @@ namespace Venus_RT.Devices
             return _backsideHe.SetBacksideHelium(mTorr);
         }
 
-        public override bool SetBacksideHeThreshold(int nMin, int nMax)
-        {
-            if (_backsideHe == null) return false;
-            return _backsideHe.SetFlowThreshold(nMin, nMax);
-        }
+        //public override bool SetBacksideHeThreshold(int nMin, int nMax)
+        //{
+        //    if (_backsideHe == null) return false;
+        //    return _backsideHe.SetFlowThreshold(nMin, nMax);
+        //}
         public override bool StartControlPressure(int pressureSetpoint, int flowSetpoint)
         {
             OpenValve(ValveType.GasFinal, true);

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

@@ -110,6 +110,11 @@ namespace Venus_RT.Devices
 
         public virtual float ChamberTemperature { get; }
 
+        //public virtual float WallTemperature { get; }
+        //public virtual float ESCTemperature { get; }
+
+        public virtual float HighTemperatureHeaterTemperature { get; }
+
         public abstract bool CheckAtm();
         public virtual bool CheckSlitDoorOpen()
         {
@@ -686,14 +691,14 @@ namespace Venus_RT.Devices
             return false;
         }
 
-        public virtual bool SetBacksideHeThreshold(int nMin, int nMax)
-        {
-            return true;
-        }
-        public virtual bool SESetBacksideHeThreshold(float nMin, float nMax)
+        public virtual bool SetBacksideHeThreshold(float nMin, float nMax)
         {
             return true;
         }
+        //public virtual bool SESetBacksideHeThreshold(float nMin, float nMax)
+        //{
+        //    return true;
+        //}
         public virtual bool HighTemperatureHeaterGotoPosition(HighTemperatureHeaterPosition highTemperatureHeaterPosition)
         {
             return false;

+ 1 - 1
Venus/Venus_RT/Devices/JetVenusDEPM.cs

@@ -1015,7 +1015,7 @@ namespace Venus_RT.Devices
             return _backsideHe.SetBacksideHelium(mTorr);
         }
 
-        public override bool SetBacksideHeThreshold(int nMin, int nMax)
+        public override bool SetBacksideHeThreshold(float nMin, float nMax)
         {
             if (_backsideHe == null) return false;
             return _backsideHe.SetFlowThreshold(nMin, nMax);

+ 10 - 6
Venus/Venus_RT/Devices/JetVenusSEPM.cs

@@ -137,6 +137,10 @@ namespace Venus_RT.Devices
         public override double HeliumFeedBack => DEVICE.GetDevice<IoMfc>($"{Module}.MfcHe").FeedBack;
         public override float PendulumPressure => _pendulumValve.Pressure;
         public override float PendulumPosition => _pendulumValve.Position;
+
+        //public override float WallTemperature => _WallTC.ControlTcFeedback;
+
+        //public override float ESCTemperature => _Chiller.CoolantOutletTcFeedback;
         #endregion
 
         #region 构造函数
@@ -1018,16 +1022,16 @@ namespace Venus_RT.Devices
             return _backsideHe.SetBacksideHelium(mTorr);
         }
 
-        public override bool SetBacksideHeThreshold(int nMin, int nMax)
-        {
-            if (_backsideHe == null) return false;
-            return _backsideHe.SetFlowThreshold(nMin, nMax);
-        }
-        public override bool SESetBacksideHeThreshold(float nMin, float nMax)
+        public override bool SetBacksideHeThreshold(float nMin, float nMax)
         {
             if (_backsideHe == null) return false;
             return _backsideHe.SetFlowThreshold(nMin, nMax);
         }
+        //public override bool SESetBacksideHeThreshold(float nMin, float nMax)
+        //{
+        //    if (_backsideHe == null) return false;
+        //    return _backsideHe.SetFlowThreshold(nMin, nMax);
+        //}
         public override bool SetBiasMatchPosition(float c1, float c2)
         {
             if (_BiasMatch == null) return false;

+ 55 - 17
Venus/Venus_RT/Modules/PMs/ProcessDefine.cs

@@ -41,8 +41,9 @@ namespace Venus_RT.Modules.PMs
         private RecipeToleranceChecker _GasFlowToleranceChecker;
         private RecipeToleranceChecker _RFToleranceChecker;
         private RecipeToleranceChecker _BiasRFToleranceChecker;
-        private RecipeToleranceChecker _HeliumToleranceChecker;
+        //private RecipeToleranceChecker _HeliumToleranceChecker;
         private RecipeToleranceChecker _PressureToleranceChecker;
+        private RecipeToleranceChecker _HighTemperatureToleranceChecker;
 
 
 
@@ -63,9 +64,9 @@ namespace Venus_RT.Modules.PMs
             _GasFlowToleranceChecker = new RecipeToleranceChecker(Module);
             _RFToleranceChecker = new RecipeToleranceChecker(Module);
             _BiasRFToleranceChecker = new RecipeToleranceChecker(Module);
-            _HeliumToleranceChecker = new RecipeToleranceChecker(Module);
+            //_HeliumToleranceChecker = new RecipeToleranceChecker(Module);
             _PressureToleranceChecker = new RecipeToleranceChecker(Module);
-
+            _HighTemperatureToleranceChecker = new RecipeToleranceChecker(Module);
             if (Chamber.ChamberType == JetChamber.Kepler2300 || Chamber.ChamberType == JetChamber.VenusSE || Chamber.ChamberType == JetChamber.VenusDE)
             {
                 _isInstalledEPD = SC.GetValue<bool>($"{Module}.EPD.IsEnabled");
@@ -132,12 +133,12 @@ namespace Venus_RT.Modules.PMs
         {
             var ProcessUnit = unit as PressureByPressureModeUnit;
             List<ToleranceObject> toleranceObjects = new List<ToleranceObject>();
-
+            _PressureToleranceChecker.IsStable = true;
             if (ProcessUnit.ToleranceMode != ToleranceMode.None)
             {
                 toleranceObjects.Add(new ToleranceObject("Pressure", ProcessUnit.StartValue, ProcessUnit.StartValueWarningRange, ProcessUnit.StartValueAlarmRange, ProcessUnit.ToleranceDelayTime, ProcessUnit.ToleranceMode));
 
-                _PressureToleranceChecker.Start(toleranceObjects);
+                _PressureToleranceChecker.Start(toleranceObjects,step.Type==StepType.Stable);
             }
             if (ProcessUnit.PressureUnitMode == PressureUnitMode.Pressure)
             {
@@ -211,7 +212,7 @@ namespace Venus_RT.Modules.PMs
             if (ProcessUnit.ToleranceMode != ToleranceMode.None)
             {
                 toleranceObjects.Add(new ToleranceObject("RF", ProcessUnit.RFPower, ProcessUnit.RFPowerWarningRange, ProcessUnit.RFPowerAlarmRange, ProcessUnit.ToleranceDelayTime, ProcessUnit.ToleranceMode));
-                _RFToleranceChecker.Start(toleranceObjects);
+                _RFToleranceChecker.Start(toleranceObjects, step.Type == StepType.Stable);
             }
 
             float p1;
@@ -394,6 +395,12 @@ namespace Venus_RT.Modules.PMs
             {
                 Chamber.SetBiasPulseMode(false);
             }
+            List<ToleranceObject> toleranceObjects = new List<ToleranceObject>();
+            if (ProcessUnit.ToleranceMode != ToleranceMode.None)
+            {
+                toleranceObjects.Add(new ToleranceObject("BiasRF", ProcessUnit.BiasRFPower, ProcessUnit.RFPowerWarningRange, ProcessUnit.RFPowerAlarmRange, ProcessUnit.ToleranceDelayTime, ProcessUnit.ToleranceMode));
+                _RFToleranceChecker.Start(toleranceObjects, step.Type == StepType.Stable);
+            }
             _scBiasRFPowerAlarmTime = SC.GetValue<double>($"{Chamber.Name}.BiasRf.PowerAlarmTime");
             biasRfMatchC1.Clear();
             biasRfMatchC1.Clear();
@@ -424,6 +431,10 @@ namespace Venus_RT.Modules.PMs
                 biasRfMatchC2.Add(Chamber.BiasRFMatchC2);
                 biasRfMatchC1C2Index += 1;
             }
+            if (ProcessUnit.ToleranceMode != ToleranceMode.None)
+            {
+                return _BiasRFToleranceChecker.Monitor(Chamber.BiasForwardPower);
+            }
             if (ProcessUnit.EnableRamp)
             {
                 //if (step.ElapsedTime() <= 500*cycleIndex)
@@ -482,6 +493,10 @@ namespace Venus_RT.Modules.PMs
             biasRfMatchC1C2Index = 0;
             //cycleIndex = 0;
             biasRFSetPointFlag = true;
+            if (ProcessUnit.ToleranceMode != ToleranceMode.None)
+            {
+                _BiasRFToleranceChecker.End();
+            }
         }
 
         private RState GasControlUnit_Start(ProcessUnitBase unit, RecipeStep step)
@@ -560,7 +575,7 @@ namespace Venus_RT.Modules.PMs
             {
                 Chamber.FlowGas(7, 0);
             }
-
+            _GasFlowToleranceChecker.IsStable = true;
             if (ProcessUnit.ToleranceMode != ToleranceMode.None)
             {
                 List<ToleranceObject> toleranceObjects = new List<ToleranceObject>();
@@ -572,7 +587,7 @@ namespace Venus_RT.Modules.PMs
                 toleranceObjects.Add(new ToleranceObject("Gas6", ProcessUnit.Gas6, ProcessUnit.Gas6WarningRange, ProcessUnit.Gas6AlarmRange, ProcessUnit.ToleranceDelayTime, ProcessUnit.ToleranceMode));
                 toleranceObjects.Add(new ToleranceObject("Gas7", ProcessUnit.Gas7, ProcessUnit.Gas7WarningRange, ProcessUnit.Gas7AlarmRange, ProcessUnit.ToleranceDelayTime, ProcessUnit.ToleranceMode));
                 toleranceObjects.Add(new ToleranceObject("Gas8", ProcessUnit.Gas8, ProcessUnit.Gas8WarningRange, ProcessUnit.Gas8AlarmRange, ProcessUnit.ToleranceDelayTime, ProcessUnit.ToleranceMode));
-                _GasFlowToleranceChecker.Start(toleranceObjects);
+                _GasFlowToleranceChecker.Start(toleranceObjects, step.Type == StepType.Stable);
             }
             return RState.Running;
         }
@@ -665,6 +680,7 @@ namespace Venus_RT.Modules.PMs
             {
                 Chamber.FlowGas(5, 0);
             }
+            _GasFlowToleranceChecker.IsStable = true;
 
             if (ProcessUnit.ToleranceMode != ToleranceMode.None)
             {
@@ -674,7 +690,7 @@ namespace Venus_RT.Modules.PMs
                 toleranceObjects.Add(new ToleranceObject("Gas4", ProcessUnit.Gas4, ProcessUnit.Gas4WarningRange, ProcessUnit.Gas4AlarmRange, ProcessUnit.ToleranceDelayTime, ProcessUnit.ToleranceMode));
                 toleranceObjects.Add(new ToleranceObject("Gas5", ProcessUnit.Gas5, ProcessUnit.Gas5WarningRange, ProcessUnit.Gas5AlarmRange, ProcessUnit.ToleranceDelayTime, ProcessUnit.ToleranceMode));
                 toleranceObjects.Add(new ToleranceObject("Gas6", ProcessUnit.Gas6, ProcessUnit.Gas6WarningRange, ProcessUnit.Gas6AlarmRange, ProcessUnit.ToleranceDelayTime, ProcessUnit.ToleranceMode));
-                _GasFlowToleranceChecker.Start(toleranceObjects);
+                _GasFlowToleranceChecker.Start(toleranceObjects, step.Type == StepType.Stable);
             }
             return RState.Running;
         }
@@ -761,7 +777,7 @@ namespace Venus_RT.Modules.PMs
             {
                 Chamber.OpenValve(ValveType.PVC1, true);
             }
-
+            _GasFlowToleranceChecker.IsStable = true;
             if (ProcessUnit.ToleranceMode != ToleranceMode.None)
             {
                 List<ToleranceObject> toleranceObjects = new List<ToleranceObject>();
@@ -779,7 +795,7 @@ namespace Venus_RT.Modules.PMs
                 toleranceObjects.Add(new ToleranceObject("Gas11", ProcessUnit.Gas11, ProcessUnit.Gas11WarningRange, ProcessUnit.Gas11AlarmRange, ProcessUnit.ToleranceDelayTime, ProcessUnit.ToleranceMode));
                 toleranceObjects.Add(new ToleranceObject("Gas12", ProcessUnit.Gas12, ProcessUnit.Gas12WarningRange, ProcessUnit.Gas12AlarmRange, ProcessUnit.ToleranceDelayTime, ProcessUnit.ToleranceMode));
 
-                _GasFlowToleranceChecker.Start(toleranceObjects);
+                _GasFlowToleranceChecker.Start(toleranceObjects, step.Type == StepType.Stable);
             }
             return RState.Running;
         }
@@ -833,7 +849,9 @@ namespace Venus_RT.Modules.PMs
             //List<ToleranceObject> toleranceObjects = new List<ToleranceObject>();
             //if (ProcessUnit.ToleranceMode != ToleranceMode.None)
             //{
-            //    toleranceObjects.Add(new ToleranceObject("BacksideHelium", ProcessUnit.BacksideHelium, ProcessUnit.HeliumWarningRange, ProcessUnit.HeliumAlarmRange, ProcessUnit.ToleranceDelayTime, ProcessUnit.ToleranceMode));
+            //    toleranceObjects.Add(new ToleranceObject("ESCTemperature", ProcessUnit.ESCTemperature, ProcessUnit.ESCTemperatureWarningRange, ProcessUnit.ESCTemperatureAlarmRange, ProcessUnit.ToleranceDelayTime, ProcessUnit.ToleranceMode));
+            //    toleranceObjects.Add(new ToleranceObject("WallTemperature", ProcessUnit.WallTemperature, ProcessUnit.WallTemperatureWarningRange, ProcessUnit.WallTemperatureAlarmRange, ProcessUnit.ToleranceDelayTime, ProcessUnit.ToleranceMode));
+
             //    _HeliumToleranceChecker.Start(toleranceObjects);
             //}
             return RState.Running;
@@ -848,13 +866,13 @@ namespace Venus_RT.Modules.PMs
             }
             //if (ProcessUnit.ToleranceMode != ToleranceMode.None)
             //{
-            //   return _HeliumToleranceChecker.Monitor(Chamber.HeliumFeedBack);
+            //    return _HeliumToleranceChecker.Monitor(Chamber.ESCTemperature,Chamber.WallTemperature);
             //}
             return RState.Running;
         }
         private void ESCHVUnit_End(ProcessUnitBase unit, RecipeStep step)
         {
-            Chamber.SetESCClampVoltage(0);
+
             Chamber.SetBacksideHeThreshold(0, 0);
             //var ProcessUnit = unit as ESCHVUnit;
             //if (ProcessUnit.ToleranceMode != ToleranceMode.None)
@@ -879,7 +897,7 @@ namespace Venus_RT.Modules.PMs
 
         private RState ProcessKitUnit_Check(ProcessUnitBase unit, RecipeStep step)
         {
-            var ProcessUnit = unit as ProcessKitUnit;
+            //var ProcessUnit = unit as ProcessKitUnit;
             return RState.Running;
         }
 
@@ -920,17 +938,37 @@ namespace Venus_RT.Modules.PMs
             {
                 Chamber.SetHighTemperatureHeaterTemperature(ProcessUnit.HeaterTemp);
             }
-            Chamber.SetHighTemperatureHeaterRatio(ProcessUnit.HeaterRatio);
+            if (ProcessUnit.HeaterRatio > 0)
+            {
+                Chamber.SetHighTemperatureHeaterRatio(ProcessUnit.HeaterRatio);
+            }
+            _HighTemperatureToleranceChecker.IsStable = true;
+            if (ProcessUnit.ToleranceMode != ToleranceMode.None)
+            {
+                List<ToleranceObject> toleranceObjects = new List<ToleranceObject>();
+                toleranceObjects.Add(new ToleranceObject("HighTemperatureHeater Temperature", ProcessUnit.HeaterTemp, ProcessUnit.HeaterTempWarningRange, ProcessUnit.HeaterTempAlarmRange, ProcessUnit.ToleranceDelayTime, ProcessUnit.ToleranceMode));
+                _HighTemperatureToleranceChecker.Start(toleranceObjects, step.Type == StepType.Stable);
+            }
             return RState.Running;
         }
 
         private RState HeaterUnit_Check(ProcessUnitBase unit, RecipeStep step)
         {
+            var ProcessUnit = unit as HeaterUnit;
+            if (ProcessUnit.ToleranceMode != ToleranceMode.None)
+            {
+                return _HighTemperatureToleranceChecker.Monitor(Chamber.ChamberTemperature);
+            }
             return RState.Running;
         }
 
         private void HeaterUnit_End(ProcessUnitBase unit, RecipeStep step)
         {
+            var ProcessUnit = unit as HeaterUnit;
+            if (ProcessUnit.ToleranceMode != ToleranceMode.None)
+            {
+                _HighTemperatureToleranceChecker.End();
+            }
 
         }
         public bool LoadMethods(ProcessUnitBase unit)
@@ -1020,7 +1058,7 @@ namespace Venus_RT.Modules.PMs
                     }
                     else
                     {
-                        if (_GasFlowToleranceChecker.IsStable && _PressureToleranceChecker.IsStable && _HeliumToleranceChecker.IsStable)
+                        if (_GasFlowToleranceChecker.IsStable && _PressureToleranceChecker.IsStable && _HighTemperatureToleranceChecker.IsStable)
                         {
                             return RState.End;
                         }

+ 7 - 116
Venus/Venus_Simulator/Instances/SimulatorSystem.cs

@@ -78,109 +78,6 @@ namespace Venus_Simulator.Instances
 
             switch (jetChamber)
             {
-                //case JetChamber.Venus:
-                //    IO.DI[$"{mod}.DI_PM_Lid_Closed"].Value = true;
-                //    IO.DI[$"{mod}.DI_PM_ATM_SW"].Value = true;
-                //    IO.DI[$"{mod}.DI_PM_VAC_SW"].Value = false;
-                //    IO.DI[$"{mod}.DI_PCW_Flow_SW"].Value = true;
-                //    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_RF_Generator_Interlock"].Value = true;
-                //    IO.DI[$"{mod}.DI_Source_RF_Fan"].Value = true;
-                //    IO.DI[$"{mod}.DI_Turbo_Pump_Interlock"].Value = true;
-
-                //    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"].Value = true;
-                //    IO.DI[$"{mod}.DI_Coolant_Inlet_TC_Broken_Alarm"].Value = false;
-                //    IO.DI[$"{mod}.DI_Coolant_Outlet_TC_Broken_Alarm"].Value = true;
-
-                //    IO.DI[$"{mod}.DI_Chamber_Pressure_10t_Gauge_Alarm"].Value = false;
-                //    IO.DI[$"{mod}.DI_Process_Pressure_100mt_Gauge_Alarm"].Value = false;
-                //    IO.DI[$"{mod}.DI_Chamber_Pressure_760t_Gauge_Alarm"].Value = false;
-                //    IO.DI[$"{mod}.DI_Foreline_Pressure_760t_Gauge_Alarm"].Value = false;
-                //    IO.DI[$"{mod}.DI_LL_Pressure_760t_Gauge_Alarm"].Value = false;
-                //    IO.DI[$"{mod}.DI_ESC_He_Pressure_100t_Gauge_Alarm"].Value = false;
-
-                //    IO.DI[$"{mod}.DI_Valve_TC_Deviation_out_of_range"].Value = false;
-                //    IO.DI[$"{mod}.DI_Valve_Control_TC_Broken_Alarm"].Value = false;
-                //    IO.DI[$"{mod}.DI_Valve_Monitor_TC_Broken_Alarm"].Value = false;
-                //    IO.DI[$"{mod}.DI_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_Wall_Control_TC_Broken_Alarm"].Value = false;
-
-                //    IO.DI[$"{mod}.DI_CHB_Wall_Monitor_TC_Broken_Alarm"].Value = false;
-                //    IO.DI[$"{mod}.DI_CHB_Wall_Heater_On_FB"].Value = false;
-                //    IO.DI[$"{mod}.DI_CHB_Wall_OT_SW_Alarm"].Value = false;
-                //    IO.DI[$"{mod}.DI_PN2_Pressure_SW"].Value = true;
-
-                //    IO.DI[$"{mod}.DI_MFC1_Pressure_SW"].Value = true;
-                //    IO.DI[$"{mod}.DI_MFC2_Pressure_SW"].Value = true;
-                //    IO.DI[$"{mod}.DI_MFC3_Pressure_SW"].Value = true;
-                //    IO.DI[$"{mod}.DI_MFC4_Pressure_SW"].Value = true;
-                //    IO.DI[$"{mod}.DI_MFC5_Pressure_SW"].Value = true;
-
-                //    IO.DI[$"{mod}.DI_MFC6_Pressure_SW"].Value = true;
-                //    IO.DI[$"{mod}.DI_MFC7_Pressure_SW"].Value = true;
-                //    IO.DI[$"{mod}.DI_MFC8_Pressure_SW"].Value = true;
-                //    IO.DI[$"{mod}.DI_He_Pressure_SW"].Value = true;
-                //    IO.DI[$"{mod}.DI_ESC_He_Pressure_100t_Gauge_Alarm"].Value = false;
-
-                //    IO.DI[$"{mod}.DI_Loadlock_Lid_Closed"].Value = true;
-                //    IO.DI[$"{mod}.DI_Loadlock_Arm_Extend_POS"].Value = false;
-                //    IO.DI[$"{mod}.DI_Loadlock_Arm_Retract_POS"].Value = true;
-                //    IO.DI[$"{mod}.DI_Small_Wafer_In_POS"].Value = false;
-                //    IO.DI[$"{mod}.DI_Big_Wafer_In_POS"].Value = false;
-
-                //    IO.DI[$"{mod}.DI_Loadlock_ATM_SW"].Value = false;
-                //    IO.DI[$"{mod}.DI_Gas_Box_Door_SW"].Value = true;
-                //    IO.DI[$"{mod}.DI_Gas_Box_Pressure_SW"].Value = true;
-
-
-
-                //    //// pressure
-                //    SetAiValue($"{mod}.AI_Foreline_Pressure_760t", 5001);
-                //    //SetAiValue($"{mod}.AI_Chamber_Pressure_10t", 5000);
-                //    SetAiValue($"{mod}.AI_Process_Pressure_100mt", 100);
-                //    //SetAiValue($"{mod}.AI_Chamber_Pressure_10t", ATM_PRESSURE);
-                //    SetAiValue($"{mod}.AI_Chamber_Pressure_Virtual", PROCESS_GAUGE);
-
-                //    SetAiValue($"{mod}.AI_Chamber_Pressure_10t", 5000.02F);
-                //    SetAiValue($"{mod}.AI_LL_Pressure_760t", ATM_LoadLock_PRESSURE);
-
-                //    //// Temperature
-
-                //    SetAiValue($"{mod}.AI_Valve_Control_TC_Temp", 28);
-                //    SetAiValue($"{mod}.AI_Valve_Monitor_TC_Temp", 27);
-                //    SetAiValue($"{mod}.AI_Fline_Control_TC_Temp", 28);
-                //    SetAiValue($"{mod}.AI_Fline_Monitor_TC_Temp", 27);
-                //    SetAiValue($"{mod}.AI_CHB_Wall_Control_TC_Temp", 28);
-                //    SetAiValue($"{mod}.AI_CHB_Wall_Monitor_TC_Temp", 27);
-                //    SetAiValue($"{mod}.AI_Coolant_Inlet_Temp", 28);
-                //    //if (mod == ModuleName.PMA)
-                //    //{
-                //    //    SetAiValue($"{mod}.AI_Coolant_Outlet_Temp", 29);
-                //    //}
-                //    //else if (mod == ModuleName.PMB)
-                //    //{
-                //    //    SetAiValue($"{mod}.AI_Coolant_Outlet_Temp", 30);
-                //    //}
-
-                //    // Datetime
-                //    SetAiValue($"{mod}.AI_Year", DateTime.Today.Year);
-                //    SetAiValue($"{mod}.AI_Month", DateTime.Today.Month);
-                //    SetAiValue($"{mod}.AI_Day", DateTime.Today.Day);
-                //    SetAiValue($"{mod}.AI_Time", DateTime.Now.Hour);
-                //    SetAiValue($"{mod}.AI_Minute", DateTime.Now.Minute);
-                //    SetAiValue($"{mod}.AI_Second", DateTime.Now.Second);
-                //    break;
                 case JetChamber.VenusSE:
                     IO.DI[$"{mod}.DI_Lid_Closed"].Value = true;
                     IO.DI[$"{mod}.DI_ATM_Switch"].Value = true;
@@ -711,18 +608,7 @@ namespace Venus_Simulator.Instances
                 {
                     switch (item.Value)
                     {
-                        //case JetChamber.Venus:
-                        //    MonitorSlitDoorInPM(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:
                             MonitorSlitDoorInTM(item.Key);
                             MonitorPin(item.Key);
@@ -749,6 +635,7 @@ namespace Venus_Simulator.Instances
                             //MonitorIOPumpCtrl(item.Key);
                             MonitorLid(item.Key);
                             MonitorIOHighTemperatureHeater(item.Key);
+                            MonitorKepler2200Heater(item.Key);
                             break;
 
                         case JetChamber.VenusSE:
@@ -2511,7 +2398,11 @@ namespace Venus_Simulator.Instances
             //var mock_sp = _rd.Next(sp - 3, sp + 3);
             SetAiValue($"{mod}.AI_CHB_M-HT_Control_TC_Temp", (float)mock_fb);
         }
-
+        void MonitorKepler2200Heater(ModuleName mod)
+        {
+            var pendulumHeaterSetpoint = GetAoValue($"{mod}.AO_P_Valve_Temperature_Setpoint");
+            SetAiValue($"{mod}.AI_P_Valve_Control_TC_Temp", (float)pendulumHeaterSetpoint);
+        }
         public void Terminate()
         {
             _thread.Stop();