Bläddra i källkod

update galil controller inputs

chenkui 4 veckor sedan
förälder
incheckning
e2d5bb5c5d

+ 2 - 2
CyberX8_RT/Config/Devices/FestoControllerCfg.xml

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <FestoControllerConfig>
 	<FestoDeviceConfig Name="Festo3" IpAddress="10.0.0.42" Port="502" SendTimeout="2000" RecvTimeout="2000" DIStartAddress="45395" Channel="1">
-		<DO Name="c_Transporter_Clamp"  Address="40003" Invert="false" Bit="0"/>
+		<DO Name="c_TRANSPORT1_DROP_BLOCK_LOCK"  Address="40003" Invert="false" Bit="0"/>
 		<DO Name="Festo.DO1" Address="40003" Invert="false" Bit="1"/>
-		<DO Name="c_Transporter2_Clamp"  Address="40003" Invert="false" Bit="2"/>
+		<DO Name="c_TRANSPORT2_DROP_BLOCK_LOCK"  Address="40003" Invert="false" Bit="2"/>
 		<DO Name="Festo.DO3" Address="40003" Invert="false" Bit="3"/>
 		<DO Name="c_Cathode_Clamp" Address="40003" Invert="false" Bit="4"/>
 		<DO Name="Festo.DO5" Address="40003" Invert="false" Bit="5"/>

+ 48 - 0
CyberX8_RT/Config/Devices/GalilControllerCfg-Simulator.xml

@@ -1,6 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
 <GalilControllerConfig>
 	<GalilDeviceConfig Module="PUF1" IpAddress="127.0.0.1" Port="58678" SendTimeout="2000" RecvTimeout="2000" GalilType="Galil40">
+		<Dig_In>
+			<DI Name="DI0" Address="0" Invert="false"/>
+			<DI Name="DI1"  Address="1" Invert="false"/>
+			<DI Name="DI2"  Address="2" Invert="false"/>
+			<DI Name="DI3"  Address="3" Invert="false"/>
+			<DI Name="DI4"  Address="4" Invert="false"/>
+			<DI Name="DI5"  Address="5" Invert="false"/>
+			<DI Name="DI6"  Address="6" Invert="false"/>
+			<DI Name="DI7"  Address="7" Invert="false"/>
+			<DI Name="DI8"  Address="8" Invert="false"/>
+			<DI Name="DI9"  Address="9" Invert="false"/>
+		</Dig_In>
 		<GalilAxisConfig Name="Flip" Index="0" Type="Galil"  CNType="-1">
 			<Speed>1000000</Speed>
 			<Acceleration>2000000</Acceleration>
@@ -31,6 +43,18 @@
 		</GalilAxisConfig>
 	</GalilDeviceConfig>
 	<GalilDeviceConfig Module="Loader1" IpAddress="127.0.0.2" Port="58679" SendTimeout="2000" RecvTimeout="2000"  GalilType="Galil21">
+		<Dig_In>
+			<DI Name="DI0" Address="0" Invert="false"/>
+			<DI Name="DI1"  Address="1" Invert="false"/>
+			<DI Name="DI2"  Address="2" Invert="false"/>
+			<DI Name="DI3"  Address="3" Invert="false"/>
+			<DI Name="DI4"  Address="4" Invert="false"/>
+			<DI Name="DI5"  Address="5" Invert="false"/>
+			<DI Name="DI6"  Address="6" Invert="false"/>
+			<DI Name="DI7"  Address="7" Invert="false"/>
+			<DI Name="DI8"  Address="8" Invert="false"/>
+			<DI Name="DI9"  Address="9" Invert="false"/>
+		</Dig_In>
 		<GalilAxisConfig Name="LSA" Index="4" Type="GalilLipsel"  CNType="-1">
 			<Speed>150000</Speed>
 			<Acceleration>200000</Acceleration>
@@ -131,6 +155,18 @@
 		</GalilAxisConfig>
 	</GalilDeviceConfig>
 	<GalilDeviceConfig Module="Transporter1" IpAddress="127.0.0.3" Port="58680" SendTimeout="2000" RecvTimeout="2000" GalilType="Galil21">
+		<Dig_In>
+			<DI Name="DI0" Address="0" Invert="false"/>
+			<DI Name="DI1"  Address="1" Invert="false"/>
+			<DI Name="DI2"  Address="2" Invert="false"/>
+			<DI Name="DI3"  Address="3" Invert="false"/>
+			<DI Name="r_TRANSPORT1_WS_HOLD_PRESENT"  Address="4" Invert="false"/>
+			<DI Name="DI5"  Address="5" Invert="false"/>
+			<DI Name="DI6"  Address="6" Invert="false"/>
+			<DI Name="DI7"  Address="7" Invert="false"/>
+			<DI Name="DI8"  Address="8" Invert="false"/>
+			<DI Name="DI9"  Address="9" Invert="false"/>
+		</Dig_In>
 		<GalilAxisConfig Name="Elevator" Index="0" Type="Galil" CNType="-1">
 			<Speed>200000</Speed>
 			<Acceleration>200000</Acceleration>
@@ -161,6 +197,18 @@
 		</GalilAxisConfig>
 	</GalilDeviceConfig>
 	<GalilDeviceConfig Module="Transporter2" IpAddress="127.0.0.4" Port="58681" SendTimeout="2000" RecvTimeout="2000" GalilType="Galil21">
