瀏覽代碼

1 add reservoir tc Monitor
2 add srd twincat releated

chenzk 3 天之前
父節點
當前提交
86f1673590

+ 55 - 34
PunkHPX8_RT/Config/Devices/Beckhoffcfg - plctask.xml

@@ -75,8 +75,8 @@
 		<Input Name="r_PlatingCell3_4_Right_STO_EDM" Address="MAIN.RES3_4_SDI_4CHANNEL_EL1904_NS531_1" Invert="false" Type="Digital" DataType="bool"/>
 		<Input Name="r_PlatingCell1_2_Vertical_STO_EDM" Address="MAIN.RES1_2_SDI_4CHANNEL_EL1904_NS500_1" Invert="false" Type="Digital" DataType="bool"/>
 		<Input Name="r_PlatingCell3_4_Vertical_STO_EDM" Address="MAIN.RES1_2_SDI_4CHANNEL_EL1904_NS531_1" Invert="false" Type="Digital" DataType="bool"/>
-		<Input Name="r_SRD1_ROTATE_STO_EDM" Address="MAIN.SRD1_SDI_4CHANNEL_EL1904_NS300_1" Invert="false" Type="Digital" DataType="bool"/>
-		<Input Name="r_SRD2_ROTATE_STO_EDM" Address="MAIN.SRD2_SDI_4CHANNEL_EL1904_NS300_4" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD1_ROTATE_STO_EDM" Address="MAIN.SRD1_SDI_4CHANNEL_EL1904_NS600_1" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD2_ROTATE_STO_EDM" Address="MAIN.SRD2_SDI_4CHANNEL_EL1904_NS600_2" Invert="false" Type="Digital" DataType="bool"/>
 		
 		<!-- Safety inputs end -->
 		
@@ -110,32 +110,45 @@
 		<!-- facility inputs end -->
 		
 		<!--SRD inputs Start-->
-		<Input Name="r_SRD_FLUID_LEVEL"  Address="MAIN.r_SRD_FLUID_LEVEL" Invert="false" Type="Digital" DataType="bool"/>
-		<Input Name="r_SRD_SUPPLY_WATER_PRESS"  Address="MAIN.r_SRD_SUPPLY_WATER_PRESS" Scaling="0=3276.7,50=32767" Type="Analog" DataType="int"/>
+		<Input Name="r_SRD_FLUID_LEVEL"  Address="MAIN.SRD_DI_16CHANNEL_EL1819_N600_1" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD_SUPPLY_WATER_PRESS"  Address="MAIN.SRD_AI_8CHANNEL_4_20mA_EL3058_604_3" Scaling="0=3276.7,50=32767" Type="Analog" DataType="int"/>
 		<!--SRD inputs End-->
 		
 
 		<!--SRD1 inputs Start-->
-		<Input Name="r_SRD1_SHUTTER_CLOSED"  Address="MAIN.r_SRD1_SHUTTER_CLOSED" Invert="false" Type="Digital" DataType="bool"/>
-		<Input Name="r_SRD1_SHUTTER_OPEN"  Address="MAIN.r_SRD1_SHUTTER_OPEN" Invert="false" Type="Digital" DataType="bool"/>
-		<Input Name="r_SRD1_CHUCK_VAC_OK"  Address="MAIN.r_SRD1_CHUCK_VAC_OK" Invert="false" Type="Digital" DataType="bool"/>
-		<Input Name="r_SRD1_WAFER_PRESENT"  Address="MAIN.r_SRD1_WAFER_PRESENT" Invert="false" Type="Digital" DataType="bool"/>
-		<Input Name="r_SRD1_LIFT_UP"  Address="MAIN.r_SRD1_LIFT_UP" Invert="false" Type="Digital" DataType="bool"/>
-		<Input Name="r_SRD1_100_FLIPPER1_OUT"  Address="MAIN.r_SRD1_100_FLIPPER1_OUT" Invert="false" Type="Digital" DataType="bool"/>
-		<Input Name="r_SRD1_100_FLIPPER2_OUT"  Address="MAIN.r_SRD1_100_FLIPPER2_OUT" Invert="false" Type="Digital" DataType="bool"/>
-		<Input Name="r_SRD1_100_FLIPPER3_OUT"  Address="MAIN.r_SRD1_100_FLIPPER3_OUT" Invert="false" Type="Digital" DataType="bool"/>
-		<Input Name="r_SRD1_150_FLIPPER1_OUT"  Address="MAIN.r_SRD1_150_FLIPPER1_OUT" Invert="false" Type="Digital" DataType="bool"/>
-		<Input Name="r_SRD1_150_FLIPPER2_OUT"  Address="MAIN.r_SRD1_150_FLIPPER2_OUT" Invert="false" Type="Digital" DataType="bool"/>
-		<Input Name="r_SRD1_150_FLIPPER3_OUT"  Address="MAIN.r_SRD1_150_FLIPPER3_OUT" Invert="false" Type="Digital" DataType="bool"/>
-		<Input Name="r_SRD1_200_FLIPPER1_OUT"  Address="MAIN.r_SRD1_200_FLIPPER1_OUT" Invert="false" Type="Digital" DataType="bool"/>
-		<Input Name="r_SRD1_200_FLIPPER2_OUT"  Address="MAIN.r_SRD1_200_FLIPPER2_OUT" Invert="false" Type="Digital" DataType="bool"/>
-		<Input Name="r_SRD1_200_FLIPPER3_OUT"  Address="MAIN.r_SRD1_200_FLIPPER3_OUT" Invert="false" Type="Digital" DataType="bool"/>
-
-		<Input Name="r_SRD1_CHUCK_VACUUM_anlg"  Address="MAIN.r_SRD1_CHUCK_VACUUM_anlg" Scaling="-757.5=3276.7,757.5=16383.5" Type="Analog" DataType="int"/>
-		<Input Name="r_SRD1_WAFER_PRESENT_anlg"  Address="MAIN.r_SRD1_WAFER_PRESENT_anlg" Scaling="0=0,100=32767" Type="Analog" DataType="int"/>
-		<Input Name="r_SRD1_WATER_FLOW"  Address="MAIN.r_SRD1_WATER_FLOW" Scaling="0=3276.7,2.5=32767" Type="Analog" DataType="int"/>
+		<Input Name="r_SRD1_SHUTTER_CLOSED"  Address="MAIN.SRD_DI_16CHANNEL_EL1819_N600_7" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD1_SHUTTER_OPEN"  Address="MAIN.SRD_DI_16CHANNEL_EL1819_N600_6" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD1_CHUCK_VAC_OK"  Address="MAIN.SRD_DI_16CHANNEL_EL1819_N600_2" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD1_WAFER_PRESENT"  Address="MAIN.SRD_DI_16CHANNEL_EL1819_N600_3" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD1_LIFT_UP"  Address="MAIN.SRD_DI_16CHANNEL_EL1819_N600_4" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD1_150_FLIPPER1_OUT"  Address="MAIN.SRD_DI_16CHANNEL_EL1819_N600_8" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD1_150_FLIPPER2_OUT"  Address="MAIN.SRD_DI_16CHANNEL_EL1819_N600_9" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD1_150_FLIPPER3_OUT"  Address="MAIN.SRD_DI_16CHANNEL_EL1819_N600_10" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD1_200_FLIPPER1_OUT"  Address="MAIN.SRD_DI_16CHANNEL_EL1819_N600_11" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD1_200_FLIPPER2_OUT"  Address="MAIN.SRD_DI_16CHANNEL_EL1819_N600_12" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD1_200_FLIPPER3_OUT"  Address="MAIN.SRD_DI_16CHANNEL_EL1819_N600_13" Invert="false" Type="Digital" DataType="bool"/>
+
+		<Input Name="r_SRD1_CHUCK_VACUUM_anlg"  Address="MAIN.SRD_AI_8CHANNEL_4_10V_EL3058_605_1" Scaling="-757.5=3276.7,757.5=16383.5"  Type="Analog" DataType="int"/>
+		<Input Name="r_SRD1_WATER_FLOW"  Address="MAIN.SRD_AI_8CHANNEL_4_20mA_EL3058_604_1" Scaling="0=3276.7,2.5=32767" Type="Analog" DataType="int"/>
 		<!--SRD1 inputs End-->
 		
