Browse Source

add facility all

chenzk 1 month ago
parent
commit
0ae3f020eb

+ 1 - 0
Framework/Common/IOCore/IOModuleManager.cs

@@ -84,6 +84,7 @@ namespace MECF.Framework.Common.IOCore
             string name = $"{moduleName}.{variable}";
             _moduleVariableActionDic[name] = onUpdateModuleVariableValue;
             //根据模块变量名称获取相应的IO变量名称
+            
             string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName(name);
             if (!string.IsNullOrEmpty(ioName))
             {

+ 20 - 12
PunkHPX8_MainPages/ViewModels/SystemFacilitiesViewModel.cs

@@ -42,7 +42,7 @@ namespace PunkHPX8_MainPages.ViewModels
         private const string VPW_DI_ENABLE = "VpwDiEnable";
         private const string DI_REPLEN_ENABLE = "DiReplenEnable";
         private const string DI_FILL_ENABLE = "DiFillEnable";
-        private const string SRD_DI_ENABLE = "SrdDiEnable";
+        private const string SRD_DI_ENABLE = "SrdDiwEnable";
         private const string SAMPLE_STATION_ENABLE = "SampleStationEnable";
         private const string FILTER_PURGE_ENABLE = "FilterPurgeEnable";
         private const string N2_BLANKET_PRESSURE_VALUE = "N2BlanketPressure";
@@ -149,7 +149,7 @@ namespace PunkHPX8_MainPages.ViewModels
 
         public bool HouseChilledWaterFlowOn { get { return _houseChilledWaterFlowOn; } set { SetProperty(ref _houseChilledWaterFlowOn, value); } }
 
-        public bool VpwDiWEnable { get { return _vpwDiWEnable; } set { SetProperty(ref _vpwDiWEnable, value); } }
+  
         
         public bool DiFillEnable{ get { return _diFillEnable; } set { SetProperty(ref _diFillEnable, value); }}
 
@@ -178,13 +178,19 @@ namespace PunkHPX8_MainPages.ViewModels
 
         public double PlateCellFFUPressure { get { return _plateCellFFUPressure; } set { SetProperty(ref _plateCellFFUPressure, value); } }
 
-        public double CorridorFFUPressure { get { return _corridorFFUPressure; } set { SetProperty(ref _corridorFFUPressure, value); } }  
+        public double CorridorFFUPressure { get { return _corridorFFUPressure; } set { SetProperty(ref _corridorFFUPressure, value); } }
+        #endregion
+
+
+        #region Other Module
+        public bool VpwDiWEnable { get { return _vpwDiWEnable; } set { SetProperty(ref _vpwDiWEnable, value); } }
+
         #endregion
 
         #endregion
 
         #region 指令
-        
+
         public ICommand NitrogenOnCommand{get;private set;}
         
         public ICommand NitrogenOffCommand{ get;private set;}
@@ -291,7 +297,7 @@ namespace PunkHPX8_MainPages.ViewModels
                 {
  
                     List<CommonLimitData> facilitiesDatas = CommonFunction.GetValue<List<CommonLimitData>>(_rtDataValueDic, $"System.{FACILITIES}.{FACILITIES_DATA}");
-                    if (facilitiesDatas != null) //顺序待修正
+                    if (facilitiesDatas != null)
                     {
                         Cda1Data = facilitiesDatas[0];
                         Cda2Data = facilitiesDatas[1];
@@ -312,7 +318,7 @@ namespace PunkHPX8_MainPages.ViewModels
                     ExtendCdaOn = CommonFunction.GetValue<bool>(_rtDataValueDic, $"System.{FACILITIES}.{EXTERNAL_CDA_ENABLE}");
                     DiWaterPressureOn = CommonFunction.GetValue<bool>(_rtDataValueDic, $"System.{FACILITIES}.{DI_WATER_ENABLE}");
                     HouseChilledWaterFlowOn = CommonFunction.GetValue<bool>(_rtDataValueDic, $"System.{FACILITIES}.{HOUSE_CHILLED_WATER_ENABLE}");
-                    VpwDiWEnable = CommonFunction.GetValue<bool>(_rtDataValueDic, $"System.{FACILITIES}.{VPW_DI_ENABLE}");
+                    VpwDiWEnable = CommonFunction.GetValue<bool>(_rtDataValueDic, $"VPWMain1.DiwEnable");
                     DiFillEnable = CommonFunction.GetValue<bool>(_rtDataValueDic, $"System.{FACILITIES}.{DI_FILL_ENABLE}");
                     DiReplenEnable = CommonFunction.GetValue<bool>(_rtDataValueDic, $"System.{FACILITIES}.{DI_REPLEN_ENABLE}");
                     SrdDiWEnable = CommonFunction.GetValue<bool>(_rtDataValueDic, $"System.{FACILITIES}.{SRD_DI_ENABLE}");
@@ -370,6 +376,8 @@ namespace PunkHPX8_MainPages.ViewModels
             _rtDataKeys.Add($"System.{FACILITIES}.{FFU_CORRIDOR_PRESSURE_ERROR}");
             _rtDataKeys.Add($"System.{FACILITIES}.{FFU_PLATECELL_PRESSURE_PRESSURE}");
             _rtDataKeys.Add($"System.{FACILITIES}.{FFU_CORRIDOR_PRESSURE}");
+            
+            _rtDataKeys.Add($"VPWMain1.DiwEnable");
         }
 
         #region 指令Action
@@ -510,7 +518,7 @@ namespace PunkHPX8_MainPages.ViewModels
         /// <param name="param"></param>
         private void VpwDiwEnableAction(object param)
         {
-            InvokeClient.Instance.Service.DoOperation($"System.{FACILITIES}.VpwDiwEnable");
+            InvokeClient.Instance.Service.DoOperation($"VPWMain1.DiwEnable");
         }
         /// <summary>
         /// VPW DI Disable
@@ -518,7 +526,7 @@ namespace PunkHPX8_MainPages.ViewModels
         /// <param name="param"></param>
         private void VpwDiwDisableAction(object param)
         {
-            InvokeClient.Instance.Service.DoOperation($"System.{FACILITIES}.VpwDiwDisable");
+            InvokeClient.Instance.Service.DoOperation($"VPWMain1.DiwDisable");
         }
         /// <summary>
         /// DI Fill Enable
@@ -553,20 +561,20 @@ namespace PunkHPX8_MainPages.ViewModels
             InvokeClient.Instance.Service.DoOperation($"System.{FACILITIES}.DiReplenDisable");
         }
         /// <summary>
-        /// Loader DI Enable
+        /// Srd diw Enable
         /// </summary>
         /// <param name="param"></param>
         private void SrdDiEnableAction(object param)
         {
-            InvokeClient.Instance.Service.DoOperation($"System.{FACILITIES}.SrdDiEnable");
+            InvokeClient.Instance.Service.DoOperation($"System.{FACILITIES}.SrdDiwEnable");
         }
         /// <summary>
-        /// Loader DI Disable
+        /// Srd diw Disable
         /// </summary>
         /// <param name="param"></param>
         private void SrdDiDisableAction(object param)
         {
-            InvokeClient.Instance.Service.DoOperation($"System.{FACILITIES}.SrdDiDisable");
+            InvokeClient.Instance.Service.DoOperation($"System.{FACILITIES}.SrdDiwDisable");
         }
         /// <summary>
         /// Filter Purge Enable

+ 1 - 1
PunkHPX8_MainPages/Views/SystemFacilitiesView.xaml

@@ -243,7 +243,7 @@
                         <Grid Grid.Column="1">
                             <Ellipse Width="16" Height="16"  Fill="{Binding FilterPurgeEnable,Converter={StaticResource boolToColor}}" Stroke="Silver" HorizontalAlignment="Left"/>
                             <Button Style="{StaticResource SysBtnStyle}"  Content="On" Width="50" Height="25" HorizontalAlignment="Left" Command="{Binding FilterPurgeEnableCommand}" IsEnabled="{Binding FilterPurgeEnable,Converter={StaticResource boolReverse}}" Margin="25,0,0,0"></Button>
-                            <Button Style="{StaticResource SysBtnStyle}"  Content="Off" Width="50" Height="25" HorizontalAlignment="Left" Command="{Binding FilterPurgeEnableCommand}" IsEnabled="{Binding FilterPurgeEnable}" Margin="80,0,0,0"></Button>
+                            <Button Style="{StaticResource SysBtnStyle}"  Content="Off" Width="50" Height="25" HorizontalAlignment="Left" Command="{Binding FilterPurgeDisableCommand}" IsEnabled="{Binding FilterPurgeEnable}" Margin="80,0,0,0"></Button>
                         </Grid>
                     </Grid>
                     <Grid Grid.Row="20">

+ 9 - 0
PunkHPX8_RT/Config/Devices/Beckhoffcfg - plctask.xml

@@ -90,6 +90,7 @@
 		<Input Name="r_Cassette_B_200MM" Address="MAIN.Facility_DI_16CHANNEL_EL1819_N000_16" Invert="false" Type="Digital" DataType="bool"/>
 		<Input Name="r_pH3" Address="MAIN.Facility_AI_8CHANNEL_4_20mA_EL3058_N005_1" Scaling="0=0, 40=32767" Type="Analog" DataType="int"/>
 		<Input Name="r_HCW_FLOW" Address="MAIN.Facility_AI_8CHANNEL_4_20mA_EL3058_N005_5" Scaling="0=0, 40=32767" Type="Analog" DataType="int"/>
+		<Input Name="r_DIWRETURN_FLOW" Address="MAIN.Facility_AI_8CHANNEL_4_20mA_EL3058_N006_106" Scaling="0=0, 40=32767" Type="Analog" DataType="int"/>
 		<Input Name="r_SYSTEM_EXHAUST_1" Address="MAIN.Facility_AI_8CHANNEL_4_20mA_EL3058_N006_1" Scaling="0=0, 2=32767" Type="Analog" DataType="int"/>
 		<Input Name="r_SYSTEM_EXHAUST_2" Address="MAIN.Facility_AI_8CHANNEL_4_20mA_EL3058_N006_2" Scaling="0=0, 2=32767" Type="Analog" DataType="int"/>
 		<Input Name="r_DI_WATER_PRESSURE" Address="MAIN.Facility_AI_8CHANNEL_4_20mA_EL3058_N006_5" Scaling="0=0, 100=32767" Type="Analog" DataType="int"/>
@@ -103,6 +104,8 @@
 		<Input Name="r_SYSTEM_VACUUM" Address="MAIN.Facility_AI_8CHANNEL_0_10V_EL3068_N007_8" Scaling="-750=3276.7, 750=16383.5" Type="Analog" DataType="int"/>
 		<Input Name="r_N2_BLANKET_PRESSURE" Address="MAIN.Facility_AI_8CHANNEL_0_10V_EL3068_N008_1" Scaling="-14.5=3276.7, 14.5=16383.5" Type="Analog" DataType="int"/>
 		<Input Name="r_N2_OVERFLOW_PRESSURE" Address="MAIN.Facility_AI_8CHANNEL_0_10V_EL3068_N008_2" Scaling="-14.5=3276.7, 14.5=16383.5" Type="Analog" DataType="int"/>
+		<Input Name="r_CLAMSHELL_CYLINDER_PRESSURE" Address="MAIN.PlatingCell1_2_AI_8CHANNEL_0_10V_EL3086_N402_3" Scaling="0=0, 100=32767" Type="Analog" DataType="udint"/>
+		<Input Name="r_TILT_CYLINDER_PRESSURE" Address="MAIN.PlatingCell1_2_AI_8CHANNEL_0_10V_EL3086_N402_4" Scaling="0=0, 100=32767" Type="Analog" DataType="udint"/>
 
 		<!-- facility inputs end -->
 
@@ -176,6 +179,12 @@
 		<Output Name="c_HCW_ENABLE" Address="MAIN.Facility_DO_16CHANNEL_EL2809_N002_5" Type="Digital" DataType="bool"/>
 		<Output Name="c_DI_REPLEN_ENABLE" Address="MAIN.Facility_DO_16CHANNEL_EL2809_N002_6" Type="Digital" DataType="bool"/>
 		<Output Name="c_DI_FILL_ENABLE" Address="MAIN.Facility_DO_16CHANNEL_EL2809_N002_7" Type="Digital" DataType="bool"/>
+		
+		<Output Name="c_SAMPLE_STATION_ENABLE" Address="MAIN.VPW_PNEU_SMC_EX260_BYTE2" Type="Digital" BitOperated="true" Bit="5" DataType="byte"/>
+		<Output Name="c_FILTER_PURGE_ENABLE" Address="MAIN.VPW_PNEU_SMC_EX260_BYTE2" Type="Digital" BitOperated="true" Bit="6" DataType="byte"/>
+		<Output Name="c_DIW_SRD_ENABLE" Address="MAIN.VPW_PNEU_SMC_EX260_BYTE2" Type="Digital" BitOperated="true" Bit="7" DataType="byte"/>
+		
+		
 		<!-- facility outputs end -->
 		
 		<!--VPW Main Start-->

+ 7 - 0
PunkHPX8_RT/Config/Devices/Beckhoffcfg.xml

@@ -90,6 +90,7 @@
 		<Input Name="r_Cassette_B_100MM" Address="Task 2.Inputs.Facility_DI_16CHANNEL_EL1819_N000_15" Invert="false" Type="Digital" DataType="bool"/>
 		<Input Name="r_Cassette_B_200MM" Address="Task 2.Inputs.Facility_DI_16CHANNEL_EL1819_N000_16" Invert="false" Type="Digital" DataType="bool"/>
 		<Input Name="r_pH3" Address="Task 2.Inputs.Facility_AI_8CHANNEL_4_20mA_EL3058_N005_1" Scaling="0=0, 40=32767" Type="Analog" DataType="int"/>
+		<Input Name="r_DIWRETURN_FLOW" Address="MAIN.Facility_AI_8CHANNEL_4_20mA_EL3058_N006_106" Scaling="0=0, 40=32767" Type="Analog" DataType="int"/>
 		<Input Name="r_HCW_FLOW" Address="Task 2.Inputs.Facility_AI_8CHANNEL_4_20mA_EL3058_N005_5" Scaling="0=0, 40=32767" Type="Analog" DataType="int"/>
 		<Input Name="r_SYSTEM_EXHAUST_1" Address="Task 2.Inputs.Facility_AI_8CHANNEL_4_20mA_EL3058_N006_1" Scaling="0=0, 2=32767" Type="Analog" DataType="int"/>
 		<Input Name="r_SYSTEM_EXHAUST_2" Address="Task 2.Inputs.Facility_AI_8CHANNEL_4_20mA_EL3058_N006_2" Scaling="0=0, 2=32767" Type="Analog" DataType="int"/>
@@ -104,6 +105,8 @@
 		<Input Name="r_SYSTEM_VACUUM" Address="Task 2.Inputs.Facility_AI_8CHANNEL_0_10V_EL3068_N007_8" Scaling="-750=3276.7, 750=16383.5" Type="Analog" DataType="int"/>
 		<Input Name="r_N2_BLANKET_PRESSURE" Address="Task 2.Inputs.Facility_AI_8CHANNEL_0_10V_EL3068_N008_1" Scaling="-14.5=3276.7, 14.5=16383.5" Type="Analog" DataType="int"/>
 		<Input Name="r_N2_OVERFLOW_PRESSURE" Address="Task 2.Inputs.Facility_AI_8CHANNEL_0_10V_EL3068_N008_2" Scaling="-14.5=3276.7, 14.5=16383.5" Type="Analog" DataType="int"/>
+			<Input Name="r_CLAMSHELL_CYLINDER_PRESSURE" Address="Task 2.Inputs.PlatingCell1_2_AI_8CHANNEL_0_10V_EL3086_N402_3" Scaling="0=0, 100=32767" Type="Analog" DataType="udint"/>
+		<Input Name="r_TILT_CYLINDER_PRESSURE" Address="Task 2.Inputs.PlatingCell1_2_AI_8CHANNEL_0_10V_EL3086_N402_4" Scaling="0=0, 100=32767" Type="Analog" DataType="udint"/>
 		<!-- facility inputs end -->
 
 		<!--VPW Main Start-->
@@ -169,6 +172,10 @@
 		<Output Name="c_HCW_ENABLE" Address="Task 2.Outputs.Facility_DO_16CHANNEL_EL2809_N002_5" Type="Digital" DataType="bool"/>
 		<Output Name="c_DI_REPLEN_ENABLE" Address="Task 2.Outputs.Facility_DO_16CHANNEL_EL2809_N002_6" Type="Digital" DataType="bool"/>
 		<Output Name="c_DI_FILL_ENABLE" Address="Task 2.Outputs.Facility_DO_16CHANNEL_EL2809_N002_7" Type="Digital" DataType="bool"/>
+		
+		<Output Name="c_SAMPLE_STATION_ENABLE" Address="Task 2.Outputs.VPW_PNEU_SMC_EX260_BYTE2" Type="Digital" BitOperated="true" Bit="5" DataType="byte"/>
+		<Output Name="c_FILTER_PURGE_ENABLE" Address="Task 2.Outputs.VPW_PNEU_SMC_EX260_BYTE2" Type="Digital" BitOperated="true" Bit="6" DataType="byte"/>
+		<Output Name="c_DIW_SRD_ENABLE" Address="Task 2.Outputs.VPW_PNEU_SMC_EX260_BYTE2" Type="Digital" BitOperated="true" Bit="7" DataType="byte"/>
 		<!-- facility outputs end -->
 		
 		

+ 6 - 3
PunkHPX8_RT/Config/Devices/ModuleIOCfg.xml

@@ -39,10 +39,7 @@
 	</Module>	
 	<Module Name="Facilities">
 
-		<IO Name="Facilities.FilterPurgeEnable" IOName="c_FILTER_PURGE_ENABLE"/>
-		<IO Name="Facilities.HouseChilledWaterPressure" IOName="r_HCW_FLOW"/>
 	
-		<IO Name="Facilities.SampleEnable" IOName="c_SAMPLE_STATION_ENABLE"/>
 		<IO Name="Facilities.SampleFlow1Enable" IOName="c_SAMPLE_STATION_FLOW_1_ENABLE"/>
 		<IO Name="Facilities.SampleFlow2Enable" IOName="c_SAMPLE_STATION_FLOW_2_ENABLE"/>
 		<IO Name="Facilities.SampleFlow3Enable" IOName="c_SAMPLE_STATION_FLOW_3_ENABLE"/>
@@ -61,6 +58,7 @@
 		<IO Name="Facilities.CassetteB100M" IOName="r_Cassette_B_100MM"/>
 		<IO Name="Facilities.CassetteB200M" IOName="r_Cassette_B_200MM"/>
 		<IO Name="Facilities.PH3" IOName="r_pH3"/>
+		<IO Name="Facilities.DiwReturnFlow" IOName="r_DIWRETURN_FLOW"/>
 		<IO Name="Facilities.HouseChilledWaterFlow" IOName="r_HCW_FLOW"/>
 		<IO Name="Facilities.Exhaust1Pressure" IOName="r_SYSTEM_EXHAUST_1"/>
 		<IO Name="Facilities.Exhaust2Pressure" IOName="r_SYSTEM_EXHAUST_2"/>
@@ -75,6 +73,8 @@
 		<IO Name="Facilities.VacuumPressure" IOName="r_SYSTEM_VACUUM"/>
 		<IO Name="Facilities.N2BlanketPressure" IOName="r_N2_BLANKET_PRESSURE"/>
 		<IO Name="Facilities.N2OverflowPressure" IOName="r_N2_OVERFLOW_PRESSURE"/>
+		<IO Name="Facilities.ClamshellCylinderPressure" IOName="r_CLAMSHELL_CYLINDER_PRESSURE"/>
+		<IO Name="Facilities.TiltCylinderPressure" IOName="r_TILT_CYLINDER_PRESSURE"/>
 		<IO Name="Facilities.DIReplenFlow" IOName="r_DIREPLEN_FLOW"/>
 
 		<IO Name="Facilities.N2Enable" IOName="c_N2_ENABLE"/>
@@ -85,6 +85,9 @@
 		<IO Name="Facilities.DiReplenEnable" IOName="c_DI_REPLEN_ENABLE"/>
 		<IO Name="Facilities.DiFillEnable" IOName="c_DI_FILL_ENABLE"/>
 		
+		<IO Name="Facilities.SampleStationEnable" IOName="c_SAMPLE_STATION_ENABLE"/>
+		<IO Name="Facilities.FilterPurgeEnable" IOName="c_FILTER_PURGE_ENABLE"/>
+		<IO Name="Facilities.SrdDiwEnable" IOName="c_DIW_SRD_ENABLE"/>
 		
 	</Module>
 	<Module Name="SRD">

+ 24 - 24
PunkHPX8_RT/Config/System.sccfg

@@ -165,8 +165,8 @@
 		<configs name="N2_1A_Pressure" nameView="N2_1A_Pressure">
 			<config default="80.0" name="Error_Max" nameView="Error_Max" max="80.0" min="20.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Error state."/>
 			<config default="75.0" name="Warning_Max" nameView="Warning_Max" max="80.0" min="20.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
-			<config default="60.0" name="Error_Min" nameView="Error_Min" max="80.0" min="20.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Error state."/>
-			<config default="62.0" name="Warning_Min" nameView="Warning_Min" max="80.0" min="20.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
+			<config default="50.0" name="Error_Min" nameView="Error_Min" max="80.0" min="20.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Error state."/>
+			<config default="52.0" name="Warning_Min" nameView="Warning_Min" max="80.0" min="20.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
 		</configs>
 		<configs name="N2_1B_Pressure" nameView="N2_1B_Pressure">
 			<config default="29.0" name="Error_Max" nameView="Error_Max" max="80.0" min="20.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Error state."/>
@@ -175,34 +175,34 @@
 			<config default="22.0" name="Warning_Min" nameView="Warning_Min" max="80.0" min="20.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
 		</configs>
 		<configs name="N2_2A_Pressure" nameView="N2_1A_Pressure">
-			<config default="80.0" name="Error_Max" nameView="Error_Max" max="80.0" min="20.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Error state."/>
-			<config default="75.0" name="Warning_Max" nameView="Warning_Max" max="80.0" min="20.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
-			<config default="60.0" name="Error_Min" nameView="Error_Min" max="80.0" min="20.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Error state."/>
-			<config default="62.0" name="Warning_Min" nameView="Warning_Min" max="80.0" min="20.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
+			<config default="75.0" name="Error_Max" nameView="Error_Max" max="80.0" min="20.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Error state."/>
+			<config default="70.0" name="Warning_Max" nameView="Warning_Max" max="80.0" min="20.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
+			<config default="20.0" name="Error_Min" nameView="Error_Min" max="80.0" min="20.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Error state."/>
+			<config default="21.0" name="Warning_Min" nameView="Warning_Min" max="80.0" min="20.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
 		</configs>
 		<configs name="N2_2B_Pressure" nameView="N2_1B_Pressure">
 			<config default="29.0" name="Error_Max" nameView="Error_Max" max="80.0" min="20.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Error state."/>
 			<config default="27.0" name="Warning_Max" nameView="Warning_Max" max="80.0" min="20.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
 			<config default="20.0" name="Error_Min" nameView="Error_Min" max="80.0" min="20.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Error state."/>
-			<config default="22.0" name="Warning_Min" nameView="Warning_Min" max="80.0" min="20.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
+			<config default="21.0" name="Warning_Min" nameView="Warning_Min" max="80.0" min="20.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
 		</configs>
 		<configs name="DIWater_Pressure" nameView="DIWater_Pressure">
-			<config default="48.0" name="Error_Max" nameView="Error_Max" max="60.0" min="10.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Error state."/>
-			<config default="45.0" name="Warning_Max" nameView="Warning_Max" max="60.0" min="10.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
-			<config default="25.0" name="Error_Min" nameView="Error_Min" max="60.0" min="10.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Error state."/>
-			<config default="30.0" name="Warning_Min" nameView="Warning_Min" max="60.0" min="10.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
+			<config default="90.0" name="Error_Max" nameView="Error_Max" max="60.0" min="10.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Error state."/>
+			<config default="80.0" name="Warning_Max" nameView="Warning_Max" max="60.0" min="10.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
+			<config default="65.0" name="Error_Min" nameView="Error_Min" max="60.0" min="10.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Error state."/>
+			<config default="68.0" name="Warning_Min" nameView="Warning_Min" max="60.0" min="10.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
 		</configs>
 		<configs name="HouseChilledWaterFlow" nameView="HouseChilledWaterFlow">
-			<config default="30.0" name="Error_Max" nameView="Error_Max" max="30.0" min="10.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Error state."/>
-			<config default="25.0" name="Warning_Max" nameView="Warning_Max" max="30.0" min="10.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
-			<config default="10.0" name="Error_Min" nameView="Error_Min" max="30.0" min="5.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Error state."/>
-			<config default="15.0" name="Warning_Min" nameView="Warning_Min" max="30.0" min="5.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
+			<config default="18.0" name="Error_Max" nameView="Error_Max" max="30.0" min="10.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Error state."/>
+			<config default="15.0" name="Warning_Max" nameView="Warning_Max" max="30.0" min="10.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
+			<config default="5.0" name="Error_Min" nameView="Error_Min" max="30.0" min="5.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Error state."/>
+			<config default="7.0" name="Warning_Min" nameView="Warning_Min" max="30.0" min="5.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
 		</configs>
 		<configs name="CDA_External_Pressure" nameView="CDA_External_Pressure">
-			<config default="85.0" name="Error_Max" nameView="Error_Max" max="85.0" min="65.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Error state."/>
+			<config default="90.0" name="Error_Max" nameView="Error_Max" max="85.0" min="65.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Error state."/>
 			<config default="80.0" name="Warning_Max" nameView="Warning_Max" max="85.0" min="65.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
 			<config default="65.0" name="Error_Min" nameView="Error_Min" max="85.0" min="65.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Error state."/>
-			<config default="70.0" name="Warning_Min" nameView="Error_Max" max="85.0" min="65.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
+			<config default="68.0" name="Warning_Min" nameView="Error_Max" max="85.0" min="65.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
 		</configs>
 		<configs name="Vacuum_Pressure" nameView="Vacuum_Pressure">
 			<config default="-600.0" name="Error_Max" nameView="Error_Max" max="-600.0" min="-800.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Error state."/>
@@ -210,23 +210,23 @@
 			<config default="-800.0" name="Error_Min" nameView="Error_Min" max="-600.0" min="-800.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Error state."/>
 			<config default="-760.0" name="Warning_Min" nameView="Warning_Min" max="-600.0" min="-800.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
 		</configs>
-		<configs name="Exhaust_Pressure1" nameView="Exhaust_Pressure">
+		<configs name="Exhaust_Pressure1" nameView="Exhaust_Pressure1">
 			<config default="2.0" name="Error_Max" nameView="Error_Max" max="2.0" min="0.5" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Error state."/>
 			<config default="1.8" name="Warning_Max" nameView="Warning_Max" max="2.0" min="0.5" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
 			<config default="0.5" name="Error_Min" nameView="Error_Min" max="2.0" min="0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Error state."/>
 			<config default="0.7" name="Warning_Min" nameView="Warning_Min" max="2.0" min="0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
 		</configs>
-		<configs name="Exhaust_Pressure2" nameView="Exhaust_Pressure">
+		<configs name="Exhaust_Pressure2" nameView="Exhaust_Pressure2">
 			<config default="2.0" name="Error_Max" nameView="Error_Max" max="2.0" min="0.5" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Error state."/>
 			<config default="1.8" name="Warning_Max" nameView="Warning_Max" max="2.0" min="0.5" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
 			<config default="0.5" name="Error_Min" nameView="Error_Min" max="2.0" min="0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Error state."/>
 			<config default="0.7" name="Warning_Min" nameView="Warning_Min" max="2.0" min="0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
 		</configs>
-		<configs name="DIW_Return_Flow" nameView="DIWater_Pressure">
-			<config default="48.0" name="Error_Max" nameView="Error_Max" max="60.0" min="10.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Error state."/>
-			<config default="45.0" name="Warning_Max" nameView="Warning_Max" max="60.0" min="10.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
-			<config default="25.0" name="Error_Min" nameView="Error_Min" max="60.0" min="10.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Error state."/>
-			<config default="30.0" name="Warning_Min" nameView="Warning_Min" max="60.0" min="10.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
+		<configs name="DIW_Return_Flow" nameView="DIW_Return_Flow">
+			<config default="18.0" name="Error_Max" nameView="Error_Max" max="60.0" min="1.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Error state."/>
+			<config default="15.0" name="Warning_Max" nameView="Warning_Max" max="60.0" min="1.0" paramter="" tag="" unit="" type="Double"  description="This value defines the maximum pressure, in psi (pounds per square inch), above which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
+			<config default="5.0" name="Error_Min" nameView="Error_Min" max="60.0" min="1.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Error state."/>
+			<config default="7.0" name="Warning_Min" nameView="Warning_Min" max="60.0" min="1.0" paramter="" tag="" unit="" type="Double"  description="This value defines the minimum pressure, in psi (pounds per square inch), below which this interlock will transition to an Warning state.  Note corresponding Error_Min/Error_Max testing supersedes this test."/>
 		</configs>
 	</configs>
 	<configs name="SRD">

+ 53 - 35
PunkHPX8_RT/Devices/Facilities/SystemFacilities.cs

@@ -35,7 +35,6 @@ namespace PunkHPX8_RT.Devices.Facilities
         private const string ERROR_MIN = "Error_Min";
         private const string WARNING_MAX = "Warning_Max";
         private const string WARNING_MIN = "Warning_Min";
-        private const string LOADER_DI_ENABLE = "LoaderDiEnable";
         private const string N2_1A_PRESSURE_VALUE = "Nitrogen1APressure";
         private const string N2_1B_PRESSURE_VALUE = "Nitrogen1BPressure";
         private const string N2_2A_PRESSURE_VALUE = "Nitrogen2APressure";
@@ -49,7 +48,7 @@ namespace PunkHPX8_RT.Devices.Facilities
         private const string EXHAUST2_PRESSURE_VALUE = "Exhaust2Pressure";
         private const string DIW_RETRUN_FLOW_VALUE = "DiwReturnFlow";
         private const string VACUUM_PRESSURE_VALUE = "VacuumPressure";
-        private const string SAMPLE_ENABLE = "SampleEnable";
+
 
         private const string FFU_LOADER_ERROR = "FFULoaderError";
         private const string FFU_PROCESS_ERROR = "FFUProcessError";
@@ -68,9 +67,9 @@ namespace PunkHPX8_RT.Devices.Facilities
         private const string VPW_DI_ENABLE = "VpwDiEnable";
         private const string DI_REPLEN_ENABLE = "DiReplenEnable";
         private const string DI_FILL_ENABLE = "DiFillEnable";
-        private const string SRD_DI_ENABLE = "SrdDiEnable";
+        private const string SRD_DI_ENABLE = "SrdDiwEnable";
         private const string SAMPLE_STATION_ENABLE = "SampleStationEnable";
-        private const string FILTER_PURGE_ENABLE = "FilterPurgeEnable";
+        private const string FILTER_PURGE_ENABLE = "FilterPurgeEnable"; 
         private const string N2_BLANKET_PRESSURE_VALUE = "N2BlanketPressure";
         private const string N2_OVERFLOW_PRESSURE_VALUE = "N2OverflowPressure";
         private const string CLAMSHELL_CYLINDER_PRESSURE_VALUE = "ClamshellCylinderPressure";
@@ -123,9 +122,9 @@ namespace PunkHPX8_RT.Devices.Facilities
         /// </summary>
         private bool _diFillEnable = false;
         /// <summary>
-        /// Loader Di可用性
+        /// Srd Di可用性
         /// </summary>
-        private bool _loaderDiEnable = false;
+        private bool _srdDiEnable = false;
         /// <summary>
         /// Filter Purge可用性
         /// </summary>
@@ -139,6 +138,14 @@ namespace PunkHPX8_RT.Devices.Facilities
         /// </summary>
         private double _n2OverflowPressure = 0;
         /// <summary>
+        /// clamshellCylinder 压力
+        /// </summary>
+        private double _clamshellCylinderPressure = 0;
+        /// <summary>
+        /// tiltCylinder 压力
+        /// </summary>
+        private double _tiltCylinderPressure = 0;
+        /// <summary>
         /// 变量是否初始化字典
         /// </summary>
         private Dictionary<string, bool> _variableInitializeDic = new Dictionary<string, bool>();
@@ -216,9 +223,9 @@ namespace PunkHPX8_RT.Devices.Facilities
         /// </summary>
         public bool CDAEnable { get { return _cdaEnable; } }
         /// <summary>
-        /// Loader DI 可用性
+        /// SRD DI 可用性
         /// </summary>
-        public bool LoaderDiEnable { get { return _loaderDiEnable; } }
+        public bool SrdDiEnable { get { return _srdDiEnable; } }
         /// <summary>
         /// DI Replen Enable
         /// </summary>
@@ -269,6 +276,7 @@ namespace PunkHPX8_RT.Devices.Facilities
             SubscribeValueAction();
             InitializeOperation();
             //_periodicJob = new PeriodicJob(200, OnTimer, $"{Module}.OnTimer", true);
+
             return true;
         }
         /// <summary>