+		<Dig_In>
+			<DI Name="DI0" Address="0" Invert="false"/>
+			<DI Name="DI1"  Address="1" Invert="false"/>
+			<DI Name="DI2"  Address="2" Invert="false"/>
+			<DI Name="DI3"  Address="3" Invert="false"/>
+			<DI Name="r_TRANSPORT2_WS_HOLD_PRESENT"  Address="4" Invert="false"/>
+			<DI Name="DI5"  Address="5" Invert="false"/>
+			<DI Name="DI6"  Address="6" Invert="false"/>
+			<DI Name="DI7"  Address="7" Invert="false"/>
+			<DI Name="DI8"  Address="8" Invert="false"/>
+			<DI Name="DI9"  Address="9" Invert="false"/>
+		</Dig_In>
 		<GalilAxisConfig Name="Elevator" Index="0" Type="Galil" CNType="-1">
 			<Speed>200000</Speed>
 			<Acceleration>200000</Acceleration>

+ 48 - 0
CyberX8_RT/Config/Devices/GalilControllerCfg.xml

@@ -1,6 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
 <GalilControllerConfig>
   <GalilDeviceConfig Module="PUF1" IpAddress="10.0.0.22" Port="58678" SendTimeout="2000" RecvTimeout="2000" GalilType="Galil40">
+	<Dig_In>
+		<DI Name="DI0" Address="0" Invert="false"/>
+		<DI Name="DI1"  Address="1" Invert="false"/>
+		<DI Name="DI2"  Address="2" Invert="false"/>
+		<DI Name="DI3"  Address="3" Invert="false"/>
+		<DI Name="DI4"  Address="4" Invert="false"/>
+		<DI Name="DI5"  Address="5" Invert="false"/>
+		<DI Name="DI6"  Address="6" Invert="false"/>
+		<DI Name="DI7"  Address="7" Invert="false"/>
+		<DI Name="DI8"  Address="8" Invert="false"/>
+		<DI Name="DI9"  Address="9" Invert="false"/>
+	</Dig_In>
 	<GalilAxisConfig Name="Flip" Index="0" Type="Galil" CNType="-1">
 		<Speed>1000000</Speed>
 		<Acceleration>2000000</Acceleration>
@@ -31,6 +43,18 @@
 	</GalilAxisConfig>
   </GalilDeviceConfig>
 	<GalilDeviceConfig Module="Loader1" IpAddress="10.0.0.20" Port="58678" SendTimeout="2000" RecvTimeout="2000" GalilType="Galil21">
+		<Dig_In>
+			<DI Name="DI0" Address="0" Invert="false"/>
+			<DI Name="DI1"  Address="1" Invert="false"/>
+			<DI Name="DI2"  Address="2" Invert="false"/>
+			<DI Name="DI3"  Address="3" Invert="false"/>
+			<DI Name="DI4"  Address="4" Invert="false"/>
+			<DI Name="DI5"  Address="5" Invert="false"/>
+			<DI Name="DI6"  Address="6" Invert="false"/>
+			<DI Name="DI7"  Address="7" Invert="false"/>
+			<DI Name="DI8"  Address="8" Invert="false"/>
+			<DI Name="DI9"  Address="9" Invert="false"/>
+		</Dig_In>
 		<GalilAxisConfig Name="LSA" Index="4" Type="GalilLipsel" CNType="-1">
 			<Speed>150000</Speed>
 			<Acceleration>200000</Acceleration>
@@ -131,6 +155,18 @@
 		</GalilAxisConfig>
 	</GalilDeviceConfig>
 	<GalilDeviceConfig Module="Transporter1" IpAddress="10.0.0.21" Port="58678" SendTimeout="2000" RecvTimeout="2000" GalilType="Galil21">
+		<Dig_In>
+			<DI Name="DI0" Address="0" Invert="false"/>
+			<DI Name="DI1"  Address="1" Invert="false"/>
+			<DI Name="DI2"  Address="2" Invert="false"/>
+			<DI Name="DI3"  Address="3" Invert="false"/>
+			<DI Name="r_TRANSPORT1_WS_HOLD_PRESENT"  Address="4" Invert="false"/>
+			<DI Name="DI5"  Address="5" Invert="false"/>
+			<DI Name="DI6"  Address="6" Invert="false"/>
+			<DI Name="DI7"  Address="7" Invert="false"/>
+			<DI Name="DI8"  Address="8" Invert="false"/>
+			<DI Name="DI9"  Address="9" Invert="false"/>
+		</Dig_In>
 		<GalilAxisConfig Name="Elevator" Index="0" Type="Galil" CNType="-1">
 			<Speed>200000</Speed>
 			<Acceleration>200000</Acceleration>
@@ -161,6 +197,18 @@
 		</GalilAxisConfig>
   </GalilDeviceConfig>
 	<GalilDeviceConfig Module="Transporter2" IpAddress="10.0.0.23" Port="58678" SendTimeout="2000" RecvTimeout="2000" GalilType="Galil21">
+		<Dig_In>
+			<DI Name="DI0" Address="0" Invert="false"/>
+			<DI Name="DI1"  Address="1" Invert="false"/>
+			<DI Name="DI2"  Address="2" Invert="false"/>
+			<DI Name="DI3"  Address="3" Invert="false"/>
+			<DI Name="r_TRANSPORT2_WS_HOLD_PRESENT"  Address="4" Invert="false"/>
+			<DI Name="DI5"  Address="5" Invert="false"/>
+			<DI Name="DI6"  Address="6" Invert="false"/>
+			<DI Name="DI7"  Address="7" Invert="false"/>
+			<DI Name="DI8"  Address="8" Invert="false"/>
+			<DI Name="DI9"  Address="9" Invert="false"/>
+		</Dig_In>
 		<GalilAxisConfig Name="Elevator" Index="0" Type="Galil" CNType="-1">
 			<Speed>200000</Speed>
 			<Acceleration>200000</Acceleration>