+		<!--SRD2 inputs Start-->
+		<Input Name="r_SRD2_SHUTTER_CLOSED"  Address="MAIN.SRD_DI_16CHANNEL_EL1819_N601_6" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD2_SHUTTER_OPEN"  Address="MAIN.SRD_DI_16CHANNEL_EL1819_N601_5" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD2_CHUCK_VAC_OK"  Address="MAIN.SRD_DI_16CHANNEL_EL1819_N601_1" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD2_WAFER_PRESENT"  Address="MAIN.SRD_DI_16CHANNEL_EL1819_N601_2" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD2_LIFT_UP"  Address="MAIN.SRD_DI_16CHANNEL_EL1819_N601_3" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD2_150_FLIPPER1_OUT"  Address="MAIN.SRD_DI_16CHANNEL_EL1819_N601_7" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD2_150_FLIPPER2_OUT"  Address="MAIN.SRD_DI_16CHANNEL_EL1819_N601_8" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD2_150_FLIPPER3_OUT"  Address="MAIN.SRD_DI_16CHANNEL_EL1819_N601_9" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD2_200_FLIPPER1_OUT"  Address="MAIN.SRD_DI_16CHANNEL_EL1819_N601_10" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD2_200_FLIPPER2_OUT"  Address="MAIN.SRD_DI_16CHANNEL_EL1819_N601_11" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD2_200_FLIPPER3_OUT"  Address="MAIN.SRD_DI_16CHANNEL_EL1819_N601_12" Invert="false" Type="Digital" DataType="bool"/>
+
+		<Input Name="r_SRD2_CHUCK_VACUUM_anlg"  Address="MAIN.SRD_AI_8CHANNEL_4_10V_EL3058_605_2" Scaling="-757.5=3276.7,757.5=16383.5"  Type="Analog" DataType="int"/>
+		<Input Name="r_SRD2_WATER_FLOW"  Address="MAIN.SRD_AI_8CHANNEL_4_20mA_EL3058_604_1" Scaling="0=3276.7,2.5=32767" Type="Analog" DataType="int"/>
+		<!--SRD2 inputs End-->
+		
 		
 
 		<!--PlatingCell1 inputs Start-->
@@ -295,20 +308,28 @@
 		
 		
 		<!--SRD1 outputs Start-->
-		<Output Name="c_SRD1_Water_Above_Wafer"  Address="MAIN.c_SRD1_Water_Above_Wafer" Invert="false" Type="Digital" DataType="bool"/>
-		<Output Name="c_SRD1_Water_Below_Wafer"  Address="MAIN.c_SRD1_Water_Below_Wafer" Invert="false" Type="Digital" DataType="bool"/>
-		<Output Name="c_SRD1_Exhaust_Fan_On"  Address="MAIN.c_SRD1_Exhaust_Fan_On" Invert="false" Type="Digital" DataType="bool"/>
-		<Output Name="c_SRD1_Shutter_Close"  Address="MAIN.c_SRD1_Shutter_Close" Invert="false" Type="Digital" DataType="bool"/>
-		<Output Name="c_SRD1_CHUCK_VACUUM"  Address="MAIN.c_SRD1_CHUCK_VACUUM" Invert="false" Type="Digital" DataType="bool"/>
-		<Output Name="c_SRD1_CHUCK_ATM_ON"  Address="MAIN.c_SRD1_CHUCK_ATM_ON" Invert="false" Type="Digital" DataType="bool"/>
-		<Output Name="c_SRD1_LIFT_UP"  Address="MAIN.c_SRD1_LIFT_UP" Invert="false" Type="Digital" DataType="bool"/>
-		<Output Name="c_SRD1_100_FLIPPERS_IN"  Address="MAIN.c_SRD1_100_FLIPPERS_IN" Invert="false" Type="Digital" DataType="bool"/>
-		<Output Name="c_SRD1_150_FLIPPERS_IN"  Address="MAIN.c_SRD1_150_FLIPPERS_IN" Invert="false" Type="Digital" DataType="bool"/>
-		<Output Name="c_SRD1_200_FLIPPERS_IN"  Address="MAIN.c_SRD1_200_FLIPPERS_IN" Invert="false" Type="Digital" DataType="bool"/>
-		<Output Name="c_SRD1_WATER_ON"  Address="MAIN.c_SRD1_WATER_ON" Invert="false" Type="Digital" DataType="bool"/>
-		<Output Name="c_SRD1_N2_FLOW_ON"  Address="MAIN.c_SRD1_N2_FLOW_ON" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD1_Shutter_Close"  Address="MAIN.SRD_DO_16CHANNEL_EL2809_N602_4" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD1_CHUCK_VACUUM"  Address="MAIN.SRD_DO_16CHANNEL_EL2809_N602_6" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD1_CHUCK_ATM_ON"  Address="MAIN.SRD_DO_16CHANNEL_EL2809_N602_8" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD1_LIFT_UP"  Address="MAIN.SRD_DO_16CHANNEL_EL2809_N602_1" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD1_150_FLIPPERS_IN"  Address="MAIN.SRD_DO_16CHANNEL_EL2809_N602_2" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD1_200_FLIPPERS_IN"  Address="MAIN.SRD_DO_16CHANNEL_EL2809_N602_3" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD1_WATER_ON"  Address="MAIN.SRD_DO_16CHANNEL_EL2809_N602_5" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD1_N2_FLOW_ON"  Address="MAIN.SRD_DO_16CHANNEL_EL2809_N602_7" Invert="false" Type="Digital" DataType="bool"/>
 		<!--SRD1 outputs End-->
 		