@@ -291,7 +299,7 @@ namespace PunkHPX8_RT.Devices.Facilities
             _facilitiesDataList.Add(InitialFacilitiesData(DI_WATER_PRESSURE));
             _facilitiesDataDic[DI_WATER_PRESSURE_VALUE] = _facilitiesDataList[6];
             _facilitiesDataList.Add(InitialFacilitiesData(HOUSE_CHILLED_WATER_FLOW));
-            _facilitiesDataDic[HOUSE_CHILLED_WATER_PRESSURE_VALUE] = _facilitiesDataList[7];
+            _facilitiesDataDic[HOUSE_CHILLED_WATER_FLOW] = _facilitiesDataList[7];
             _facilitiesDataList.Add(InitialFacilitiesData(CDA_EXTERNAL_PRESSURE));
             _facilitiesDataDic[CDA_EXTERNAL_PRESSURE_VALUE] = _facilitiesDataList[8];
             _facilitiesDataList.Add(InitialFacilitiesData(VACUUM_PRESSURE));
@@ -311,11 +319,13 @@ namespace PunkHPX8_RT.Devices.Facilities
             DATA.Subscribe($"{Module}.{Name}.{HOUSE_CHILLED_WATER_ENABLE}", () => _houseChilledWaterEnable, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.{Name}.{DI_FILL_ENABLE}", () => _diFillEnable, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.{Name}.{DI_REPLEN_ENABLE}", () => _diReplenEnable, SubscriptionAttribute.FLAG.IgnoreSaveDB);
