diff --git a/App/Modules/SicModules/PMs/PMModule.cs b/App/Modules/SicModules/PMs/PMModule.cs index 928000d..483a6f3 100644 --- a/App/Modules/SicModules/PMs/PMModule.cs +++ b/App/Modules/SicModules/PMs/PMModule.cs @@ -807,6 +807,8 @@ namespace SicModules.PMs //ProcessIdle Transition(STATE.ProcessIdle, MSG.SelectRecipe, FsmSelectRecipe, STATE.ProcessIdle); Transition(STATE.ProcessIdle, MSG.RunRecipe, FsmStartPreProcess, STATE.PreProcess); + //Transition(STATE.ProcessIdle, MSG.ProcessAbort, FsmStartProcessAbort, STATE.ProcessAborting); + //Transition(STATE.ProcessIdle, MSG.Abort, FsmStartProcessAbort, STATE.ProcessAborting); //PreProcess Transition(STATE.PreProcess, FSM_MSG.TIMER, FsmMonitorTask, STATE.PreProcess); @@ -1514,7 +1516,7 @@ namespace SicModules.PMs _pmInterLock.SetPMPreProcessRunning(false, out reason); _pmInterLock.SetPMPostProcessRunning(false, out reason); - if (FsmState.Equals((int)STATE.Process)) + if (FsmState.Equals((int)STATE.Process) || FsmState.Equals((int)STATE.PreProcess) || FsmState.Equals((int)STATE.PostProcess) ) { PostMsg(MSG.ProcessAbort); return false; diff --git a/App/Modules/SicModules/PMs/PMModuleDevice.cs b/App/Modules/SicModules/PMs/PMModuleDevice.cs index 9c98862..33ba14a 100644 --- a/App/Modules/SicModules/PMs/PMModuleDevice.cs +++ b/App/Modules/SicModules/PMs/PMModuleDevice.cs @@ -1,4 +1,10 @@ -using Aitex.Core.Common.DeviceData; +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Threading.Tasks; +using Aitex.Core.Common.DeviceData; using Aitex.Core.RT.Device; using Aitex.Core.RT.Device.Devices; using Aitex.Core.RT.Event; @@ -12,33 +18,84 @@ using MECF.Framework.Common.Event; using MECF.Framework.Common.PLC; using MECF.Framework.Common.Schedulers; using MECF.Framework.RT.EquipmentLibrary.Devices; -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Threading.Tasks; namespace SicModules.PMs { public enum IoGroupName { - A, B, C, D, E, F, G, H, I, J, K, Final1, Final2, EPV2, V68, GasIn2, V72, ArSupply, GasSupply, All, - V27, V888990, V76, V75, V70, V69, V25, V94, GroupIWithoutV94, V93V94V95, V96, V30, V31, V32, V35V36, V65, V93V95, V92V93V95, - Final1WithOutV94, V97V87, V111 + A, + B, + C, + D, + E, + F, + G, + H, + I, + J, + K, + Final1, + Final2, + EPV2, + V111, + GasIn1, + GasIn2, + VentPump, + ArSupply, + GasSupply, + All, + V27, + V34, + V888990, + V76, + V75, + V70, + V69, + V25, + V94, + GroupIWithoutV94, + V92V93V95, + V87V97, + V96, + V31, + V32, + V35V36, + V65, + V68, + V100, + V103, + V105, + Final1WithOutV94 }; public enum MfcGroupName { - Final1, Final2, M1to16, M2M9M15_M19toM26, M2toM45, M2toM40NoFinal1MFC, M27toM38, M2toM26, M2toM26M43M44M45, M27toM45, M19toM33, M36, M27To3540To42, - M19toM26, All, M35M37, M35M36M37M38, M38 + Final1, + Final2, + M1to16, + M5M21, + M17, + M18, + M17M18, + M21, + M2toM42, + M2toM40NoFinal1MFC, + M27toM38, + M2toM26, + M27toM40, + M19toM33, + M32toM38, + M36, + M28293140, + M19toM26, + All, + M32M35M37, + M38, + AllWithoutM28M29M31M40 }; public partial class PMModule { - [Tag("SignalTower")] - public IoSignalTower SignalTower { get; set; } - #region InterLock [Tag("PMInterLock")] @@ -46,364 +103,232 @@ namespace SicModules.PMs #endregion InterLock - #region Servo && TV + #region Servo & SignalTower && TV - [Tag("PMServo")] - public SicServo _sicServo { get; set; } + [Tag("PMServo")] public SicServo _sicServo { get; set; } - [Tag("PMHeatEnable")] - public IoHeat _IoHeat { get; set; } + //[Tag("PMAETemp")] + //public SicAETemp _sicAETemp { get; set; } - [Tag("TV")] - public IoThrottleValve2 _ioThrottleValve { get; set; } + [Tag("PMHeatEnable")] public IoHeat _IoHeat { get; set; } - #endregion Servo && TV + [Tag("TV")] public IoThrottleValve2 _ioThrottleValve { get; set; } + + #endregion Servo & SignalTower && TV #region Valve - [Tag("V25")] - public IoValve V25 { get; set; } + [Tag("V25")] public IoValve V25 { get; set; } + [Tag("V27")] public IoValve V27 { get; set; } + [Tag("V31")] public IoValve V31 { get; set; } - [Tag("V27")] - public IoValve V27 { get; set; } + [Tag("V32")] public IoValve V32 { get; set; } - [Tag("V30")] - public IoValve V30 { get; set; } + [Tag("V33")] public IoValve V33 { get; set; } - [Tag("V31")] - public IoValve V31 { get; set; } + [Tag("V33s")] public IoValve V33s { get; set; } - [Tag("V32")] - public IoValve V32 { get; set; } + [Tag("V35")] public IoValve V35 { get; set; } - [Tag("V33")] - public IoValve V33 { get; set; } + [Tag("V36")] public IoValve V36 { get; set; } - [Tag("V33s")] - public IoValve V33s { get; set; } + [Tag("V37")] public IoValve V37 { get; set; } - [Tag("V35")] - public IoValve V35 { get; set; } + [Tag("V37s")] public IoValve V37s { get; set; } - [Tag("V36")] - public IoValve V36 { get; set; } + [Tag("V39")] public IoValve V39 { get; set; } - [Tag("V37")] - public IoValve V37 { get; set; } + [Tag("V39s")] public IoValve V39s { get; set; } - [Tag("V37s")] - public IoValve V37s { get; set; } + [Tag("V40")] public IoValve V40 { get; set; } - [Tag("V39")] - public IoValve V39 { get; set; } + [Tag("V40s")] public IoValve V40s { get; set; } - [Tag("V39s")] - public IoValve V39s { get; set; } + [Tag("V41")] public IoValve V41 { get; set; } - [Tag("V40")] - public IoValve V40 { get; set; } + [Tag("V42")] public IoValve V42 { get; set; } - [Tag("V40s")] - public IoValve V40s { get; set; } + [Tag("V43")] public IoValve V43 { get; set; } - [Tag("V41")] - public IoValve V41 { get; set; } + [Tag("V43s")] public IoValve V43s { get; set; } - [Tag("V42")] - public IoValve V42 { get; set; } + [Tag("V45")] public IoValve V45 { get; set; } - [Tag("V43")] - public IoValve V43 { get; set; } + [Tag("V46")] public IoValve V46 { get; set; } - [Tag("V43s")] - public IoValve V43s { get; set; } + [Tag("V46s")] public IoValve V46s { get; set; } - [Tag("V45")] - public IoValve V45 { get; set; } + [Tag("V48")] public IoValve V48 { get; set; } - [Tag("V46")] - public IoValve V46 { get; set; } + [Tag("V48s")] public IoValve V48s { get; set; } - [Tag("V46s")] - public IoValve V46s { get; set; } + [Tag("V49")] public IoValve V49 { get; set; } - [Tag("V48")] - public IoValve V48 { get; set; } + [Tag("V50")] public IoValve V50 { get; set; } - [Tag("V48s")] - public IoValve V48s { get; set; } + [Tag("V50s")] public IoValve V50s { get; set; } - [Tag("V49")] - public IoValve V49 { get; set; } + [Tag("V51")] public IoValve V51 { get; set; } - [Tag("V50")] - public IoValve V50 { get; set; } + [Tag("V51s")] public IoValve V51s { get; set; } - [Tag("V50s")] - public IoValve V50s { get; set; } + [Tag("V52")] public IoValve V52 { get; set; } - [Tag("V51")] - public IoValve V51 { get; set; } + [Tag("V52s")] public IoValve V52s { get; set; } - [Tag("V51s")] - public IoValve V51s { get; set; } + [Tag("V53")] public IoValve V53 { get; set; } - [Tag("V52")] - public IoValve V52 { get; set; } + [Tag("V53s")] public IoValve V53s { get; set; } - [Tag("V52s")] - public IoValve V52s { get; set; } + [Tag("V54")] public IoValve V54 { get; set; } - [Tag("V53")] - public IoValve V53 { get; set; } + [Tag("V54s")] public IoValve V54s { get; set; } - [Tag("V53s")] - public IoValve V53s { get; set; } + [Tag("V55")] public IoValve V55 { get; set; } - [Tag("V54")] - public IoValve V54 { get; set; } + [Tag("V56")] public IoValve V56 { get; set; } - [Tag("V54s")] - public IoValve V54s { get; set; } + [Tag("V58")] public IoValve V58 { get; set; } - [Tag("V55")] - public IoValve V55 { get; set; } + [Tag("V58s")] public IoValve V58s { get; set; } - [Tag("V56")] - public IoValve V56 { get; set; } + [Tag("V59")] public IoValve V59 { get; set; } - [Tag("V58")] - public IoValve V58 { get; set; } + [Tag("V60")] public IoValve V60 { get; set; } - [Tag("V58s")] - public IoValve V58s { get; set; } + [Tag("V61")] public IoValve V61 { get; set; } - [Tag("V59")] - public IoValve V59 { get; set; } + [Tag("V62")] public IoValve V62 { get; set; } - [Tag("V60")] - public IoValve V60 { get; set; } + [Tag("V63")] public IoValve V63 { get; set; } - [Tag("V61")] - public IoValve V61 { get; set; } + //[Tag("V64")] + //public IoValve V64 { get; set; } - [Tag("V62")] - public IoValve V62 { get; set; } + //[Tag("V65")] + //public IoValve V65 { get; set; } - [Tag("V63")] - public IoValve V63 { get; set; } + [Tag("V68")] public IoValve V68 { get; set; } - [Tag("V64")] - public IoValve V64 { get; set; } + [Tag("V69")] public IoValve V69 { get; set; } - [Tag("V65")] - public IoValve V65 { get; set; } + [Tag("V70")] public IoValve V70 { get; set; } - [Tag("V68")] - public IoValve V68 { get; set; } + [Tag("V72")] public IoValve V72 { get; set; } - [Tag("V69")] - public IoValve V69 { get; set; } + [Tag("V73")] public IoValve V73 { get; set; } - [Tag("V70")] - public IoValve V70 { get; set; } + [Tag("V74")] public IoValve V74 { get; set; } - [Tag("V72")] - public IoValve V72 { get; set; } + [Tag("V75")] public IoValve V75 { get; set; } - [Tag("V73")] - public IoValve V73 { get; set; } + [Tag("V76")] public IoValve V76 { get; set; } + [Tag("V97")] public IoValve V97 { get; set; } - [Tag("V74")] - public IoValve V74 { get; set; } - - [Tag("V75")] - public IoValve V75 { get; set; } - - [Tag("V76")] - public IoValve V76 { get; set; } - - [Tag("V87")] - public IoValve V87 { get; set; } - - [Tag("V88")] - public IoValve V88 { get; set; } - - [Tag("V89")] - public IoValve V89 { get; set; } - - [Tag("V90")] - public IoValve V90 { get; set; } - - [Tag("V91")] - public IoValve V91 { get; set; } - - [Tag("V93")] - public IoValve V93 { get; set; } - - [Tag("V94")] - public IoValve V94 { get; set; } - - [Tag("V95")] - public IoValve V95 { get; set; } - - [Tag("V96")] - public IoValve V96 { get; set; } - - [Tag("V97")] - public IoValve V97 { get; set; } - - [Tag("EPV2")] - public IoValve EPV2 { get; set; } + [Tag("EPV2")] public IoValve EPV2 { get; set; } #endregion Valve #region MFC - [Tag("Mfc1")] - public IoMFC Mfc1 { get; set; } + [Tag("Mfc1")] public IoMFC Mfc1 { get; set; } - [Tag("Mfc2")] - public IoMFC Mfc2 { get; set; } + [Tag("Mfc2")] public IoMFC Mfc2 { get; set; } - [Tag("Mfc3")] - public IoMFC Mfc3 { get; set; } + [Tag("Mfc3")] public IoMFC Mfc3 { get; set; } - [Tag("Mfc4")] - public IoMFC Mfc4 { get; set; } + [Tag("Mfc4")] public IoMFC Mfc4 { get; set; } - [Tag("Mfc5")] - public IoMFC Mfc5 { get; set; } + [Tag("Mfc5")] public IoMFC Mfc5 { get; set; } - [Tag("Mfc6")] - public IoMFC Mfc6 { get; set; } + [Tag("Mfc6")] public IoMFC Mfc6 { get; set; } - [Tag("Mfc7")] - public IoMFC Mfc7 { get; set; } + [Tag("Mfc7")] public IoMFC Mfc7 { get; set; } - [Tag("Mfc8")] - public IoMFC Mfc8 { get; set; } + [Tag("Mfc8")] public IoMFC Mfc8 { get; set; } - [Tag("Mfc9")] - public IoMFC Mfc9 { get; set; } + [Tag("Mfc9")] public IoMFC Mfc9 { get; set; } - [Tag("Mfc10")] - public IoMFC Mfc10 { get; set; } + [Tag("Mfc10")] public IoMFC Mfc10 { get; set; } - [Tag("Mfc11")] - public IoMFC Mfc11 { get; set; } + [Tag("Mfc11")] public IoMFC Mfc11 { get; set; } - [Tag("Mfc12")] - public IoMFC Mfc12 { get; set; } + [Tag("Mfc12")] public IoMFC Mfc12 { get; set; } - [Tag("Mfc13")] - public IoMFC Mfc13 { get; set; } + [Tag("Mfc13")] public IoMFC Mfc13 { get; set; } - [Tag("Mfc14")] - public IoMFC Mfc14 { get; set; } + [Tag("Mfc14")] public IoMFC Mfc14 { get; set; } - [Tag("Mfc15")] - public IoMFC Mfc15 { get; set; } + [Tag("Mfc15")] public IoMFC Mfc15 { get; set; } - [Tag("Mfc16")] - public IoMFC Mfc16 { get; set; } + [Tag("Mfc16")] public IoMFC Mfc16 { get; set; } - [Tag("Mfc17")] - public IoMFC Mfc17 { get; set; } + [Tag("Mfc17")] public IoMFC Mfc17 { get; set; } - [Tag("Mfc19")] - public IoMFC Mfc19 { get; set; } + [Tag("Mfc18")] public IoMFC Mfc18 { get; set; } - [Tag("Mfc20")] - public IoMFC Mfc20 { get; set; } + [Tag("Mfc19")] public IoMFC Mfc19 { get; set; } - [Tag("Mfc22")] - public IoMFC Mfc22 { get; set; } + [Tag("Mfc20")] public IoMFC Mfc20 { get; set; } - [Tag("Mfc23")] - public IoMFC Mfc23 { get; set; } + [Tag("Mfc21")] public IoMFC Mfc21 { get; set; } - [Tag("Mfc25")] - public IoMFC Mfc25 { get; set; } + [Tag("Mfc22")] public IoMFC Mfc22 { get; set; } - [Tag("Mfc26")] - public IoMFC Mfc26 { get; set; } + [Tag("Mfc23")] public IoMFC Mfc23 { get; set; } - [Tag("Mfc27")] - public IoMFC Mfc27 { get; set; } + [Tag("Mfc25")] public IoMFC Mfc25 { get; set; } - [Tag("Mfc28")] - public IoMFC Mfc28 { get; set; } + [Tag("Mfc26")] public IoMFC Mfc26 { get; set; } - [Tag("Mfc29")] - public IoMFC Mfc29 { get; set; } + [Tag("Mfc27")] public IoMFC Mfc27 { get; set; } - [Tag("Mfc31")] - public IoMFC Mfc31 { get; set; } + [Tag("Mfc28")] public IoMFC Mfc28 { get; set; } - [Tag("Mfc33")] - public IoMFC Mfc33 { get; set; } + [Tag("Mfc29")] public IoMFC Mfc29 { get; set; } - [Tag("Mfc35")] - public IoMFC Mfc35 { get; set; } + [Tag("Mfc30")] public IoMFC Mfc30 { get; set; } - [Tag("Mfc36")] - public IoMFC Mfc36 { get; set; } + [Tag("Mfc40")] public IoMFC Mfc40 { get; set; } - [Tag("Mfc37")] - public IoMFC Mfc37 { get; set; } + [Tag("Mfc31")] public IoMFC Mfc31 { get; set; } - [Tag("Mfc38")] - public IoMFC Mfc38 { get; set; } + [Tag("Mfc32")] public IoMFC Mfc32 { get; set; } - [Tag("Mfc40")] - public IoMFC Mfc40 { get; set; } + [Tag("Mfc33")] public IoMFC Mfc33 { get; set; } - [Tag("Mfc41")] - public IoMFC Mfc41 { get; set; } + [Tag("Mfc35")] public IoMFC Mfc35 { get; set; } - [Tag("Mfc42")] - public IoMFC Mfc42 { get; set; } + [Tag("Mfc36")] public IoMFC Mfc36 { get; set; } - [Tag("Mfc43")] - public IoMFC Mfc43 { get; set; } + [Tag("Mfc37")] public IoMFC Mfc37 { get; set; } - [Tag("Mfc44")] - public IoMFC Mfc44 { get; set; } - - [Tag("Mfc45")] - public IoMFC Mfc45 { get; set; } + [Tag("Mfc38")] public IoMFC Mfc38 { get; set; } #endregion MFC #region Pressure - [Tag("Pressure1")] - public IoPressure Pressure1 { get; set; } + [Tag("Pressure1")] public IoPressure Pressure1 { get; set; } - [Tag("Pressure2")] - public IoPressure Pressure2 { get; set; } + [Tag("Pressure2")] public IoPressure Pressure2 { get; set; } - [Tag("Pressure3")] - public IoPressure Pressure3 { get; set; } + [Tag("Pressure3")] public IoPressure Pressure3 { get; set; } + [Tag("Pressure4")] public IoPressure Pressure4 { get; set; } - [Tag("Pressure4")] - public IoPressure Pressure4 { get; set; } + [Tag("Pressure5")] public IoPressure Pressure5 { get; set; } - [Tag("Pressure5")] - public IoPressure Pressure5 { get; set; } + [Tag("Pressure6")] public IoPressure Pressure6 { get; set; } - [Tag("Pressure6")] - public IoPressure Pressure6 { get; set; } + [Tag("Pressure7")] public IoPressure Pressure7 { get; set; } - [Tag("Pressure7")] - public IoPressure Pressure7 { get; set; } + [Tag("Pressure8")] public IoPressure Pressure8 { get; set; } - [Tag("PT1")] - public IoPressure PT1 { get; set; } + [Tag("Pressure9")] public IoPressure Pressure9 { get; set; } - [Tag("PT2")] - public IoPressure PT2 { get; set; } + [Tag("PT1")] public IoPressure PT1 { get; set; } + + [Tag("PT2")] public IoPressure PT2 { get; set; } #endregion Pressure @@ -412,14 +337,10 @@ namespace SicModules.PMs [Tag("SensorChamPressAboveATMSW")] public Aitex.Core.RT.Device.Devices.IoSensor SensorChamPressAboveATMSW { get; set; } - [Tag("SensorDORPressATMSW")] + [Tag("SensorDORPressATMSW")] public Aitex.Core.RT.Device.Devices.IoSensor SensorDORPressATMSW { get; set; } - [Tag("SensorPMATMSW")] - public Aitex.Core.RT.Device.Devices.IoSensor SensorPMATMSW { get; set; } - - //[Tag("CleanRoutineSucceed")] - //public Aitex.Core.RT.Device.Devices.DoSensor CleanRoutineSucceed { get; set; } + [Tag("SensorPMATMSW")] public Aitex.Core.RT.Device.Devices.IoSensor SensorPMATMSW { get; set; } [Tag("SensorSusceptorAtSafeSpeed")] public Aitex.Core.RT.Device.Devices.IoSensor SensorSusceptorAtSafeSpeed { get; set; } @@ -428,29 +349,27 @@ namespace SicModules.PMs #region ChamberMoveBody - [Tag("IoChamberMoveBodySicMultiple")] - public IoChamberMoveBody ChamberMoveBody { get; set; } + [Tag("ChamberMoveBody")] public IoChamberMoveBody ChamberMoveBody { get; set; } #endregion ChamberMoveBody #region SHLidSwing - [Tag("SHLidSwing")] - public IoLidSwing SHLidSwing { get; set; } + [Tag("SHLidSwing")] public IoLidSwing SHLidSwing { get; set; } + + [Tag("MiddleLidSwing")] public IoLidSwing MiddleLidSwing { get; set; } #endregion SHLidSwing #region ConfinementRing - [Tag("ConfinementRing")] - public IoConfinementRing ConfinementRing { get; set; } + [Tag("ConfinementRing")] public IoConfinementRing ConfinementRing { get; set; } #endregion ConfinementRing #region Pump - [Tag("Pump")] - public Aitex.Core.RT.Device.Devices.IoPump Pump { get; set; } + [Tag("Pump")] public Aitex.Core.RT.Device.Devices.IoPump Pump { get; set; } #endregion Pump @@ -469,32 +388,70 @@ namespace SicModules.PMs #region Heater - [Tag("TC1")] - public IoTC TC1 { get; set; } + [Tag("TC1")] public IoTC TC1 { get; set; } - [Tag("TC2")] - public IoTC TC2 { get; set; } + [Tag("TC2")] public IoTC TC2 { get; set; } - [Tag("PSU1")] - public IoPSU PSU1 { get; set; } + [Tag("PSU1")] public IoPSU PSU1 { get; set; } - [Tag("PSU2")] - public IoPSU PSU2 { get; set; } + [Tag("PSU2")] public IoPSU PSU2 { get; set; } - [Tag("PSU3")] - public IoPSU PSU3 { get; set; } + [Tag("PSU3")] public IoPSU PSU3 { get; set; } - [Tag("SCR1")] - public IoSCR SCR1 { get; set; } + [Tag("SCR1")] public IoSCR SCR1 { get; set; } - [Tag("SCR2")] - public IoSCR SCR2 { get; set; } + [Tag("SCR2")] public IoSCR SCR2 { get; set; } - [Tag("SCR3")] - public IoSCR SCR3 { get; set; } + [Tag("SCR3")] public IoSCR SCR3 { get; set; } #endregion Heater + #region CoolingWater + + [Tag("FlowTemp1")] + public IoSensorWaterFlowTemp CoolingWaterTemp1 { get; set; } + + [Tag("FlowTemp2")] + public IoSensorWaterFlowTemp CoolingWaterTemp2 { get; set; } + + [Tag("FlowTemp3")] + public IoSensorWaterFlowTemp CoolingWaterTemp3 { get; set; } + + [Tag("FlowTemp4")] + public IoSensorWaterFlowTemp CoolingWaterTemp4 { get; set; } + + [Tag("FlowTemp5")] + public IoSensorWaterFlowTemp CoolingWaterTemp5 { get; set; } + + [Tag("FlowTemp6")] + public IoSensorWaterFlowTemp CoolingWaterTemp6 { get; set; } + + [Tag("FlowTemp7")] + public IoSensorWaterFlowTemp CoolingWaterTemp7 { get; set; } + + [Tag("FlowTemp8")] + public IoSensorWaterFlowTemp CoolingWaterTemp8 { get; set; } + + [Tag("FlowTemp9")] + public IoSensorWaterFlowTemp CoolingWaterTemp9 { get; set; } + + [Tag("FlowTemp10")] + public IoSensorWaterFlowTemp CoolingWaterTemp10 { get; set; } + + [Tag("FlowTemp11")] + public IoSensorWaterFlowTemp CoolingWaterTemp11 { get; set; } + + [Tag("FlowTemp12")] + public IoSensorWaterFlowTemp CoolingWaterTemp12 { get; set; } + + [Tag("FlowTemp13")] + public IoSensorWaterFlowTemp CoolingWaterTemp13 { get; set; } + + [Tag("FlowTemp14")] + public IoSensorWaterFlowTemp CoolingWaterTemp14 { get; set; } + + #endregion CoolingWater + private Func _hasTagAttribute; private Func _isTagAttribute; @@ -506,6 +463,7 @@ namespace SicModules.PMs { return PT1.FeedBack; } + return 0; } } @@ -516,13 +474,13 @@ namespace SicModules.PMs private List _mfc = new List() { - "Mfc1", "Mfc2", "Mfc3", "Mfc4", "Mfc5", "Mfc6", "Mfc7", "Mfc8","Mfc9", - "Mfc10", "Mfc11", "Mfc12", "Mfc13", "Mfc14", "Mfc15", "Mfc16","Mfc17","Mfc19", - "Mfc20","Mfc22", "Mfc23", "Mfc26", "Mfc27", "Mfc28", "Mfc29", - "Mfc31", "Mfc33", "Mfc34", "Mfc35", "Mfc36", "Mfc37", "Mfc38","Mfc31", - "Mfc40", "Mfc41", "Mfc42", "Mfc43", "Mfc44", "Mfc45"}; + "Mfc1", "Mfc2", "Mfc3", "Mfc4", "Mfc5", "Mfc6", "Mfc7", "Mfc8", + "Mfc9", "Mfc10", "Mfc11", "Mfc12", "Mfc13", "Mfc14", "Mfc15", "Mfc16","Mfc17","Mfc18", + "Mfc19", "Mfc20","Mfc21", "Mfc22", "Mfc23", "Mfc26", "Mfc27", "Mfc28", "Mfc29","Mfc30", + "Mfc31", "Mfc32", "Mfc33", "Mfc34", "Mfc35", "Mfc36", "Mfc37", "Mfc38" + }; - private List _lstPcList = new List { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + private List _lstPcList = new List { 1, 2, 3, 4, 5, 6, 7, 8, 9}; public List _mfcList { @@ -538,7 +496,6 @@ namespace SicModules.PMs list.Add(Mfc7); list.Add(Mfc8); list.Add(Mfc9); - list.Add(Mfc10); list.Add(Mfc11); list.Add(Mfc12); @@ -547,8 +504,10 @@ namespace SicModules.PMs list.Add(Mfc15); list.Add(Mfc16); list.Add(Mfc17); + list.Add(Mfc18); list.Add(Mfc19); list.Add(Mfc20); + list.Add(Mfc21); list.Add(Mfc22); list.Add(Mfc23); list.Add(Mfc25); @@ -556,21 +515,15 @@ namespace SicModules.PMs list.Add(Mfc27); list.Add(Mfc28); list.Add(Mfc29); - + list.Add(Mfc30); list.Add(Mfc31); + list.Add(Mfc32); list.Add(Mfc33); list.Add(Mfc35); list.Add(Mfc36); list.Add(Mfc37); list.Add(Mfc38); - list.Add(Mfc40); - list.Add(Mfc41); - list.Add(Mfc42); - list.Add(Mfc43); - list.Add(Mfc44); - list.Add(Mfc45); - return list; } } @@ -587,24 +540,28 @@ namespace SicModules.PMs list.Add(Pressure5); list.Add(Pressure6); list.Add(Pressure7); - + list.Add(Pressure8); + list.Add(Pressure9); return list; } } public void InitDevice() { - if (SC.GetValue("System.IsSimulatorMode")) + if (IsInstalled) { - Plc = DEVICE.GetOptionDevice($"{Module}.MainPLC", typeof(WcfPlc)) as IAdsPlc; + if (SC.GetValue("System.IsSimulatorMode")) + { + Plc = DEVICE.GetOptionDevice($"{Module}.MainPLC", typeof(WcfPlc)) as IAdsPlc; - (Plc as WcfPlc).Initialize(); - } - else - { - Plc = DEVICE.GetOptionDevice($"{Module}.MainPLC", typeof(SicAds)) as IAdsPlc; + (Plc as WcfPlc).Initialize(); + } + else + { + Plc = DEVICE.GetOptionDevice($"{Module}.MainPLC", typeof(SicAds)) as IAdsPlc; - (Plc as SicAds).Initialize(); + (Plc as SicAds).Initialize(); + } } if (Plc != null) @@ -675,8 +632,10 @@ namespace SicModules.PMs SetIOValueByGroup(IoGroupName.K, false); SetIOValueByGroup(IoGroupName.A, true); - SetMfcToDefaultByGroupRamp(MfcGroupName.M1to16, SC.GetConfigItem($"PM.{Module}.ProcessIdle.MFC1to16RampTime").IntValue); - SetMfcToDefaultByGroupRamp(MfcGroupName.M2toM45, SC.GetConfigItem($"PM.{Module}.ProcessIdle.MFC19to40RampTime").IntValue); + SetMfcToDefaultByGroupRamp(MfcGroupName.M1to16, + SC.GetConfigItem($"PM.{Module}.ProcessIdle.MFC1to16RampTime").IntValue); + SetMfcToDefaultByGroupRamp(MfcGroupName.M2toM42, + SC.GetConfigItem($"PM.{Module}.ProcessIdle.MFC19to40RampTime").IntValue); } private void PlcDisconnected() @@ -753,19 +712,23 @@ namespace SicModules.PMs { if (SC.GetValue("System.IsATMMode")) { - return true; + return GetChamberPressure() > SC.GetConfigItem($"PM.{Module}.Vent.VentBasePressure").DoubleValue; } else if (SC.GetConfigItem("TM.NeedPressureBalance").BoolValue) { - if (Math.Abs(SC.GetConfigItem("TM.PressureBalance.BalancePressure").DoubleValue - GetChamberPressure()) > SC.GetConfigItem("TM.PressureBalance.BalanceMaxDiffPressure").DoubleValue) + if (Math.Abs(SC.GetConfigItem("TM.PressureBalance.BalancePressure").DoubleValue - + GetChamberPressure()) > SC.GetConfigItem("TM.PressureBalance.BalanceMaxDiffPressure") + .DoubleValue) { return false; } } + return true; } - public override bool PrepareTransfer(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType, out string reason) + public override bool PrepareTransfer(ModuleName robot, Hand blade, int targetSlot, + EnumTransferType transferType, out string reason) { reason = string.Empty; return true; @@ -854,7 +817,7 @@ namespace SicModules.PMs public override bool TurnOnPump(out string reason) { reason = string.Empty; - return false;//MainPump.SetPump(out reason, 0, true); + return false; //MainPump.SetPump(out reason, 0, true); } public override bool ShutDownPump(out string reason) @@ -865,7 +828,7 @@ namespace SicModules.PMs public override bool CheckPumpIsOn() { - return Pump.DryPump1Running;//MainPump.IsRunning; + return Pump.DryPump1Running; //MainPump.IsRunning; } public override bool SlowPump(int tvPosition, out string reason) @@ -984,14 +947,7 @@ namespace SicModules.PMs public override bool CheckSlitValveClose() { - if (Module == ModuleName.PM1.ToString()) - { - return DEVICE.GetDevice("TM.SensorReactorADoorClosed").Value; - } - else - { - return DEVICE.GetDevice("TM.SensorReactorBDoorClosed").Value; - } + return false; //ChamberDoor.IsClose; } /// @@ -1002,7 +958,7 @@ namespace SicModules.PMs public List GetIoListByGroupName(IoGroupName eGroupName) { List lst = new List(); - if (eGroupName == IoGroupName.V72) + if (eGroupName == IoGroupName.VentPump) { lst = new List() { "V72" }; } @@ -1010,6 +966,10 @@ namespace SicModules.PMs { lst = new List() { "V32", "V35", "V36" }; } + else if (eGroupName == IoGroupName.V34) + { + lst = new List() { "V34"}; + } else if (eGroupName == IoGroupName.V35V36) { lst = new List() { "V35", "V36" }; @@ -1018,10 +978,6 @@ namespace SicModules.PMs { lst = new List() { "V31", "V32", "V35", "V36" }; } - else if (eGroupName == IoGroupName.V30) - { - lst = new List() { "V30" }; - } else if (eGroupName == IoGroupName.V31) { lst = new List() { "V31" }; @@ -1032,11 +988,11 @@ namespace SicModules.PMs } else if (eGroupName == IoGroupName.A) { - lst = new List() { "V33s", "V65", "V68" }; + lst = new List() { "V33s" }; } else if (eGroupName == IoGroupName.B) { - lst = new List() { "V33", "V64" }; + lst = new List() { "V33" }; } else if (eGroupName == IoGroupName.C) { @@ -1052,11 +1008,11 @@ namespace SicModules.PMs } else if (eGroupName == IoGroupName.F) { - lst = new List() { "V39", "V40", "V41", "V53", "V54", "V59" }; + lst = new List() { "V39", "V40", "V41", "V53", "V54", "V55", "V59", "V47" }; } else if (eGroupName == IoGroupName.G) { - lst = new List() { "V42", "V60" }; + lst = new List() { "V42", "V56", "V60", "V47s" }; } else if (eGroupName == IoGroupName.H) { @@ -1064,11 +1020,12 @@ namespace SicModules.PMs } else if (eGroupName == IoGroupName.I) { - lst = new List() { "V87", "V88", "V89", "V90", "V91", "V93", "V94", "V95", "V96", "V97" }; + lst = new List() + { "V87", "V88", "V89", "V97", "V90", "V91", "V92", "V93", "V94", "V95", "V96" }; } else if (eGroupName == IoGroupName.J) { - lst = new List() { "V61", "V62", "V63" }; + lst = new List() { "V57", "V61", "V62", "V63" }; } else if (eGroupName == IoGroupName.K) { @@ -1076,36 +1033,28 @@ namespace SicModules.PMs } else if (eGroupName == IoGroupName.Final1) { - lst = new List() { "V93", "V94", "V95", "V96" }; - } - else if (eGroupName == IoGroupName.V93V95) - { - lst = new List() { "V93", "V95" }; - } - else if (eGroupName == IoGroupName.V92V93V95) - { - lst = new List() { "V92", "V93", "V95" }; + lst = new List() { "V92", "V93", "V94", "V95", "V96" }; } else if (eGroupName == IoGroupName.Final1WithOutV94) { - lst = new List() { "V93", "V95", "V96" }; + lst = new List() { "V92", "V93", "V95", "V96" }; } else if (eGroupName == IoGroupName.Final2) { - lst = new List() { "V87", "V88", "V89", "V90", "V91", "V97" }; + lst = new List() { "V87", "V88", "V97", "V90", "V89", "V91" }; } - else if (eGroupName == IoGroupName.V68) + else if (eGroupName == IoGroupName.GasIn1) { lst = new List { "V68" }; } + else if (eGroupName == IoGroupName.GasIn2) + { + lst = new List { "V33s", "V35", "V36" }; + } else if (eGroupName == IoGroupName.EPV2) { lst = new List { "EPV2" }; } - else if (eGroupName == IoGroupName.V111) - { - lst = new List { "V111" }; - } else if (eGroupName == IoGroupName.V27) { lst = new List { "V27" }; @@ -1134,38 +1083,59 @@ namespace SicModules.PMs { lst = new List { "V65" }; } + else if (eGroupName == IoGroupName.V68) + { + lst = new List { "V68" }; + } else if (eGroupName == IoGroupName.V94) { lst = new List { "V94" }; } - else if (eGroupName == IoGroupName.V93V94V95) + else if (eGroupName == IoGroupName.V92V93V95) { - lst = new List { "V93", "V94", "V95" }; + lst = new List { "V92", "V93", "V95" }; } - else if (eGroupName == IoGroupName.V93V95) + else if (eGroupName == IoGroupName.V87V97) { - lst = new List { "V93", "V95" }; + lst = new List { "V87","V97" }; } else if (eGroupName == IoGroupName.V96) { lst = new List { "V96" }; } - else if (eGroupName == IoGroupName.V97V87) + else if (eGroupName == IoGroupName.V100) { - lst = new List() { "V97", "V87" }; + lst = new List { "V100" }; + } + else if (eGroupName == IoGroupName.V103) + { + lst = new List { "V103" }; + } + else if (eGroupName == IoGroupName.V105) + { + lst = new List { "V105" }; + } + else if (eGroupName == IoGroupName.V111) + { + lst = new List { "V111" }; } else if (eGroupName == IoGroupName.GroupIWithoutV94) { - lst = new List { "V87", "V88", "V89", "V97", "V90", "V91", "V93", "V95", "V96" }; + lst = new List { "V87", "V88", "V89", "V97", "V90", "V91", "V92", "V93", "V95", "V96" }; } else if (eGroupName == IoGroupName.All) { - lst = new List { "V32","V33", - "V48","V49","V50","V45","V43","V46","V37s", - "V39", "V40", "V41", "V51", "V52","V53","V54","V55","V58","V59","V60","V61", - "V62", "V63", "V87", "V88","V89", "V97", "V90","V91","V93","V94","V95","V96","V97","V75","V76", - "V27", "V69", "V72", "V73", "V74"}; + lst = new List + { + "V32", "V33", + "V48", "V49", "V50", "V45", "V43", "V46", "V37s", + "V39", "V40", "V41", "V51", "V52", "V53", "V54", "V55", "V58", "V59", "V60", "V61", + "V62", "V63", "V87", "V88", "V89", "V97", "V90", "V91", "V92", "V93", "V94", "V95", "V96", "V97", + "V75", "V76", + "V27", "V69", "V72", "V73", "V74" + }; } + return lst; } @@ -1183,19 +1153,35 @@ namespace SicModules.PMs } else if (mGroupName == MfcGroupName.Final2) { - lst = new List() { 27, 28, 29, 31, 33, 40, 41, 42 }; + lst = new List() { 27, 28, 29, 40, 33, 32, 31 }; } else if (mGroupName == MfcGroupName.M1to16) { - lst = new List() { 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16 }; + lst = new List() { 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 30 };//新增 30 } - else if (mGroupName == MfcGroupName.M2M9M15_M19toM26) + else if (mGroupName == MfcGroupName.M5M21) { - lst = new List() { 2, 9, 15, 19, 20, 22, 23, 25, 26 }; + lst = new List() { 5,21 }; } - else if (mGroupName == MfcGroupName.M2toM45) + else if (mGroupName == MfcGroupName.M17) { - lst = new List() { 2, 9, 15, 17, 19, 20, 22, 23, 25, 26, 27, 28, 29, 31, 33, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45 }; + lst = new List() { 17 }; + } + else if (mGroupName == MfcGroupName.M18) + { + lst = new List() { 18 }; + } + else if (mGroupName == MfcGroupName.M17M18) + { + lst = new List() { 17, 18 }; + } + else if (mGroupName == MfcGroupName.M21) + { + lst = new List() { 21 }; + } + else if (mGroupName == MfcGroupName.M2toM42) + { + lst = new List() { 2, 9, 15, 19, 20, 22, 23, 25, 26, 27, 28, 29, 31, 32, 33, 35, 36, 37, 38, 40, 41, 42 }; } else if (mGroupName == MfcGroupName.M2toM40NoFinal1MFC) { @@ -1205,30 +1191,30 @@ namespace SicModules.PMs { lst = new List() { 27, 28, 29, 40, 31, 32, 33, 35, 36, 37, 38 }; } - else if (mGroupName == MfcGroupName.M2toM26M43M44M45) - { - lst = new List() { 2, 15, 9, 17, 19, 20, 22, 23, 25, 26, 43, 44, 45 }; - } else if (mGroupName == MfcGroupName.M2toM26) { - lst = new List() { 2, 9, 15, 19, 20, 22, 23, 25, 26 }; + lst = new List() { 19, 20, 22, 23, 25, 26, 2, 15, 9 }; } else if (mGroupName == MfcGroupName.M19toM26) { lst = new List() { 19, 20, 21, 22, 23, 24, 25, 26 }; } - else if (mGroupName == MfcGroupName.M27toM45) + else if (mGroupName == MfcGroupName.M27toM40) { - lst = new List() { 27, 28, 29, 31, 33, 32, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45 }; + lst = new List() { 27, 28, 29, 31, 33, 32, 35, 36, 37, 38, 40 }; } - else if (mGroupName == MfcGroupName.M27To3540To42) + else if (mGroupName == MfcGroupName.M28293140) { - lst = new List() { 27, 28, 29, 31, 35, 40, 41, 42 }; + lst = new List() { 28, 29, 31, 40 }; } else if (mGroupName == MfcGroupName.M19toM33) { lst = new List() { 19, 20, 22, 23, 25, 26, 27, 28, 29, 40, 31, 32, 33, 2, 15, 9 }; } + else if (mGroupName == MfcGroupName.M32toM38) + { + lst = new List() { 35, 36, 37, 38 }; + } else if (mGroupName == MfcGroupName.M36) { lst = new List() { 36 }; @@ -1237,17 +1223,25 @@ namespace SicModules.PMs { lst = new List() { 38 }; } - else if (mGroupName == MfcGroupName.M35M37) + else if (mGroupName == MfcGroupName.M32M35M37) { - lst = new List() { 35, 37 }; + lst = new List() { 32, 35, 37 }; } - else if (mGroupName == MfcGroupName.M35M36M37M38) + else if (mGroupName == MfcGroupName.AllWithoutM28M29M31M40) { - lst = new List() { 35, 36, 37, 38 }; + lst = new List() + { + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 22, 23, 25, 26, 27, 32, 33, 35, 36, + 37, 38 + }; } else if (mGroupName == MfcGroupName.All) { - lst = new List() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 25, 26, 27, 28, 29, 31, 33, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45 }; + lst = new List() + { + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 35, 36, 37, 38, 40, 41, 42 + }; } return lst; @@ -1413,7 +1407,8 @@ namespace SicModules.PMs /// /// /// - public bool SetMFC28to40Special(double mfc28Flow, double mfc29Flow, double mfc31Flow, double mfc40Flow, int rampTime) + public bool SetMFC28to40Special(double mfc28Flow, double mfc29Flow, double mfc31Flow, double mfc40Flow, + int rampTime) { IoMFC device28 = (IoMFC)DEVICE.GetDevice($"{Module}.Mfc28"); IoMFC device29 = (IoMFC)DEVICE.GetDevice($"{Module}.Mfc29"); @@ -1503,6 +1498,7 @@ namespace SicModules.PMs time = 0; return; } + if (!Int32.TryParse(mfcDetail[1], out time)) { time = 0; @@ -1511,7 +1507,8 @@ namespace SicModules.PMs } } catch (Exception) - { } + { + } } /// @@ -1867,18 +1864,7 @@ namespace SicModules.PMs return SetMfcPurgeValue(lst, configName, time); } - public bool SetServoEnable() - { - if (_sicServo != null) - { - if (_sicServo.ServoEnable == false) - _sicServo.SetServoEnable(true, out _); - return true; - } - return false; - } - - // + /// /// 设置旋转电机速度(停止) /// /// @@ -1920,6 +1906,7 @@ namespace SicModules.PMs } } } + return false; } @@ -1946,6 +1933,7 @@ namespace SicModules.PMs return true; } + return false; } @@ -1980,6 +1968,7 @@ namespace SicModules.PMs return true; } + return false; } @@ -1994,6 +1983,7 @@ namespace SicModules.PMs { return PSU1.AllHeatEnable == enable; } + return false; } @@ -2009,6 +1999,7 @@ namespace SicModules.PMs SCR2.SetReset(true, out reason); SCR3.SetReset(true, out reason); } + return true; } @@ -2036,6 +2027,7 @@ namespace SicModules.PMs SCR3.SetEnable(enable, out reason); return true; } + return false; } @@ -2071,6 +2063,7 @@ namespace SicModules.PMs return true; } + return false; } @@ -2084,6 +2077,7 @@ namespace SicModules.PMs { return PT1.FeedBack; } + return 0; } @@ -2109,9 +2103,9 @@ namespace SicModules.PMs { ChamberMoveBody.FuncCheckSwingUnlock = () => { - if (SHLidSwing != null) + if (SHLidSwing != null && MiddleLidSwing != null) { - return SHLidSwing.LidUnlockFaceback; + return SHLidSwing.LidUnlockFaceback || MiddleLidSwing.LidUnlockFaceback; } else { @@ -2123,48 +2117,57 @@ namespace SicModules.PMs { if (setValue) { - if (_pmInterLock != null && SensorPMATMSW != null && SensorDORPressATMSW != null && _sicServo != null) + if (_pmInterLock != null && SensorPMATMSW != null && SensorDORPressATMSW != null && + _sicServo != null) { if (!CheckIOValueByGroup(IoGroupName.H, false)) { EV.PostWarningLog(Module, "Condition:V51,V52,V58,V37s should be Closed "); return false; } + if (!CheckIOValueByGroup(IoGroupName.F, false)) { EV.PostWarningLog(Module, "Condition:V39,V40,V41,V53,V54,V55,V59 should be Closed "); return false; } + if (!_pmInterLock.DoLidOpenRoutineSucceed) { EV.PostWarningLog(Module, "Condition:Purge Routine Succeed DO-172"); return false; } + if (SensorPMATMSW.Value) { EV.PostWarningLog(Module, "Condition:DI-9 Chamber At ATM !"); return false; } - if (SensorDORPressATMSW.Value) + + if (!SensorDORPressATMSW.Value) { EV.PostWarningLog(Module, "Condition:DI-7 Dor Press At ATM !"); return false; } + if (!IsServiceMode) { EV.PostWarningLog(Module, "Condition:ServiceMode"); return false; } + if (_sicServo.ActualSpeedFeedback > 0) { EV.PostWarningLog(Module, "Condition:Rotation stopped AI-118"); return false; } + if (!SensorSusceptorAtSafeSpeed.Value) //DI-13 { EV.PostWarningLog(Module, "Condition:DI-13 Susceptor Not At Safe Speed"); return false; } + if (PSU1.AllHeatEnable) { EV.PostWarningLog(Module, "Condition:PSU should be Disable"); @@ -2178,13 +2181,14 @@ namespace SicModules.PMs return false; } } + return true; }; } //Chamber #region Enable Table中起保护作用的内容 - ////4.C (MO Line valve)(DO13 V43 常闭)(DO18 V48 常闭) {V43s,V48s同步增加条件} + //4.C (MO Line valve)(DO13 V43 常闭)(DO18 V48 常闭) {V43s,V48s同步增加条件} if (V43 != null) { V43.FuncCheckInterLock = (setValue) => @@ -2195,7 +2199,8 @@ namespace SicModules.PMs { if (!(_pmInterLock.DoExchangeMoRoutineRunning || _pmInterLock.DoLidCloseRoutineSucceed)) { - EV.PostWarningLog(Module, "Condition:ExchangeMo routine running or Clean routine finished!"); + EV.PostWarningLog(Module, + "Condition:ExchangeMo routine running or Clean routine finished!"); return false; } } @@ -2205,12 +2210,13 @@ namespace SicModules.PMs } // H2 Supply must be opened (V31, V33) - if (!V31.Status || !V33.Status) - { - EV.PostWarningLog(Module, "Due to H2 supply is closed, can not turn V43 on."); - return false; - } + //if (!V31.Status || !V33.Status) 2025-07-15,按照洪膺要求屏蔽 + //{ + // EV.PostWarningLog(Module, "Due to H2 supply is closed, can not turn V43 on."); + // return false; + //} } + return true; }; @@ -2228,9 +2234,11 @@ namespace SicModules.PMs return false; } } + return false; }; } + if (V43s != null) { V43s.FuncCheckInterLock = (setValue) => @@ -2241,7 +2249,8 @@ namespace SicModules.PMs { if (!(_pmInterLock.DoExchangeMoRoutineRunning || _pmInterLock.DoLidCloseRoutineSucceed)) { - EV.PostWarningLog(Module, "Condition:ExchangeMo routine running or Clean routine finished!"); + EV.PostWarningLog(Module, + "Condition:ExchangeMo routine running or Clean routine finished!"); return false; } } @@ -2250,9 +2259,11 @@ namespace SicModules.PMs return false; } } + return true; }; } + if (V48 != null) { V48.FuncCheckInterLock = (setValue) => @@ -2263,7 +2274,8 @@ namespace SicModules.PMs { if (!(_pmInterLock.DoExchangeMoRoutineRunning || _pmInterLock.DoLidCloseRoutineSucceed)) { - EV.PostWarningLog(Module, "Condition:ExchangeMo routine running or Clean routine finished!"); + EV.PostWarningLog(Module, + "Condition:ExchangeMo routine running or Clean routine finished!"); return false; } } @@ -2279,6 +2291,7 @@ namespace SicModules.PMs return false; } } + return true; }; @@ -2292,9 +2305,11 @@ namespace SicModules.PMs return true; } } + return false; }; } + if (V48s != null) { V48s.FuncCheckInterLock = (setValue) => @@ -2305,7 +2320,8 @@ namespace SicModules.PMs { if (!(_pmInterLock.DoExchangeMoRoutineRunning || _pmInterLock.DoLidCloseRoutineSucceed)) { - EV.PostWarningLog(Module, "Condition:ExchangeMo routine running or Clean routine finished!"); + EV.PostWarningLog(Module, + "Condition:ExchangeMo routine running or Clean routine finished!"); return false; } } @@ -2314,6 +2330,7 @@ namespace SicModules.PMs return false; } } + return true; }; } @@ -2333,6 +2350,7 @@ namespace SicModules.PMs return false; } } + return true; } else @@ -2356,6 +2374,7 @@ namespace SicModules.PMs // EV.PostWarningLog(Module, "Condition:EPV2 should be open!"); // return false; // } + // if (!_ioThrottleValve.TVValveEnable) // { // EV.PostWarningLog(Module, "Condition:TV should be enable!"); @@ -2367,6 +2386,7 @@ namespace SicModules.PMs // return false; // } // } + // return true; // }; @@ -2388,6 +2408,7 @@ namespace SicModules.PMs // return false; // } // } + // return false; // }; //} @@ -2406,11 +2427,13 @@ namespace SicModules.PMs // EV.PostWarningLog(Module, "Condition:V43 should be closed"); // return false; // } + // if (!IsServiceMode) // { // EV.PostWarningLog(Module, "Condition:PM should in service mode"); // return false; // } + // if (!(V73.Status || !_pmInterLock.DoExchangeMoRoutineRunning)) // { // EV.PostWarningLog(Module, "Condition:V73 is open or Not ExchangeMo routine running "); @@ -2423,30 +2446,34 @@ namespace SicModules.PMs // return false; // } // } + // return true; // }; // //返回True,表明条件满足,强制关阀 - // //V46.FuncForceOpen = (curStatue) => - // //{ - // // if (curStatue) - // // { - // // //满足条件,强制执行 - // // if (V73 != null && V43 != null && _pmInterLock != null) - // // { - // // if (V43.Status || !IsServiceMode || (!(V73.Status || !_pmInterLock.DoExchangeMoRoutineRunning))) - // // { - // // return true; - // // } - // // } - // // else - // // { - // // return false; - // // } - // // } - // // return false; - // //}; + // V46.FuncForceOpen = (curStatue) => + // { + // if (curStatue) + // { + // //满足条件,强制执行 + // if (V73 != null && V43 != null && _pmInterLock != null) + // { + // if (V43.Status || !IsServiceMode || + // (!(V73.Status || !_pmInterLock.DoExchangeMoRoutineRunning))) + // { + // return true; + // } + // } + // else + // { + // return false; + // } + // } + + // return false; + // }; //} + //if (V46s != null) //{ // V46s.FuncCheckInterLock = (setValue) => @@ -2460,11 +2487,13 @@ namespace SicModules.PMs // EV.PostWarningLog(Module, "Condition:V43 should be closed"); // return false; // } + // if (!IsServiceMode) // { // EV.PostWarningLog(Module, "Condition:PM should in service mode"); // return false; // } + // if (!(V73.Status || !_pmInterLock.DoExchangeMoRoutineRunning)) // { // EV.PostWarningLog(Module, "Condition:V73 is open or Not ExchangeMo routine running "); @@ -2477,9 +2506,11 @@ namespace SicModules.PMs // return false; // } // } + // return true; // }; //} + //if (V50 != null) //{ // V50.FuncCheckInterLock = (setValue) => @@ -2493,11 +2524,13 @@ namespace SicModules.PMs // EV.PostWarningLog(Module, "Condition:V48 should be closed"); // return false; // } + // if (!IsServiceMode) // { // EV.PostWarningLog(Module, "Condition:PM should in service mode"); // return false; // } + // if (!(V73.Status || !_pmInterLock.DoExchangeMoRoutineRunning)) // { // EV.PostWarningLog(Module, "Condition:V73 be open or Not ExchangeMo routine running "); @@ -2510,30 +2543,35 @@ namespace SicModules.PMs // return false; // } // } + // return true; // }; // //返回True,表明条件满足,强制关阀 - // //V50.FuncForceOpen = (curStatue) => - // //{ - // // if (curStatue) - // // { - // // //满足条件,强制执行 - // // if (V73 != null && V48 != null && _pmInterLock != null) - // // { - // // if (V48.Status || !IsServiceMode || (!(V73.Status || !_pmInterLock.DoExchangeMoRoutineRunning))) - // // { - // // return true; - // // } - // // } - // // else - // // { - // // return false; - // // } - // // } - // // return false; - // //}; + // V50.FuncForceOpen = (curStatue) => + // { + // if (curStatue) + // { + // //满足条件,强制执行 + // if (V73 != null && V48 != null && _pmInterLock != null) + // { + // if (V48.Status || !IsServiceMode || + // (!(V73.Status || !_pmInterLock.DoExchangeMoRoutineRunning))) + // { + // return true; + // } + // } + // else + // { + // return false; + // } + // } + + // return false; + // }; + //} + //if (V50s != null) //{ // V50s.FuncCheckInterLock = (setValue) => @@ -2547,11 +2585,13 @@ namespace SicModules.PMs // EV.PostWarningLog(Module, "Condition:V48 should be closed"); // return false; // } + // if (!IsServiceMode) // { // EV.PostWarningLog(Module, "Condition:PM should in service mode"); // return false; // } + // if (!(V73.Status || !_pmInterLock.DoExchangeMoRoutineRunning)) // { // EV.PostWarningLog(Module, "Condition:V73 be open or Not ExchangeMo routine running "); @@ -2564,6 +2604,7 @@ namespace SicModules.PMs // return false; // } // } + // return true; // }; //} @@ -2590,26 +2631,26 @@ namespace SicModules.PMs // return true; // }; - // //返回True,表明条件满足,强制关阀 - // V64.FuncForceOpen = (curStatue) => - // { - // if (curStatue) - // { - // //满足条件,强制执行 - // if (PT1 != null) - // { - // if (PT1.FeedBack > SC.GetValue($"PM.{Module}.PressureForV27ForceClose") && !IsServiceMode) //if (!IsServiceMode && SensorPMATMSW.Value) - // { - // return true; - // } - // } - // else - // { - // return false; - // } - // } - // return false; - // }; + // ////返回True,表明条件满足,强制关阀 + // //V64.FuncForceOpen = (curStatue) => + // //{ + // // if (curStatue) + // // { + // // //满足条件,强制执行 + // // if (PT1 != null) + // // { + // // if (PT1.FeedBack > SC.GetValue($"PM.{Module}.PressureForV27ForceClose") && !IsServiceMode) //if (!IsServiceMode && SensorPMATMSW.Value) + // // { + // // return true; + // // } + // // } + // // else + // // { + // // return false; + // // } + // // } + // // return false; + // //}; //} ////Lid Ar Purge (DO36 V65常开)[V64常闭] @@ -2680,6 +2721,7 @@ namespace SicModules.PMs // return false; // } // } + // return true; // }; @@ -2701,11 +2743,12 @@ namespace SicModules.PMs // return false; // } // } + // return false; // }; //} - //15.DOR Refill (DO49 V76常闭) + ////15.DOR Refill (DO49 V76常闭) //if (V76 != null) //{ // V76.FuncCheckInterLock = (setValue) => @@ -2719,11 +2762,13 @@ namespace SicModules.PMs // EV.PostWarningLog(Module, "Condition:DI-4 PM AT ATM "); // return false; // } + // if (!_pmInterLock.DoLidOpenRoutineSucceed) // { // EV.PostWarningLog(Module, "Condition:Purge Routine Succeed should be on "); // return false; // } + // if (V75.Status) // { // EV.PostWarningLog(Module, "Condition:V75 should be Closed!"); @@ -2736,6 +2781,7 @@ namespace SicModules.PMs // return false; // } // } + // return true; // }; @@ -2752,6 +2798,7 @@ namespace SicModules.PMs // return true; // } // } + // //V76和V75只能开一个 // if (V75 != null) // { @@ -2765,6 +2812,7 @@ namespace SicModules.PMs // return false; // } // } + // return false; // }; //} @@ -2773,63 +2821,67 @@ namespace SicModules.PMs if (V27 != null) { //返回False,表明条件不满足,限制住不开阀 - //V27.FuncCheckInterLock = (setValue) => - //{ - // if (setValue) - // { - // if (PT1 != null) - // { - // if (PT1.FeedBack <= SC.GetValue($"PM.{Module}.PressureForV27ForceClose")) - // { - // EV.PostWarningLog(Module, $"Condition:Chamber Pressure should larger than {SC.GetValue($"PM.{Module}.PressureForV27ForceClose")}mabr"); - // return false; - // } - // } - // else - // { - // EV.PostWarningLog(Module, "Condition:SensorPMATMSW is not null"); - // return false; - // } - // } - // return true; - //}; + V27.FuncCheckInterLock = (setValue) => + { + if (setValue) + { + if (PT1 != null) + { + if (PT1.FeedBack <= SC.GetValue($"PM.{Module}.PressureForV27ForceClose")) + { + EV.PostWarningLog(Module, + $"Condition:Chamber Pressure should larger than {SC.GetValue($"PM.{Module}.PressureForV27ForceClose")}mabr"); + return false; + } + } + else + { + EV.PostWarningLog(Module, "Condition:SensorPMATMSW is not null"); + return false; + } + } + + return true; + }; //返回True,表明条件满足,强制开阀 - //V27.FuncForceOpen = (curStatue) => - //{ - // if (!curStatue) - // { - // //满足条件,强制执行 - // if (SensorChamPressAboveATMSW != null && PT1 != null) - // { - // if (!SensorChamPressAboveATMSW.Value || PT1.FeedBack > SC.GetValue($"PM.{Module}.PressureForV27ForceOpen")) - // { - // return true; - // } - // } - // else - // { - // return false; - // } - // } - // if (curStatue) - // { - // //满足条件,强制执行 - // if (PT1 != null) - // { - // if (PT1.FeedBack <= SC.GetValue($"PM.{Module}.PressureForV27ForceClose")) - // { - // return true; - // } - // } - // else - // { - // return false; - // } - // } + V27.FuncForceOpen = (curStatue) => + { + if (!curStatue) + { + //满足条件,强制执行 + if (SensorChamPressAboveATMSW != null && PT1 != null) + { + if (!SensorChamPressAboveATMSW.Value || + PT1.FeedBack > SC.GetValue($"PM.{Module}.PressureForV27ForceOpen")) + { + return true; + } + } + else + { + return false; + } + } - // return false; - //}; + if (curStatue) + { + //满足条件,强制执行 + if (PT1 != null) + { + if (PT1.FeedBack <= SC.GetValue($"PM.{Module}.PressureForV27ForceClose")) + { + return true; + } + } + else + { + return false; + } + } + + return false; + }; } //23.Reactor Leak Check (DO42) @@ -2847,6 +2899,7 @@ namespace SicModules.PMs EV.PostWarningLog(Module, $"Condition:V27 should be closed"); return false; } + if (!CheckIOValueByGroup(IoGroupName.E, false)) { EV.PostWarningLog(Module, $"Condition:E valves should be closed"); @@ -2858,6 +2911,7 @@ namespace SicModules.PMs return false; } } + return true; }; @@ -2908,6 +2962,7 @@ namespace SicModules.PMs return false; } } + return true; }; @@ -2919,7 +2974,8 @@ namespace SicModules.PMs //满足条件,强制执行 if (_pmInterLock != null && V72 != null) { - if (!V72.Status && (_pmInterLock.DoPreprocessRunning || _pmInterLock.DoProcessRunning || _pmInterLock.DoProcessIdleRunning)) + if (!V72.Status && (_pmInterLock.DoPreprocessRunning || _pmInterLock.DoProcessRunning || + _pmInterLock.DoProcessIdleRunning)) { return true; } @@ -2929,6 +2985,7 @@ namespace SicModules.PMs return false; } } + if (curStatue) { //满足条件,强制执行 @@ -2953,8 +3010,7 @@ namespace SicModules.PMs #region 以下内容为InterLock表中复合条件内容 - //10.TMA.Vent (DO12 V42常闭)[V41常闭] - //V42动作时判断V41状态,但不反向控制 + ////10.TMA.Vent (DO12 V42常闭)[V41常闭] //if (V42 != null) //{ // V42.FuncCheckInterLock = (setValue) => @@ -2979,29 +3035,28 @@ namespace SicModules.PMs // }; // //返回True,表明条件满足,强制关阀 - // //V42.FuncForceOpen = (curStatue) => - // //{ - // // if (curStatue) - // // { - // // //满足条件,强制执行 - // // if (V41 != null) - // // { - // // if (V41.Status && !_pmInterLock.DoProcessRunning) - // // { - // // return true; - // // } - // // } - // // else - // // { - // // return false; - // // } - // // } - // // return false; - // //}; + // V42.FuncForceOpen = (curStatue) => + // { + // if (curStatue) + // { + // //满足条件,强制执行 + // if (V41 != null) + // { + // if (V41.Status && !_pmInterLock.DoProcessRunning) + // { + // return true; + // } + // } + // else + // { + // return false; + // } + // } + // return false; + // }; //} ////11.SiH4.Vent(DO26 V56常开)[V55常闭] - ////V56动作时判断V55状态,但不反向控制 //if (V56 != null) //{ // V56.FuncCheckInterLock = (setValue) => @@ -3026,29 +3081,28 @@ namespace SicModules.PMs // }; // //返回True,表明条件满足,强制关阀 - // //V56.FuncForceOpen = (curStatue) => - // //{ - // // if (curStatue) - // // { - // // //满足条件,强制执行 - // // if (V55 != null) - // // { - // // if (V55.Status && !_pmInterLock.DoProcessRunning) - // // { - // // return true; - // // } - // // } - // // else - // // { - // // return false; - // // } - // // } - // // return false; - // //}; + // V56.FuncForceOpen = (curStatue) => + // { + // if (curStatue) + // { + // //满足条件,强制执行 + // if (V55 != null) + // { + // if (V55.Status && !_pmInterLock.DoProcessRunning) + // { + // return true; + // } + // } + // else + // { + // return false; + // } + // } + // return false; + // }; //} ////12.C2H4.Vent (DO30 V60常开)[V59常闭] - ////V60动作时判断V59状态,但不反向控制 //if (V60 != null) //{ // V60.FuncCheckInterLock = (setValue) => @@ -3073,25 +3127,25 @@ namespace SicModules.PMs // }; // //返回True,表明条件满足,强制关阀 - // //V60.FuncForceOpen = (curStatue) => - // //{ - // // if (curStatue) - // // { - // // //满足条件,强制执行 - // // if (V59 != null) - // // { - // // if (V59.Status && !_pmInterLock.DoProcessRunning) - // // { - // // return true; - // // } - // // } - // // else - // // { - // // return false; - // // } - // // } - // // return false; - // //}; + // V60.FuncForceOpen = (curStatue) => + // { + // if (curStatue) + // { + // //满足条件,强制执行 + // if (V59 != null) + // { + // if (V59.Status && !_pmInterLock.DoProcessRunning) + // { + // return true; + // } + // } + // else + // { + // return false; + // } + // } + // return false; + // }; //} ////InterLock Only in non-service mode @@ -3139,18 +3193,18 @@ namespace SicModules.PMs // }; //} - //InterLock Only in non-service mode + ////InterLock Only in non-service mode //if (V37s != null) //{ // V37s.FuncCheckInterLock = (setValue) => // { // if (setValue) // { - // if (CleanRoutineSucceed != null) + // if (SensorPMATMSW != null) // { - // if (!CleanRoutineSucceed.Value) + // if (!IsServiceMode && SensorPMATMSW.Value) // { - // EV.PostWarningLog(Module, "Condition:CleanRoutineSucceed(DO-173) is False!"); + // EV.PostWarningLog(Module, "Condition:React below atm while in non-service mode!"); // return false; // } // } @@ -3163,25 +3217,25 @@ namespace SicModules.PMs // }; // //返回True,表明条件满足,强制关阀 - // //V37s.FuncForceOpen = (curStatue) => - // //{ - // // if (curStatue) - // // { - // // //满足条件,强制执行 - // // if (SensorPMATMSW != null) - // // { - // // if (!IsServiceMode && SensorPMATMSW.Value) - // // { - // // return true; - // // } - // // } - // // else - // // { - // // return false; - // // } - // // } - // // return false; - // //}; + // V37s.FuncForceOpen = (curStatue) => + // { + // if (curStatue) + // { + // //满足条件,强制执行 + // if (SensorPMATMSW != null) + // { + // if (!IsServiceMode && SensorPMATMSW.Value) + // { + // return true; + // } + // } + // else + // { + // return false; + // } + // } + // return false; + // }; //} ////InterLock Only in non-service mode @@ -3191,11 +3245,11 @@ namespace SicModules.PMs // { // if (setValue) // { - // if (CleanRoutineSucceed != null) + // if (SensorPMATMSW != null) // { - // if (!CleanRoutineSucceed.Value) + // if (!IsServiceMode && SensorPMATMSW.Value) // { - // EV.PostWarningLog(Module, "Condition:CleanRoutineSucceed(DO-173) is False!"); + // EV.PostWarningLog(Module, "Condition:React below atm while in non-service mode!"); // return false; // } // } @@ -3208,25 +3262,25 @@ namespace SicModules.PMs // }; // //返回True,表明条件满足,强制关阀 - // //V51.FuncForceOpen = (curStatue) => - // //{ - // // if (curStatue) - // // { - // // //满足条件,强制执行 - // // if (SensorPMATMSW != null) - // // { - // // if (!IsServiceMode && SensorPMATMSW.Value) - // // { - // // return true; - // // } - // // } - // // else - // // { - // // return false; - // // } - // // } - // // return false; - // //}; + // V51.FuncForceOpen = (curStatue) => + // { + // if (curStatue) + // { + // //满足条件,强制执行 + // if (SensorPMATMSW != null) + // { + // if (!IsServiceMode && SensorPMATMSW.Value) + // { + // return true; + // } + // } + // else + // { + // return false; + // } + // } + // return false; + // }; //} ////InterLock Only in non-service mode @@ -3236,11 +3290,11 @@ namespace SicModules.PMs // { // if (setValue) // { - // if (CleanRoutineSucceed != null) + // if (SensorPMATMSW != null) // { - // if (!CleanRoutineSucceed.Value) + // if (!IsServiceMode && SensorPMATMSW.Value) // { - // EV.PostWarningLog(Module, "Condition:CleanRoutineSucceed(DO-173) is False!"); + // EV.PostWarningLog(Module, "Condition:React below atm while in non-service mode!"); // return false; // } // } @@ -3253,39 +3307,39 @@ namespace SicModules.PMs // }; // //返回True,表明条件满足,强制关阀 - // //V52.FuncForceOpen = (curStatue) => - // //{ - // // if (curStatue) - // // { - // // //满足条件,强制执行 - // // if (SensorPMATMSW != null) - // // { - // // if (!IsServiceMode && SensorPMATMSW.Value) - // // { - // // return true; - // // } - // // } - // // else - // // { - // // return false; - // // } - // // } - // // return false; - // //}; + // V52.FuncForceOpen = (curStatue) => + // { + // if (curStatue) + // { + // //满足条件,强制执行 + // if (SensorPMATMSW != null) + // { + // if (!IsServiceMode && SensorPMATMSW.Value) + // { + // return true; + // } + // } + // else + // { + // return false; + // } + // } + // return false; + // }; //} - //////InterLock Only in non-service mode + ////InterLock Only in non-service mode //if (V58 != null) //{ // V58.FuncCheckInterLock = (setValue) => // { // if (setValue) // { - // if (CleanRoutineSucceed != null) + // if (SensorPMATMSW != null) // { - // if (!CleanRoutineSucceed.Value) + // if (!IsServiceMode && SensorPMATMSW.Value) // { - // EV.PostWarningLog(Module, "Condition:CleanRoutineSucceed(DO-173) is False!"); + // EV.PostWarningLog(Module, "Condition:React below atm while in non-service mode!"); // return false; // } // } @@ -3298,25 +3352,25 @@ namespace SicModules.PMs // }; // //返回True,表明条件满足,强制关阀 - // //V58.FuncForceOpen = (curStatue) => - // //{ - // // if (curStatue) - // // { - // // //满足条件,强制执行 - // // if (SensorPMATMSW != null) - // // { - // // if (!IsServiceMode && SensorPMATMSW.Value) - // // { - // // return true; - // // } - // // } - // // else - // // { - // // return false; - // // } - // // } - // // return false; - // //}; + // V58.FuncForceOpen = (curStatue) => + // { + // if (curStatue) + // { + // //满足条件,强制执行 + // if (SensorPMATMSW != null) + // { + // if (!IsServiceMode && SensorPMATMSW.Value) + // { + // return true; + // } + // } + // else + // { + // return false; + // } + // } + // return false; + // }; //} #endregion 以下内容为InterLock表中复合条件内容 @@ -3351,12 +3405,12 @@ namespace SicModules.PMs return false; } - //double.TryParse(recipeCommands["PMServo.SetActualSpeed"], out double servoSpeed); - //if ((_sicServo.ActualSpeedFeedback > servoSpeed + 2) || (_sicServo.ActualSpeedFeedback < servoSpeed - 2)) - //{ - // reason = $"Current Servo speed is {_sicServo.ActualSpeedFeedback}, set Servo speed is {servoSpeed}"; - // return false; - //} + double.TryParse(recipeCommands["PMServo.SetActualSpeed"], out double servoSpeed); + if ((_sicServo.ActualSpeedFeedback > servoSpeed + 2) || (_sicServo.ActualSpeedFeedback < servoSpeed - 2)) + { + reason = $"Current Servo speed is {_sicServo.ActualSpeedFeedback}, set Servo speed is {servoSpeed}"; + return false; + } //string heaterControlMode = recipeCommands["HeaterControlMode"]; @@ -3535,6 +3589,25 @@ namespace SicModules.PMs return true; } + public override bool SetRotationEnable(bool enable, out string reason) + { + reason = string.Empty; + + if (!_sicServo.SetServoEnable(enable, out reason)) + return false; + + return true; + } + + public override bool CheckRotationEnable() + { + //if (!_sicServo.ServoEnable || !_sicServo.ServoReady || _sicServo.ServoError) + if (!_sicServo.ServoEnable || _sicServo.ServoError) + return false; + + return true; + } + public override bool CheckPickFromPMTemp() { if (TC1.MiddleTemp <= SC.GetValue($"PM.{_module}.Heater.PickPVTempLimit")) @@ -3554,24 +3627,5 @@ namespace SicModules.PMs return false; } - - public override bool SetRotationEnable(bool enable, out string reason) - { - reason = string.Empty; - - if (!_sicServo.SetServoEnable(enable, out reason)) - return false; - - return true; - } - - public override bool CheckRotationEnable() - { - //if (!_sicServo.ServoEnable || !_sicServo.ServoReady || _sicServo.ServoError) - if (!_sicServo.ServoEnable || _sicServo.ServoError) - return false; - - return true; - } } } \ No newline at end of file diff --git a/App/Modules/SicModules/PMs/RecipeExecutions/CleanRecipe.cs b/App/Modules/SicModules/PMs/RecipeExecutions/CleanRecipe.cs index d7a1a33..3858b30 100644 --- a/App/Modules/SicModules/PMs/RecipeExecutions/CleanRecipe.cs +++ b/App/Modules/SicModules/PMs/RecipeExecutions/CleanRecipe.cs @@ -122,7 +122,7 @@ namespace SicModules.PMs.RecipeExecutions EV.PostAlarmLog(Module, $"can not run process,K valves is not closed!"); return Result.FAIL; } - if (!PmDevice.CheckIOValueByGroup(IoGroupName.V72, true)) + if (!PmDevice.CheckIOValueByGroup(IoGroupName.VentPump, true)) { EV.PostAlarmLog(Module, $"can not run process,V72 is not open!"); return Result.FAIL; diff --git a/App/Modules/SicModules/PMs/RecipeExecutions/PostProcess.cs b/App/Modules/SicModules/PMs/RecipeExecutions/PostProcess.cs index 22ebb0b..b5fbb42 100644 --- a/App/Modules/SicModules/PMs/RecipeExecutions/PostProcess.cs +++ b/App/Modules/SicModules/PMs/RecipeExecutions/PostProcess.cs @@ -55,6 +55,8 @@ namespace SicModules.PMs.RecipeExecutions SetTC2Ratio1, CloseTC2, WaitRotation1, + SetV103, + SetV105, TimeDelay1, TimeDelay2, @@ -149,6 +151,9 @@ namespace SicModules.PMs.RecipeExecutions //打开V31,打开V32 SetIoValueByGroup((int)RoutineStep.SetV31, IoGroupName.V31, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout); + //打开V103,关闭V105 + SetIoValueByGroup((int)RoutineStep.SetV103, IoGroupName.V103, true, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.SetV105, IoGroupName.V105, false, _IoValueOpenCloseTimeout); //打开V35,打开V36 SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout); @@ -169,13 +174,14 @@ namespace SicModules.PMs.RecipeExecutions //SetIoValueByGroup((int)RoutineStep.SetV65, IoGroupName.V65, true, _IoValueOpenCloseTimeout); //打开V68 - SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.V68, true, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout); //M2、M9、M15、M19-M40 MFC 30s ramp 到 default 值 - SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM45, 5); + SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM42, 5); //M1 - M16 MFC 30s ramp 到 default 值(M2、M9、M15除外) SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 5); + SetMfcToDefaultByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, 5); //所有PC设定为默认值 SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); @@ -187,7 +193,7 @@ namespace SicModules.PMs.RecipeExecutions SetIoValueByGroup((int)RoutineStep.SetGroupJOpen, IoGroupName.J, true, _IoValueOpenCloseTimeout); //打开V72,关闭V25 - SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.V72, true, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupV25, IoGroupName.V25, false, _IoValueOpenCloseTimeout); //设置蝶阀Enable diff --git a/App/Modules/SicModules/PMs/RecipeExecutions/PreProcess.cs b/App/Modules/SicModules/PMs/RecipeExecutions/PreProcess.cs index 2de0fdc..71453ff 100644 --- a/App/Modules/SicModules/PMs/RecipeExecutions/PreProcess.cs +++ b/App/Modules/SicModules/PMs/RecipeExecutions/PreProcess.cs @@ -186,7 +186,7 @@ namespace SicModules.PMs.RecipeExecutions EV.PostAlarmLog(Module, $"can not run process,K valves is not closed!"); return Result.FAIL; } - if (!PmDevice.CheckIOValueByGroup(IoGroupName.V72, true)) + if (!PmDevice.CheckIOValueByGroup(IoGroupName.VentPump, true)) { EV.PostAlarmLog(Module, $"can not run process,V72 is not open!"); return Result.FAIL; diff --git a/App/Modules/SicModules/PMs/RecipeExecutions/Process.cs b/App/Modules/SicModules/PMs/RecipeExecutions/Process.cs index 0a434b3..c8c4293 100644 --- a/App/Modules/SicModules/PMs/RecipeExecutions/Process.cs +++ b/App/Modules/SicModules/PMs/RecipeExecutions/Process.cs @@ -446,8 +446,11 @@ namespace SicModules.PMs.RecipeExecutions _stepTimer2.Start(int.MaxValue); - Notify( - $"Running step {_currentStepNumber + 1} : {PmDevice.RecipeRunningInfo.RecipeStepList[_currentStepNumber].StepName}"); + Notify($"Running step {_currentStepNumber + 1} : {PmDevice.RecipeRunningInfo.RecipeStepList[_currentStepNumber].StepName}"); + + GemManager.Instance?.TriggerEvent($"{Module}RecipeStepStart", new string[] { $"{Module}.SelectedRecipeName", $"{Module}.RecipeStepNumber",$"{Module}.RecipeStepName" }, + new object[] { PmDevice.RecipeRunningInfo.RecipeName, _currentStepNumber + 1, + PmDevice.RecipeRunningInfo.RecipeStepList[_currentStepNumber].StepName }); if (PmDevice.RecipeRunningInfo.RecipeStepList[_currentStepNumber].IsDummyStep) { @@ -685,9 +688,12 @@ namespace SicModules.PMs.RecipeExecutions case RecipeRunningState.StepCompleted: { - //放在前面,stepnumber后面会被更新 + //放在前面,stepnumber后面会被更新 + GemManager.Instance?.TriggerEvent($"{Module}RecipeStepComplete", + new string[] { $"{Module}.SelectedRecipeName", $"{Module}.RecipeStepNumber", $"{Module}.RecipeStepName" }, + new object[] { PmDevice.RecipeRunningInfo.RecipeName, _currentStepNumber + 1,PmDevice.RecipeRunningInfo.RecipeStepList[_currentStepNumber].StepName }); - _stepTimer2.Stop(); + _stepTimer2.Stop(); _dbCallback.RecipeStepEnd(PmDevice.RecipeRunningInfo.InnerId.ToString(), _currentStepNumber, _fdc.DataList); diff --git a/App/Modules/SicModules/PMs/RecipeExecutions/RecipeParser.cs b/App/Modules/SicModules/PMs/RecipeExecutions/RecipeParser.cs index fecbeab..2e72965 100644 --- a/App/Modules/SicModules/PMs/RecipeExecutions/RecipeParser.cs +++ b/App/Modules/SicModules/PMs/RecipeExecutions/RecipeParser.cs @@ -142,15 +142,15 @@ namespace SicModules.PMs.RecipeExecutions recipeStep.GrowthRate = Convert.ToDouble(dic["GrowthRate"]); recipeStep.EndBy = EnumEndByCondition.ByTime; - if (dic.TryGetValue("Loop", out var loopStr)) - { - recipeStep.IsLoopStartStep = System.Text.RegularExpressions.Regex.Match(loopStr, @"Loop\x20\d+\s*$").Success; - recipeStep.IsLoopEndStep = System.Text.RegularExpressions.Regex.Match(loopStr, @"Loop End$").Success; - if (recipeStep.IsLoopStartStep) - recipeStep.LoopCount = Convert.ToInt32(loopStr.Replace("Loop", string.Empty)); - else - recipeStep.LoopCount = 0; - } + //if (dic.TryGetValue("Loop", out var loopStr)) + //{ + // recipeStep.IsLoopStartStep = System.Text.RegularExpressions.Regex.Match(loopStr, @"Loop\x20\d+\s*$").Success; + // recipeStep.IsLoopEndStep = System.Text.RegularExpressions.Regex.Match(loopStr, @"Loop End$").Success; + // if (recipeStep.IsLoopStartStep) + // recipeStep.LoopCount = Convert.ToInt32(loopStr.Replace("Loop", string.Empty)); + // else + // recipeStep.LoopCount = 0; + //} //if (recipeData.Count >= 2) //{ @@ -165,6 +165,9 @@ namespace SicModules.PMs.RecipeExecutions // } //} + foreach (var key in dic.Keys) + recipeStep.RecipeCommands.Add(key, dic[key]); + #region Remove //dic.Remove("StepNo"); @@ -225,7 +228,7 @@ namespace SicModules.PMs.RecipeExecutions //{ // dic.Remove("Mfc30.Ramp"); //} - dic.Remove("HCLSourSplitRatio"); + dic.Remove("SHTotalFlow"); dic.Remove("SHTotalFlowSplitRatio"); //dic.Remove("SiSourTotalFlow"); @@ -243,6 +246,9 @@ namespace SicModules.PMs.RecipeExecutions dic.Remove("SHOutterFlow"); //dic.Remove("GRPurgeHCI"); //dic.Remove("TotalVentFlow"); + + if (dic.ContainsKey("Loop")) + dic.Remove("Loop"); #endregion foreach (var key in dic.Keys) diff --git a/App/Modules/SicModules/PMs/Routines/Base/PMBaseRoutine.cs b/App/Modules/SicModules/PMs/Routines/Base/PMBaseRoutine.cs index c6049e2..f4451cc 100644 --- a/App/Modules/SicModules/PMs/Routines/Base/PMBaseRoutine.cs +++ b/App/Modules/SicModules/PMs/Routines/Base/PMBaseRoutine.cs @@ -43,7 +43,7 @@ namespace SicModules.PMs.Routines.Base Leavel10= 1150, } - public List _lstPcList = new List { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + public List _lstPcList = new List { 1, 2, 3, 4, 5, 6, 7, 8, 9}; protected PressureLevel GetPressure(double pressure) { @@ -121,7 +121,7 @@ namespace SicModules.PMs.Routines.Base public virtual void Abort() { - _pm.SetMfcToDefaultByGroup(MfcGroupName.M27toM45); + _pm.SetMfcToDefaultByGroup(MfcGroupName.M27toM40); } protected void PreparePump(int id, PMModuleBase pm, int timeout) @@ -532,10 +532,10 @@ namespace SicModules.PMs.Routines.Base { Tuple ret = Execute(id, () => { - Notify($"Set {Module} rotation"); + //Notify($"Set {Module} rotation"); if (!_pm.SetRotationServo(checkSpeed, 0)) { - Stop($"Set {Module} rotation error"); + //Stop($"Set {Module} rotation error"); return false; } @@ -928,7 +928,7 @@ namespace SicModules.PMs.Routines.Base { Tuple ret = Execute(id, () => { - _v72IsOpen = _pm.CheckIOValueByGroup(IoGroupName.V72, true) && _pm.CheckIOValueByGroup(IoGroupName.V888990, true) && _pm.PT1.FeedBack >= pressure; + _v72IsOpen = _pm.CheckIOValueByGroup(IoGroupName.VentPump, true) && _pm.CheckIOValueByGroup(IoGroupName.V888990, true) && _pm.PT1.FeedBack >= pressure; return true; }); @@ -1299,7 +1299,7 @@ namespace SicModules.PMs.Routines.Base Notify($"Set MFC28,29,31,40 to pressureLevel [{cIntLv - 50},{cIntLv + 50})"); } _lastPressureLevel = level; - _pm.SetMfcRampByGroupAndPressure(MfcGroupName.M27To3540To42, Convert.ToDouble((int)level)); + _pm.SetMfcRampByGroupAndPressure(MfcGroupName.M28293140, Convert.ToDouble((int)level)); } } } @@ -1839,14 +1839,14 @@ namespace SicModules.PMs.Routines.Base if (!_setMfc291519to38Flag && currentPressureUpOrDown == PressureUpOrDown.Dowing && _IoThrottle.PressureFeedback < 20) { - Notify($"Set M2toM40 value to 0 "); - _pm.SetMfcByGroup(MfcGroupName.M2toM45, 0, 2); + Notify($"Set M2toM42 value to 0 "); + _pm.SetMfcByGroup(MfcGroupName.M2toM42, 0, 2); _setMfc291519to38Flag = true; } else if (!_setMfc291519to38Flag && currentPressureUpOrDown == PressureUpOrDown.Uping && _IoThrottle.PressureFeedback < 20) { - Notify($"Set M2toM40 value to default"); - _pm.SetMfcToDefaultByGroupRamp(MfcGroupName.M2toM45, 2); + Notify($"Set M2toM42 value to default"); + _pm.SetMfcToDefaultByGroupRamp(MfcGroupName.M2toM42, 2); _setMfc291519to38Flag = true; } diff --git a/App/Modules/SicModules/PMs/Routines/PMCleanRoutine.cs b/App/Modules/SicModules/PMs/Routines/PMCleanRoutine.cs index c1a5e0c..d83e71f 100644 --- a/App/Modules/SicModules/PMs/Routines/PMCleanRoutine.cs +++ b/App/Modules/SicModules/PMs/Routines/PMCleanRoutine.cs @@ -31,6 +31,7 @@ namespace SicModules.PMs.Routines SetGroupK, SetM1to16, + SetM17M18, SetPC, SetGroupJ, SetGroupJ_1, @@ -49,7 +50,7 @@ namespace SicModules.PMs.Routines SetGasIn2, SetGroupJOpen, - SetM2toM45, + SetM291519to26, OpenFinal2, SetMfcFinal2, @@ -121,9 +122,8 @@ namespace SicModules.PMs.Routines SetTVEnable_2, SetTVPressMode, SetTv1, - SetM2toM45_Ramp0, - SetM2toM45_Ramp01, - SetV30, + SetM2toM40, + SetM18, SetV31, SetV32, SetV35V36, @@ -135,16 +135,21 @@ namespace SicModules.PMs.Routines SetTVPositionMax_1, SetTVPressMode1, SetTVPressMode2, - SetM2TOM45Default, - SetM2toM45_1, - SetMfc2to45Default, + SetM2TOM40Default, + SetM2toM40_1, + SetMfc2to40Default, + SetM18Default, + SetM18_1, + SetM18_2, SetV92V93V95, SetV94, SetV96, + SetV103, + SetV105, SetV68, - SetM35M36M37M38, + SetM32M35M37, SetM36, SetM38, WaitPmPressureUp1, @@ -263,25 +268,26 @@ namespace SicModules.PMs.Routines { //CheckRoutineTimeOut(); - //1 关闭V76,打开V75 + //关闭V76,打开V75 SetIoValueByGroup((int)RoutineStep.SetV76, IoGroupName.V76, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV75, IoGroupName.V75, true, _IoValueOpenCloseTimeout); - //2 旋转停止,加热停止 + //旋转停止,加热停止 SetHeatEnable((int)RoutineStep.HeatEnable, false, _heatTimeOut); SetRotationValve((int)RoutineStep.RotationEnable, _rotationCheckSpeed, false, _rotationCloseTimeout); - //3 关闭V72,打开V25 - SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.V72, false, _IoValueOpenCloseTimeout); + //关闭V72,打开V25 + SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupV25, IoGroupName.V25, true, _IoValueOpenCloseTimeout); + //打开V103,关闭V105 + SetIoValueByGroup((int)RoutineStep.SetV103, IoGroupName.V103, true, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.SetV105, IoGroupName.V105, false, _IoValueOpenCloseTimeout); - - //4 打开V30,打开V31,打开V32 - SetIoValueByGroup((int)RoutineStep.SetV30, IoGroupName.V30, true, _IoValueOpenCloseTimeout); + //打开V31,打开V32 SetIoValueByGroup((int)RoutineStep.SetV31, IoGroupName.V31, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout); - //5 打开V35,打开V36 + //打开V35,打开V36 SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout); //关闭B/C/E/F/H/K 阀门 @@ -296,12 +302,6 @@ namespace SicModules.PMs.Routines SetIoValueByGroup((int)RoutineStep.SetGroupD, IoGroupName.D, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupG, IoGroupName.G, true, _IoValueOpenCloseTimeout); - //打开J阀门 - SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout); - - //6 M1-M16设定为default值(M2、M9、M15除外) - SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0); - ////打开V65 //SetIoValueByGroup((int)RoutineStep.SetV65, IoGroupName.V65, true, _IoValueOpenCloseTimeout); @@ -309,13 +309,20 @@ namespace SicModules.PMs.Routines SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All); SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList); + //打开J阀门 + SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout); + + //M1-M16设定为default值(M2、M9、M15除外) + SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0); + SetMfcToDefaultByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, 0); + //设置所有PC到默认值 SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); - //M2、M9、M15、M19-M45 3s ramp到default值。 - SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM45, MfcGroupName.M2toM45, 3); + //设置M2,M9,M15,M19-M26 3s ramp 到default 值 + SetMfcToDefaultByGroup((int)RoutineStep.SetM291519to26, MfcGroupName.M2toM26, 3); - //7 打开EPV2 + //打开EPV2 SetIoValueByGroup((int)RoutineStep.SetEPV2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout); TimeDelay((int)RoutineStep.TimeDelay1, 3); @@ -328,11 +335,13 @@ namespace SicModules.PMs.Routines //伺服压力设定值到0mbar SetThrottleToTargetAndNoWait((int)RoutineStep.SetTv1, _IoThrottle, _pressureMin); - //8 M2、M9、M15、M19-M45 MFC 3s ramp 到0 - SetMfcByGroup((int)RoutineStep.SetM2toM45_Ramp0, MfcGroupName.M2toM45, 0, 3); + //M2、M9、M15、M19-M40 MFC 5s ramp 到0 + SetMfcByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM42, 0, 5); + SetMfcByGroup((int)RoutineStep.SetM18, MfcGroupName.M18, 0, 5); - //9 等待腔体压力Pump到设定值 + //等待腔体压力Pump到设定值 WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _pressureMin, _pumpTimeout); + TimeDelay((int)RoutineStep.TimeDelay2, 3); //蝶阀设置为位置模式,开度设置为最大 @@ -340,44 +349,39 @@ namespace SicModules.PMs.Routines TimeDelay((int)RoutineStep.TimeDelay11, 3); SetThrottleSetPosition((int)RoutineStep.SetTVPositionMax, _IoThrottle, 100, _throttleTimeout); - //10 M2、M9、M15、M19-M45 MFC 3s ramp 到0 - SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM45, MfcGroupName.M2toM45, 3); - - //11 打开V87、V88、V89、V90、V91、V97 + //Final2阀对应的MFC 3s Ramp到Default值 SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal2, MfcGroupName.Final2, 3); + //打开Final2阀 SetIoValueByGroup((int)RoutineStep.OpenFinal2, IoGroupName.Final2, true, _IoValueOpenCloseTimeout); - //12 打开V65 V68 - SetIoValueByGroup((int)RoutineStep.SetV65, IoGroupName.V65, true, _IoValueOpenCloseTimeout); - SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.V68, true, _IoValueOpenCloseTimeout); + //打开V68 + SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout); TimeDelay((int)RoutineStep.TimeDelay3, 1); - //13 M35\M36\M37\M38 ramp 到0 - SetMfcToDefaultByGroup((int)RoutineStep.SetM35M36M37M38, MfcGroupName.M35M36M37M38, 3); - - //14 打开V93、V95;打开V94等待3S,打开V96 - SetIoValueByGroup((int)RoutineStep.SetV92V93V95, IoGroupName.V92V93V95, true, _IoValueOpenCloseTimeout); - SetIoValueByGroup((int)RoutineStep.SetV94, IoGroupName.V94, true, _IoValueOpenCloseTimeout); + //打开V92,V93和V95,再打开V94,在打开V96 + SetMfcToDefaultByGroup((int)RoutineStep.SetM32M35M37, MfcGroupName.M32M35M37, 1); + SetMfcToDefaultByGroup((int)RoutineStep.SetM36, MfcGroupName.M36, 1); + SetMfcToDefaultByGroup((int)RoutineStep.SetM38, MfcGroupName.M38, 1); TimeDelay((int)RoutineStep.TimeDelay4, 3); - SetIoValueByGroup((int)RoutineStep.SetV96, IoGroupName.V96, true, _IoValueOpenCloseTimeout); - + SetIoValueByGroup((int)RoutineStep.SetV92V93V95, IoGroupName.V92V93V95, true, _IoValueOpenCloseTimeout); //循环开始 Loop((int)RoutineStep.StartLoop, _pressureLoopCount); - //M2、M9、M15、M19-M45 MFC 3s ramp 到 default 值 - SetMfcToDefaultByGroup((int)RoutineStep.SetM2TOM45Default, MfcGroupName.M2toM45, 3); + //M2、M9、M15、M19-M40 MFC 3s ramp 到 default 值 + SetMfcToDefaultByGroup((int)RoutineStep.SetM2TOM40Default, MfcGroupName.M2toM42, 3); + SetMfcToDefaultByGroup((int)RoutineStep.SetM18Default, MfcGroupName.M18, 3); //先关蝶阀,再关闭EPV2 SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode1, _IoThrottle, 8); SetThrottleDisable((int)RoutineStep.CLoseTV1, _IoThrottle, 8); TimeDelay((int)RoutineStep.TimeDelay5, 1); - - //关闭EPV2 SetIoValueByGroup((int)RoutineStep.SetEPV2_1, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout); + SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown1, PressureUpOrDown.Uping); WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.WaitPressureUp, _IoThrottle, _pressureMax, _ventTimeout); + TimeDelay((int)RoutineStep.TimeDelay6, _pressureMaxDelay); //打开EPV2 @@ -388,23 +392,24 @@ namespace SicModules.PMs.Routines //设置蝶阀为压力模式 SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode1, _IoThrottle, 5); - //M2、M9、M15、M19-M45 MFC 3s ramp 0 - SetMfcByGroup((int)RoutineStep.SetM2toM45_1, MfcGroupName.M2toM45, 0, 3); + //M2、M9、M15、M19-M40 MFC 3s ramp 0 + SetMfcByGroup((int)RoutineStep.SetM2toM40_1, MfcGroupName.M2toM42, 0, 3); + SetMfcByGroup((int)RoutineStep.SetM18_1, MfcGroupName.M18, 0, 3); //伺服到0mbar SetThrottlePressureAndWait((int)RoutineStep.SetPressureDown, _IoThrottle, _pressureMin, _pumpTimeout); - EndLoop((int)RoutineStep.EndLoop); - //M2-M40 MFC 3s ramp 到 default 值 - SetMfcToDefaultByGroup((int)RoutineStep.SetMfc2to45Default, MfcGroupName.M2toM45, 3); + //M27-M40 MFC 3s ramp 到 default 值 + SetMfcToDefaultByGroup((int)RoutineStep.SetMfc2to40Default, MfcGroupName.M2toM42, 3); + SetMfcToDefaultByGroup((int)RoutineStep.SetM18_2, MfcGroupName.M18, 3); //打开J阀门 SetIoValueByGroup((int)RoutineStep.SetGroupJ_1, IoGroupName.J, true, _IoValueOpenCloseTimeout); //打开V72,关闭V25 - SetIoValueByGroup((int)RoutineStep.VentPumpClose_1, IoGroupName.V72, true, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.VentPumpClose_1, IoGroupName.VentPump, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.CloseGroupV25, IoGroupName.V25, false, _IoValueOpenCloseTimeout); //设置蝶阀为压力模式 @@ -414,8 +419,6 @@ namespace SicModules.PMs.Routines SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown2, PressureUpOrDown.Uping); SetThrottleToTargetAndNoWait((int)RoutineStep.SetPressureUp2, _IoThrottle, _throttleFinalPressure); WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.SetTVto300, _IoThrottle, _throttleFinalPressure, _pmPressureMaxDiff, _throttleTimeout); - - } catch (RoutineBreakException) { diff --git a/App/Modules/SicModules/PMs/Routines/PMExchangeMoRoutine.cs b/App/Modules/SicModules/PMs/Routines/PMExchangeMoRoutine.cs index 375e568..e666a4e 100644 --- a/App/Modules/SicModules/PMs/Routines/PMExchangeMoRoutine.cs +++ b/App/Modules/SicModules/PMs/Routines/PMExchangeMoRoutine.cs @@ -7,6 +7,7 @@ using Aitex.Core.RT.Event; using Aitex.Core.RT.Routine; using Aitex.Core.RT.SCCore; using MECF.Framework.Common.Equipment; +using MECF.Framework.Common.Fsm; using SicModules.PMs.Routines.Base; namespace SicModules.PMs.Routines @@ -18,6 +19,7 @@ namespace SicModules.PMs.Routines SetGroupK, SetM7Or10, SetM8Or11, + SetM21, OpenV73, StartLoop, OpenGroup1, @@ -154,11 +156,12 @@ namespace SicModules.PMs.Routines { CheckRoutineTimeOut(); - //1 关闭K阀组 + //关闭K阀组 SetIoValueByGroup((int)RoutineStep.SetGroupK, IoGroupName.K, false, _IoValueTimeout); - //2 设定M7,M8 80%,PC2设定Max + //设定M7,M8 80%,PC2设定Max SetMfcValueByPercent((int)RoutineStep.SetM7Or10, mfc7Or10, 80); + SetMfcValueByPercent((int)RoutineStep.SetM21, 21, 80); SetMfcValueByPercent((int)RoutineStep.SetM8Or11, mfc8Or11, 80); //打开V73 diff --git a/App/Modules/SicModules/PMs/Routines/PMLeakCheckRoutine.cs b/App/Modules/SicModules/PMs/Routines/PMLeakCheckRoutine.cs index 4df0458..1d43570 100644 --- a/App/Modules/SicModules/PMs/Routines/PMLeakCheckRoutine.cs +++ b/App/Modules/SicModules/PMs/Routines/PMLeakCheckRoutine.cs @@ -52,7 +52,8 @@ namespace SicModules.PMs.Routines SetGasIn2, SetGroupJOpen, - SetM2toM45Default_1, + SetM291519to26, + SetM17M18, OpenFinal2, CloseFinal2, @@ -61,22 +62,21 @@ namespace SicModules.PMs.Routines SetEPV1, SetEPV2, SetTvMode, - SetTVEnable_1, - SetTVEnable_2, - SetTVEnable_3, + SetTVEnable, SetTVPressMode, SetTv1, WaitTv1, - SetM2toM45, + SetM2toM40, + SetM18, SetTVPositionMode, SetTVPositionMode_1, SetTVPositionMax, SetTVPositionMax_1, - SetTVPressMode_1, - SetTVPressMode_2, - SetTVPressMode_3, - SetM2toM45Default_2, + SetTVPressMode1, + SetM2TOM40Default, SetM2toM40_1, + SetM18Default, + SetM18_1, SetTvOpen, SetTvModeToPress, @@ -100,7 +100,7 @@ namespace SicModules.PMs.Routines CloseFinanl1, CloseFinanl2, CloseEPV2, - SetTVCloseMode_2, + SetTVCloseMode2, CLoseTvvvv, SetEPVVV2, CLoseEPV1, @@ -142,7 +142,6 @@ namespace SicModules.PMs.Routines CloseV69, CloseV70, SetGroupV25, - SetV30, SetV31, SetV32, SetV35V36, @@ -158,12 +157,15 @@ namespace SicModules.PMs.Routines CloseM32M35M37, CloseM36, CloseM38, + SetV103, + SetV105, CloseGasIn1, SetTVCloseMode1, CLoseTV1, SetEPV2_1, SetEPV2_2, + SetTVEnable_2, TimeDelay1, TimeDelay2, @@ -236,7 +238,6 @@ namespace SicModules.PMs.Routines Module = module.ToString(); Name = "Leak Check"; - _IoThrottle = DEVICE.GetDevice($"{Module}.TV"); } @@ -299,24 +300,26 @@ namespace SicModules.PMs.Routines { CheckRoutineTimeOut(); - //1 关闭V76,打开V75 + //关闭V76,打开V75 SetIoValueByGroup((int)RoutineStep.SetV76, IoGroupName.V76, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV75, IoGroupName.V75, true, _IoValueOpenCloseTimeout); - //2 旋转停止,加热停止 + //旋转停止,加热停止 SetHeatEnable((int)RoutineStep.HeatEnable, false, _heatTimeOut); SetRotationValve((int)RoutineStep.RotationEnable, _rotationCheckSpeed, false, _rotationCloseTimeout); - //3 关闭V72,打开V25 - SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.V72, false, _IoValueOpenCloseTimeout); + //关闭V72,打开V25 + SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupV25, IoGroupName.V25, true, _IoValueOpenCloseTimeout); + //打开V103,关闭V105 + SetIoValueByGroup((int)RoutineStep.SetV103, IoGroupName.V103, true, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.SetV105, IoGroupName.V105, false, _IoValueOpenCloseTimeout); - //4 打开V30,打开V31,打开V32 - SetIoValueByGroup((int)RoutineStep.SetV30, IoGroupName.V30, true, _IoValueOpenCloseTimeout); + //打开V31,打开V32 SetIoValueByGroup((int)RoutineStep.SetV31, IoGroupName.V31, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout); - //5 打开V35,打开V36 + //打开V35,打开V36 SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout); //关闭B/C/E/F/H/K 阀门 @@ -335,52 +338,57 @@ namespace SicModules.PMs.Routines SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All); SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList); - //6 M1-M16设定为default值(M2、M9、M15除外) + //M1-M16设定为default值(M2、M9、M15除外) SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0); //设置所有PC到默认值 SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); - //7 设置M2,M9,M15,M19-M45 3s ramp 到default 值 - SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM45Default_1, MfcGroupName.M2toM45, 3); + //设置M2,M9,M15,M19-M26 3s ramp 到default 值 + SetMfcToDefaultByGroup((int)RoutineStep.SetM291519to26, MfcGroupName.M2toM42, 3);//组改变,.M2toM26改变为->M2toM42,防止MFC不在正常状态 + SetMfcToDefaultByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, 3); - //8 打开A阀门 - SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.A, true, _IoValueOpenCloseTimeout); + //打开V68 + SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout); //打开J阀门 SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout); - //9 打开EPV2 + //打开EPV2 SetIoValueByGroup((int)RoutineStep.SetEPV2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout); TimeDelay((int)RoutineStep.TimeDelay1, 3); //设置蝶阀Enable - SetThrottleEnableAndWait((int)RoutineStep.SetTVEnable_1, _IoThrottle, 5); + SetThrottleEnableAndWait((int)RoutineStep.SetTVEnable, _IoThrottle, 5); //设置蝶阀为压力模式 - SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode_1, _IoThrottle, 5); + SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode, _IoThrottle, 5); - //10 伺服压力设定值到0mbar + //伺服压力设定值到0mbar SetThrottleToTargetAndNoWait((int)RoutineStep.SetTv1, _IoThrottle, _pressureMin); - //M2、M9、M15、M19-M45 MFC 3s ramp到0 - SetMfcByGroup((int)RoutineStep.SetM2toM45, MfcGroupName.M2toM45, 0, 3); + //M2、M9、M15、M19-M40 MFC 3s ramp到0 + SetMfcByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM42, 0, 3); + SetMfcByGroup((int)RoutineStep.SetM18, MfcGroupName.M18, 0, 3); - //11 等待腔体压力Pump到设定值 + //等待腔体压力Pump到设定值 WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _pressureMin, _pressureMinTimeout); + TimeDelay((int)RoutineStep.TimeDelay8, 3); + //蝶阀设置为位置模式,开度设置为最大 SetThrottleToPositionMode((int)RoutineStep.SetTVPositionMode, _IoThrottle, _throttleTimeout); TimeDelay((int)RoutineStep.TimeDelay11, 3); SetThrottleSetPosition((int)RoutineStep.SetTVPositionMax, _IoThrottle, 100, _throttleTimeout); - TimeDelay((int)RoutineStep.TimeDelay9, 3); + TimeDelay((int)RoutineStep.TimeDelay9, 3); //循环开始 Loop((int)RoutineStep.StartLoop, _pressureLoopCount); //M2、M9、M15、M19-M40 MFC 3s ramp 到 default 值 - SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM45Default_2, MfcGroupName.M2toM45, 3); + SetMfcToDefaultByGroup((int)RoutineStep.SetM2TOM40Default, MfcGroupName.M2toM42, 3); + SetMfcToDefaultByGroup((int)RoutineStep.SetM18Default, MfcGroupName.M18, 3); //先关蝶阀,再关闭EPV2 SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode1, _IoThrottle, 8); @@ -389,36 +397,37 @@ namespace SicModules.PMs.Routines SetIoValueByGroup((int)RoutineStep.SetEPV2_1, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout); SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown1, PressureUpOrDown.Uping); - WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.WaitPressureUp, _IoThrottle, _pressureMax, _pmPressureMaxDiff, _pressureMaxTimeout); + WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.WaitPressureUp, _IoThrottle, _pressureMax, _pressureMaxTimeout); TimeDelay((int)RoutineStep.TimeDelay6, _pressureMaxDelay); //打开EPV2 SetIoValueByGroup((int)RoutineStep.SetEPV2_2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout); TimeDelay((int)RoutineStep.TimeDelay7, 1); - ////设置蝶阀Enable + //设置蝶阀Enable SetThrottleEnableAndWait((int)RoutineStep.SetTVEnable_2, _IoThrottle, 5); //设置蝶阀为压力模式 - SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode_3, _IoThrottle, 5); + SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode1, _IoThrottle, 5); //M2、M9、M15、M19-M40 MFC 3s ramp 0 - SetMfcByGroup((int)RoutineStep.SetM2toM40_1, MfcGroupName.M2toM45, 0, 3); + SetMfcByGroup((int)RoutineStep.SetM2toM40_1, MfcGroupName.M2toM42, 0, 3); + SetMfcByGroup((int)RoutineStep.SetM18_1, MfcGroupName.M18, 0, 3); //伺服到0mbar - SetThrottlePressureAndWait((int)RoutineStep.SetPressureDown, _IoThrottle, _pressureMin, _pmPressureMaxDiff, _pressureMinTimeout); + SetThrottlePressureAndWait((int)RoutineStep.SetPressureDown, _IoThrottle, _pressureMin, _pressureMinTimeout); EndLoop((int)RoutineStep.EndLoop); - ////依次关闭Final1 - //SetIoValueByGroup((int)RoutineStep.CloseGasIn1, IoGroupName.Final1, false, _IoValueOpenCloseTimeout); - //Delay((int)RoutineStep.TimeDelay13, 5); + //依次关闭Final1 + SetIoValueByGroup((int)RoutineStep.CloseGasIn1, IoGroupName.GasIn1, false, _IoValueOpenCloseTimeout); + Delay((int)RoutineStep.TimeDelay13, 5); - ////关闭M32,M35,M36,M37,M38 - //SetMfcByGroup((int)RoutineStep.CloseM32M35M37, MfcGroupName.M35M37, 0, 5); - //SetMfcByGroup((int)RoutineStep.CloseM36, MfcGroupName.M36, 0, 5); - //SetMfcByGroup((int)RoutineStep.CloseM38, MfcGroupName.M38, 0, 5); + //关闭M32,M35,M36,M37,M38 + SetMfcByGroup((int)RoutineStep.CloseM32M35M37, MfcGroupName.M32M35M37, 0, 5); + SetMfcByGroup((int)RoutineStep.CloseM36, MfcGroupName.M36, 0, 5); + SetMfcByGroup((int)RoutineStep.CloseM38, MfcGroupName.M38, 0, 5); - //Delay((int)RoutineStep.TimeDelay14, 5); + Delay((int)RoutineStep.TimeDelay14, 5); //关闭Final1阀 SetIoValueByGroup((int)RoutineStep.CloseFinanl1, IoGroupName.Final1, false, _IoValueOpenCloseTimeout); @@ -430,7 +439,7 @@ namespace SicModules.PMs.Routines TimeDelay((int)RoutineStep.TimeDelay15, _paramContinuePumpTime); //先关蝶阀,再关闭EPV2 - SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode_2, _IoThrottle, 8); + SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode2, _IoThrottle, 8); SetThrottleDisable((int)RoutineStep.CLoseTvvvv, _IoThrottle, 8); TimeDelay((int)RoutineStep.TimeDelay16, 1); SetIoValueByGroup((int)RoutineStep.SetEPVVV2, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout); diff --git a/App/Modules/SicModules/PMs/Routines/PMPcCalibrationRoutine.cs b/App/Modules/SicModules/PMs/Routines/PMPcCalibrationRoutine.cs index fee48a4..c7dce98 100644 --- a/App/Modules/SicModules/PMs/Routines/PMPcCalibrationRoutine.cs +++ b/App/Modules/SicModules/PMs/Routines/PMPcCalibrationRoutine.cs @@ -279,6 +279,15 @@ namespace SicModules.PMs.Routines { pc7FeedBack.Add(PmDevice.Pressure7.FeedBack); } + else if (ioName == "Pressure8") + { + pc8FeedBack.Add(PmDevice.Pressure8.FeedBack); + } + else if (ioName == "Pressure9") + { + pc9FeedBack.Add(PmDevice.Pressure9.FeedBack); + } + return ElapsedTime>=10; }, timeout * 1000); diff --git a/App/Modules/SicModules/PMs/Routines/PMProcessAbortRoutine.cs b/App/Modules/SicModules/PMs/Routines/PMProcessAbortRoutine.cs index 355a932..f54f613 100644 --- a/App/Modules/SicModules/PMs/Routines/PMProcessAbortRoutine.cs +++ b/App/Modules/SicModules/PMs/Routines/PMProcessAbortRoutine.cs @@ -19,14 +19,15 @@ namespace SicModules.PMs.Routines SetPSURatio, SetSCRRatio, SetRotation, - SetM2toM45, + SetM2toM40, + SetM17M18, SetM1to16, + SetM5M21, SetPC, SetV32, SetV35V36, SetV68, SetV65, - SetGroupA, SetGroupB, SetGroupC, SetGroupE, @@ -35,20 +36,21 @@ namespace SicModules.PMs.Routines SetGroupK, SetGroupD, SetGroupG, - VentPumpClose, SetGroupV25, - + SetV34, + SetV100, TimeDelay1, + TimeDelay2, } private int _heatTimeOut = 5; private int _mfc1to16RampTime = 30; - private int _mfc2to45RampTime = 30; - - private int _IoValueOpenCloseTimeout = 10; + private int _mfc2to40RampTime = 30; + private int _IoValueOpenCloseTimeout = 10; + private int _routineTimeOut = 10; private Stopwatch _swTimer = new Stopwatch(); @@ -63,7 +65,7 @@ namespace SicModules.PMs.Routines Reset(); _mfc1to16RampTime = SC.GetValue($"PM.{Module}.ProcessIdle.MFC1to16RampTime"); - _mfc2to45RampTime = SC.GetValue($"PM.{Module}.ProcessIdle.MFC19to40RampTime"); + _mfc2to40RampTime = SC.GetValue($"PM.{Module}.ProcessIdle.MFC19to40RampTime"); _routineTimeOut = SC.GetValue($"PM.{Module}.ProcessIdle.RoutineTimeOut"); @@ -79,7 +81,7 @@ namespace SicModules.PMs.Routines { //CheckRoutineTimeOut(); - //1 停止加热 + //停止加热 SetHeatEnable((int)RoutineStep.HeatEnable, false, _heatTimeOut); //设置模式为Power @@ -93,47 +95,53 @@ namespace SicModules.PMs.Routines //停止旋转 SetRotationValveAndNoWait((int)RoutineStep.SetRotation, 0); - //2 M2、M9、M15、M19-M45 MFC 30s ramp 到 default 值 - SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM45, MfcGroupName.M2toM45, _mfc2to45RampTime); + //M2、M9、M15、M19-M40 MFC 30s ramp 到 default 值 + SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM42, _mfc2to40RampTime); + SetMfcToDefaultByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, _mfc2to40RampTime); - //3 M1 - M16 MFC 30s ramp 到 default 值(M2、M9、M15除外) + //M1 - M16 MFC 30s ramp 到 default 值(M2、M9、M15除外) SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, _mfc1to16RampTime); + //M5 M2130s ramp 到 default 值 + SetMfcToDefaultByGroup((int)RoutineStep.SetM5M21, MfcGroupName.M5M21, _mfc1to16RampTime); //所有PC设定为默认值 SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); //等待MFC等流量 - TimeDelay((int)RoutineStep.TimeDelay1, Math.Max(_mfc2to45RampTime, _mfc1to16RampTime)); + TimeDelay((int)RoutineStep.TimeDelay1, Math.Max(_mfc2to40RampTime, _mfc1to16RampTime)); - //4 打开V32 - SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout); + //打开V32 + SetIoValueByGroupNoWait((int)RoutineStep.SetV32, IoGroupName.V32, true); - - //4 打开A - SetIoValueByGroup((int)RoutineStep.SetGroupA, IoGroupName.A, true, _IoValueOpenCloseTimeout); - - //5 打开V35、V36 - SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout); + //打开V35,打开V36 + SetIoValueByGroupNoWait((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true); //关闭B/C/E/F/H/K 阀门 - SetIoValueByGroup((int)RoutineStep.SetGroupB, IoGroupName.B, false, _IoValueOpenCloseTimeout); - SetIoValueByGroup((int)RoutineStep.SetGroupC, IoGroupName.C, false, _IoValueOpenCloseTimeout); - SetIoValueByGroup((int)RoutineStep.SetGroupE, IoGroupName.E, false, _IoValueOpenCloseTimeout); - SetIoValueByGroup((int)RoutineStep.SetGroupF, IoGroupName.F, false, _IoValueOpenCloseTimeout); - SetIoValueByGroup((int)RoutineStep.SetGroupH, IoGroupName.H, false, _IoValueOpenCloseTimeout); - SetIoValueByGroup((int)RoutineStep.SetGroupK, IoGroupName.K, false, _IoValueOpenCloseTimeout); + SetIoValueByGroupNoWait((int)RoutineStep.SetGroupB, IoGroupName.B, false); + SetIoValueByGroupNoWait((int)RoutineStep.SetGroupC, IoGroupName.C, false); + SetIoValueByGroupNoWait((int)RoutineStep.SetGroupE, IoGroupName.E, false); + SetIoValueByGroupNoWait((int)RoutineStep.SetGroupF, IoGroupName.F, false); + SetIoValueByGroupNoWait((int)RoutineStep.SetGroupH, IoGroupName.H, false); + SetIoValueByGroupNoWait((int)RoutineStep.SetGroupK, IoGroupName.K, false); + + SetIoValueByGroupNoWait((int)RoutineStep.SetV34, IoGroupName.V34, false); + SetIoValueByGroupNoWait((int)RoutineStep.SetV100, IoGroupName.V100, false); //打开D/G 阀门 - SetIoValueByGroup((int)RoutineStep.SetGroupD, IoGroupName.D, true, _IoValueOpenCloseTimeout); - SetIoValueByGroup((int)RoutineStep.SetGroupG, IoGroupName.G, true, _IoValueOpenCloseTimeout); + SetIoValueByGroupNoWait((int)RoutineStep.SetGroupD, IoGroupName.D, true); + SetIoValueByGroupNoWait((int)RoutineStep.SetGroupG, IoGroupName.G, true); + ////打开V65 + //SetIoValueByGroupNoWait((int)RoutineStep.SetV65, IoGroupName.V65, true); //打开V68 - //SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.V68, true, _IoValueOpenCloseTimeout); + SetIoValueByGroupNoWait((int)RoutineStep.SetV68, IoGroupName.GasIn1, true); - ////关闭V72,打开V25 - //SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.V72, false, _IoValueOpenCloseTimeout); - //SetIoValueByGroup((int)RoutineStep.SetGroupV25, IoGroupName.V25, true, _IoValueOpenCloseTimeout); + //关闭V72,打开V25 + SetIoValueByGroupNoWait((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false); + + TimeDelay((int)RoutineStep.TimeDelay2, 2); + SetIoValueByGroupNoWait((int)RoutineStep.SetGroupV25, IoGroupName.V25, true); } catch (RoutineBreakException) diff --git a/App/Modules/SicModules/PMs/Routines/PMPumpRoutine.cs b/App/Modules/SicModules/PMs/Routines/PMPumpRoutine.cs index 466b2c0..c44e4e4 100644 --- a/App/Modules/SicModules/PMs/Routines/PMPumpRoutine.cs +++ b/App/Modules/SicModules/PMs/Routines/PMPumpRoutine.cs @@ -18,7 +18,7 @@ namespace SicModules.PMs.Routines HeatEnable, VentPumpClose, ArSupply, - SetGroupA, + SetGroupB, SetGroupC, SetGroupE, @@ -30,8 +30,10 @@ namespace SicModules.PMs.Routines SetGroupJ, SetM1to16, + SetM17M18, SetPC, SetGroupI, //V87-96 + SetM18, SetM2to40, SetM2to40_1, MfcAll, @@ -74,11 +76,13 @@ namespace SicModules.PMs.Routines SetV76, SetV75, SetGroupV25, - SetV30, SetV31, SetV32, SetV35V36, + SetV87V97, SetV65, + SetV103, + SetV105, SetTVPositionMode, SetTVPositionMax, @@ -141,7 +145,6 @@ namespace SicModules.PMs.Routines _routineTimeOut = SC.GetValue($"PM.{Module}.Pump.RoutineTimeOut"); _pumpTimeOut = SC.GetValue($"PM.{Module}.Pump.PumpTimeOut"); - if (!_pmIoInterLock.SetPMPumpRoutineRunning(true, out string reason)) { EV.PostAlarmLog(Module, $"can not Pump,{reason}"); @@ -167,11 +170,13 @@ namespace SicModules.PMs.Routines SetRotationValve((int)RoutineStep.RotationEnable, _rotationCheckSpeed, false, _rotationCloseTimeout); //关闭V72,打开V25 - SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.V72, false, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupV25, IoGroupName.V25, true, _IoValueOpenCloseTimeout); + //打开V103,关闭V105 + SetIoValueByGroup((int)RoutineStep.SetV103, IoGroupName.V103, true, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.SetV105, IoGroupName.V105, false, _IoValueOpenCloseTimeout); - //打开V30,打开V31,打开V32 - SetIoValueByGroup((int)RoutineStep.SetV30, IoGroupName.V30, true, _IoValueOpenCloseTimeout); + //打开V31,打开V32 SetIoValueByGroup((int)RoutineStep.SetV31, IoGroupName.V31, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout); @@ -196,15 +201,16 @@ namespace SicModules.PMs.Routines //M1-M16设定为default值(M2、M9、M15除外) SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0); + SetMfcToDefaultByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, 0); //M2、M9、M15、M19-M40 MFC 3s ramp 到 default值 - SetMfcToDefaultByGroup((int)RoutineStep.SetM2to40_1, MfcGroupName.M2toM45, 3); + SetMfcToDefaultByGroup((int)RoutineStep.SetM2to40_1, MfcGroupName.M2toM42, 3); //设置所有PC到默认值 SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); - //8 打开A 组阀 - SetIoValueByGroup((int)RoutineStep.SetGroupA, IoGroupName.A, true, _IoValueOpenCloseTimeout); + //打开V68 + SetIoValueByGroup((int)RoutineStep.OpenGasIn1, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout); //打开J阀门 SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout); @@ -226,7 +232,10 @@ namespace SicModules.PMs.Routines SetThrottleToTargetAndNoWait((int)RoutineStep.SetTv1, _IoThrottle, _pumpBasePressure); //M2、M9、M15、M19-M40 MFC 3s ramp到0 - SetMfcByGroup((int)RoutineStep.SetM2to40, MfcGroupName.M2toM45, 0, 3); + SetMfcByGroup((int)RoutineStep.SetM2to40, MfcGroupName.M2toM42, 0, 3); + SetMfcByGroup((int)RoutineStep.SetM18, MfcGroupName.M18, 0, 3); + //关闭V87 V97 + SetIoValueByGroup((int)RoutineStep.SetV87V97, IoGroupName.V87V97, false, _IoValueOpenCloseTimeout); //等待腔体压力Pump到设定值 WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _pumpBasePressure, _pumpTimeOut); diff --git a/App/Modules/SicModules/PMs/Routines/PMPurgeRoutine.cs b/App/Modules/SicModules/PMs/Routines/PMPurgeRoutine.cs index b2fc7ce..00e31fb 100644 --- a/App/Modules/SicModules/PMs/Routines/PMPurgeRoutine.cs +++ b/App/Modules/SicModules/PMs/Routines/PMPurgeRoutine.cs @@ -33,6 +33,7 @@ namespace SicModules.PMs.Routines SetPCMode, SetM1to16, + SetM17M18, SetPC, SetGroupJ, CloseGroupJ, @@ -51,8 +52,8 @@ namespace SicModules.PMs.Routines SetGasIn2, SetGroupJOpen, - SetM2toM26M43M44M45, - SetM2M9M15_M19toM26, + SetM291519to26, + SetM291519to26_1, OpenFinal2, IsOpenFinal1, @@ -115,26 +116,31 @@ namespace SicModules.PMs.Routines SetPressUpOrDown2, SetMfc28to40Special, WaitPmPressureUp, - SetMfc27to45Default, + SetMfc27to40Default, SetV75, SetV76, - SetV30, SetV31, SetV32, SetV35V36, SetV65, SetV751, SetV761, - SetM2toM45, + SetV103, + SetV105, + SetM2toM40, SetM2toM40_1, SetM2TOM40Default, + SetM18, + SetM18_1, + SetM18_2, + SetM18Default, - SetV93V95, + SetV92V93V95, SetV94, SetV96, SetV68, - SetM35M36M37M38, + SetM32M35M37, SetM36, SetM38, SetM36_1, @@ -201,7 +207,6 @@ namespace SicModules.PMs.Routines private IoThrottleValve2 _IoThrottle; private IoInterLock _pmIoInterLock; - private int _rotationCheckSpeed = 0; //设置旋转速度为0后检查是否转速低于此数值 private int _rotationCloseTimeout; //旋转停止超时 private int _heatTimeOut = 5; //Heat关闭等待Di反馈超时时间 @@ -287,24 +292,26 @@ namespace SicModules.PMs.Routines { //CheckRoutineTimeOut(); - //1 关闭V76,打开V75 + //关闭V76,打开V75 SetIoValueByGroup((int)RoutineStep.SetV76, IoGroupName.V76, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV75, IoGroupName.V75, true, _IoValueOpenCloseTimeout); - //2 旋转停止,加热停止 + //旋转停止,加热停止 SetHeatEnable((int)RoutineStep.HeatEnable, false, _heatTimeOut); SetRotationValve((int)RoutineStep.RotationEnable, _rotationCheckSpeed, false, _rotationCloseTimeout); - //3 关闭V72,打开V25 - SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.V72, false, _IoValueOpenCloseTimeout); + //关闭V72,打开V25 + SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupV25, IoGroupName.V25, true, _IoValueOpenCloseTimeout); + //打开V103,关闭V105 + SetIoValueByGroup((int)RoutineStep.SetV103, IoGroupName.V103, true, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.SetV105, IoGroupName.V105, false, _IoValueOpenCloseTimeout); - //4 打开V30,打开V31,打开V32 - SetIoValueByGroup((int)RoutineStep.SetV30, IoGroupName.V30, true, _IoValueOpenCloseTimeout); + //打开V31,打开V32 SetIoValueByGroup((int)RoutineStep.SetV31, IoGroupName.V31, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout); - //5 打开V35,打开V36 + //打开V35,打开V36 SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout); //关闭B/C/E/F/H/K 阀门 @@ -319,9 +326,6 @@ namespace SicModules.PMs.Routines SetIoValueByGroup((int)RoutineStep.SetGroupD, IoGroupName.D, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupG, IoGroupName.G, true, _IoValueOpenCloseTimeout); - //打开J阀门 - SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout); - ////打开V65 //SetIoValueByGroup((int)RoutineStep.SetV65, IoGroupName.V65, true, _IoValueOpenCloseTimeout); @@ -329,16 +333,20 @@ namespace SicModules.PMs.Routines SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All); SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList); - //6 M1-M16设定为default值(M2、M9、M15除外) + //打开J阀门 + SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout); + + //M1-M16设定为default值(M2、M9、M15除外) SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0); + SetMfcToDefaultByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, 0); //设置所有PC到默认值 SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); //设置M2,M9,M15,M19-M26 3s ramp 到default 值 - SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM26M43M44M45, MfcGroupName.M2toM45, 3); + SetMfcToDefaultByGroup((int)RoutineStep.SetM291519to26, MfcGroupName.M2toM26, 3); - //7 打开EPV2 + //打开EPV2 SetIoValueByGroup((int)RoutineStep.SetEPV2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout); TimeDelay((int)RoutineStep.TimeDelay1, 3); @@ -351,11 +359,12 @@ namespace SicModules.PMs.Routines //伺服压力设定值到0mbar SetThrottleToTargetAndNoWait((int)RoutineStep.SetTv1, _IoThrottle, _pumpBasePressure); - //8 M2、M9、M15、M19-M45 MFC 3s ramp 到0 - SetMfcByGroup((int)RoutineStep.SetM2toM45, MfcGroupName.M2toM45, 0, 3); + //M2、M9、M15、M19-M40 MFC 5s ramp 到0 + SetMfcByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM42, 0, 5); + SetMfcByGroup((int)RoutineStep.SetM18, MfcGroupName.M18, 0, 5); - //9 等待腔体压力Pump到设定值 - WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _pumpBasePressure, _pumpTimeout); + //等待腔体压力Pump到设定值 + WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _pumpBasePressure, _throttleTimeout); TimeDelay((int)RoutineStep.TimeDelay2, 3); @@ -364,70 +373,83 @@ namespace SicModules.PMs.Routines TimeDelay((int)RoutineStep.TimeDelay11, 3); SetThrottleSetPosition((int)RoutineStep.SetTVPositionMax, _IoThrottle, 100, _throttleTimeout); - //10 Final2阀对应的MFC 3s Ramp到Default值 + //Final2阀对应的MFC 3s Ramp到Default值 SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal2, MfcGroupName.Final2, 3); - //11 打开Final2阀 + //打开Final2阀 SetIoValueByGroup((int)RoutineStep.OpenFinal2, IoGroupName.Final2, true, _IoValueOpenCloseTimeout); - //12 打开 V65 V68 - SetIoValueByGroup((int)RoutineStep.SetV65, IoGroupName.V65, true, _IoValueOpenCloseTimeout); - SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.V68, true, _IoValueOpenCloseTimeout); + //打开V68 + SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout); TimeDelay((int)RoutineStep.TimeDelay3, 1); - //13 M35 36 37 38 MFC 3s ramp 到default - SetMfcToDefaultByGroup((int)RoutineStep.SetM35M36M37M38, MfcGroupName.M35M36M37M38, 3); - - - //14 14.打开V93、V95;打开V94等待3S,打开V96 - SetIoValueByGroup((int)RoutineStep.SetV93V95, IoGroupName.V93V95, true, _IoValueOpenCloseTimeout); - SetIoValueByGroup((int)RoutineStep.SetV94, IoGroupName.V94, true, _IoValueOpenCloseTimeout); + //打开V92,V93和V95,再打开V94,在打开V96 + SetMfcToDefaultByGroup((int)RoutineStep.SetM32M35M37, MfcGroupName.M32M35M37, 1); + SetMfcToDefaultByGroup((int)RoutineStep.SetM36, MfcGroupName.M36, 1); + SetMfcToDefaultByGroup((int)RoutineStep.SetM38, MfcGroupName.M38, 1); TimeDelay((int)RoutineStep.TimeDelay4, 3); - SetIoValueByGroup((int)RoutineStep.SetV96, IoGroupName.V96, true, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.SetV92V93V95, IoGroupName.V92V93V95, true, _IoValueOpenCloseTimeout); //循环开始 Loop((int)RoutineStep.StartLoop, _pressureLoopCount); - //M2、M9、M15、M19-M45 MFC 3s ramp 到 default 值 - SetMfcToDefaultByGroup((int)RoutineStep.SetM2TOM40Default, MfcGroupName.M2toM45, 3); + //M2、M9、M15、M19-M40 MFC 3s ramp 到 default 值 + SetMfcToDefaultByGroup((int)RoutineStep.SetM2TOM40Default, MfcGroupName.M2toM42, 3); + SetMfcToDefaultByGroup((int)RoutineStep.SetM18Default, MfcGroupName.M18, 3); + //先关蝶阀,再关闭EPV2 SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode1, _IoThrottle, 8); SetThrottleDisable((int)RoutineStep.CLoseTV1, _IoThrottle, 8); TimeDelay((int)RoutineStep.TimeDelay5, 1); SetIoValueByGroup((int)RoutineStep.SetEPV2_1, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout); - //等待压力大于等于设定值(可配置) SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown1, PressureUpOrDown.Uping); WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.WaitPressureUp, _IoThrottle, _ventBasePressure, _ventTimeout); + ////设置蝶阀为压力模式 + //SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode1, _IoThrottle, 5); + + ////使用动态流量伺服到300mbar + //SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown1, PressureUpOrDown.Uping); + //SetThrottleToTargetAndNoWait((int)RoutineStep.SetPressureUp, _IoThrottle, _ventBasePressure); + //WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.WaitPressureUp, _IoThrottle, _ventBasePressure, _pmPressureMaxDiff, _pressureMaxTimeout); + TimeDelay((int)RoutineStep.TimeDelay6, _pressureMaxDelay); //打开EPV2 SetIoValueByGroup((int)RoutineStep.SetEPV2_2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout); TimeDelay((int)RoutineStep.TimeDelay7, 1); - //设置蝶阀Enable SetThrottleEnableAndWait((int)RoutineStep.SetTVEnable_2, _IoThrottle, 5); //设置蝶阀为压力模式 SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode1, _IoThrottle, 5); //M2、M9、M15、M19-M40 MFC 3s ramp 0 - SetMfcByGroup((int)RoutineStep.SetM2toM40_1, MfcGroupName.M2toM45, 0, 3); + SetMfcByGroup((int)RoutineStep.SetM2toM40_1, MfcGroupName.M2toM42, 0, 3); + SetMfcByGroup((int)RoutineStep.SetM18_1, MfcGroupName.M18, 0, 3); //伺服到0mbar SetThrottlePressureAndWait((int)RoutineStep.SetPressureDown, _IoThrottle, _pumpBasePressure, _pumpTimeout); + //TimeDelay((int)RoutineStep.TimeDelay8, 3); + + ////蝶阀设置为位置模式,开度设置为最大 + //SetThrottleToPositionMode((int)RoutineStep.SetTVPositionMode_1, _IoThrottle, _throttleTimeout); + //SetThrottleSetPositionNoWait((int)RoutineStep.SetTVPositionMax_1, _IoThrottle, 100, _throttleTimeout); + + //TimeDelay((int)RoutineStep.TimeDelay9, _pressureMinDelay); EndLoop((int)RoutineStep.EndLoop); //M2,M9,M15,M19-M26 3s ramp 到0 - SetMfcToDefaultByGroup((int)RoutineStep.SetM2M9M15_M19toM26, MfcGroupName.M2M9M15_M19toM26, 3); + SetMfcToDefaultByGroup((int)RoutineStep.SetM291519to26_1, MfcGroupName.M2toM26, 3); + SetMfcToDefaultByGroup((int)RoutineStep.SetM18_2, MfcGroupName.M18, 3); - //M27-M45 MFC 3s ramp 到 default 值 - SetMfcToDefaultByGroup((int)RoutineStep.SetMfc27to45Default, MfcGroupName.M27toM45, 3); + //M27-M40 MFC 3s ramp 到 default 值 + SetMfcToDefaultByGroup((int)RoutineStep.SetMfc27to40Default, MfcGroupName.M27toM40, 3); - //打开J阀门 - //SetIoValueByGroup((int)RoutineStep.CloseGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout); + //关闭J阀门 + SetIoValueByGroup((int)RoutineStep.CloseGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout); //关闭先关蝶阀,再EPV2 SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode2, _IoThrottle, 8); diff --git a/App/Modules/SicModules/PMs/Routines/PMToAtmIdleRoutine.cs b/App/Modules/SicModules/PMs/Routines/PMToAtmIdleRoutine.cs index cd57c2c..f4e5a5b 100644 --- a/App/Modules/SicModules/PMs/Routines/PMToAtmIdleRoutine.cs +++ b/App/Modules/SicModules/PMs/Routines/PMToAtmIdleRoutine.cs @@ -16,7 +16,7 @@ namespace SicModules.PMs.Routines { RotationEnable, HeatEnable, - V72, + VentPumpClose, ArSupply, SetGroupA, @@ -33,7 +33,8 @@ namespace SicModules.PMs.Routines SetPCMode, SetM1to16, - SetM2toM45, + SetM17M18, + SetM2toM40, SetPC, SetM291519to38, SetGroupJ, @@ -53,7 +54,7 @@ namespace SicModules.PMs.Routines SetGasIn2, SetGroupJOpen, - SetM2toM26M43M44M45, + SetM291519to26, OpenFinal2, SetMfcFinal2, @@ -75,17 +76,18 @@ namespace SicModules.PMs.Routines SetV76, SetV75, - SetV30, SetV31, SetV32, SetV35V36, SetGroupV25, + SetV103, + SetV105, - SetV93V95, + SetV92V93V95, SetV94, SetV96, SetV68, - SetM35M37, + SetM32M35M37, SetM36, SetM38, @@ -162,24 +164,26 @@ namespace SicModules.PMs.Routines { CheckRoutineTimeOut(); - //1 关闭V76,打开V75 + //关闭V76,打开V75 SetIoValueByGroup((int)RoutineStep.SetV76, IoGroupName.V76, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV75, IoGroupName.V75, true, _IoValueOpenCloseTimeout); - //2 旋转停止,加热停止 + //旋转停止,加热停止 SetHeatEnable((int)RoutineStep.HeatEnable, false, _heatTimeOut); SetRotationValve((int)RoutineStep.RotationEnable, _rotationCheckSpeed, false, _rotationCloseTimeout); - //3 关闭V72,打开V25 - SetIoValueByGroup((int)RoutineStep.V72, IoGroupName.V72, false, _IoValueOpenCloseTimeout); + //关闭V72,打开V25 + SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupV25, IoGroupName.V25, true, _IoValueOpenCloseTimeout); + //打开V103,关闭V105 + SetIoValueByGroup((int)RoutineStep.SetV103, IoGroupName.V103, true, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.SetV105, IoGroupName.V105, false, _IoValueOpenCloseTimeout); - //4 打开V30,打开V31,打开V32 - SetIoValueByGroup((int)RoutineStep.SetV30, IoGroupName.V30, true, _IoValueOpenCloseTimeout); + //打开V31,打开V32 SetIoValueByGroup((int)RoutineStep.SetV31, IoGroupName.V31, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout); - //5 打开V35,打开V36 + //打开V35,打开V36 SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout); //关闭B/C/E/F/H/K 阀门 @@ -198,43 +202,46 @@ namespace SicModules.PMs.Routines SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All); SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList); - //6 M1-M16设定为default值(M2、M9、M15除外) + //M1-M16设定为default值(M2、M9、M15除外) SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0); + SetMfcToDefaultByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, 0); //设置所有PC到默认值 SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); - //M2、M9、M15、M19-M45 MFC 5s ramp 到默认值 - SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM45, MfcGroupName.M2toM45, 5); + //M2、M9、M15、M19-M40 MFC 3s ramp 到默认值 + SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM42, 3); - //7 关闭蝶阀 + //关闭蝶阀 SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode, _IoThrottle, 8); SetThrottleDisable((int)RoutineStep.SetTvPositionToZero, _IoThrottle, 8); TimeDelay((int)RoutineStep.TimeDelay1, 1); + + //关闭EPV2 SetIoValueByGroup((int)RoutineStep.SetEPV2, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout); - //8 打开A 组阀 + //打开A 组阀 SetIoValueByGroup((int)RoutineStep.SetGroupA, IoGroupName.A, true, _IoValueOpenCloseTimeout); //打开Final2阀 SetIoValueByGroup((int)RoutineStep.OpenFinal2, IoGroupName.Final2, true, _IoValueOpenCloseTimeout); + //Final2阀对应的MFC 3s Ramp到Default值 SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal2, MfcGroupName.Final2, 3); - SetIoValueByGroup((int)RoutineStep.SetV93V95, IoGroupName.V93V95, true, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.SetV92V93V95, IoGroupName.V92V93V95, true, _IoValueOpenCloseTimeout); TimeDelay((int)RoutineStep.TimeDelay2, 3); - //M35、M37依次设定3S ramp 到default值 ; 等待3S。 - SetMfcToDefaultByGroup((int)RoutineStep.SetM35M37, MfcGroupName.M35M37, 3); + SetMfcToDefaultByGroup((int)RoutineStep.SetM32M35M37, MfcGroupName.M32M35M37, 3); //打开V68 - //SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.V68, true, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout); //打开J Valves SetIoValueByGroup((int)RoutineStep.SetGroupJOpen, IoGroupName.J, true, _IoValueOpenCloseTimeout); - //设置M2,M9,M15,M19-M26 M43-M45 3s ramp 到default 值 - SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM26M43M44M45, MfcGroupName.M2toM26M43M44M45, 3); + //设置M2,M9,M15,M19-M26 3s ramp 到default 值 + SetMfcToDefaultByGroup((int)RoutineStep.SetM291519to26, MfcGroupName.M2toM26, 3); //开V94,V96需等到腔体压力大于950 WaitPMPressureAndSetMfcSpecial((int)RoutineStep.WaitPmPressureUp1, 950, _waitPMPressureUpTimeout); @@ -252,7 +259,7 @@ namespace SicModules.PMs.Routines WaitPMPressureAndSetMfcSpecial((int)RoutineStep.WaitPmPressureUp, _ventBasePressure, _waitPMPressureUpTimeout); //设置M28,M29,M31,M40 3s ramp 到default 值 - //SetMfcToDefaultByGroup((int)RoutineStep.SetMfc28to40Default, MfcGroupName.M27To3540To42, 3); + SetMfcToDefaultByGroup((int)RoutineStep.SetMfc28to40Default, MfcGroupName.M28293140, 3); } catch (RoutineBreakException) { diff --git a/App/Modules/SicModules/PMs/Routines/PMToIsolationRoutine.cs b/App/Modules/SicModules/PMs/Routines/PMToIsolationRoutine.cs index 0e4d3e4..5823c4e 100644 --- a/App/Modules/SicModules/PMs/Routines/PMToIsolationRoutine.cs +++ b/App/Modules/SicModules/PMs/Routines/PMToIsolationRoutine.cs @@ -26,7 +26,8 @@ namespace SicModules.PMs.Routines SetGroupK, SetM1to16, - SetM2toM45, + SetM2toM40, + SetM17M18, SetPC, SetGroupI, //V87-96 SetM19to38, @@ -57,13 +58,14 @@ namespace SicModules.PMs.Routines SetV76, SetV75, - SetV30, SetV31, SetV32, SetV35V36, SetGroupV25, SetV65, CloseV68, + SetV103, + SetV105, CloseM32M35M37, CloseM36, @@ -119,23 +121,25 @@ namespace SicModules.PMs.Routines { //CheckRoutineTimeOut(); - //1 关闭V76,打开V75 + //关闭V76,打开V75 SetIoValueByGroup((int)RoutineStep.SetV76, IoGroupName.V76, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV75, IoGroupName.V75, true, _IoValueOpenCloseTimeout); - //2 旋转停止,加热停止 + //旋转停止,加热停止 SetHeatEnable((int)RoutineStep.HeatEnable, false, _heatTimeOut); SetRotationValve((int)RoutineStep.RotationEnable, 0, false, _rotationCloseTimeout); - //3 关闭V72 - SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.V72, false, _IoValueOpenCloseTimeout); + //关闭V72 + SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout); + //打开V103,关闭V105 + SetIoValueByGroup((int)RoutineStep.SetV103, IoGroupName.V103, true, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.SetV105, IoGroupName.V105, false, _IoValueOpenCloseTimeout); - //4 打开V30,打开V31,打开V32 - SetIoValueByGroup((int)RoutineStep.SetV30, IoGroupName.V30, true, _IoValueOpenCloseTimeout); + //打开V31,打开V32 SetIoValueByGroup((int)RoutineStep.SetV31, IoGroupName.V31, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout); - //5 打开V35,打开V36 + //打开V35,打开V36 SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout); //关闭B/C/E/F/H/K 阀门 @@ -160,16 +164,17 @@ namespace SicModules.PMs.Routines SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All); SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList); - //6 M1-M16设定为default值(M2、M9、M15除外) + //M1-M16设定为default值(M2、M9、M15除外) SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0); //设置所有PC到默认值 SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); - //M2、M9、M15、M19-M45 MFC 5s ramp到0 - SetMfcByGroup((int)RoutineStep.SetM2toM45, MfcGroupName.M2toM45, 0, 5); + //M2、M9、M15、M19-M40 MFC 5s ramp到0 + SetMfcByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM42, 0, 5); + SetMfcByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, 0, 5); - //7 关闭Final1阀 + //关闭Final1阀 SetIoValueByGroup((int)RoutineStep.CloseFinal1, IoGroupName.Final1, false, _IoValueOpenCloseTimeout); //关闭Final2 diff --git a/App/Modules/SicModules/PMs/Routines/PMToProcessIdleRoutine.cs b/App/Modules/SicModules/PMs/Routines/PMToProcessIdleRoutine.cs index 8bbcc63..c8f4e97 100644 --- a/App/Modules/SicModules/PMs/Routines/PMToProcessIdleRoutine.cs +++ b/App/Modules/SicModules/PMs/Routines/PMToProcessIdleRoutine.cs @@ -3,11 +3,11 @@ using System.Diagnostics; using Aitex.Core.RT.Device; using Aitex.Core.RT.Device.Devices; using Aitex.Core.RT.Event; +using Aitex.Core.RT.Log; using Aitex.Core.RT.Routine; using Aitex.Core.RT.SCCore; using MECF.Framework.Common.Equipment; using SicModules.PMs.Routines.Base; -using static Aitex.Core.RT.Device.PmDevices.DicMode; namespace SicModules.PMs.Routines { @@ -38,6 +38,7 @@ namespace SicModules.PMs.Routines SetPCMode, SetM1to16, + SetM17M18, SetPC, SetGroupJ, SetM2toM40, @@ -53,7 +54,7 @@ namespace SicModules.PMs.Routines SetGasIn1, //V68 OpenFinal1, //V91-96 SetMfcFinal1, //M32-38 - SetM2toM26, + SetM291519to26, SetTVCloseMode, SetTvPositionToZero, @@ -84,11 +85,12 @@ namespace SicModules.PMs.Routines SetV25, SetV76, SetV75, - SetV30, SetV31, SetV32, SetV35V36, SetV65, + SetV103, + SetV105, SetEPV1, SetEPV2, @@ -128,11 +130,11 @@ namespace SicModules.PMs.Routines CheckEpv2Open, CheckEpv1Open, - SetV93V95, + SetV92V93V95, SetV94, SetV96, SetV68, - SetM35M37, + SetM32M35M37, SetM36, SetM38, WaitPmPressureUp1, @@ -165,7 +167,6 @@ namespace SicModules.PMs.Routines private IoThrottleValve2 _IoThrottle; - private int _rotationCheckSpeed = 0; //设置旋转速度为0后检查是否转速低于此数值 private int _rotationCloseTimeout; //旋转停止超时 private int _IoValueOpenCloseTimeout = 10; //开关超时时间 @@ -205,16 +206,24 @@ namespace SicModules.PMs.Routines _IoThrottle = DEVICE.GetDevice($"{Module}.TV"); _pmInterLock = DEVICE.GetDevice($"{Module}.PMInterLock"); - if (!PmDevice.CheckSlitValveClose()) - { - EV.PostAlarmLog(Module, $"can not run ProcessIdle, {Module} SlitValve Opened"); - return Result.FAIL; - } + //if (!_pmInterLock.SetPMProcessIdleRunning(true, out string reason)) + //{ + // EV.PostAlarmLog(Module, $"can not run ProcessIdle, {reason}"); + // return Result.FAIL; + //} - if (!_pmInterLock.SetPMProcessIdleRunning(true, out string reason)) + /* + * 2025-07-16 + * 执行ProcessIdle Routine需禁用MFC报警;报警只在保持ProcessIdle状态时生效。 + * 这个DO原本用来指示正在执行Routine,现在改为指示PM维持在ProcessIdle状态。 + * 只有维持在ProcessIdle状态时,才会启用MFC报警监测。 + * + * PM状态机ProcessIdle状态进入和退出时分别设置DOProcessIdleRunning为true和false,因此进入当前Routine时, + * DOProcessIdleRunning有可能为1,需要强制设置为0;当前Routine执行完毕后再将这个DO设置为1,表示已进入ProcessIdle状态。 + */ + if (!_pmInterLock.SetPMProcessIdleRunning(false, out var reason)) { - EV.PostAlarmLog(Module, $"can not run ProcessIdle, {reason}"); - return Result.FAIL; + LOG.Error($"Failed to set DOProcessIdle to false due to {reason}"); } if (!PmDevice.CheckHeadHeaterEnable(true)) @@ -256,7 +265,7 @@ namespace SicModules.PMs.Routines _scrHeatEnable = SC.GetValue($"PM.{Module}.ProcessIdle.SCRHeaterEnable"); - _scrHeatMode = (int)SC.GetValue($"PM.{Module}.ProcessIdle.SCRHeaterMode"); + _scrHeatMode = SC.GetValue($"PM.{Module}.ProcessIdle.SCRHeaterMode"); _scrL1Ratio = (float)SC.GetValue($"PM.{Module}.ProcessIdle.SCRUpperRatio"); _scrL2Ratio = (float)SC.GetValue($"PM.{Module}.ProcessIdle.SCRMiddleRatio"); _scrL3Ratio = (float)SC.GetValue($"PM.{Module}.ProcessIdle.SCRLowerRatio"); @@ -279,20 +288,22 @@ namespace SicModules.PMs.Routines { CheckRoutineTimeOut(); - //1 关闭V76,打开V75 + //关闭V76,打开V75 SetIoValueByGroup((int)RoutineStep.SetV76, IoGroupName.V76, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV75, IoGroupName.V75, true, _IoValueOpenCloseTimeout); - //2 旋转停止 - SetHeatEnable((int)RoutineStep.HeatEnable, false, _heatTimeOut); + //旋转停止 + //SetHeatEnable((int)RoutineStep.HeatEnable, false, _heatTimeOut); SetRotationValve((int)RoutineStep.RotationEnable, _rotationCheckSpeed, false, _rotationCloseTimeout); + //打开V103,关闭V105 + SetIoValueByGroup((int)RoutineStep.SetV103, IoGroupName.V103, true, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.SetV105, IoGroupName.V105, false, _IoValueOpenCloseTimeout); - //3 打开V30,打开V31,打开V32 - SetIoValueByGroup((int)RoutineStep.SetV30, IoGroupName.V30, true, _IoValueOpenCloseTimeout); + //打开V31,打开V32 SetIoValueByGroup((int)RoutineStep.SetV31, IoGroupName.V31, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout); - //4 打开V35,打开V36 + //打开V35,打开V36 SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout); //关闭B/C/E/F/H/K 阀门 @@ -314,62 +325,59 @@ namespace SicModules.PMs.Routines SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All); SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList); - //5 M1-M16设定为default值(M2、M9、M15除外) + //M1-M16设定为default值(M2、M9、M15除外) SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0); + SetMfcToDefaultByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, 0); //设置所有PC到默认值 SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); - //6 M2、M9、M15、M19-M40、M41-M45 5s ramp到default值 - SetMfcByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM45, 0, 5); + ////M2、M9、M15、M19-M40 MFC 5s ramp 到0 + //SetMfcByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM42, 0, 5); - //7 打开EPV2 + //打开EPV2 SetIoValueByGroup((int)RoutineStep.SetEPV2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout); TimeDelay((int)RoutineStep.TimeDelay1, 3); - //8 打开Final2阀 + //打开Final2阀 SetIoValueByGroup((int)RoutineStep.OpenFinal2, IoGroupName.Final2, true, _IoValueOpenCloseTimeout); - //9 Final2阀对应的MFC 3s Ramp到Default值 + //Final2阀对应的MFC 3s Ramp到Default值 SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal2, MfcGroupName.Final2, 3); - //10 打开V93(ChamberPurge.Final)、V95(ConfinementRing.Final);等待3S - SetIoValueByGroup((int)RoutineStep.SetV93V95, IoGroupName.V93V95, true, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.SetV92V93V95, IoGroupName.V92V93V95, true, _IoValueOpenCloseTimeout); TimeDelay((int)RoutineStep.TimeDelay2, 3); - //11 M35、M37依次设定3S ramp 到default值 ; 等待3S - SetMfcToDefaultByGroup((int)RoutineStep.SetM35M37, MfcGroupName.M35M37, 3); + SetMfcToDefaultByGroup((int)RoutineStep.SetM32M35M37, MfcGroupName.M32M35M37, 3); //打开V68 - SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.V68, true, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout); - //12 打开V94(RotationUpPurge.Final)、M36设定5S ramp 到default值;等待3S SetIoValueByGroup((int)RoutineStep.SetV94, IoGroupName.V94, true, _IoValueOpenCloseTimeout); SetMfcToDefaultByGroup((int)RoutineStep.SetM36, MfcGroupName.M36, 5); TimeDelay((int)RoutineStep.TimeDelay3, 3); - //打开V96(HeaterWF.Final); M38依次设定5S ramp 到default值 SetIoValueByGroup((int)RoutineStep.SetV96, IoGroupName.V96, true, _IoValueOpenCloseTimeout); SetMfcToDefaultByGroup((int)RoutineStep.SetM38, MfcGroupName.M38, 5); TimeDelay((int)RoutineStep.TimeDelay4, 3); - //13 打开J Valves + //打开J Valves SetIoValueByGroup((int)RoutineStep.SetGroupJOpen, IoGroupName.J, true, _IoValueOpenCloseTimeout); - //设置M2,M9,M15,M19-M26 M43、M44、M45 3s ramp 到default 值 - SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM26, MfcGroupName.M2toM26M43M44M45, 3); + //设置M2,M9,M15,M19-M26 3s ramp 到default 值 + SetMfcToDefaultByGroup((int)RoutineStep.SetM291519to26, MfcGroupName.M2toM26, 3); //设置蝶阀Enable SetThrottleEnableAndWait((int)RoutineStep.SetTVEnable, _IoThrottle, 5); - //14 设置蝶阀为压力模式 + //设置蝶阀为压力模式 SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode, _IoThrottle, 5); //伺服压力设定值到1050mbar SetThrottleToTargetAndNoWait((int)RoutineStep.SetTV, _IoThrottle, 1050); - //15 打开V72 - SetIoValueByGroup((int)RoutineStep.SetV72, IoGroupName.V72, true, _IoValueOpenCloseTimeout); + //打开V72 + SetIoValueByGroup((int)RoutineStep.SetV72, IoGroupName.VentPump, true, _IoValueOpenCloseTimeout); TimeDelay((int)RoutineStep.TimeDelay5, 1); //关闭V25 @@ -381,7 +389,7 @@ namespace SicModules.PMs.Routines WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.SetTVto300, _IoThrottle, _throttleFinalPressure, _pmPressureMaxDiff, _throttleTimeout); //TimeDelay((int)RoutineStep.TimeDelay8, 3); - //16 转速Enable,加热Enable, 电流功率可配置 + //转速Enable,加热Enable, 电流功率可配置 EnableRotation((int)RoutineStep.EnableRotation, 5); SetRotationValveAndNoWait((int)RoutineStep.SetRotation1, _rotationSpeed); @@ -418,7 +426,7 @@ namespace SicModules.PMs.Routines SetSCREnable((int)RoutineStep.CloseTC2, false, 5); } - WaitRotationValve((int)RoutineStep.WaitRotation1, _rotationSpeed, true, _rotationSpeed * 3); + WaitRotationValve((int)RoutineStep.WaitRotation1, _rotationSpeed, true, _rotationSpeed / 2); } catch (RoutineBreakException) @@ -430,7 +438,13 @@ namespace SicModules.PMs.Routines return Result.FAIL; } - _pmInterLock.SetPMProcessIdleRunning(false, out string reason); + // _pmInterLock.SetPMProcessIdleRunning(false, out string reason); + if (!_pmInterLock.SetPMProcessIdleRunning(true, out string reason)) + { + LOG.Error($"Failed to set DOProcessIdle to true due to {reason}"); + } + + Notify($"Finished ! Elapsed time: {(int)(_swTimer.ElapsedMilliseconds / 1000)} s"); _swTimer.Stop(); diff --git a/App/Modules/SicModules/PMs/Routines/PMVacIdleRoutine.cs b/App/Modules/SicModules/PMs/Routines/PMVacIdleRoutine.cs index e0d30eb..79c1ae5 100644 --- a/App/Modules/SicModules/PMs/Routines/PMVacIdleRoutine.cs +++ b/App/Modules/SicModules/PMs/Routines/PMVacIdleRoutine.cs @@ -30,8 +30,10 @@ namespace SicModules.PMs.Routines SetGroupJ, SetM1to16, + SetM17M18, SetPC, SetGroupI, //V87-96 + SetM18, SetM2to40, SetM2to40_1, MfcAll, @@ -65,7 +67,6 @@ namespace SicModules.PMs.Routines SetTvOpen, SetTvModeToPress, SetTVto1050, - SetGroupA, OpenGasIn1, SetV65, CloseGasIn1, @@ -76,11 +77,12 @@ namespace SicModules.PMs.Routines SetV76, SetV75, SetGroupV25, - SetV30, SetV31, SetV32, SetV35V36, - SetV97V87, + SetV87V97, + SetV103, + SetV105, SetTVPositionMode, SetTVPositionMax, @@ -116,11 +118,9 @@ namespace SicModules.PMs.Routines private double _pmPressureMaxDiff; //蝶阀与目标压力的差值范围(认为调整到位了) private int _throttleTimeout; //蝶阀调整到指定压力的超时时间 - private int _pumpTimeout; - private double _vacPumpBasePressure; private int _routineTimeOut; - //private int _EPV2OpenDelayTime = 9; + private int _pumpTimeOut; private Stopwatch _swTimer = new Stopwatch(); public PMVacIdleRoutine(ModuleName module, PMModule pm1) : base(module, pm1) @@ -143,8 +143,7 @@ namespace SicModules.PMs.Routines _vacPumpBasePressure = SC.GetValue($"PM.{Module}.Pump.PumpBasePressure"); _routineTimeOut = SC.GetValue($"PM.{Module}.Pump.RoutineTimeOut"); - - _pumpTimeout = SC.GetValue($"PM.{Module}.Pump.PumpTimeOut"); + _pumpTimeOut = SC.GetValue($"PM.{Module}.Pump.PumpTimeOut"); if (!_pmIoInterLock.SetPMVacIdleRountingRunning(true, out var reason)) { @@ -163,24 +162,26 @@ namespace SicModules.PMs.Routines { CheckRoutineTimeOut(); - //1 关闭V76,打开V75 + //关闭V76,打开V75 SetIoValueByGroup((int)RoutineStep.SetV76, IoGroupName.V76, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV75, IoGroupName.V75, true, _IoValueOpenCloseTimeout); - //2 旋转停止,加热停止 + //旋转停止,加热停止 SetHeatEnable((int)RoutineStep.HeatEnable, false, _heatTimeOut); SetRotationValve((int)RoutineStep.RotationEnable, _rotationCheckSpeed, false, _rotationCloseTimeout); - //3 关闭V72,打开V25 - SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.V72, false, _IoValueOpenCloseTimeout); + //关闭V72,打开V25 + SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupV25, IoGroupName.V25, true, _IoValueOpenCloseTimeout); + //打开V103,关闭V105 + SetIoValueByGroup((int)RoutineStep.SetV103, IoGroupName.V103, true, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.SetV105, IoGroupName.V105, false, _IoValueOpenCloseTimeout); - //4 打开V31,打开V32 - SetIoValueByGroup((int)RoutineStep.SetV30, IoGroupName.V30, true, _IoValueOpenCloseTimeout); + //打开V31,打开V32 SetIoValueByGroup((int)RoutineStep.SetV31, IoGroupName.V31, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout); - //5 打开V35,打开V36 + //打开V35,打开V36 SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout); //关闭B/C/E/F/H/K 阀门 @@ -199,17 +200,18 @@ namespace SicModules.PMs.Routines SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All); SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList); - //6 M1-M16设定为default值(M2、M9、M15除外) + //M1-M16设定为default值(M2、M9、M15除外) SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0); + SetMfcToDefaultByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, 0); - //7 M2、M9、M15、M19-M40 、M41-M45 MFC 3s ramp 到 default值 - SetMfcToDefaultByGroup((int)RoutineStep.SetM2to40_1, MfcGroupName.M2toM45, 3); + //M2、M9、M15、M19-M40 MFC 3s ramp 到 default值 + SetMfcToDefaultByGroup((int)RoutineStep.SetM2to40_1, MfcGroupName.M2toM42, 3); //设置所有PC到默认值 SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); - //8 打开A 组阀 - SetIoValueByGroup((int)RoutineStep.SetGroupA, IoGroupName.A, true, _IoValueOpenCloseTimeout); + //打开V68 + SetIoValueByGroup((int)RoutineStep.OpenGasIn1, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout); //打开J阀门 SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout); @@ -217,7 +219,7 @@ namespace SicModules.PMs.Routines ////打开V65 //SetIoValueByGroup((int)RoutineStep.SetV65, IoGroupName.V65, true, _IoValueOpenCloseTimeout); - //9 打开EPV2 + //打开EPV2 SetIoValueByGroup((int)RoutineStep.SetEPV2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout); TimeDelay((int)RoutineStep.TimeDelay5, 3); @@ -227,16 +229,17 @@ namespace SicModules.PMs.Routines //设置蝶阀为压力模式 SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode, _IoThrottle, 5); - //伺服到0mbar + //伺服压力设定值到0mbar SetThrottleToTargetAndNoWait((int)RoutineStep.SetTv1, _IoThrottle, _vacPumpBasePressure); - //10 M2、M9、M15、M19-M45 MFC 3s ramp到0 - SetMfcByGroup((int)RoutineStep.SetM2to40, MfcGroupName.M2toM45, 0, 3); - - SetIoValueByGroup((int)RoutineStep.SetV97V87, IoGroupName.V97V87, false, _IoValueOpenCloseTimeout); + //M2、M9、M15、M19-M40 MFC 3s ramp到0 + SetMfcByGroup((int)RoutineStep.SetM2to40, MfcGroupName.M2toM42, 0, 3); + SetMfcByGroup((int)RoutineStep.SetM18, MfcGroupName.M18, 0, 3); + //关闭V87 V97 + SetIoValueByGroup((int)RoutineStep.SetV87V97, IoGroupName.V87V97, false, _IoValueOpenCloseTimeout); //等待腔体压力Pump到设定值 - WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _vacPumpBasePressure, _pumpTimeout); + WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _vacPumpBasePressure, _pumpTimeOut); //蝶阀设置为位置模式,开度设置为最大 SetThrottleToPositionMode((int)RoutineStep.SetTVPositionMode, _IoThrottle, _throttleTimeout); diff --git a/App/Modules/SicModules/PMs/Routines/PMVentRoutine.cs b/App/Modules/SicModules/PMs/Routines/PMVentRoutine.cs index 742bd0c..bc16001 100644 --- a/App/Modules/SicModules/PMs/Routines/PMVentRoutine.cs +++ b/App/Modules/SicModules/PMs/Routines/PMVentRoutine.cs @@ -33,6 +33,7 @@ namespace SicModules.PMs.Routines SetPCMode, SetM1to16, + SetM17M18, SetM2toM40, SetPC, SetM291519to38, @@ -75,17 +76,18 @@ namespace SicModules.PMs.Routines SetV76, SetV75, - SetV30, SetV31, SetV32, SetV35V36, + SetV103, + SetV105, SetGroupV25, - SetV93V95, + SetV92V93V95, SetV94, SetV96, SetV68, - SetM35M37, + SetM32M35M37, SetM36, SetM38, @@ -110,7 +112,6 @@ namespace SicModules.PMs.Routines private IoThrottleValve2 _IoThrottle; private IoInterLock _pmIoInterLock; - private int _rotationCheckSpeed = 0; //设置旋转速度为0后检查是否转速低于此数值 private int _rotationCloseTimeout; //旋转停止超时 @@ -172,11 +173,13 @@ namespace SicModules.PMs.Routines SetRotationValve((int)RoutineStep.RotationEnable, _rotationCheckSpeed, false, _rotationCloseTimeout); //关闭V72,打开V25 - SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.V72, false, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupV25, IoGroupName.V25, true, _IoValueOpenCloseTimeout); + //打开V103,关闭V105 + SetIoValueByGroup((int)RoutineStep.SetV103, IoGroupName.V103, true, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.SetV105, IoGroupName.V105, false, _IoValueOpenCloseTimeout); //打开V31,打开V32 - SetIoValueByGroup((int)RoutineStep.SetV30, IoGroupName.V30, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV31, IoGroupName.V31, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout); @@ -201,12 +204,13 @@ namespace SicModules.PMs.Routines //M1-M16设定为default值(M2、M9、M15除外) SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0); + SetMfcToDefaultByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, 0); //设置所有PC到默认值 SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); //M2、M9、M15、M19-M40 MFC 3s ramp 到默认值 - SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM45, 3); + SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM42, 3); //关闭蝶阀 SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode, _IoThrottle, 8); @@ -219,25 +223,28 @@ namespace SicModules.PMs.Routines //打开A 组阀 SetIoValueByGroup((int)RoutineStep.SetGroupA, IoGroupName.A, true, _IoValueOpenCloseTimeout); + //Final2阀对应的MFC 3s Ramp到Default值 + SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal2, MfcGroupName.Final2, 3); + //打开Final2阀 SetIoValueByGroup((int)RoutineStep.OpenFinal2, IoGroupName.Final2, true, _IoValueOpenCloseTimeout); //Final2阀对应的MFC 3s Ramp到Default值 SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal2, MfcGroupName.Final2, 3); - SetIoValueByGroup((int)RoutineStep.SetV93V95, IoGroupName.V93V95, true, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.SetV92V93V95, IoGroupName.V92V93V95, true, _IoValueOpenCloseTimeout); TimeDelay((int)RoutineStep.TimeDelay2, 3); - SetMfcToDefaultByGroup((int)RoutineStep.SetM35M37, MfcGroupName.M35M37, 3); + SetMfcToDefaultByGroup((int)RoutineStep.SetM32M35M37, MfcGroupName.M32M35M37, 3); //打开V68 - //SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.V68, true, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout); //打开J Valves SetIoValueByGroup((int)RoutineStep.SetGroupJOpen, IoGroupName.J, true, _IoValueOpenCloseTimeout); //设置M2,M9,M15,M19-M26 3s ramp 到default 值 - SetMfcToDefaultByGroup((int)RoutineStep.SetM291519to26, MfcGroupName.M2toM26M43M44M45, 3); + SetMfcToDefaultByGroup((int)RoutineStep.SetM291519to26, MfcGroupName.M2toM26, 3); //开V94,V96需等到腔体压力大于950 WaitPMPressureAndSetMfcSpecial((int)RoutineStep.WaitPmPressureUp1, 950, _waitPMPressureUpTimeout); @@ -255,7 +262,7 @@ namespace SicModules.PMs.Routines WaitPMPressureAndSetMfcSpecial((int)RoutineStep.WaitPmPressureUp, _ventBasePressure, _waitPMPressureUpTimeout); //等待反应腔压力大于1000 //设置M28,M29,M31,M40 3s ramp 到default 值 - //SetMfcToDefaultByGroup((int)RoutineStep.SetMfc28to40Default, MfcGroupName.M27To3540To42, 3); + SetMfcToDefaultByGroup((int)RoutineStep.SetMfc28to40Default, MfcGroupName.M28293140, 3); _pmIoInterLock.SetPMVentRoutineRunning(false, out _); diff --git a/App/Modules/SicModules/PMs/Routines/Recipe/PrePMMacroRoutine.cs b/App/Modules/SicModules/PMs/Routines/Recipe/PrePMMacroRoutine.cs index 96a3322..b7efff8 100644 --- a/App/Modules/SicModules/PMs/Routines/Recipe/PrePMMacroRoutine.cs +++ b/App/Modules/SicModules/PMs/Routines/Recipe/PrePMMacroRoutine.cs @@ -134,7 +134,7 @@ namespace SicModules.PMs.Routines.Recipe // EV.PostAlarmLog(Module, $"can not run process,K valves is not closed!"); // return Result.FAIL; //} - //if (!PMDevice.CheckIOValueByGroup(IoGroupName.V72, true)) + //if (!PMDevice.CheckIOValueByGroup(IoGroupName.VentPump, true)) //{ // EV.PostAlarmLog(Module, $"can not run process,V72 is not open!"); // return Result.FAIL; diff --git a/App/SicSimulator/Instances/SimulatorSystem.cs b/App/SicSimulator/Instances/SimulatorSystem.cs index 109a2c4..16098ee 100644 --- a/App/SicSimulator/Instances/SimulatorSystem.cs +++ b/App/SicSimulator/Instances/SimulatorSystem.cs @@ -413,6 +413,7 @@ namespace SicSimulator.Instances new Tuple("AI_M15","AO_M15"), new Tuple("AI_M16","AO_M16"), new Tuple("AI_M17","AO_M17"), + new Tuple("AI_M18","AO_M18"), new Tuple("AI_M19","AO_M19"), new Tuple("AI_M20","AO_M20"), new Tuple("AI_M22","AO_M22"),