+		<!--SRD2 outputs Start-->
+		
+		<Output Name="c_SRD2_Shutter_Close"  Address="MAIN.SRD_DO_16CHANNEL_EL2809_N602_12" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD2_CHUCK_VACUUM"  Address="MAIN.SRD_DO_16CHANNEL_EL2809_N602_14" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD2_CHUCK_ATM_ON"  Address="MAIN.SRD_DO_16CHANNEL_EL2809_N602_16" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD2_LIFT_UP"  Address="MAIN.SRD_DO_16CHANNEL_EL2809_N602_9" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD2_150_FLIPPERS_IN"  Address="MAIN.SRD_DO_16CHANNEL_EL2809_N602_10" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD2_200_FLIPPERS_IN"  Address="MAIN.SRD_DO_16CHANNEL_EL2809_N602_11" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD2_WATER_ON"  Address="MAIN.SRD_DO_16CHANNEL_EL2809_N602_13" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD2_N2_FLOW_ON"  Address="MAIN.SRD_DO_16CHANNEL_EL2809_N602_15" Invert="false" Type="Digital" DataType="bool"/>
+		<!--SRD2 outputs End-->
+		
 		
 		
 		<!--PlatingCell1 outputs Start-->

+ 74 - 2
PunkHPX8_RT/Config/Devices/Beckhoffcfg.xml

@@ -74,8 +74,8 @@
 		<Input Name="r_PlatingCell3_4_Right_STO_EDM" Address="Task 2.Inputs.RES3_4_SDI_4CHANNEL_EL1904_NS531_1" Invert="false" Type="Digital" DataType="bool"/>
 		<Input Name="r_PlatingCell1_2_Vertical_STO_EDM" Address="Task 2.Inputs.RES1_2_SDI_4CHANNEL_EL1904_NS500_1" Invert="false" Type="Digital" DataType="bool"/>
 		<Input Name="r_PlatingCell3_4_Vertical_STO_EDM" Address="Task 2.Inputs.RES1_2_SDI_4CHANNEL_EL1904_NS531_1" Invert="false" Type="Digital" DataType="bool"/>
-		<Input Name="r_SRD1_ROTATE_STO_EDM" Address="Task 2.Inputs.SRD1_SDI_4CHANNEL_EL1904_NS300_1" Invert="false" Type="Digital" DataType="bool"/>
-		<Input Name="r_SRD2_ROTATE_STO_EDM" Address="Task 2.Inputs.SRD2_SDI_4CHANNEL_EL1904_NS300_4" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD1_ROTATE_STO_EDM" Address="Task 2.Inputs.SRD1_SDI_4CHANNEL_EL1904_NS600_1" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD2_ROTATE_STO_EDM" Address="Task 2.Inputs.SRD2_SDI_4CHANNEL_EL1904_NS600_2" Invert="false" Type="Digital" DataType="bool"/>
 		<!-- Safety inputs end -->
 		
 		
@@ -103,6 +103,49 @@
 		<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 -->
 		
+		
+		<!--SRD inputs Start-->
+		<Input Name="r_SRD_FLUID_LEVEL"  Address="Task 2.Inputs.SRD_DI_16CHANNEL_EL1819_N600_1" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD_SUPPLY_WATER_PRESS"  Address="Task 2.Inputs.SRD_AI_8CHANNEL_4_20mA_EL3058_604_3" Scaling="758=0,100=32767" Type="Analog" DataType="int"/>
+		<!--SRD inputs End-->
+		
+
+		<!--SRD1 inputs Start-->
+		<Input Name="r_SRD1_SHUTTER_CLOSED"  Address="Task 2.Inputs.SRD_DI_16CHANNEL_EL1819_N600_7" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD1_SHUTTER_OPEN"  Address="Task 2.Inputs.SRD_DI_16CHANNEL_EL1819_N600_6" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD1_CHUCK_VAC_OK"  Address="Task 2.Inputs.SRD_DI_16CHANNEL_EL1819_N600_2" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD1_WAFER_PRESENT"  Address="Task 2.Inputs.SRD_DI_16CHANNEL_EL1819_N600_3" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD1_LIFT_UP"  Address="Task 2.Inputs.SRD_DI_16CHANNEL_EL1819_N600_4" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD1_150_FLIPPER1_OUT"  Address="Task 2.Inputs.SRD_DI_16CHANNEL_EL1819_N600_8" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD1_150_FLIPPER2_OUT"  Address="Task 2.Inputs.SRD_DI_16CHANNEL_EL1819_N600_9" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD1_150_FLIPPER3_OUT"  Address="Task 2.Inputs.SRD_DI_16CHANNEL_EL1819_N600_10" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD1_200_FLIPPER1_OUT"  Address="Task 2.Inputs.SRD_DI_16CHANNEL_EL1819_N600_11" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD1_200_FLIPPER2_OUT"  Address="Task 2.Inputs.SRD_DI_16CHANNEL_EL1819_N600_12" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD1_200_FLIPPER3_OUT"  Address="Task 2.Inputs.SRD_DI_16CHANNEL_EL1819_N600_13" Invert="false" Type="Digital" DataType="bool"/>
+
+		<Input Name="r_SRD1_CHUCK_VACUUM_anlg"  Address="Task 2.Inputs.SRD_AI_8CHANNEL_4_10V_EL3058_605_1" Scaling="-0=3276.7,145=16383.5" Type="Analog" DataType="int"/>
+		<Input Name="r_SRD1_WATER_FLOW"  Address="Task 2.Inputs.SRD_AI_8CHANNEL_4_20mA_EL3058_604_1" Scaling="0=0,8=32767" Type="Analog" DataType="int"/>
+		<!--SRD1 inputs End-->
+		
+		<!--SRD2 inputs Start-->
+		<Input Name="r_SRD2_SHUTTER_CLOSED"  Address="Task 2.Inputs.SRD_DI_16CHANNEL_EL1819_N601_6" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD2_SHUTTER_OPEN"  Address="Task 2.Inputs.SRD_DI_16CHANNEL_EL1819_N601_5" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD2_CHUCK_VAC_OK"  Address="Task 2.Inputs.SRD_DI_16CHANNEL_EL1819_N601_1" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD2_WAFER_PRESENT"  Address="Task 2.Inputs.SRD_DI_16CHANNEL_EL1819_N601_2" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD2_LIFT_UP"  Address="Task 2.Inputs.SRD_DI_16CHANNEL_EL1819_N601_3" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD2_150_FLIPPER1_OUT"  Address="Task 2.Inputs.SRD_DI_16CHANNEL_EL1819_N601_7" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD2_150_FLIPPER2_OUT"  Address="Task 2.Inputs.SRD_DI_16CHANNEL_EL1819_N601_8" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD2_150_FLIPPER3_OUT"  Address="Task 2.Inputs.SRD_DI_16CHANNEL_EL1819_N601_9" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD2_200_FLIPPER1_OUT"  Address="Task 2.Inputs.SRD_DI_16CHANNEL_EL1819_N601_10" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD2_200_FLIPPER2_OUT"  Address="Task 2.Inputs.SRD_DI_16CHANNEL_EL1819_N601_11" Invert="false" Type="Digital" DataType="bool"/>
+		<Input Name="r_SRD2_200_FLIPPER3_OUT"  Address="Task 2.Inputs.SRD_DI_16CHANNEL_EL1819_N601_12" Invert="false" Type="Digital" DataType="bool"/>
+
+		<Input Name="r_SRD2_CHUCK_VACUUM_anlg"  Address="Task 2.Inputs.SRD_AI_8CHANNEL_4_10V_EL3058_605_2" Scaling="-0=3276.7,145=16383.5" Type="Analog" DataType="int"/>
+		<Input Name="r_SRD2_WATER_FLOW"  Address="Task 2.Inputs.SRD_AI_8CHANNEL_4_20mA_EL3058_604_1" Scaling="0=0,8=32767" Type="Analog" DataType="int"/>
+		<!--SRD2 inputs End-->
+		
+		
+		
 		<!--PlatingCell1 inputs Start-->
 		<Input Name="r_PlatingCell1_2_HEAD_TILTED"  Address="Task 2.Inputs.PlatingCell1_2_DI_16CHANNEL_EL1819_N400_4" Invert="false" Type="Digital" DataType="bool"/>
 		<Input Name="r_PlatingCell1_2_HEAD_VERTICAL"  Address="Task 2.Inputs.PlatingCell1_2_DI_16CHANNEL_EL1819_N400_5" Invert="false" Type="Digital" DataType="bool"/>