+ 238 - 0
CyberX8_RT/Config/Devices/WagoControllerCfg.xml

@@ -152,4 +152,242 @@
 	<Ano_Out>
 	</Ano_Out>
   </WagoDeviceConfig>
+	<WagoDeviceConfig Module="Wago2" IpAddress="10.0.0.10" Port="502" SendTimeout="2000" RecvTimeout="2000" Channel="1">
+		<Dig_In>
+			<DIGroup Name="20">
+				<DI Name="DI0"  Address="0" Invert="false"/>
+				<DI Name="DI1"  Address="1" Invert="false"/>
+				<DI Name="DI2"  Address="2" Invert="false"/>
+				<DI Name="DI3"  Address="3" Invert="false"/>
+				<DI Name="DI4"  Address="4" Invert="false"/>
+				<DI Name="DI5"  Address="5" Invert="false"/>
+				<DI Name="DI6"  Address="6" Invert="false"/>
+				<DI Name="DI7"  Address="7" Invert="false"/>
+				<DI Name="DI8"  Address="8" Invert="false"/>
+				<DI Name="DI9"  Address="9" Invert="false"/>
+				<DI Name="DI10"  Address="10" Invert="false"/>
+				<DI Name="DI11"  Address="11" Invert="false"/>
+				<DI Name="DI12"  Address="12" Invert="false"/>
+				<DI Name="DI13"  Address="13" Invert="false"/>
+				<DI Name="DI14"  Address="14" Invert="false"/>
+				<DI Name="DI15"  Address="15" Invert="false"/>
+			</DIGroup>
+			<DIGroup Name="21">
+				<DI Name="DI16"  Address="16" Invert="false"/>
+				<DI Name="DI17"  Address="17" Invert="false"/>
+				<DI Name="DI18"  Address="18" Invert="false"/>
+				<DI Name="DI19"  Address="19" Invert="false"/>
+				<DI Name="DI20"  Address="20" Invert="false"/>
+				<DI Name="DI21"  Address="21" Invert="false"/>
+				<DI Name="r_CONTAINMENT_FLUID"  Address="22" Invert="true"/>
+				<DI Name="r_DOOR_INLK_OK"  Address="23" Invert="false"/>
+				<DI Name="DI24"  Address="24" Invert="false"/>
+				<DI Name="DI25"  Address="25" Invert="false"/>
+				<DI Name="DI26"  Address="26" Invert="false"/>
+				<DI Name="DI27"  Address="27" Invert="false"/>
+				<DI Name="r_REAR_DOOR_INTLK"  Address="28" Invert="false"/>
+				<DI Name="r_SAMPLE_SYS_FLUID_NOT_PRESENT"  Address="29" Invert="false"/>
+				<DI Name="DI28"  Address="30" Invert="false"/>
+				<DI Name="DI29"  Address="31" Invert="false"/>
+			</DIGroup>
+			<DIGroup Name="22">
+				<DI Name="r_RES1_HI_LEVEL"  Address="32" Invert="false"/>
+				<DI Name="r_RES1_LOW_LEVEL"  Address="33" Invert="true"/>
+				<DI Name="r_RES2_HIGH_LEVEL"  Address="34" Invert="false"/>
+				<DI Name="r_RES2_LOW_LEVEL"  Address="35" Invert="true"/>
+				<DI Name="r_RES3_HIGH_LEVEL"  Address="36" Invert="false"/>
+				<DI Name="r_RES3_LOW_LEVEL"  Address="37" Invert="true"/>
+				<DI Name="r_RES4_HIGH_LEVEL"  Address="38" Invert="false"/>
+				<DI Name="r_RES4_LOW_LEVEL"  Address="39" Invert="true"/>
+				<DI Name="DI38"  Address="40" Invert="false"/>
+				<DI Name="DI39"  Address="41" Invert="false"/>
+				<DI Name="DI40"  Address="42" Invert="false"/>
+				<DI Name="DI41"  Address="43" Invert="false"/>
+				<DI Name="DI42"  Address="44" Invert="false"/>
+				<DI Name="DI43"  Address="45" Invert="false"/>
+				<DI Name="DI44"  Address="46" Invert="false"/>
+				<DI Name="DI45"  Address="47" Invert="false"/>
+			</DIGroup>
+			<DIGroup Name="30">
+				<DI Name="DI46"  Address="48" Invert="false"/>
+				<DI Name="DI47"  Address="49" Invert="false"/>
+			</DIGroup>
+		</Dig_In>
+		<Dig_Out>
+			<DOGroup Name="23">
+				<DO Name="c_CDA_ENABLE"  Address="512" Invert="false"/>
+				<DO Name="c_DI_ENABLE"  Address="513" Invert="false"/>
+				<DO Name="c_DI_FILL_ENABLE"  Address="514" Invert="false"/>
+				<DO Name="c_DI_REPLEN_ENABLE"  Address="515" Invert="false"/>
+				<DO Name="c_EXTERNAL_CDA_ENABLE"  Address="516" Invert="false"/>
+				<DO Name="c_HCW_ENABLE"  Address="517" Invert="false"/>
+				<DO Name="DO6"  Address="518" Invert="false"/>
+				<DO Name="c_N2_ENABLEc_QDRD1_LO_PRESSURE"  Address="519" Invert="false"/>
+				<DO Name="c_QDRD1_LO_PRESSURE"  Address="520" Invert="false"/>
+				<DO Name="c_QDRD2_LO_PRESSURE"  Address="521" Invert="false"/>
+				<DO Name="c_QDRD3_LO_PRESSURE"  Address="522" Invert="false"/>
+				<DO Name="c_QDRD4_LO_PRESSURE"  Address="523" Invert="false"/>
+				<DO Name="DO12"  Address="524" Invert="false"/>
+				<DO Name="DO13"  Address="525" Invert="false"/>
+				<DO Name="DO14"  Address="526" Invert="false"/>
+				<DO Name="DO15"  Address="527" Invert="false"/>
+			</DOGroup>
+			<DOGroup Name="24">
+				<DO Name="DO16"  Address="528" Invert="false"/>
+				<DO Name="DO17"  Address="529" Invert="false"/>
+				<DO Name="DO18"  Address="530" Invert="false"/>
+				<DO Name="DO19"  Address="531" Invert="false"/>
+				<DO Name="DO20"  Address="532" Invert="false"/>
+				<DO Name="DO21"  Address="533" Invert="false"/>
+				<DO Name="DO22"  Address="534" Invert="false"/>
+				<DO Name="DO23"  Address="535" Invert="false"/>
+				<DO Name="DO24"  Address="536" Invert="false"/>
+				<DO Name="DO25"  Address="537" Invert="false"/>
+				<DO Name="DO26"  Address="538" Invert="false"/>
+				<DO Name="DO27"  Address="539" Invert="false"/>
+				<DO Name="DO28"  Address="540" Invert="false"/>
+				<DO Name="DO29"  Address="541" Invert="false"/>
+				<DO Name="DO30"  Address="542" Invert="false"/>
+				<DO Name="DO31"  Address="543" Invert="false"/>
+			</DOGroup>
+			<DOGroup Name="25">
+				<DO Name="c_METAL1_PUMP_ON"  Address="544" Invert="false"/>
+				<DO Name="DO33"  Address="545" Invert="false"/>
+			</DOGroup>
+			<DOGroup Name="26">
+				<DO Name="c_METAL2_PUMP_ON"  Address="546" Invert="false"/>
+				<DO Name="c_HED1_POWER_ON"  Address="547" Invert="false"/>
+			</DOGroup>
+			<DOGroup Name="27">
+				<DO Name="c_HED2_POWER_ON"  Address="548" Invert="false"/>
+				<DO Name="DO37"  Address="549" Invert="false"/>
+			</DOGroup>
+			<DOGroup Name="28">
+				<DO Name="c_METAL3_PUMP_ON"  Address="550" Invert="false"/>
+				<DO Name="DO39"  Address="551" Invert="false"/>
+			</DOGroup>
+			<DOGroup Name="29">
+				<DO Name="c_RES3_POWER_ON"  Address="552" Invert="false"/>
+				<DO Name="DO41"  Address="553" Invert="false"/>
+			</DOGroup>
+		</Dig_Out>
+		<Ano_In>
+			<AIGroup Name="1">
+				<AI Name="r_pH2"  Address="0" Scaling="0=3276.7,14=32767" DataType="short"/>
+				<AI Name="AI1"  Address="1" Scaling="0=3276.7,-757.5=16383.5" DataType="short"/>
+				<AI Name="AI2"  Address="2" Scaling="13=0,150=32767" DataType="short"/>
+				<AI Name="AI3"  Address="3" Scaling="13=0,150=32767" DataType="short"/>
+			</AIGroup>
+			<AIGroup Name="2">
+				<AI Name="AI4"  Address="4" Scaling="0=3276.7,-757.5=16383.5" DataType="short"/>
+				<AI Name="AI5"  Address="5" Scaling="0=3276.7,-757.5=16383.5" DataType="short"/>
+				<AI Name="r_PREWET_DI_PRESS"  Address="6" Scaling="0=3276.7,100=32767" DataType="short"/>
+				<AI Name="AI7"  Address="7" Scaling="13=0,150=32767" DataType="short"/>
+			</AIGroup>
+			<AIGroup Name="3">
+				<AI Name="AI8"  Address="8" Scaling="0=3276.7,-757.5=16383.5" DataType="short"/>
+				<AI Name="AI9"  Address="9" Scaling="0=3276.7,-757.5=16383.5" DataType="short"/>
+				<AI Name="r_PREWET_FLOW"  Address="10" Scaling="0=3276.7,40=32767" DataType="short"/>
+				<AI Name="r_DI_WATER_PRESSURE"  Address="11" Scaling="0=3276.7,100=32767" DataType="short"/>
+			</AIGroup>
+			<AIGroup Name="4">
+				<AI Name="r_PUMP1_FLOW"  Address="12" Scaling="0=3276.7,40=16383.5" DataType="short"/>
+				<AI Name="AI13"  Address="13" Scaling="0=3276.7,40=16383.5" DataType="short"/>
+				<AI Name="r_PUMP2_FLOW"  Address="14" Scaling="0=3276.7,40=16383.5" DataType="short"/>
+				<AI Name="AI15"  Address="15" Scaling="0=3276.7,40=16383.5" DataType="short"/>
+			</AIGroup>
+			<AIGroup Name="5">
+				<AI Name="r_PUMP3_FLOW"  Address="16" Scaling="0=3276.7,40=16383.5" DataType="short"/>
+				<AI Name="AI17"  Address="17" Scaling="0=3276.7,40=16383.5" DataType="short"/>
+				<AI Name="r_PUMP4_FLOW"  Address="18" Scaling="0=3276.7,40=16383.5" DataType="short"/>
+				<AI Name="AI19"  Address="19" Scaling="0=3276.7,40=16383.5" DataType="short"/>
+			</AIGroup>
+			<AIGroup Name="6">
+				<AI Name="AI20"  Address="20" Scaling="0=3276.7,-757.5=16383.5" DataType="short"/>
+				<AI Name="AI21"  Address="21" Scaling="0=3276.7,-757.5=16383.5" DataType="short"/>
+				<AI Name="AI22"  Address="22" Scaling="13=0,150=32767" DataType="short"/>
+				<AI Name="AI23"  Address="23" Scaling="13=0,150=32767" DataType="short"/>
+			</AIGroup>
+			<AIGroup Name="7">
+				<AI Name="AI24"  Address="24" Scaling="0=3276.7,-757.5=16383.5" DataType="short"/>
+				<AI Name="AI25"  Address="25" Scaling="0=3276.7,-757.5=16383.5" DataType="short"/>
+				<AI Name="AI26"  Address="26" Scaling="13=0,150=32767" DataType="short"/>
+				<AI Name="AI27"  Address="27" Scaling="13=0,150=32767" DataType="short"/>
+			</AIGroup>
+			<AIGroup Name="8">
+				<AI Name="r_QDRD1_WATER_LEVEL"  Address="28" Scaling="0=3276.7,100=32767" DataType="short"/>
+				<AI Name="r_QDRD2_WATER_LEVEL"  Address="29" Scaling="0=3276.7,100=32767" DataType="short"/>
+				<AI Name="r_QDRD3_WATER_LEVEL"  Address="30" Scaling="0=3276.7,100=32767" DataType="short"/>
+				<AI Name="r_QDRD4_WATER_LEVEL"  Address="31" Scaling="0=3276.7,100=32767" DataType="short"/>
+			</AIGroup>
+			<AIGroup Name="9">
+				<AI Name="AI32"  Address="32" Scaling="0=3276.7,-757.5=16383.5" DataType="short"/>
+				<AI Name="AI33"  Address="33" Scaling="0=3276.7,-757.5=16383.5" DataType="short"/>
+				<AI Name="AI34"  Address="34" Scaling="13=0,150=32767" DataType="short"/>
+				<AI Name="AI35"  Address="35" Scaling="13=0,150=32767" DataType="short"/>
+			</AIGroup>
+			<AIGroup Name="10">
+				<AI Name="r_RES_LEVEL_1_raw"  Address="36" Scaling="0=3276.7,100=32767" DataType="short"/>
+				<AI Name="r_RES_LEVEL_2_raw"  Address="37" Scaling="0=3276.7,100=32767" DataType="short"/>
+				<AI Name="r_RES_LEVEL_3_raw"  Address="38" Scaling="0=3276.7,100=32767" DataType="short"/>
+				<AI Name="r_RES_LEVEL_4_raw"  Address="39" Scaling="0=3276.7,100=32767" DataType="short"/>
+			</AIGroup>
+			<AIGroup Name="11">
+				<AI Name="AI40"  Address="40" Scaling="0=3276.7,-757.5=16383.5" DataType="short"/>
+				<AI Name="AI41"  Address="41" Scaling="0=3276.7,-757.5=16383.5" DataType="short"/>
+				<AI Name="AI42"  Address="42" Scaling="13=0,150=32767" DataType="short"/>
+				<AI Name="r_HCW_FLOW"  Address="43" Scaling="0=3276.7,40=32767" DataType="short"/>
+			</AIGroup>
+			<AIGroup Name="12">
+				<AI Name="r_CDA_EXTERNAL_PRESSURE"  Address="44" Scaling="0=3276.7,145=16383.5" DataType="short"/>
+				<AI Name="r_CDA_HIGH_PRESSURE"  Address="45" Scaling="0=3276.7,145=16383.5" DataType="short"/>
+				<AI Name="r_CDA_LOW_PRESSURE"  Address="46" Scaling="0=3276.7,145=16383.5" DataType="short"/>
+				<AI Name="AI47"  Address="47" Scaling="13=0,150=32767" DataType="short"/>
+			</AIGroup>
+			<AIGroup Name="13">
+				<AI Name="AI48"  Address="48" Scaling="0=3276.7,145=16383.5" DataType="short"/>
+				<AI Name="r_N2_1_LOW_PRESSURE"  Address="49" Scaling="0=3276.7,145=16383.5" DataType="short"/>
+				<AI Name="r_N2_1_PRESSURE"  Address="50" Scaling="0=3276.7,145=16383.5" DataType="short"/>
+				<AI Name="r_N2_2_LOW_PRESSURE"  Address="51" Scaling="0=3276.7,145=16383.5" DataType="short"/>
+			</AIGroup>
+			<AIGroup Name="14">
+				<AI Name="r_N2_2_PRESSURE"  Address="52" Scaling="0=3276.7,145=16383.5" DataType="short"/>
+				<AI Name="r_PROC_BALANCE_PRESSURE"  Address="53" Scaling="0=3276.7,14.5=16383.5" DataType="short"/>
+				<AI Name="r_SYSTEM_VACUUM"  Address="54" Scaling="0=3276.7,-757.5=16383.5" DataType="short"/>
+				<AI Name="AI55"  Address="55" Scaling="13=0,150=32767" DataType="short"/>
+			</AIGroup>
+		</Ano_In>
+		<Ano_Out>
+			<AOGroup Name="15">
+				<AO Name="AO1"  Address="512" DataType="short"/>
+				<AO Name="AO2"  Address="513" DataType="short"/>
+				<AO Name="AO3"  Address="514" DataType="short"/>
+				<AO Name="AO4"  Address="515" DataType="short"/>
+			</AOGroup>
+			<AOGroup Name="16">
+				<AO Name="AO5"  Address="516" DataType="short"/>
+				<AO Name="AO6"  Address="517" DataType="short"/>
+				<AO Name="AO7"  Address="518" DataType="short"/>
+				<AO Name="AO8"  Address="519" DataType="short"/>
+			</AOGroup>
+			<AOGroup Name="17">
+				<AO Name="AO9"  Address="516" DataType="short"/>
+				<AO Name="AO10"  Address="517" DataType="short"/>
+				<AO Name="AO11"  Address="518" DataType="short"/>
+				<AO Name="AO8"  Address="519" DataType="short"/>
+			</AOGroup>
+			<AOGroup Name="18">
+				<AO Name="AO12"  Address="516" DataType="short"/>
+				<AO Name="AO13"  Address="517" DataType="short"/>
+				<AO Name="AO14"  Address="518" DataType="short"/>
+				<AO Name="AO15"  Address="519" DataType="short"/>
+			</AOGroup>
+			<AOGroup Name="19">
+				<AO Name="AO16"  Address="516" DataType="short"/>
+				<AO Name="AO17"  Address="517" DataType="short"/>
+				<AO Name="AO18"  Address="518" DataType="short"/>
+				<AO Name="AO19"  Address="519" DataType="short"/>
+			</AOGroup>
+		</Ano_Out>
+	</WagoDeviceConfig>
 </WagoControllerConfig>

