Browse Source

同步仿真

jiangjy 4 weeks ago
parent
commit
0f9aaa1d69

+ 10 - 10
Furnace/FurnaceRT/Config/IO/ELK/DeviceModelPM.xml

@@ -784,7 +784,7 @@
 		<IoPressureMeter id="N27PurgePressure" display="N27PurgePressure"  schematicId="N27PurgePressure" unit="psig" aiFeedback="AI_N27PurgePressure"  physical="0,15000" scale="0,150" aioType="float"/>
 		<IoPressureMeter id="Tank1Pressure" display="Tank1Pressure"  schematicId="Tank1Pressure" unit="kpa" aiFeedback="AI_Tank1Pressure"  physical="1500,7500" scale="0,1" aioType="float"/>
 		<IoPressureMeter id="Tank2Pressure" display="Tank2Pressure"  schematicId="Tank2Pressure" unit="kpa" aiFeedback="AI_Tank2Pressure"  physical="1500,7500" scale="0,1" aioType="float"/>
-		
+
 		<IoPressureMeter id="LoadingAreaExhaustMS321" display="LoadingAreaExhaustMS321"  schematicId="LoadingAreaExhaustMS321" unit="Pa" aiFeedback="AI_LoadingAreaExhaustMS321"  physical="1500,7500" scale="0,1" aioType="float" />
 
 
@@ -1139,15 +1139,15 @@
 		<IoSensor id="SensorO2DetectSideFIMS2" display="Transfer Room FIMS2" di="DI_O2_Detect_Side_FIMS2"/>
 
 		<IoSensor id="SensorLADoorSw1" display="LA door sw1" di="DI_SL05001LAdoorsw1"/>
-		
+
 		<IoSensor id="SensorSL02001gasboxdoorsw11" display="SensorSL02001gasboxdoorsw11" di="DI_SL02001gasboxdoorsw11"/>
 		<IoSensor id="SensorSL02001gasboxdoorsw12" display="SensorSL02001gasboxdoorsw12" di="DI_SL02001gasboxdoorsw12"/>
 		<IoSensor id="SensorSL02002gasboxdoorsw11" display="SensorSL02002gasboxdoorsw11" di="DI_SL02002gasboxdoorsw11"/>
 		<IoSensor id="SensorSL02002gasboxdoorsw12" display="SensorSL02002gasboxdoorsw12" di="DI_SL02002gasboxdoorsw12"/>
-		
+
 		<IoSensor id="SensorSL05002LAdoorsw2" display="SL05002LAdoorsw2" di="DI_SL05002LAdoorsw2"/>
 		<IoSensor id="SensorSL05004LAfurnacedoorsw" display="SL05004LAfurnacedoorsw" di="DI_SL05004LAfurnacedoorsw"/>
-		
+
 		<IoSensor id="SensorPLCHeartBeatPC" display="PLCHeartBeatPC" di="DI_PLCHeartBeatPC"/>
 
 
@@ -1232,7 +1232,7 @@
 		<IoTrigger id="TrigStockerPurgeStocker3" display="" schematicId="" unit=""  doTrigger="DO_BufferN2Purage1COpen"/>
 		<IoTrigger id="TrigStockerPurgeStocker4" display="" schematicId="" unit=""  doTrigger="DO_BufferN2Purage1DOpen"/>
 		<IoTrigger id="TrigCREFON" display="" schematicId="" unit="" doTrigger="DO_CREF"/>
-		<IoTrigger id="TrigSIREFON" display="" schematicId="" unit="" doTrigger="DO_AUTOREFILL1REQUESTOrVALVEOPEN"/>
+		<IoTrigger id="TrigSIREFON" display="" schematicId="" unit="" doTrigger="DO_HREF"/>
 		<IoTrigger id="TrigHTR1SWON" display="" schematicId="" unit="" doTrigger="DO_HTR1"/>
 		<IoTrigger id="TrigHTR2SWON" display="" schematicId="" unit="" doTrigger="DO_HTR2"/>
 		<IoTrigger id="TrigHTR3SWON" display="" schematicId="" unit="" doTrigger="DO_HTR3"/>