@@ -248,6 +291,35 @@
 		<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 -->
 		
+		<!--SRD1 outputs Start-->
+		<Output Name="c_SRD1_Water_Above_Wafer"  Address="Task 2.Outputs.c_SRD1_Water_Above_Wafer" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD1_Water_Below_Wafer"  Address="Task 2.Outputs.c_SRD1_Water_Below_Wafer" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD1_Exhaust_Fan_On"  Address="Task 2.Outputs.c_SRD1_Exhaust_Fan_On" Invert="false" Type="Digital" DataType="bool"/>
+		
+		<Output Name="c_SRD1_Shutter_Close"  Address="Task 2.Outputs.SRD_DO_16CHANNEL_EL2809_N602_4" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD1_CHUCK_VACUUM"  Address="Task 2.Outputs.SRD_DO_16CHANNEL_EL2809_N602_6" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD1_CHUCK_ATM_ON"  Address="Task 2.Outputs.SRD_DO_16CHANNEL_EL2809_N602_8" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD1_LIFT_UP"  Address="Task 2.Outputs.SRD_DO_16CHANNEL_EL2809_N602_1" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD1_150_FLIPPERS_IN"  Address="Task 2.Outputs.SRD_DO_16CHANNEL_EL2809_N602_2" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD1_200_FLIPPERS_IN"  Address="Task 2.Outputs.SRD_DO_16CHANNEL_EL2809_N602_3" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD1_WATER_ON"  Address="Task 2.Outputs.SRD_DO_16CHANNEL_EL2809_N602_5" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD1_N2_FLOW_ON"  Address="Task 2.Outputs.SRD_DO_16CHANNEL_EL2809_N602_7" Invert="false" Type="Digital" DataType="bool"/>
+		<!--SRD1 outputs End-->
+		
+		<!--SRD2 outputs Start-->
+		
+		<Output Name="c_SRD2_Shutter_Close"  Address="Task 2.Outputs.SRD_DO_16CHANNEL_EL2809_N602_12" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD2_CHUCK_VACUUM"  Address="Task 2.Outputs.SRD_DO_16CHANNEL_EL2809_N602_14" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD2_CHUCK_ATM_ON"  Address="Task 2.Outputs.SRD_DO_16CHANNEL_EL2809_N602_16" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD2_LIFT_UP"  Address="Task 2.Outputs.SRD_DO_16CHANNEL_EL2809_N602_9" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD2_150_FLIPPERS_IN"  Address="Task 2.Outputs.SRD_DO_16CHANNEL_EL2809_N602_10" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD2_200_FLIPPERS_IN"  Address="Task 2.Outputs.SRD_DO_16CHANNEL_EL2809_N602_11" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD2_WATER_ON"  Address="Task 2.Outputs.SRD_DO_16CHANNEL_EL2809_N602_13" Invert="false" Type="Digital" DataType="bool"/>
+		<Output Name="c_SRD2_N2_FLOW_ON"  Address="Task 2.Outputs.SRD_DO_16CHANNEL_EL2809_N602_15" Invert="false" Type="Digital" DataType="bool"/>
+		<!--SRD2 outputs End-->
+		
+		
+		
 				
 		<!--PlatingCell1 outputs Start-->
 		<Output Name="c_CELL1_CLAMSHELL_CLOSE" Address="Task 2.Outputs.PlatingCell1_2_DO_16CHANNEL_EL2809_N401_9" Type="Digital" Invert="false" DataType="bool"/>

+ 1 - 1
PunkHPX8_RT/Devices/Reservoir/ReservoirCAPumpSpeedHelper.cs

@@ -53,7 +53,7 @@ namespace PunkHPX8_RT.Devices.Reservoir
             }
         }
         /// <summary>
-        /// 调节极泵速
+        /// 调节极泵速
         /// </summary>
         private void AdjustCAPumpSpeed(ResRecipe resRecipe)
         {

+ 29 - 1
PunkHPX8_RT/Devices/Reservoir/ReservoirDevice.cs

@@ -426,10 +426,22 @@ namespace PunkHPX8_RT.Devices.Reservoir
             WaterLevelMonitor();
             DireplenMonitor();
             AutoOpenDegasValve();
+            HedMonitor();
             return true;
         }
         #region timer
         /// <summary>