+ 8 - 9
CyberX8_RT/Devices/EFEM/SunWayRobot.cs

@@ -229,7 +229,7 @@ namespace CyberX8_RT.Devices.EFEM
                 LOG.WriteLog(eEvent.ERR_EFEM_COMMON_FAILED, Module.ToString(), $"Current Msg {_currentMessage.Operation} is Running,cannot home {mod}");
                 return false;
             }
-            if (mod != ModuleName.Aligner1)
+            if (mod != ModuleName.Aligner1&&mod!=ModuleName.EfemRobot)
             {
                 LOG.WriteLog(eEvent.ERR_EFEM_COMMON_FAILED, Module.ToString(), $"{mod} can not support home method");
                 return false;
@@ -242,7 +242,11 @@ namespace CyberX8_RT.Devices.EFEM
             }
             if(mod == ModuleName.EfemRobot) SetRobotMovingInfo(RobotAction.Homing, Hand.Blade1, ModuleName.EfemRobot);
             _status = RState.Running;
-            string cmd = "ALIGNER HOME\r";
+            string cmd = "Home ALL\r";
+            if (mod == ModuleName.Aligner1)
+            {
+                cmd = "ALIGNER HOME\r";
+            }
             _currentMessage = new EfemMessage()
             {
                 Operation = EfemOperation.Home,
@@ -312,8 +316,7 @@ namespace CyberX8_RT.Devices.EFEM
 
         public override bool ClearError()
         {
-            LOG.WriteLog(eEvent.ERR_EFEM_COMMON_FAILED, Module.ToString(), $"System cannot support {EfemConstant.OperationString[EfemOperation.ClearError]}");
-            return false;
+            return true;
         }
 
         public override bool CloseBuzzer()
@@ -678,11 +681,7 @@ namespace CyberX8_RT.Devices.EFEM
                 LOG.WriteLog(eEvent.ERROR_EFEM_COMMUNICATION, Module.ToString(), $"Socket is not Conntected");
                 return false;
             }