@@ -1245,8 +1245,8 @@
 		<IoTrigger id="TrigMS521" display="" schematicId="" unit="" doTrigger="DO_MS521"/>
 		<IoTrigger id="TrigMS522" display="" schematicId="" unit="" doTrigger="DO_MS522"/>
 		<IoTrigger id="TrigBufferN2PurageEN" display="" schematicId="" unit="" doTrigger="DO_BufferN2PurageEN"/>
-		
-		
+
+
 
 		<IoTrigger id="TrigN2PurgeLAO2CheckFirstEnable" display="" schematicId="" unit="" doTrigger="DO_LAO2CheckFirstEN"/>
 		<IoTrigger id="TrigN2PurgeFIMS1O2CheckEnable" display="" schematicId="" unit="" doTrigger="DO_FIMS1O2CheckEN"/>
@@ -1261,7 +1261,7 @@
 		<IoTrigger id="TrigN2PurgeExchangeFOUPTOFOUPWaitTime" display="" schematicId="" unit="" aoTrigger="AO_ExchangeFOUPTOFOUPWaitTime"/>
 		<IoTrigger id="TrigN2PurgeLAO2CheckSV" display="" schematicId="" unit="" aoTrigger="AO_LAO2CheckSV"/>
 		<IoTrigger id="TrigN2PurgeFOUPO2CheckSV" display="" schematicId="" unit="" aoTrigger="AO_FOUPO2CheckSV"/>
-	
+
 		<IoTrigger id="TrigDPRON" display="" schematicId="" unit="" doTrigger="DO_DPR"/>
 		<IoTrigger id="TrigCEXHON" display="" schematicId="" unit="" doTrigger="DO_CEXH"/>
 
@@ -1589,7 +1589,7 @@
 		<IoValve id="ValveBlowerPowerOn" doOpen="DO_BlowerPowerOn" doClose="" display="Blower Power On" schematicId="" isNc="true" isDefaultOpen="false"/>
 
 
-	
+
 
 		<IoValve id="AUCPump" doOpen="DO_VaccumPumpAUCOn" doClose="" display="AUCPump" schematicId="" isNc="true" isDefaultOpen="false"/>
 		<IoValve id="BothPump1" doOpen="DO_VaccumPumpBothOn"  diOpenSensor="DI_VaccumPumpBothOn" doClose="" display="BothPump1" schematicId="" isNc="true" isDefaultOpen="false"/>
@@ -1598,7 +1598,7 @@
 		<IoValve id="AGV2Pump" doOpen="DO_Vaccum2PumpAGVOpen" doClose="" display="AGV2Pump" schematicId="" isNc="true" isDefaultOpen="false"/>
 		<IoValve id="HMNT" doOpen="DO_HMNT" doClose="" display="HMNT" schematicId="" isNc="true" isDefaultOpen="false"/>
 		<IoValve id="CMNT" doOpen="DO_CMNT" doClose="" display="CMNT" schematicId="" isNc="true" isDefaultOpen="false"/>
-		<IoValve id="HREF" doOpen="DO_AUTOREFILL1REQUESTOrVALVEOPEN" doClose="" display="HREF" schematicId="" isNc="true" isDefaultOpen="false"/>
+		<IoValve id="HREF" doOpen="DO_HREF" doClose="" display="HREF" schematicId="" isNc="true" isDefaultOpen="false"/>
 		<IoValve id="CREF" doOpen="DO_CREF" doClose="" display="CREF" schematicId="" isNc="true" isDefaultOpen="false"/>
 		<IoValve id="HZERO" doOpen="DO_HZERO" doClose="" display="HZERO" schematicId="" isNc="true" isDefaultOpen="false"/>
 		<IoValve id="CZERO" doOpen="DO_CZERO" doClose="" display="CZERO" schematicId="" isNc="true" isDefaultOpen="false"/>

+ 1 - 1
Furnace/FurnaceRT/Config/IO/ELK/_ioDefinePM.xml