+        /// 监控TC
+        /// </summary>
+        private void HedMonitor()
+        {
+            double _cellFlowStartLowlimit = SC.GetValue<double>("PlatingCell.CellFlowStartLowLimit");
+            if (_reservoirData.CaFlow < _cellFlowStartLowlimit)
+            {
+                CAFlowLowOperation();
+            }
+        }
+        /// <summary>
         /// safety和ca flow满足条件,自动打开degas valve
         /// </summary>
         public void AutoOpenDegasValve()
@@ -576,7 +588,23 @@ namespace PunkHPX8_RT.Devices.Reservoir
                 HighLevelOperation();
             }
         }
-
+        /// <summary>
+        /// CA Low Level触发对应操作
+        /// </summary>
+        private void CAFlowLowOperation()
+        {
+            ReservoirItem reservoirItem = ReservoirItemManager.Instance.GetReservoirItem(Module);
+            //禁用TC
+            if (!string.IsNullOrEmpty(reservoirItem.TCID))
+            {
+                TemperatureController temperatureController = DEVICE.GetDevice<TemperatureController>(reservoirItem.TCID);
+                if (temperatureController != null && temperatureController.TemperatureData.ControlOperationModel == (int)TemperatureEnumData.ENABLE)
+                {
+                    temperatureController.DisableOperation("", null);
+                    LOG.WriteLog(eEvent.ERR_RESERVOIR, Module, "CA flow is lower than cellflowStartLowLimit,TC Disabled");
+                }
+            }
+        }
         /// <summary>
         /// CA Low Level触发对应操作
         /// </summary>

+ 284 - 53
PunkHPX8_Twincate/PunkHPX8/PlcTest/POUs/MAIN.TcPOU

@@ -150,9 +150,9 @@ VAR
 	//PlatingCell34VerticalStoEdm
 	RES1_2_SDI_4CHANNEL_EL1904_NS531_1 AT%I* :BOOL;
 	//Srd1RotationStoEdm
-	SRD1_SDI_4CHANNEL_EL1904_NS300_1 AT%I* :BOOL;
+	SRD1_SDI_4CHANNEL_EL1904_NS600_1 AT%I* :BOOL;
 	//Srd2RotationStoEdm
-	SRD2_SDI_4CHANNEL_EL1904_NS300_4 AT%I* :BOOL;
+	SRD2_SDI_4CHANNEL_EL1904_NS600_2 AT%I* :BOOL;
 
 	//Sample1FluidDetect
 	Facility_DI_16CHANNEL_EL1819_N000_1 AT%I* :BOOL;
@@ -466,12 +466,12 @@ VAR
 	//PlatingCell1.ClamShellCylinderPressure
 	PlatingCell1_2_AI_8CHANNEL_0_10V_EL3068_N402_3 AT%I* :DINT;
 	//PlatingCell1.OverFlowLevel
-	PlatingCell1_2_AI_8CHANNEL_4_20MA_EL3058_N403_1 AT%I* :DINT;
+	PlatingCell1_2_AI_8CHANNEL_4_20MA_EL3058_N403_1 AT%I* :DINT:=7000;
 	
 	//PlatingCell2 ClamShellDistance
 	PlatingCell1_2_AI_8CHANNEL_0_10V_EL3068_N402_2 AT%I* :DINT;
 	//PlatingCell2 OverFlowLevel
-	PlatingCell1_2_AI_8CHANNEL_4_20MA_EL3058_N403_2 AT%I* :DINT;
+	PlatingCell1_2_AI_8CHANNEL_4_20MA_EL3058_N403_2 AT%I* :DINT:=7000;
 	
 	//PlatingCell3 IsHeadTilt
 	PlatingCell3_4_DI_16CHANNEL_EL1819_N430_4 AT%I* :BOOL;
@@ -480,12 +480,12 @@ VAR
 	//PlatingCell3 ClamShellDistance
 	PlatingCell3_4_AI_8CHANNEL_0_10V_EL3068_N432_1 AT%I* :DINT;
 	//PlatingCell3 OverFlowLevel
-	PlatingCell3_4_AI_8CHANNEL_4_20MA_EL3058_N433_1 AT%I* :DINT;
+	PlatingCell3_4_AI_8CHANNEL_4_20MA_EL3058_N433_1 AT%I* :DINT:=7000;
 	
 	//PlatingCell4 ClamShellDistance
 	PlatingCell3_4_AI_8CHANNEL_0_10V_EL3068_N432_2 AT%I* :DINT;
 	//PlatingCell4 OverFlowLevel
-	PlatingCell3_4_AI_8CHANNEL_4_20MA_EL3058_N433_2 AT%I* :DINT;
+	PlatingCell3_4_AI_8CHANNEL_4_20MA_EL3058_N433_2 AT%I* :DINT:=7000;
 	
 	
 	//PlatingCell1.ClamShellClose
@@ -560,70 +560,97 @@ VAR
 	SRD2RotationMotorStep :DINT;
 	
 	//SRD.FluidContainment
-	r_SRD_FLUID_LEVEL AT%I* :BOOL;
+	SRD_DI_16CHANNEL_EL1819_N600_1 AT%I* :BOOL;
 	//SRD.WaterPressure
-	r_SRD_SUPPLY_WATER_PRESS AT%I* :DINT;
+	SRD_AI_8CHANNEL_4_20mA_EL3058_604_3 AT%I* :DINT;
 	
 	//SRD1.DoorClosed
-	r_SRD1_SHUTTER_CLOSED AT%I* :BOOL;
+	SRD_DI_16CHANNEL_EL1819_N600_7 AT%I* :BOOL;
 	//SRD1.DoorOpened
-	r_SRD1_SHUTTER_OPEN AT%I* :BOOL;
+	SRD_DI_16CHANNEL_EL1819_N600_6 AT%I* :BOOL;
 	//SRD1.ChuckVacuumOK
-	r_SRD1_CHUCK_VAC_OK AT%I* :BOOL;
+	SRD_DI_16CHANNEL_EL1819_N600_2 AT%I* :BOOL;
 	//SRD1.WaferPresent
-	r_SRD1_WAFER_PRESENT AT%I* :BOOL;
+	SRD_DI_16CHANNEL_EL1819_N600_3 AT%I* :BOOL;
 	//SRD1.LiftUpStatus
-	r_SRD1_LIFT_UP AT%I* :BOOL;
-	//SRD1.Flipper1Out100Status
-	r_SRD1_100_FLIPPER1_OUT AT%I* :BOOL;
-	//SRD1.Flipper2Out100Status
-	r_SRD1_100_FLIPPER2_OUT AT%I* :BOOL;
-	//SRD1.Flipper3Out100Status
-	r_SRD1_100_FLIPPER3_OUT AT%I* :BOOL;
+	SRD_DI_16CHANNEL_EL1819_N600_4 AT%I* :BOOL;
 	//SRD1.Flipper1Out150Status