-            string status = "ON";
-            if (!Status)
-            {
-                status = "OFF";
-            }
+            string status = Status? "ON":"OFF";
             _currentMessage = new EfemMessage()
             {
                 Operation = EfemOperation.PowerOn

+ 10 - 6
CyberX8_RT/Devices/SignalLight/SunWaySignalLight.cs

@@ -10,6 +10,8 @@ using System.Text;
 using System.Threading.Tasks;
 using MECF.Framework.Common.IOCore;
 using System.Runtime.InteropServices;
+using MECF.Framework.Common.Beckhoff.ModuleIO;
+using static Mono.Security.X509.X520;
 
 namespace CyberX8_RT.Devices.SignalLight
 {
@@ -24,7 +26,6 @@ namespace CyberX8_RT.Devices.SignalLight
         private const string BLUE_LIGHT = "BlueLight";
         #endregion
         public MECF.Framework.Common.Device.Bases.LightType Type { get; set; }
-        public EfemBase EfemController { get; set; }
 
         private F_TRIG _trigError = new F_TRIG();
 
@@ -54,10 +55,6 @@ namespace CyberX8_RT.Devices.SignalLight
 
         private bool SetSignalLight(MECF.Framework.Common.Device.Bases.LightType type, TowerLightStatus setpoint)
         {
-            if(EfemController==null)
-            {
-                return false;
-            }
             LightType lightType;
             switch (type)
             {
@@ -103,7 +100,14 @@ namespace CyberX8_RT.Devices.SignalLight
                     break;
             }
             bool lightValue=lightSetpoint==LightStatus.ON?true:false;
-            return  IOModuleManager.Instance.WriteIoValue(GetIOLight(lightType), lightValue);
+            string ioLight = GetIOLight(lightType);
+
+            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName(ioLight);
+            if (!string.IsNullOrEmpty(ioName))
+            {
+                return IOModuleManager.Instance.WriteIoValue(ioName, lightValue);
+            }
+            return false;
         }
 
         private string GetIOLight(LightType lightType)

+ 6 - 6
CyberX8_RT/Dispatch/WaferHolderTaskManager.cs

@@ -31,7 +31,7 @@ namespace CyberX8_RT.Dispatch
         /// <summary>
         /// WaferTask集合
         /// </summary>
-        private List<WaferHolderTask> _waferTaskList = new List<WaferHolderTask>();
+        private List<WaferHolderTask> _waferHolderTaskList = new List<WaferHolderTask>();
         /// <summary>
         /// WaferTask锁
         /// </summary>
@@ -65,7 +65,7 @@ namespace CyberX8_RT.Dispatch
                     _waferHolderTaskDic.TryAdd(waferHolderTask.ID,waferHolderTask);
                     lock (_waferHolderTaskObject)
                     {
-                        _waferTaskList.Add(waferHolderTask);
+                        _waferHolderTaskList.Add(waferHolderTask);
                     }
                     LOG.WriteLog(eEvent.EV_SEQUENCE, "Scheduler", $"Create wafer Shuttle {waferHolderInfo.Id} task");
                     if (GetPreLoaderHasWafer()==null)
@@ -197,7 +197,7 @@ namespace CyberX8_RT.Dispatch
                             _waferHolderTaskDic.TryAdd(waferHolderTask.ID, waferHolderTask);
                             lock (_waferHolderTaskObject)
                             {
-                                _waferTaskList.Add(waferHolderTask);    
+                                _waferHolderTaskList.Add(waferHolderTask);    
                             }
                             LOG.WriteLog(eEvent.EV_SEQUENCE, "Scheduler", $"Create dummy wafer Shuttle {waferHolderInfo.Id} task");
                             if (GetPreLoaderHasWafer()==null)
@@ -259,10 +259,10 @@ namespace CyberX8_RT.Dispatch
             }
             lock (_waferHolderTaskObject)
             {
-                int index = _waferTaskList.FindIndex(O => O.ID == id);
+                int index = _waferHolderTaskList.FindIndex(O => O.ID == id);
                 if (index != -1)
                 {
-                    _waferTaskList.RemoveAt(index);
+                    _waferHolderTaskList.RemoveAt(index);
                 }
             }
         }