-            DATA.Subscribe($"{Module}.{Name}.{LOADER_DI_ENABLE}", () => _loaderDiEnable, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe($"{Module}.{Name}.{SRD_DI_ENABLE}", () => _srdDiEnable, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.{Name}.{FILTER_PURGE_ENABLE}", () => _filterPurgeEnable, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.{Name}.{N2_BLANKET_PRESSURE_VALUE}", () => _n2BlaketPressure, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.{Name}.{N2_OVERFLOW_PRESSURE_VALUE}", () => _n2OverflowPressure, SubscriptionAttribute.FLAG.IgnoreSaveDB);
-            DATA.Subscribe($"{Module}.{Name}.{SAMPLE_ENABLE}", () => _sampleEnable, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe($"{Module}.{Name}.{CLAMSHELL_CYLINDER_PRESSURE_VALUE}", () => _clamshellCylinderPressure, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe($"{Module}.{Name}.{TILT_CYLINDER_PRESSURE_VALUE}", () => _tiltCylinderPressure, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe($"{Module}.{Name}.{SAMPLE_STATION_ENABLE}", () => _sampleEnable, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.{Name}.{FFU_LOADER_ERROR}", () => _ffuLoaderError, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.{Name}.{FFU_PROCESS_ERROR}", () => _ffuProcessError, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.{Name}.{FFU_LOADER_PRESSURE}", () => _ffuLoaderPressure, SubscriptionAttribute.FLAG.IgnoreSaveDB);
@@ -330,7 +340,7 @@ namespace PunkHPX8_RT.Devices.Facilities
             DATA.Subscribe($"{Module}.{Name}.{N2_2A_PRESSURE_VALUE}", () => _facilitiesDataDic[N2_2A_PRESSURE_VALUE].Value, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.{Name}.{N2_2B_PRESSURE_VALUE}", () => _facilitiesDataDic[N2_2B_PRESSURE_VALUE].Value, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.{Name}.{DI_WATER_PRESSURE_VALUE}", () => _facilitiesDataDic[DI_WATER_PRESSURE_VALUE].Value, SubscriptionAttribute.FLAG.IgnoreSaveDB);
-            DATA.Subscribe($"{Module}.{Name}.{HOUSE_CHILLED_WATER_PRESSURE_VALUE}", () => _facilitiesDataDic[HOUSE_CHILLED_WATER_PRESSURE_VALUE].Value, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe($"{Module}.{Name}.{HOUSE_CHILLED_WATER_FLOW}", () => _facilitiesDataDic[HOUSE_CHILLED_WATER_FLOW].Value, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.{Name}.{CDA_EXTERNAL_PRESSURE_VALUE}", () => _facilitiesDataDic[CDA_EXTERNAL_PRESSURE_VALUE].Value, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.{Name}.{VACUUM_PRESSURE_VALUE}", () => _facilitiesDataDic[VACUUM_PRESSURE_VALUE].Value, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.{Name}.{EXHAUST1_PRESSURE_VALUE}", () => _facilitiesDataDic[EXHAUST1_PRESSURE_VALUE].Value, SubscriptionAttribute.FLAG.IgnoreSaveDB);
@@ -363,8 +373,6 @@ namespace PunkHPX8_RT.Devices.Facilities
             BeckhoffIoSubscribeUpdateVariable(HOUSE_CHILLED_WATER_ENABLE);
             BeckhoffIoSubscribeUpdateVariable(DI_REPLEN_ENABLE);
             BeckhoffIoSubscribeUpdateVariable(DI_FILL_ENABLE);
-            BeckhoffIoSubscribeUpdateVariable(LOADER_DI_ENABLE);
-            BeckhoffIoSubscribeUpdateVariable(FILTER_PURGE_ENABLE);
             BeckhoffIoSubscribeUpdateVariable(N2_1A_PRESSURE_VALUE);
             BeckhoffIoSubscribeUpdateVariable(N2_1B_PRESSURE_VALUE);
             BeckhoffIoSubscribeUpdateVariable(N2_2A_PRESSURE_VALUE);
@@ -381,7 +389,11 @@ namespace PunkHPX8_RT.Devices.Facilities
             BeckhoffIoSubscribeUpdateVariable(VACUUM_PRESSURE_VALUE);
             BeckhoffIoSubscribeUpdateVariable(N2_BLANKET_PRESSURE_VALUE);
             BeckhoffIoSubscribeUpdateVariable(N2_OVERFLOW_PRESSURE_VALUE);
-            BeckhoffIoSubscribeUpdateVariable(SAMPLE_ENABLE);
+            BeckhoffIoSubscribeUpdateVariable(CLAMSHELL_CYLINDER_PRESSURE_VALUE);
+            BeckhoffIoSubscribeUpdateVariable(TILT_CYLINDER_PRESSURE_VALUE);
+            BeckhoffIoSubscribeUpdateVariable(SRD_DI_ENABLE);
+            BeckhoffIoSubscribeUpdateVariable(SAMPLE_STATION_ENABLE);
+            BeckhoffIoSubscribeUpdateVariable(FILTER_PURGE_ENABLE);
             BeckhoffIoSubscribeUpdateVariable(FFU_LOADER_ERROR);
             BeckhoffIoSubscribeUpdateVariable(FFU_PROCESS_ERROR);
             BeckhoffIoSubscribeUpdateVariable(FFU_LOADER_PRESSURE);
@@ -419,12 +431,12 @@ namespace PunkHPX8_RT.Devices.Facilities
             OP.Subscribe($"{Module}.{Name}.DiFillDisable", DiFillDisableOperation);
             OP.Subscribe($"{Module}.{Name}.DiReplenEnable", DiReplenEnableOperation);
             OP.Subscribe($"{Module}.{Name}.DiReplenDisable", DiReplenDisableOperation);
-            OP.Subscribe($"{Module}.{Name}.LoaderDiEnable", LoaderDiEnableOperation);
-            OP.Subscribe($"{Module}.{Name}.LoaderDiDisable", LoaderDiDisableOperation);
+            OP.Subscribe($"{Module}.{Name}.SrdDiwEnable", SrdDiEnableOperation);
+            OP.Subscribe($"{Module}.{Name}.SrdDiwDisable", SrdDiDisableOperation);
             OP.Subscribe($"{Module}.{Name}.FilterPurgeEnable", FilterPurgeEnableOperation);
             OP.Subscribe($"{Module}.{Name}.FilterPurgeDisable", FilterPurgeDisableOperation);
-            OP.Subscribe($"{Module}.{Name}.SampleEnable", SampleEnableOperation);
-            OP.Subscribe($"{Module}.{Name}.SampleDisable", SampleDisableOperation);
+            OP.Subscribe($"{Module}.{Name}.SampleStationEnable", SampleEnableOperation);
+            OP.Subscribe($"{Module}.{Name}.SampleStationDisable", SampleDisableOperation);
         }
         /// 更新变量数值
         /// </summary>
@@ -460,12 +472,6 @@ namespace PunkHPX8_RT.Devices.Facilities
                 case DI_REPLEN_ENABLE:
                     _diReplenEnable = (bool)value;
                     break;
-                case LOADER_DI_ENABLE:
-                    _loaderDiEnable = (bool)value;
-                    break;
-                case FILTER_PURGE_ENABLE:
-                    _filterPurgeEnable = (bool)value;
-                    break;
                 case N2_1A_PRESSURE_VALUE:
                 case N2_2A_PRESSURE_VALUE:
                 case N2_1B_PRESSURE_VALUE:
@@ -474,7 +480,7 @@ namespace PunkHPX8_RT.Devices.Facilities
                 case CDA_2_PRESSURE_VALUE:
                 case CDA_EXTERNAL_PRESSURE_VALUE:
                 case DI_WATER_PRESSURE_VALUE:
-                case HOUSE_CHILLED_WATER_PRESSURE_VALUE:
+                case HOUSE_CHILLED_WATER_FLOW:
                 case EXHAUST1_PRESSURE_VALUE:
                 case EXHAUST2_PRESSURE_VALUE:
                 case VACUUM_PRESSURE_VALUE:
@@ -487,9 +493,21 @@ namespace PunkHPX8_RT.Devices.Facilities
                 case N2_OVERFLOW_PRESSURE_VALUE:
                     _n2OverflowPressure = (double)value;
                     break;
-                case SAMPLE_ENABLE:
+                case CLAMSHELL_CYLINDER_PRESSURE_VALUE:
+                    _clamshellCylinderPressure = (double)value;
+                    break;
+                case TILT_CYLINDER_PRESSURE_VALUE:
+                    _tiltCylinderPressure = (double)value;
+                    break;
+                case SAMPLE_STATION_ENABLE:
                     _sampleEnable = (bool)value;
                     break;
+                case SRD_DI_ENABLE:
+                    _srdDiEnable = (bool)value;
+                    break;
+                case FILTER_PURGE_ENABLE:
+                    _filterPurgeEnable = (bool)value;
+                    break;
                 case FFU_LOADER_ERROR:
                     _ffuLoaderError = (bool)value;
                     break;
@@ -755,14 +773,14 @@ namespace PunkHPX8_RT.Devices.Facilities
             return true;
         }
         /// <summary>
-        /// Loader DI Enable
+        /// srd DI Enable
         /// </summary>
         /// <param name="cmd"></param>
         /// <param name="param"></param>
         /// <returns></returns>
-        private bool LoaderDiEnableOperation(string cmd, object param)
+        private bool SrdDiEnableOperation(string cmd, object param)
         {
-            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Name}.{LOADER_DI_ENABLE}");
+            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Name}.{SRD_DI_ENABLE}");
             if (!string.IsNullOrEmpty(ioName))
             {
                 IOModuleManager.Instance.WriteIoValue(ioName, true);
@@ -775,9 +793,9 @@ namespace PunkHPX8_RT.Devices.Facilities
         /// <param name="cmd"></param>
         /// <param name="param"></param>
         /// <returns></returns>
-        private bool LoaderDiDisableOperation(string cmd, object param)
+        private bool SrdDiDisableOperation(string cmd, object param)
         {
-            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Name}.{LOADER_DI_ENABLE}");
+            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Name}.{SRD_DI_ENABLE}");
             if (!string.IsNullOrEmpty(ioName))
             {
                 IOModuleManager.Instance.WriteIoValue(ioName, false);
@@ -845,7 +863,7 @@ namespace PunkHPX8_RT.Devices.Facilities
         /// <param name="enable"></param>
         private void SampeOperation(bool enable)
         {
-            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Name}.{SAMPLE_ENABLE}");
+            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Name}.{SAMPLE_STATION_ENABLE}");
             if (!string.IsNullOrEmpty(ioName))
             {
                 IOModuleManager.Instance.WriteIoValue(ioName, enable);
@@ -863,12 +881,12 @@ namespace PunkHPX8_RT.Devices.Facilities
             return CheckPressureData(EXHAUST1_PRESSURE_VALUE);
         }
         /// <summary>
-        /// 检验Exhaust
+        /// 检验冷却水
         /// </summary>
         /// <returns></returns>
         public (bool result, string reason) CheckHouseChilledWaterResult()
         {
-            return CheckPressureData(HOUSE_CHILLED_WATER_PRESSURE_VALUE);
+            return CheckPressureData(HOUSE_CHILLED_WATER_FLOW);
         }
         /// <summary>
         /// 检验CDA

+ 14 - 2
PunkHPX8_RT/Devices/Safety/SafetyDevice.cs

@@ -539,9 +539,21 @@ namespace PunkHPX8_RT.Devices.Safety
         /// <param name="value"></param>
         private void CheckIsDataAbonrmal(string variable,object value)
         {
-            if (variable == "ReservoirHighLevel" && (bool)value == true)
+            if (variable == "Reservoir1CALevelHigh" && (bool)value == false) //没有触发是false,红灯
             {
-                LOG.WriteLog(eEvent.ERR_SAFETY, Module, "ReservoirHigh Level Error");
+                LOG.WriteLog(eEvent.ERR_SAFETY, Module, "Reservoir1CALevelHigh Level Error");
+            }
+            else if (variable == "Reservoir2CALevelHigh" && (bool)value == false)
+            {
+                LOG.WriteLog(eEvent.ERR_SAFETY, Module, "Reservoir2CALevelHigh Error");
+            }
+            else if (variable == "Reservoir3CALevelHigh" && (bool)value == false)
+            {
+                LOG.WriteLog(eEvent.ERR_SAFETY, Module, "Reservoir3CALevelHigh Error");
+            }
+            else if (variable == "Reservoir4CALevelHigh" && (bool)value == false)
+            {
+                LOG.WriteLog(eEvent.ERR_SAFETY, Module, "Reservoir4CALevelHigh Error");
             }
             else if (variable == "MainCommErr" && (bool)value == true)
             {

+ 1 - 0
PunkHPX8_RT/Devices/VpwMain/VpwMainDevice.cs

@@ -246,6 +246,7 @@ namespace PunkHPX8_RT.Devices.VpwMain
         {
             DATA.Subscribe($"{Module}.{PERSISTENT_VALUE}", () => _vpwMainPersistentValue, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.{COMMON_DATA}", () => CommonData, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe($"{Module}.DiwEnable", () => CommonData.DiwEnable, SubscriptionAttribute.FLAG.IgnoreSaveDB);
         }
         /// <summary>
         /// 订阅数据

+ 1 - 1
PunkHPX8_RT/Modules/SRD/RunWaferRecipeStateMachine.cs

@@ -386,7 +386,7 @@ namespace PunkHPX8_RT.Modules.SRD
                 return false;
             }
 
-            if(!_systemFacilities.LoaderDiEnable)
+            if(!_systemFacilities.SrdDiEnable)
             {
                 LOG.WriteLog(eEvent.ERR_SRD, _module, "Load DI Is Disable");
                 PostMsg(RunWaferMsg.Error);

+ 3 - 3
PunkHPX8_RT/Modules/SRD/SRDHomeRoutine.cs

@@ -122,10 +122,10 @@ namespace PunkHPX8_RT.Modules.Transporter
                 LOG.WriteLog(eEvent.ERR_SRD, Module, $"CDA or N2 is not enabled");
                 return false;
             }
-            //Check LoadDI
-            if (!systemFacilities.LoaderDiEnable)
+            //Check SrdDI
+            if (!systemFacilities.SrdDiEnable)
             {
-                LOG.WriteLog(eEvent.ERR_SRD, Module, "Load DI is Disable");
+                LOG.WriteLog(eEvent.ERR_SRD, Module, "Srd DI is Disable");
                 return false;
             }
             return true;

+ 2 - 2
PunkHPX8_RT/Modules/SRD/SRDLoaderRoutine.cs

@@ -143,9 +143,9 @@ namespace PunkHPX8_RT.Modules.SRD
                 return false;
             }
             //Check LoaderDI
-            if (!_systemFacilities.LoaderDiEnable)
+            if (!_systemFacilities.SrdDiEnable)
             {
-                NotifyError(eEvent.ERR_SRD, "Load DI Is Disable", 0);
+                NotifyError(eEvent.ERR_SRD, "Srd DI Is Disable", 0);
                 return false;
             }
             //Check Flippers

+ 1 - 1
PunkHPX8_RT/Modules/SRD/SRDProcessRecipeRoutine.cs

@@ -409,7 +409,7 @@ namespace PunkHPX8_RT.Modules.SRD
             data.RotationSpeed = _rotationAxis.MotionData.ActualVelocity;
             data.WaterOn = _srdCommonDevice.CommonData.WaterOn;
             data.WaterFlow = _srdCommonDevice.CommonData.WaterFlow;
-            data.LoaderDIEnable = _facilities.LoaderDiEnable;
+            data.LoaderDIEnable = _facilities.SrdDiEnable;
             
             _datas.Add(data);
         }

+ 2 - 2
PunkHPX8_RT/Modules/SRD/SRDRunRecipeRoutine.cs

@@ -199,8 +199,8 @@ namespace PunkHPX8_RT.Modules.SRD
                 NotifyError(eEvent.ERR_SRD, "WaferPresent sensor is off", 0);
                 return false;
             }
-            //Check LoaderDI
-            if (!_systemFacilities.LoaderDiEnable)
+            //Check srdDI
+            if (!_systemFacilities.SrdDiEnable)
             {
                 NotifyError(eEvent.ERR_SRD, "Load DI Is Disable", 0);
                 return false;

+ 2 - 2
PunkHPX8_RT/Modules/SRD/SRDRunWaferRecipeRoutine.cs

@@ -275,9 +275,9 @@ namespace PunkHPX8_RT.Modules.SRD
                 return false;
             }
 
-            if (!_systemFacilities.LoaderDiEnable)
+            if (!_systemFacilities.SrdDiEnable)
             {
-                NotifyError(eEvent.ERR_SRD, "Load DI Is Disable",0);
+                NotifyError(eEvent.ERR_SRD, "Srd DI Is Disable",0);
                 return false;
             }
             return true;

+ 3 - 3
PunkHPX8_RT/Modules/SRD/SRDUnloaderRoutine.cs

@@ -155,10 +155,10 @@ namespace PunkHPX8_RT.Modules.SRD
                 NotifyError(eEvent.ERR_SRD, "WaferPresent sensor is off", 0);
                 return false;
             }
-            //Check LoaderDI
-            if (!_systemFacilities.LoaderDiEnable)
+            //Check SrdDI
+            if (!_systemFacilities.SrdDiEnable)
             {
-                NotifyError(eEvent.ERR_SRD, "Load DI Is Disable", 0);
+                NotifyError(eEvent.ERR_SRD, "Srd DI Is Disable", 0);
                 return false;
             }
             //Check Vacuum

+ 12 - 4
PunkHPX8_Twincate/PunkHPX8/PlcTest/POUs/MAIN.TcPOU

@@ -125,13 +125,13 @@ VAR
 	//ExtFluidEnableEdm
 	Facility_SDI_4CHANNEL_EL1904_NS200_1 AT%I* :BOOL;
 	//Reservoir1CALevelHigh
-	RES1_2_SDI_4CHANNEL_EL1904_NS400_2 AT%I* :BOOL;
+	RES1_2_SDI_4CHANNEL_EL1904_NS400_2 AT%I* :BOOL:=TRUE;
 	//Reservoir2CALevelHigh
-	RES1_2_SDI_4CHANNEL_EL1904_NS400_3 AT%I* :BOOL;
+	RES1_2_SDI_4CHANNEL_EL1904_NS400_3 AT%I* :BOOL:=TRUE;
 	//Reservoir3CALevelHigh
-	RES3_4_SDI_4CHANNEL_EL1904_NS430_2 AT%I* :BOOL;
+	RES3_4_SDI_4CHANNEL_EL1904_NS430_2 AT%I* :BOOL:=TRUE;
 	//Reservoir4CALevelHigh
-	RES3_4_SDI_4CHANNEL_EL1904_NS430_3 AT%I* :BOOL;
+	RES3_4_SDI_4CHANNEL_EL1904_NS430_3 AT%I* :BOOL:=TRUE;
 	//VpwCell1RotationStoEdm
 	VPW_SDI_4CHANNEL_EL1904_NS300_1 AT%I* :BOOL;
 	//VpwCell2RotationStoEdm
@@ -213,6 +213,13 @@ VAR
 	Facility_AI_8CHANNEL_0_10V_EL3068_N008_2 AT%I* :INT;
 	//DIReplenFlow
 	Facility_COUNTER_2CHANNEL_EL1512_N009_1_Counter_value AT%I* :UDINT;
+	//ClamshellCylinderPressure
+	PlatingCell1_2_AI_8CHANNEL_0_10V_EL3086_N402_3 AT%I* :UDINT;
+	//TiltCylinderPressure
+	PlatingCell1_2_AI_8CHANNEL_0_10V_EL3086_N402_4 AT%I* :UDINT;
+	
+	//DiwReturnFlow
+	Facility_AI_8CHANNEL_4_20mA_EL3058_N006_106 AT%I* :INT:=10000;
 	
 	
 	//N2Enable
@@ -229,6 +236,7 @@ VAR
 	Facility_DO_16CHANNEL_EL2809_N002_6 AT%Q* :BOOL;
 	//DiFillEnable
 	Facility_DO_16CHANNEL_EL2809_N002_7 AT%Q* :BOOL;
+	
 
 	//VPW1 Rotation Status word
 	VPW1RotationStatusWord AT%I* :UINT;