-	r_SRD1_150_FLIPPER1_OUT AT%I* :BOOL;
+	SRD_DI_16CHANNEL_EL1819_N600_8 AT%I* :BOOL;
 	//SRD1.Flipper2Out150Status
-	r_SRD1_150_FLIPPER2_OUT AT%I* :BOOL;
+	SRD_DI_16CHANNEL_EL1819_N600_9 AT%I* :BOOL;
 	//SRD1.Flipper3Out150Status
-	r_SRD1_150_FLIPPER3_OUT AT%I* :BOOL;
+	SRD_DI_16CHANNEL_EL1819_N600_10 AT%I* :BOOL;
 	//SRD1.Flipper1Out200Status
-	r_SRD1_200_FLIPPER1_OUT AT%I* :BOOL;
+	SRD_DI_16CHANNEL_EL1819_N600_11 AT%I* :BOOL;
 	//SRD1.Flipper2Out200Status
-	r_SRD1_200_FLIPPER2_OUT AT%I* :BOOL;
+	SRD_DI_16CHANNEL_EL1819_N600_12 AT%I* :BOOL;
 	//SRD1.Flipper3Out200Status
-	r_SRD1_200_FLIPPER3_OUT AT%I* :BOOL;
+	SRD_DI_16CHANNEL_EL1819_N600_13 AT%I* :BOOL;
 	//SRD1.ChuckVacuum
-	r_SRD1_CHUCK_VACUUM_anlg AT%I* :DINT;
-	//SRD1.WaferPresence
-	r_SRD1_WAFER_PRESENT_anlg AT%I* :DINT;
-	//SRD1.WaterFlow
-	r_SRD1_WATER_FLOW AT%I* :DINT;
-	
-	
-	//SRD1.WaterAbove
-	c_SRD1_Water_Above_Wafer AT%Q* :BOOL;
-	//SRD1.WaterBelow
-	c_SRD1_Water_Below_Wafer AT%Q* :BOOL;
-	//SRD1.ExhaustOn
-	c_SRD1_Exhaust_Fan_On AT%Q* :BOOL;
+	SRD_AI_8CHANNEL_4_10V_EL3058_605_1 AT%I* :DINT;
+	//SRD1.WaterFlow & SRD2.WaterFlow
+	SRD_AI_8CHANNEL_4_20mA_EL3058_604_1 AT%I* :DINT;
+	
+	
 	//SRD1.DoorClose
-	c_SRD1_Shutter_Close AT%Q* :BOOL;
+	SRD_DO_16CHANNEL_EL2809_N602_4 AT%Q* :BOOL;
 	//SRD1.ChuckVacuum
-	c_SRD1_CHUCK_VACUUM AT%Q* :BOOL;
+	SRD_DO_16CHANNEL_EL2809_N602_6 AT%Q* :BOOL;
 	//SRD1.ChuckATMOn
-	c_SRD1_CHUCK_ATM_ON AT%Q* :BOOL;
+	SRD_DO_16CHANNEL_EL2809_N602_8 AT%Q* :BOOL;
 	//SRD1.LiftUp
-	c_SRD1_LIFT_UP AT%Q* :BOOL;
-	//SRD1.FlippersIn100
-	c_SRD1_100_FLIPPERS_IN AT%Q* :BOOL;
+	SRD_DO_16CHANNEL_EL2809_N602_1 AT%Q* :BOOL;
 	//SRD1.FlippersIn150
-	c_SRD1_150_FLIPPERS_IN AT%Q* :BOOL;
+	SRD_DO_16CHANNEL_EL2809_N602_2 AT%Q* :BOOL;
 	//SRD1.FlippersIn200
-	c_SRD1_200_FLIPPERS_IN AT%Q* :BOOL;
+	SRD_DO_16CHANNEL_EL2809_N602_3 AT%Q* :BOOL;
 	//SRD1.WaterOn
-	c_SRD1_WATER_ON AT%Q* :BOOL;
+	SRD_DO_16CHANNEL_EL2809_N602_5 AT%Q* :BOOL;
 	//SRD1.N2On
-	c_SRD1_N2_FLOW_ON AT%Q* :BOOL;
+	SRD_DO_16CHANNEL_EL2809_N602_7 AT%Q* :BOOL;
+	
+	//SRD2.DoorClosed
+	SRD_DI_16CHANNEL_EL1819_N601_6 AT%I* :BOOL;
+	//SRD2.DoorOpened
+	SRD_DI_16CHANNEL_EL1819_N601_5 AT%I* :BOOL;
+	//SRD2.ChuckVacuumOK
+	SRD_DI_16CHANNEL_EL1819_N601_1 AT%I* :BOOL;
+	//SRD2.WaferPresent
+	SRD_DI_16CHANNEL_EL1819_N601_2 AT%I* :BOOL;
+	//SRD2.LiftUpStatus
+	SRD_DI_16CHANNEL_EL1819_N601_3 AT%I* :BOOL;
+	//SRD2.Flipper1Out150Status
+	SRD_DI_16CHANNEL_EL1819_N601_7 AT%I* :BOOL;
+	//SRD2.Flipper2Out150Status
+	SRD_DI_16CHANNEL_EL1819_N601_8 AT%I* :BOOL;
+	//SRD2.Flipper3Out150Status
+	SRD_DI_16CHANNEL_EL1819_N601_9 AT%I* :BOOL;
+	//SRD2.Flipper1Out200Status
+	SRD_DI_16CHANNEL_EL1819_N601_10 AT%I* :BOOL;
+	//SRD2.Flipper2Out200Status
+	SRD_DI_16CHANNEL_EL1819_N601_11 AT%I* :BOOL;
+	//SRD2.Flipper3Out200Status
+	SRD_DI_16CHANNEL_EL1819_N601_12 AT%I* :BOOL;
+	//SRD2.ChuckVacuum
+	SRD_AI_8CHANNEL_4_10V_EL3058_605_2 AT%I* :DINT;
+
+	
+	//SRD2.DoorClose
+	SRD_DO_16CHANNEL_EL2809_N602_12 AT%Q* :BOOL;
+	//SRD2.ChuckVacuum
+	SRD_DO_16CHANNEL_EL2809_N602_14 AT%Q* :BOOL;
+	//SRD2.ChuckATMOn
+	SRD_DO_16CHANNEL_EL2809_N602_16 AT%Q* :BOOL;
+	//SRD2.LiftUp
+	SRD_DO_16CHANNEL_EL2809_N602_9 AT%Q* :BOOL;
+	//SRD2.FlippersIn150
+	SRD_DO_16CHANNEL_EL2809_N602_10 AT%Q* :BOOL;
+	//SRD2.FlippersIn200
+	SRD_DO_16CHANNEL_EL2809_N602_11 AT%Q* :BOOL;
+	//SRD2.WaterOn
+	SRD_DO_16CHANNEL_EL2809_N602_13 AT%Q* :BOOL;
+	//SRD2.N2On
+	SRD_DO_16CHANNEL_EL2809_N602_15 AT%Q* :BOOL;
 	
 END_VAR]]></Declaration>
     <Implementation>