@@ -274,7 +274,7 @@ namespace CyberX8_RT.Dispatch
         {
             lock (_waferHolderTaskObject)
             {
-                return _waferTaskList;
+                return _waferHolderTaskList;
             }
         }
 

+ 5 - 1
CyberX8_RT/Modules/EFEM/EfemHomeRoutine.cs

@@ -86,7 +86,7 @@ namespace CyberX8_RT.Modules.EFEM
                 Runner.Run(HomeStep.PowerOn, PowerOn, IsStepComplete, _delay_5s)
                     .Run(HomeStep.SetHomeSpeed,            SetHomeSpeed,           IsStepComplete,         _delay_5s)
                     .Run(HomeStep.HomeAll,          HomeAll,   IsStepComplete, _homeTimeout)
-                    //.Run(HomeStep.InitAligner,                     () => { return HomeModule(ModuleName.Aligner1); },IsStepComplete, _homeTimeout)
+                    .Run(HomeStep.InitAligner,     HomeAligner,IsStepComplete, _homeTimeout)
                     .Run(HomeStep.CheckWaferPresence,      CheckWaferPresence,     VerifyWaferPresence,    _delay_5s)
                     .Run(HomeStep.DummyMap, StartMapDummy,_delay_1ms)
                     .WaitWithStopCondition(HomeStep.CheckDummyMap,()=>CommonFunction.CheckRoutineEndState(_mapDummyRoutine),
@@ -136,6 +136,10 @@ namespace CyberX8_RT.Modules.EFEM
             return _efem.HomeAll();
         }
 