@@ -1128,7 +1128,7 @@
 
 		<DO_ITEM Index="1616"   Name="DO_FORELINEHEATERON/OFF"                                      BufferOffset="1616"                                      Addr="D1101.0"                      Description="FORELINE HEATER ON/OFF"                       />
 		<DO_ITEM Index="1620"   Name="DO_EXTERNALBMOOUT"                                      BufferOffset="1620"                                      Addr="D1101.4"                      Description="EXTERNAL EMO OUT"                       />
-		<DO_ITEM Index="1621"   Name="DO_SIREF"                                      BufferOffset="1621"                                      Addr="D1101.5"                      Description="AUTOREFILL-1 REQUEST Or VALVE OPEN(SIREF)"                       />
+		<DO_ITEM Index="1621"   Name="DO_HREF"                                      BufferOffset="1621"                                      Addr="D1101.5"                      Description="AUTOREFILL-1 REQUEST Or VALVE OPEN(HREF)"                       />
 		<DO_ITEM Index="1623"   Name="DO_CREF"                                      BufferOffset="1623"                                      Addr="D1101.7"                      Description="ALTOREFILL-2 REQUEST Or VALVE OPEN(CREF)"                       />
 		<DO_ITEM Index="2241"   Name="DO_BoatRAxisHomeCmd"                                      BufferOffset="2241"                                      Addr="D1140.1"                      Description="Boat Rotation Axis Home Cmd"                       />
 		<DO_ITEM Index="2242"   Name="DO_BoatRAxisRotationCmd"                                      BufferOffset="2242"                                      Addr="D1140.2"                      Description="Boat Rotation Axis Rotation Cmd"                       />

BIN
Furnace/FurnaceRT/Config/VIDs/Equipment_VIDs_20250612.xlsx


+ 15 - 2
Furnace/FurnaceRT/Equipments/FIMSs/FIMSLoadRoutine.cs

@@ -100,9 +100,11 @@ namespace FurnaceRT.Equipments.FIMSs
 
                 Delay((int)RoutineStep.Delay, 3);
 
-                CheckWaferShifted((int)RoutineStep.CheckWaferShifted, _timeout);
 
                 CheckLoadFinish((int)RoutineStep.CheckLoadFinish, _timeout);
+
+                CheckWaferShifted((int)RoutineStep.CheckWaferShifted, _timeout);
+
             }
             catch (RoutineBreakException)
             {
@@ -198,7 +200,18 @@ namespace FurnaceRT.Equipments.FIMSs
                 return true;
             }, () =>
             {
-                return _fimsModule.FIMSDevice.IsPLCLoadCompleted && !_fimsModule.FIMSDevice.IsRunning;
+                if (_fimsModule.FIMSDevice.IsPLCLoadCompleted && !_fimsModule.FIMSDevice.IsRunning)
+                {
+                    if (_fimsModule.IsWaferOnRobot)
+                    {
+                        _fimsModule.LoadFailAlarm.Set($"The wafer on {Module} has shifted");
+                        _pmModule?.SetN2PurgeProcess(false);
+                        return false;
+                    }
+
+                    return true;
+                }
+                return false;
             }, timeout * 1000);
 
             if (ret.Item1)

+ 3 - 0
Furnace/FurnaceSimulator/Instances/SimulatorSystem.cs

@@ -115,6 +115,9 @@ namespace FurnaceSimulator.Instances
         private SimpleSocketDeviceSimulator _SimpleSocketDeviceSimulator;
         private void SetDefaultValue()
         {
+            IO.DI[$"PM1.DI_POD1WaferOnRobot"].Value = true;
+            IO.DI[$"PM1.DI_POD2WaferOnRobot"].Value = true;
+
             IO.DI[$"PM1.DI_FOUPRobotIsTPStatus"].Value = true;
             IO.DI[$"PM1.DI_WaferRobotIsHostStatus"].Value = true;
             IO.DI[$"PM1.DI_PwrBusyBoatZAxis"].Value = true;