@@ -858,7 +885,7 @@ IF  RES3_4_PNEU_SMC_EX260_V01_V04.6=TRUE AND RES3_4_AI_8CHANNEL_4_20MA_EL3058_N2
 END_IF
 
 
-
+//SRD1 rotation
 IF SRD1RotationControlWord =7 THEN
 	SRD1RotationStatusWord := 563;
 	ELSE IF SRD1RotationControlWord =6 THEN
@@ -875,7 +902,6 @@ IF SRD1RotationControlWord =7 THEN
 	END_IF
 	
 END_IF
-
 IF SRD1RotationModeOfOperation=1 THEN
 	IF SRD1RotationControlWord=63 THEN
 		IF SRD1RotationMotorPosition<SRD1RotationTargetPosition THEN
@@ -901,8 +927,162 @@ IF SRD1RotationModeOfOperation=1 THEN
 	END_IF
 	END_IF
 END_IF
+//SRD2 rotation
+IF SRD2RotationControlWord =7 THEN
+	SRD2RotationStatusWord := 563;
+	ELSE IF SRD2RotationControlWord =6 THEN
+		SRD2RotationStatusWord :=33;
+	ELSE IF SRD2RotationControlWord=15 THEN
+		SRD2RotationStatusWord :=567;
+		SRD2RotationDigitalInputs.22:=FALSE;
+		ELSE IF SRD2RotationControlWord=31 THEN
+			SRD2RotationDigitalInputs.22:=TRUE;
+			SRD2RotationStatusWord :=5687;
+			SRD2RotationMotorPosition:=0;
+		END_IF
+	END_IF
+	END_IF
+	
+END_IF
+IF SRD2RotationModeOfOperation=1 THEN
+	IF SRD2RotationControlWord=63 THEN
+		IF SRD2RotationMotorPosition<SRD2RotationTargetPosition THEN
+			SRD2RotationMotorStep :=(SRD2RotationTargetPosition-SRD2RotationMotorPosition)/20;
+			IF SRD2RotationMotorStep >1 THEN
+				SRD2RotationMotorPosition :=SRD2RotationMotorPosition+SRD2RotationMotorStep;
+			ELSE
+				SRD2RotationMotorPosition :=SRD2RotationMotorPosition+1;
+			END_IF
+		ELSE IF SRD2RotationMotorPosition>SRD2RotationTargetPosition THEN	
+			SRD2RotationMotorStep :=(SRD2RotationMotorPosition-SRD2RotationTargetPosition)/20;
+			IF SRD2RotationMotorStep >1 THEN
+				SRD2RotationMotorPosition :=SRD2RotationMotorPosition-SRD2RotationMotorStep;
+			ELSE
+				SRD2RotationMotorPosition :=SRD2RotationMotorPosition-1;
+			END_IF		
+		ELSE
+			SRD2RotationStatusWord :=1591;				
+		END_IF			
+		END_IF		
+	ELSE IF SRD2RotationControlWord=319 THEN
+		SRD2RotationStatusWord :=1591;
+	END_IF
+	END_IF
+END_IF
+
+//SRD1 Lift up
+IF SRD_DO_16CHANNEL_EL2809_N602_1=TRUE THEN
+	SRD_DI_16CHANNEL_EL1819_N600_4:= TRUE;
+ELSE
+	SRD_DI_16CHANNEL_EL1819_N600_4:= FALSE;
+END_IF
+//SRD2 Lift up
+IF SRD_DO_16CHANNEL_EL2809_N602_9=TRUE THEN
+	SRD_DI_16CHANNEL_EL1819_N601_3:= TRUE;
+ELSE
+	SRD_DI_16CHANNEL_EL1819_N601_3:= FALSE;
+END_IF
+
+// SRD1 Flipper 150
+IF SRD_DO_16CHANNEL_EL2809_N602_2 = FALSE THEN
+	SRD_DI_16CHANNEL_EL1819_N600_8:= TRUE;
+	SRD_DI_16CHANNEL_EL1819_N600_9:= TRUE;
+	SRD_DI_16CHANNEL_EL1819_N600_10:= TRUE;
+ELSE
+	SRD_DI_16CHANNEL_EL1819_N600_8:= FALSE;
+	SRD_DI_16CHANNEL_EL1819_N600_9:= FALSE;
+	SRD_DI_16CHANNEL_EL1819_N600_10:= FALSE;
+END_IF
+// SRD1 Flipper 200
+IF SRD_DO_16CHANNEL_EL2809_N602_3=FALSE THEN
+	SRD_DI_16CHANNEL_EL1819_N600_11:= TRUE;
+	SRD_DI_16CHANNEL_EL1819_N600_12:= TRUE;
+	SRD_DI_16CHANNEL_EL1819_N600_13:= TRUE;
+ELSE
+	SRD_DI_16CHANNEL_EL1819_N600_11:= FALSE;
+	SRD_DI_16CHANNEL_EL1819_N600_12:= FALSE;
+	SRD_DI_16CHANNEL_EL1819_N600_13:= FALSE;
+END_IF
+
+// SRD2 Flipper 150
+IF SRD_DO_16CHANNEL_EL2809_N602_10=FALSE THEN
+	SRD_DI_16CHANNEL_EL1819_N601_7:= TRUE;
+	SRD_DI_16CHANNEL_EL1819_N601_8:= TRUE;
+	SRD_DI_16CHANNEL_EL1819_N601_9:= TRUE;
+ELSE
+	SRD_DI_16CHANNEL_EL1819_N601_7:= FALSE;
+	SRD_DI_16CHANNEL_EL1819_N601_8:= FALSE;
+	SRD_DI_16CHANNEL_EL1819_N601_9:= FALSE;
+END_IF
+// SRD2 Flipper 200
+IF SRD_DO_16CHANNEL_EL2809_N602_11=FALSE THEN
+	SRD_DI_16CHANNEL_EL1819_N601_10:= TRUE;
+	SRD_DI_16CHANNEL_EL1819_N601_11:= TRUE;
+	SRD_DI_16CHANNEL_EL1819_N601_12:= TRUE;
+ELSE
+	SRD_DI_16CHANNEL_EL1819_N601_10:= FALSE;
+	SRD_DI_16CHANNEL_EL1819_N601_11:= FALSE;
+	SRD_DI_16CHANNEL_EL1819_N601_12:= FALSE;
+END_IF
+
+//SRD1 Shuttle
+IF SRD_DO_16CHANNEL_EL2809_N602_4=TRUE THEN
+	SRD_DI_16CHANNEL_EL1819_N600_7:= TRUE;
+	SRD_DI_16CHANNEL_EL1819_N600_6:= FALSE;
+ELSE
+	SRD_DI_16CHANNEL_EL1819_N600_7:= FALSE;
+	SRD_DI_16CHANNEL_EL1819_N600_6:= TRUE;
+END_IF
+
+//SRD2 Shuttle
+IF SRD_DO_16CHANNEL_EL2809_N602_12=TRUE THEN
+	SRD_DI_16CHANNEL_EL1819_N601_6:= TRUE;
+	SRD_DI_16CHANNEL_EL1819_N601_5:= FALSE;
+ELSE
+	SRD_DI_16CHANNEL_EL1819_N601_6:= FALSE;
+	SRD_DI_16CHANNEL_EL1819_N601_5:= TRUE;
+END_IF
+
+
+//SRD1 VACUUM
+IF SRD_DO_16CHANNEL_EL2809_N602_6=TRUE THEN
+	SRD_DI_16CHANNEL_EL1819_N600_2:= FALSE;
+	SRD_AI_8CHANNEL_4_10V_EL3058_605_1:= 10000;
+ELSE
+	SRD_DI_16CHANNEL_EL1819_N600_2:= TRUE;
+	SRD_AI_8CHANNEL_4_10V_EL3058_605_1:= 4000;
+END_IF
+
+IF SRD_DO_16CHANNEL_EL2809_N602_8=TRUE THEN
+	SRD_AI_8CHANNEL_4_10V_EL3058_605_1:= SRD_AI_8CHANNEL_4_10V_EL3058_605_1 + 6000;
+ELSE
+	SRD_AI_8CHANNEL_4_10V_EL3058_605_1:= SRD_AI_8CHANNEL_4_10V_EL3058_605_1;
+END_IF
+
 
 
+//SRD2 VACUUM
+IF SRD_DO_16CHANNEL_EL2809_N602_14=TRUE THEN
+	SRD_DI_16CHANNEL_EL1819_N601_1:= FALSE;
+	SRD_AI_8CHANNEL_4_10V_EL3058_605_2:= 10000;
+ELSE
+	SRD_DI_16CHANNEL_EL1819_N601_1:= TRUE;
+	SRD_AI_8CHANNEL_4_10V_EL3058_605_2:= 4000;
+END_IF
+
+IF SRD_DO_16CHANNEL_EL2809_N602_16=TRUE THEN
+	SRD_AI_8CHANNEL_4_10V_EL3058_605_2:= SRD_AI_8CHANNEL_4_10V_EL3058_605_2 + 6000;
+ELSE
+	SRD_AI_8CHANNEL_4_10V_EL3058_605_2:= SRD_AI_8CHANNEL_4_10V_EL3058_605_2;
+END_IF
+
+//SRD1 water  and SRD2 water flow is public
+IF SRD_DO_16CHANNEL_EL2809_N602_5=TRUE OR SRD_DO_16CHANNEL_EL2809_N602_13=TRUE THEN
+	SRD_AI_8CHANNEL_4_20mA_EL3058_604_1:= 30000;
+ELSE
+	SRD_AI_8CHANNEL_4_20mA_EL3058_604_1:= 3277;
+END_IF
+
 
 ]]></ST>
     </Implementation>