+        private bool HomeAligner()
+        {
+            return _efem.Home(ModuleName.Aligner1);
+        }
         private bool HomeModule()
         {
             return _efem.Home(_targetModule);

+ 0 - 1
CyberX8_RT/Modules/PUF/PufReadyForRobotPlaceRoutine.cs

@@ -9,7 +9,6 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using Aitex.Core.RT.Log;
-using MECF.Framework.Common.Utilities;
 
 namespace CyberX8_RT.Modules.PUF
 {

+ 2 - 0
Framework/Common/Common.csproj

@@ -250,6 +250,8 @@
     <Compile Include="Device\Galil\GalilDeviceConfig.cs" />
     <Compile Include="Device\Galil\Galil21Message.cs" />
     <Compile Include="Device\Galil\Galil21TcpDevice.cs" />
+    <Compile Include="Device\Galil\GalilDI.cs" />
+    <Compile Include="Device\Galil\GalilDigIn.cs" />
     <Compile Include="Device\Galil\IGalilDevice.cs" />
     <Compile Include="Device\LinMot\LinMotDelegate.cs" />
     <Compile Include="Device\PowerSupplier\PowerSupplierCommand.cs" />

+ 49 - 0
Framework/Common/Device/Galil/GalilControllerCfgManager.cs

@@ -7,6 +7,7 @@ using MECF.Framework.Common.Equipment;
 using MECF.Framework.Common.IOCore;
 using MECF.Framework.Common.Net;
 using System;
+using System.Collections.Concurrent;
 using System.Collections.Generic;
 using System.IO;
 using System.Linq;
@@ -52,10 +53,18 @@ namespace MECF.Framework.Common.Device.Galil
         /// </summary>
         private Dictionary<string, GalilAxisConfig> _moduleNameAxisConfigDictionary = new Dictionary<string, GalilAxisConfig>();
         /// <summary>
+        /// 模块设备配置字典
+        /// </summary>
+        private Dictionary<string, GalilDeviceConfig> _moduleDeviceConfigDictionary = new Dictionary<string, GalilDeviceConfig>();
+        /// <summary>
         /// 模块电机tcp设备字典(key-模块名称,value-tcp设备)
         /// </summary>
         private Dictionary<string, IGalilDevice> _moduleGalilTcpDeviceDictionary = new Dictionary<string, IGalilDevice>();
         /// <summary>
+        /// 模块DI数组字典
+        /// </summary>
+        private ConcurrentDictionary<string, byte[]> _moduleDiDictionary = new ConcurrentDictionary<string, byte[]>();
+        /// <summary>
         /// 电机
         /// </summary>
         private char[] _axisArray = null;
@@ -115,6 +124,7 @@ namespace MECF.Framework.Common.Device.Galil
         {
             List<string> lst = new List<string>();
             int maxIndex = 0;
+            _moduleDeviceConfigDictionary[deviceConfig.Module] = deviceConfig;
             foreach(var item in deviceConfig.GalilAxises)
             {
                 _moduleNameIndexDictionary[$"{deviceConfig.Module}.{item.Name}"] = item.Index;
@@ -153,6 +163,7 @@ namespace MECF.Framework.Common.Device.Galil
             {
                 return;
             }
+            UpdateModuleDI(module, controllerData.Inputs);
             List<string> lst = _moduleNameLstDictionary[module];
             foreach (var item in lst)
             {
@@ -170,6 +181,44 @@ namespace MECF.Framework.Common.Device.Galil
                 CheckAxisDataChanged(moduleName, galilAxisData);
             }
         }
+
+        private void UpdateModuleDI(string module, byte[] diValues)
+        {
+            if (!_moduleDeviceConfigDictionary.ContainsKey(module))
+            {
+                return;
+            }
+            GalilDeviceConfig galilDeviceConfig = _moduleDeviceConfigDictionary[module];
+            if (galilDeviceConfig.GalilDigIn.DIs.Count != diValues.Length)
+            {
+                return;
+            }
+            bool isInitial = false;
+            if (!_moduleDiDictionary.ContainsKey(module))
+            {
+                _moduleDiDictionary[module] = new byte[galilDeviceConfig.GalilDigIn.DIs.Count];
+                isInitial=true;
+            }
+            byte[] tmpValues=_moduleDiDictionary[module];
+            if (tmpValues.Length == diValues.Length)
+            {
+                for(int i=0;i<tmpValues.Length;i++)
+                {
+                    GalilDI dI=galilDeviceConfig.GalilDigIn.DIs[i];
+                    string diName = dI.Name;
+                    byte item=tmpValues[i];
+                    byte diValue = diValues[i];
+                    if (isInitial)
+                    {
+                        IOModuleManager.Instance.UpdateIoValue(diName, diValue);
+                    }
+                    else if (item != diValue)
+                    {
+                        IOModuleManager.Instance.UpdateIoValue(diName, diValue);
+                    }
+                }
+            }
+        }
         /// <summary>
         /// 检验电机数据是否发生变化
         /// </summary>

+ 21 - 0
Framework/Common/Device/Galil/GalilDI.cs

@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Schema;
+using System.Xml.Serialization;
+
+namespace MECF.Framework.Common.Device.Galil
+{
+    public class GalilDI
+    {
+        [XmlAttribute(AttributeName = "Name", Form = XmlSchemaForm.Unqualified, DataType = "string")]
+        public string Name { get; set; }
+        [XmlAttribute(AttributeName = "Address", Form = XmlSchemaForm.Unqualified, DataType = "int")]
+        public int Address { get; set; }
+
+        [XmlAttribute(AttributeName = "Invert", Form = XmlSchemaForm.Unqualified, DataType = "boolean")]
+        public bool Invert { get; set; }
+    }
+}

+ 4 - 0
Framework/Common/Device/Galil/GalilDeviceConfig.cs

@@ -1,4 +1,5 @@
 using MECF.Framework.Common.Device.Festo;
+using MECF.Framework.Common.Device.Wago;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -29,5 +30,8 @@ namespace MECF.Framework.Common.Device.Galil
         public string GalilType { get; set; }
         [XmlElement(Type = typeof(GalilAxisConfig), ElementName = "GalilAxisConfig", IsNullable = false, Form = XmlSchemaForm.Qualified)]
         public List<GalilAxisConfig> GalilAxises { get; set; }
+
+        [XmlElement(Type = typeof(GalilDigIn), ElementName = "Dig_In", IsNullable = false, Form = XmlSchemaForm.Qualified)]
+        public GalilDigIn GalilDigIn { get; set; }
     }
 }

+ 17 - 0
Framework/Common/Device/Galil/GalilDigIn.cs

@@ -0,0 +1,17 @@
+using MECF.Framework.Common.Device.Wago;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Schema;
+using System.Xml.Serialization;
+
+namespace MECF.Framework.Common.Device.Galil
+{
+    public class GalilDigIn
+    {
+        [XmlElement(Type = typeof(GalilDI), ElementName = "DI", IsNullable = false, Form = XmlSchemaForm.Qualified)]
+        public List<GalilDI> DIs { get; set; }
+    }
+}