@@ -981,9 +1161,60 @@ END_IF
       <LineId Id="2275" Count="6" />
       <LineId Id="2284" Count="2" />
       <LineId Id="2274" Count="0" />
-      <LineId Id="2850" Count="2" />
-      <LineId Id="2856" Count="41" />
-      <LineId Id="2853" Count="2" />
+      <LineId Id="2850" Count="0" />
+      <LineId Id="3011" Count="0" />
+      <LineId Id="2851" Count="0" />
+      <LineId Id="2856" Count="15" />
+      <LineId Id="2873" Count="24" />
+      <LineId Id="3014" Count="40" />
+      <LineId Id="3013" Count="0" />
+      <LineId Id="3055" Count="0" />
+      <LineId Id="2853" Count="0" />
+      <LineId Id="3057" Count="1" />
+      <LineId Id="3060" Count="1" />
+      <LineId Id="3059" Count="0" />
+      <LineId Id="3063" Count="4" />
+      <LineId Id="3062" Count="0" />
+      <LineId Id="3069" Count="0" />
+      <LineId Id="3068" Count="0" />
+      <LineId Id="3071" Count="1" />
+      <LineId Id="3075" Count="1" />
+      <LineId Id="3073" Count="0" />
+      <LineId Id="3077" Count="1" />
+      <LineId Id="3074" Count="0" />
+      <LineId Id="3070" Count="0" />
+      <LineId Id="3080" Count="8" />
+      <LineId Id="3079" Count="0" />
+      <LineId Id="3090" Count="20" />
+      <LineId Id="3112" Count="0" />
+      <LineId Id="3117" Count="2" />
+      <LineId Id="3122" Count="0" />
+      <LineId Id="3120" Count="1" />
+      <LineId Id="3123" Count="0" />
+      <LineId Id="3089" Count="0" />
+      <LineId Id="3124" Count="7" />
+      <LineId Id="3056" Count="0" />
+      <LineId Id="3132" Count="1" />
+      <LineId Id="2854" Count="0" />
+      <LineId Id="3135" Count="5" />
+      <LineId Id="3134" Count="0" />
+      <LineId Id="3151" Count="0" />
+      <LineId Id="3154" Count="0" />
+      <LineId Id="3156" Count="1" />
+      <LineId Id="3159" Count="0" />
+      <LineId Id="3152" Count="1" />
+      <LineId Id="3150" Count="0" />
+      <LineId Id="3142" Count="1" />
+      <LineId Id="3160" Count="11" />
+      <LineId Id="3141" Count="0" />
+      <LineId Id="3173" Count="0" />
+      <LineId Id="3172" Count="0" />
+      <LineId Id="3175" Count="0" />
+      <LineId Id="3177" Count="1" />
+      <LineId Id="3180" Count="0" />
+      <LineId Id="2855" Count="0" />
+      <LineId Id="3182" Count="0" />
+      <LineId Id="3181" Count="0" />
       <LineId Id="2849" Count="0" />
     </LineIds>
   </POU>