Merge branch 'develop' of http://112.124.35.216:65000/Sic-Software/MoS2 into develop

This commit is contained in:
hanqiangqiang 2026-08-05 08:35:46 +08:00
commit 989c3a5580
10 changed files with 354 additions and 457 deletions

View File

@ -71,8 +71,9 @@ namespace SicModules.PMs
{ {
Final1, Final1,
Final2, Final2,
M1to17, M1toM17,
M18to40No303439, M18toM40No303439,
M2M9M15M19_M26,
M1to16, M1to16,
M5M21, M5M21,
M17, M17,
@ -93,7 +94,7 @@ namespace SicModules.PMs
All, All,
M32M35M37, M32M35M37,
M38, M38,
AllWithoutM28M29M31M40 AllWithoutM28M29M31M40,
}; };
public partial class PMModule public partial class PMModule
@ -1031,7 +1032,7 @@ namespace SicModules.PMs
} }
else if (eGroupName == IoGroupName.Final1) else if (eGroupName == IoGroupName.Final1)
{ {
lst = new List<string>() { "V92", "V93", "V94", "V95", "V96" }; lst = new List<string>() { "V93", "V94", "V95", "V96" };
} }
else if (eGroupName == IoGroupName.Final1WithOutV94) else if (eGroupName == IoGroupName.Final1WithOutV94)
{ {
@ -1157,14 +1158,18 @@ namespace SicModules.PMs
{ {
lst = new List<int>() { 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 30 };//新增 30 lst = new List<int>() { 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 30 };//新增 30
} }
else if (mGroupName == MfcGroupName.M1to17) else if (mGroupName == MfcGroupName.M1toM17)
{ {
lst = new List<int>() { 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17 }; lst = new List<int>() { 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17 };
} }
else if (mGroupName == MfcGroupName.M18to40No303439) else if (mGroupName == MfcGroupName.M18toM40No303439)
{ {
lst = new List<int>() { 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32,33,35,36,37,38,40 };//无30 34 39 lst = new List<int>() { 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32,33,35,36,37,38,40 };//无30 34 39
} }
else if (mGroupName == MfcGroupName.M2M9M15M19_M26)
{
lst = new List<int>() { 2, 9, 15, 19, 20, 21, 22, 23, 24, 25, 26};
}
else if (mGroupName == MfcGroupName.M5M21) else if (mGroupName == MfcGroupName.M5M21)
{ {
lst = new List<int>() { 5,21 }; lst = new List<int>() { 5,21 };

View File

@ -1743,7 +1743,7 @@ namespace SicModules.PMs.Routines.Base
}, },
() => () =>
{ {
SetMfcRampByGroupAndPressureAlways(currentPressureUpOrDown); //SetMfcRampByGroupAndPressureAlways(currentPressureUpOrDown);
return Math.Abs(_IoThrottle.PressureFeedback - pressure) <= _pmPressureMaxDiff; return Math.Abs(_IoThrottle.PressureFeedback - pressure) <= _pmPressureMaxDiff;
}, },
timeout * 1000); timeout * 1000);
@ -1772,7 +1772,7 @@ namespace SicModules.PMs.Routines.Base
}, },
() => () =>
{ {
SetMfcRampByGroupAndPressureAlways(currentPressureUpOrDown); //SetMfcRampByGroupAndPressureAlways(currentPressureUpOrDown);
return _IoThrottle.PressureFeedback >= pressure; return _IoThrottle.PressureFeedback >= pressure;
}, },
timeout * 1000); timeout * 1000);

View File

@ -1,12 +1,13 @@
using System.Collections.Generic; using Aitex.Core.RT.Device;
using System.Diagnostics;
using Aitex.Core.RT.Device;
using Aitex.Core.RT.Device.Devices; using Aitex.Core.RT.Device.Devices;
using Aitex.Core.RT.Event; using Aitex.Core.RT.Event;
using Aitex.Core.RT.Routine; using Aitex.Core.RT.Routine;
using Aitex.Core.RT.SCCore; using Aitex.Core.RT.SCCore;
using MECF.Framework.Common.Equipment; using MECF.Framework.Common.Equipment;
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.MFCs;
using SicModules.PMs.Routines.Base; using SicModules.PMs.Routines.Base;
using System.Collections.Generic;
using System.Diagnostics;
namespace SicModules.PMs.Routines namespace SicModules.PMs.Routines
{ {
@ -30,7 +31,7 @@ namespace SicModules.PMs.Routines
SetGroupG, SetGroupG,
SetGroupK, SetGroupK,
SetM1to16, SetM1toM17,
SetM17M18, SetM17M18,
SetPC, SetPC,
SetGroupJ, SetGroupJ,
@ -50,7 +51,7 @@ namespace SicModules.PMs.Routines
SetGasIn2, SetGasIn2,
SetGroupJOpen, SetGroupJOpen,
SetM291519to26, SetM18toM40,
OpenFinal2, OpenFinal2,
SetMfcFinal2, SetMfcFinal2,
@ -122,7 +123,7 @@ namespace SicModules.PMs.Routines
SetTVEnable_2, SetTVEnable_2,
SetTVPressMode, SetTVPressMode,
SetTv1, SetTv1,
SetM2toM40, Set0M18toM40,
SetM18, SetM18,
SetV31, SetV31,
SetV32, SetV32,
@ -142,7 +143,6 @@ namespace SicModules.PMs.Routines
SetM18_1, SetM18_1,
SetM18_2, SetM18_2,
SetV92V93V95, SetV92V93V95,
SetV94, SetV94,
SetV96, SetV96,
@ -178,6 +178,30 @@ namespace SicModules.PMs.Routines
Notify2, Notify2,
Notify3, Notify3,
Notify4, Notify4,
WaitPressUpTo950,
FirstWaitPressureUp,
FirstSetDefault_M18toM40,
FirstSet0_M18toM40,
FirstSetEPV2_1,
FirstSetEPV2_2,
FirstSetTv1,
LoopSetDefault_M18toM40,
LoopSetEPV2_1,
LoopWaitPressureUp,
LoopSetEPV2_2,
LoopSetTv1,
LoopSet0_M18toM40,
Loop2Set0_M18toM40,
LoopWaitTv1,
FinishSetM1toM17,
FinishSetM18toM40,
FinishVentPumpClose_1,
FinishCloseGroupV25,
FinishSetPressureUp2,
FinishSetTVto300
} }
private ModuleName moduleName; private ModuleName moduleName;
@ -276,149 +300,115 @@ namespace SicModules.PMs.Routines
SetHeatEnable((int)RoutineStep.HeatEnable, false, _heatTimeOut); SetHeatEnable((int)RoutineStep.HeatEnable, false, _heatTimeOut);
SetRotationValve((int)RoutineStep.RotationEnable, _rotationCheckSpeed, false, _rotationCloseTimeout); SetRotationValve((int)RoutineStep.RotationEnable, _rotationCheckSpeed, false, _rotationCloseTimeout);
//关闭V72,打开V25 //3、 关闭 V72(GasBox.Vent.Pump 打开 V25(GasBox.Vent.Bypass)。
SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupV25, IoGroupName.V25, true, _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 //4、 打开 V31H2.Supply、 V32(Ar.Supply
SetIoValueByGroup((int)RoutineStep.SetV31, IoGroupName.V31, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV31, IoGroupName.V31, true, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout);
//打开V35,打开V36 //5、 打开 V35(H2N2.Line1)、 V36(H2N2.Line2),关闭 B/C/E/F/H/KValves,打开 D/G Valves 打开 J valve。
SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout);
//关闭B/C/E/F/H/K 阀门
SetIoValueByGroup((int)RoutineStep.SetGroupB, IoGroupName.B, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupB, IoGroupName.B, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupC, IoGroupName.C, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupC, IoGroupName.C, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupE, IoGroupName.E, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupE, IoGroupName.E, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupF, IoGroupName.F, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupF, IoGroupName.F, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupH, IoGroupName.H, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupH, IoGroupName.H, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupK, IoGroupName.K, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupK, IoGroupName.K, false, _IoValueOpenCloseTimeout);
//打开D/G 阀门
SetIoValueByGroup((int)RoutineStep.SetGroupD, IoGroupName.D, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupD, IoGroupName.D, true, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupG, IoGroupName.G, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupG, IoGroupName.G, true, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout);
//打开V65
SetIoValueByGroup((int)RoutineStep.SetV65, IoGroupName.V65, true, _IoValueOpenCloseTimeout);
//设置MFC和PC的模式 //设置MFC和PC的模式
SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All); SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All);
SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList); SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList);
//打开J阀门 //6、 M1-M17 设定为 default 值,所有 PC 设定为 default 值(PC1-PC9) M18-M40除M30\M34\M39 MFC 3s ramp 到 default 值。
SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout); SetMfcToDefaultByGroup((int)RoutineStep.SetM1toM17, MfcGroupName.M1toM17, 0);
//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); SetPcToDefault((int)RoutineStep.SetPC, _lstPcList);
SetMfcToDefaultByGroup((int)RoutineStep.SetM18toM40, MfcGroupName.M18toM40No303439, 3);
//设置M2,M9,M15,M19-M26 3s ramp 到default 值 //7、打开 EPV2等待 3s, 打开 TV enable, 压力模式,伺服压力默认设定为 0mbar
SetMfcToDefaultByGroup((int)RoutineStep.SetM291519to26, MfcGroupName.M2toM26, 3);
//打开EPV2
SetIoValueByGroup((int)RoutineStep.SetEPV2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetEPV2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout);
TimeDelay((int)RoutineStep.TimeDelay1, 3); TimeDelay((int)RoutineStep.TimeDelay1, 3);
//设置蝶阀Enable
SetThrottleEnableAndWait((int)RoutineStep.SetTVEnable_1, _IoThrottle, 5); SetThrottleEnableAndWait((int)RoutineStep.SetTVEnable_1, _IoThrottle, 5);
//设置蝶阀为压力模式
SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode, _IoThrottle, 5); SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode, _IoThrottle, 5);
//伺服压力设定值到0mbar
SetThrottleToTargetAndNoWait((int)RoutineStep.SetTv1, _IoThrottle, _pressureMin); SetThrottleToTargetAndNoWait((int)RoutineStep.SetTv1, _IoThrottle, _pressureMin);
//M2、M9、M15、M19-M40 MFC 5s ramp 到0 //8、当蝶阀设定值 ramp 到 0 后,将 M18-M40除 M30\M34\M39 MFC 3s ramp 到 0
SetMfcByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM42, 0, 5); SetMfcByGroup((int)RoutineStep.Set0M18toM40, MfcGroupName.M18toM40No303439, 0, 3);
SetMfcByGroup((int)RoutineStep.SetM18, MfcGroupName.M18, 0, 5);
//等待腔体压力Pump到设定值 //9、等待腔体压力到 Pump Base Pressure可配置蝶阀改为位置模式开度设定 100%
WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _pressureMin, _pumpTimeout); WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _pressureMin, _pumpTimeout);
TimeDelay((int)RoutineStep.TimeDelay2, 3); TimeDelay((int)RoutineStep.TimeDelay2, 3);
//蝶阀设置为位置模式,开度设置为最大
SetThrottleToPositionMode((int)RoutineStep.SetTVPositionMode, _IoThrottle, _throttleTimeout); SetThrottleToPositionMode((int)RoutineStep.SetTVPositionMode, _IoThrottle, _throttleTimeout);
TimeDelay((int)RoutineStep.TimeDelay11, 3); TimeDelay((int)RoutineStep.TimeDelay11, 3);
SetThrottleSetPosition((int)RoutineStep.SetTVPositionMax, _IoThrottle, 100, _throttleTimeout); SetThrottleSetPosition((int)RoutineStep.SetTVPositionMax, _IoThrottle, 100, _throttleTimeout);
//Final2阀对应的MFC 3s Ramp到Default值 //10、 M27、 M28、 M29、 M31、 M33、 M40 依次设定 3S ramp 到 default 值
SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal2, MfcGroupName.Final2, 3); SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal2, MfcGroupName.Final2, 3);
//打开Final2阀 //11、打开 V87 SHPurge.Final、 V88 OuterGas.Final、 V89 InnerGas.Final、 V90MiddleGas.Final、 V91OpticPurge.Final、 V97CarryGas.Final
SetIoValueByGroup((int)RoutineStep.OpenFinal2, IoGroupName.Final2, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.OpenFinal2, IoGroupName.Final2, true, _IoValueOpenCloseTimeout);
//打开V68 //12、 打开 V68ChamBody.N2.Purge
SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout);
TimeDelay((int)RoutineStep.TimeDelay3, 1); TimeDelay((int)RoutineStep.TimeDelay3, 1);
//打开V92,V93和V95,再打开V94,在打开V96 //13、 M32、 M35、 M36、 M37、 M38 依次设定 3S ramp 到 default 值
SetMfcToDefaultByGroup((int)RoutineStep.SetM32M35M37, MfcGroupName.M32M35M37, 1); SetMfcToDefaultByGroup((int)RoutineStep.SetM32M35M37, MfcGroupName.M32M35M37, 1);
SetMfcToDefaultByGroup((int)RoutineStep.SetM36, MfcGroupName.M36, 1); SetMfcToDefaultByGroup((int)RoutineStep.SetM36, MfcGroupName.M36, 1);
SetMfcToDefaultByGroup((int)RoutineStep.SetM38, MfcGroupName.M38, 1); SetMfcToDefaultByGroup((int)RoutineStep.SetM38, MfcGroupName.M38, 1);
TimeDelay((int)RoutineStep.TimeDelay4, 3); TimeDelay((int)RoutineStep.TimeDelay4, 3);
//14、打开 V92GasRingPurge.Final、 V93ChamberPurge.Final、 V95ConfinementRing.Final
//等待 950打开 V94RotationUpPurge.Final、 等待 3S打开 V96HeaterWF.Final
//蝶阀改为压力模式
SetIoValueByGroup((int)RoutineStep.SetV92V93V95, IoGroupName.V92V93V95, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV92V93V95, IoGroupName.V92V93V95, true, _IoValueOpenCloseTimeout);
WaitChamberPressUpTo((int)RoutineStep.WaitPressUpTo950, 950, 600);
SetIoValueByGroup((int)RoutineStep.SetV94, IoGroupName.V94, true, _IoValueOpenCloseTimeout);
TimeDelay((int)RoutineStep.TimeDelay4, 3);
SetIoValueByGroup((int)RoutineStep.SetV96, IoGroupName.V96, true, _IoValueOpenCloseTimeout);
SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode1, _IoThrottle, 5);
//M18 - M40除 M30\M34\M39 MFC 3s ramp 到 default 值。
//关闭 EPV2等待压力达到设定值压力达到后打开 EPV2
//M18 - M40除 M30\M34\M39 MFC 5s ramp 到 0。
//伺服压力到设定值 0可配置
SetMfcToDefaultByGroup((int)RoutineStep.FirstSetDefault_M18toM40, MfcGroupName.M18toM40No303439, 3);
SetIoValueByGroup((int)RoutineStep.FirstSetEPV2_1, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout);
WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.FirstWaitPressureUp, _IoThrottle, _pressureMax, _ventTimeout);
SetIoValueByGroup((int)RoutineStep.FirstSetEPV2_2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout);
SetMfcByGroup((int)RoutineStep.FirstSet0_M18toM40, MfcGroupName.M18toM40No303439, 0, 5);
SetThrottleToTargetAndNoWait((int)RoutineStep.FirstSetTv1, _IoThrottle, _pressureMin);
//循环开始 //循环开始
Loop((int)RoutineStep.StartLoop, _pressureLoopCount); Loop((int)RoutineStep.StartLoop, _pressureLoopCount);
//M2、M9、M15、M19-M40 MFC 3s ramp 到 default 值 //M18 - M40除 M30\M34\M39 MFC 3s ramp 到 default 值。
SetMfcToDefaultByGroup((int)RoutineStep.SetM2TOM40Default, MfcGroupName.M2toM42, 3); //关闭 EPV2等待压力达到设定值压力达到后打开 EPV2
SetMfcToDefaultByGroup((int)RoutineStep.SetM18Default, MfcGroupName.M18, 3); //M18 - M40除 M30\M34\M39 MFC 5s ramp 到 0。
//伺服压力到设定值 0可配置
//先关蝶阀,再关闭EPV2 //M18 - M40除 M30\M34\M39 MFC5s ramp 到 0。
SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode1, _IoThrottle, 8); //等待压力到达 0可配置
SetThrottleDisable((int)RoutineStep.CLoseTV1, _IoThrottle, 8); SetMfcToDefaultByGroup((int)RoutineStep.LoopSetDefault_M18toM40, MfcGroupName.M18toM40No303439, 3);
TimeDelay((int)RoutineStep.TimeDelay5, 1); SetIoValueByGroup((int)RoutineStep.LoopSetEPV2_1, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetEPV2_1, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout); WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.LoopWaitPressureUp, _IoThrottle, _pressureMax, _ventTimeout);
SetIoValueByGroup((int)RoutineStep.LoopSetEPV2_2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout);
SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown1, PressureUpOrDown.Uping); SetMfcByGroup((int)RoutineStep.LoopSet0_M18toM40, MfcGroupName.M18toM40No303439, 0, 5);
WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.WaitPressureUp, _IoThrottle, _pressureMax, _ventTimeout); SetThrottleToTargetAndNoWait((int)RoutineStep.LoopSetTv1, _IoThrottle, _pressureMin);
SetMfcByGroup((int)RoutineStep.Loop2Set0_M18toM40, MfcGroupName.M18toM40No303439, 0, 5);
TimeDelay((int)RoutineStep.TimeDelay6, _pressureMaxDelay); WaitChamberPressDownTo((int)RoutineStep.LoopWaitTv1, _pressureMin, _pumpTimeout);
//打开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.M2toM42, 0, 3);
SetMfcByGroup((int)RoutineStep.SetM18_1, MfcGroupName.M18, 0, 3);
//伺服到0mbar
SetThrottlePressureAndWait((int)RoutineStep.SetPressureDown, _IoThrottle, _pressureMin, _pumpTimeout);
EndLoop((int)RoutineStep.EndLoop); EndLoop((int)RoutineStep.EndLoop);
//设置 M1-M17 3s ramp 到 default M18 - M40除 M30\M34\M39 MFC 3s ramp 到default 值。
//M27-M40 MFC 3s ramp 到 default 值 //打开 V72(GasBox.Vent.Pump 关闭 V25(GasBox.Vent.Bypass) 反应腔压力伺服到300mbar可配置
SetMfcToDefaultByGroup((int)RoutineStep.SetMfc2to40Default, MfcGroupName.M2toM42, 3);
SetMfcToDefaultByGroup((int)RoutineStep.SetM18_2, MfcGroupName.M18, 3); SetMfcToDefaultByGroup((int)RoutineStep.FinishSetM1toM17, MfcGroupName.M1toM17, 3);
SetMfcToDefaultByGroup((int)RoutineStep.FinishSetM18toM40, MfcGroupName.M18toM40No303439, 3);
//打开J阀门 SetIoValueByGroup((int)RoutineStep.FinishVentPumpClose_1, IoGroupName.VentPump, true, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupJ_1, IoGroupName.J, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.FinishCloseGroupV25, IoGroupName.V25, false, _IoValueOpenCloseTimeout);
SetThrottleToTargetAndNoWait((int)RoutineStep.FinishSetPressureUp2, _IoThrottle, _throttleFinalPressure);
//打开V72,关闭V25 WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.FinishSetTVto300, _IoThrottle, _throttleFinalPressure, _pmPressureMaxDiff, _throttleTimeout);
SetIoValueByGroup((int)RoutineStep.VentPumpClose_1, IoGroupName.VentPump, true, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.CloseGroupV25, IoGroupName.V25, false, _IoValueOpenCloseTimeout);
//设置蝶阀为压力模式
SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode2, _IoThrottle, 5);
//压力伺服到300mbar
SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown2, PressureUpOrDown.Uping);
SetThrottleToTargetAndNoWait((int)RoutineStep.SetPressureUp2, _IoThrottle, _throttleFinalPressure);
WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.SetTVto300, _IoThrottle, _throttleFinalPressure, _pmPressureMaxDiff, _throttleTimeout);
} }
catch (RoutineBreakException) catch (RoutineBreakException)
{ {

View File

@ -1,14 +1,15 @@
using System; using Aitex.Core.RT.Device;
using System.Collections.Generic;
using System.Diagnostics;
using Aitex.Core.RT.Device;
using Aitex.Core.RT.Device.Devices; using Aitex.Core.RT.Device.Devices;
using Aitex.Core.RT.Event; using Aitex.Core.RT.Event;
using Aitex.Core.RT.Routine; using Aitex.Core.RT.Routine;
using Aitex.Core.RT.SCCore; using Aitex.Core.RT.SCCore;
using MECF.Framework.Common.DBCore; using MECF.Framework.Common.DBCore;
using MECF.Framework.Common.Equipment; using MECF.Framework.Common.Equipment;
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.MFCs;
using SicModules.PMs.Routines.Base; using SicModules.PMs.Routines.Base;
using System;
using System.Collections.Generic;
using System.Diagnostics;
namespace SicModules.PMs.Routines namespace SicModules.PMs.Routines
{ {
@ -34,7 +35,7 @@ namespace SicModules.PMs.Routines
SetMFCMode, SetMFCMode,
SetPCMode, SetPCMode,
SetM1to16, SetM1toM17,
SetPC, SetPC,
SetGroupJ, SetGroupJ,
SetM291519to38, SetM291519to38,
@ -52,7 +53,7 @@ namespace SicModules.PMs.Routines
SetGasIn2, SetGasIn2,
SetGroupJOpen, SetGroupJOpen,
SetM291519to26, SetM18toM40,
SetM17M18, SetM17M18,
OpenFinal2, OpenFinal2,
@ -66,7 +67,7 @@ namespace SicModules.PMs.Routines
SetTVPressMode, SetTVPressMode,
SetTv1, SetTv1,
WaitTv1, WaitTv1,
SetM2toM40, Set0M18toM40,
SetM18, SetM18,
SetTVPositionMode, SetTVPositionMode,
SetTVPositionMode_1, SetTVPositionMode_1,
@ -97,7 +98,7 @@ namespace SicModules.PMs.Routines
SetMfc28to31, SetMfc28to31,
SetReactorPress, SetReactorPress,
CloseFinanl1, CloseFinal1,
CloseFinanl2, CloseFinanl2,
CloseEPV2, CloseEPV2,
SetTVCloseMode2, SetTVCloseMode2,
@ -145,6 +146,7 @@ namespace SicModules.PMs.Routines
SetV31, SetV31,
SetV32, SetV32,
SetV35V36, SetV35V36,
CloseV68,
SetV92V93V95, SetV92V93V95,
SetV94, SetV94,
@ -184,6 +186,13 @@ namespace SicModules.PMs.Routines
TimeDelay15, TimeDelay15,
TimeDelay16, TimeDelay16,
TimeDelay17, TimeDelay17,
LoopSetTVPressMode1,
LoopSetM18toM40,
LoopSetTv1,
LoopSet0M18toM40,
LoopSetM18Default,
LoopWaitTv1
} }
enum LeakCheckType enum LeakCheckType
@ -308,137 +317,73 @@ namespace SicModules.PMs.Routines
SetHeatEnable((int)RoutineStep.HeatEnable, false, _heatTimeOut); SetHeatEnable((int)RoutineStep.HeatEnable, false, _heatTimeOut);
SetRotationValve((int)RoutineStep.RotationEnable, _rotationCheckSpeed, false, _rotationCloseTimeout); SetRotationValve((int)RoutineStep.RotationEnable, _rotationCheckSpeed, false, _rotationCloseTimeout);
//关闭V72,打开V25 //3、 关闭 V72(GasBox.Vent.Pump
SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, 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 //4、 打开 V31(H2.Supply)、 V32(N2Supply)。
SetIoValueByGroup((int)RoutineStep.SetV31, IoGroupName.V31, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV31, IoGroupName.V31, true, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout);
//打开V35,打开V36 //5、 打开 V35(H2N2.Line1)、 V36(H2N2.Line2),关闭 B/C/E/F/H/KValves,打开 D/G Valves 打开 J valve。
SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout);
//关闭B/C/E/F/H/K 阀门
SetIoValueByGroup((int)RoutineStep.SetGroupB, IoGroupName.B, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupB, IoGroupName.B, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupC, IoGroupName.C, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupC, IoGroupName.C, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupE, IoGroupName.E, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupE, IoGroupName.E, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupF, IoGroupName.F, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupF, IoGroupName.F, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupH, IoGroupName.H, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupH, IoGroupName.H, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupK, IoGroupName.K, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupK, IoGroupName.K, false, _IoValueOpenCloseTimeout);
//打开D/G 阀门
SetIoValueByGroup((int)RoutineStep.SetGroupD, IoGroupName.D, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupD, IoGroupName.D, true, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupG, IoGroupName.G, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupG, IoGroupName.G, true, _IoValueOpenCloseTimeout);
//设置MFC和PC的模式
SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All);
SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList);
//M1-M16设定为default值(M2、M9、M15除外)
SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0);
//设置所有PC到默认值
SetPcToDefault((int)RoutineStep.SetPC, _lstPcList);
//设置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);
//打开V68
SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout);
//打开J阀门
SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout);
//打开EPV2 //6、 M1-M17 设定为 default 值,所有 PC 设定为 default 值(PC1-PC9) M18-M40除M30\M34\M39 MFC 3s ramp 到 default 值。
SetMfcToDefaultByGroup((int)RoutineStep.SetM1toM17, MfcGroupName.M1toM17, 0);
SetPcToDefault((int)RoutineStep.SetPC, _lstPcList);
SetMfcToDefaultByGroup((int)RoutineStep.SetM18toM40, MfcGroupName.M18toM40No303439, 3);
//7、打开 EPV2等待 3s, 打开 TV enable, 压力模式,伺服压力默认设定为 0mbar
SetIoValueByGroup((int)RoutineStep.SetEPV2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetEPV2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout);
TimeDelay((int)RoutineStep.TimeDelay1, 3); TimeDelay((int)RoutineStep.TimeDelay1, 3);
//设置蝶阀Enable
SetThrottleEnableAndWait((int)RoutineStep.SetTVEnable, _IoThrottle, 5); SetThrottleEnableAndWait((int)RoutineStep.SetTVEnable, _IoThrottle, 5);
//设置蝶阀为压力模式
SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode, _IoThrottle, 5); SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode, _IoThrottle, 5);
//伺服压力设定值到0mbar
SetThrottleToTargetAndNoWait((int)RoutineStep.SetTv1, _IoThrottle, _pressureMin); SetThrottleToTargetAndNoWait((int)RoutineStep.SetTv1, _IoThrottle, _pressureMin);
//M2、M9、M15、M19-M40 MFC 3s ramp到0 //8、当蝶阀设定值 ramp 到 0 后,将 M18-M40除 M30\M34\M39 MFC 3s ramp 到 0
SetMfcByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM42, 0, 3); SetMfcByGroup((int)RoutineStep.Set0M18toM40, MfcGroupName.M18toM40No303439, 0, 3);
SetMfcByGroup((int)RoutineStep.SetM18, MfcGroupName.M18, 0, 3);
//等待腔体压力Pump到设定值 //9、等待腔体压力到 Pump Base Pressure可配置蝶阀改为位置模式开度设定 100%
WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _pressureMin, _pressureMinTimeout); WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _pressureMin, _pressureMinTimeout);
TimeDelay((int)RoutineStep.TimeDelay8, 3); TimeDelay((int)RoutineStep.TimeDelay8, 3);
//蝶阀设置为位置模式,开度设置为最大
SetThrottleToPositionMode((int)RoutineStep.SetTVPositionMode, _IoThrottle, _throttleTimeout); SetThrottleToPositionMode((int)RoutineStep.SetTVPositionMode, _IoThrottle, _throttleTimeout);
TimeDelay((int)RoutineStep.TimeDelay11, 3); TimeDelay((int)RoutineStep.TimeDelay11, 3);
SetThrottleSetPosition((int)RoutineStep.SetTVPositionMax, _IoThrottle, 100, _throttleTimeout); SetThrottleSetPosition((int)RoutineStep.SetTVPositionMax, _IoThrottle, 100, _throttleTimeout);
TimeDelay((int)RoutineStep.TimeDelay9, 3); TimeDelay((int)RoutineStep.TimeDelay9, 3);
//循环开始 //循环开始
Loop((int)RoutineStep.StartLoop, _pressureLoopCount); Loop((int)RoutineStep.StartLoop, _pressureLoopCount);
//蝶阀改为压力模式
//M2、M9、M15、M19-M40 MFC 3s ramp 到 default 值 //M18 - M40除 M30\M34\M39 MFC 3s ramp 到 default 值。
SetMfcToDefaultByGroup((int)RoutineStep.SetM2TOM40Default, MfcGroupName.M2toM42, 3); //压力 servo 到 300可配置
SetMfcToDefaultByGroup((int)RoutineStep.SetM18Default, MfcGroupName.M18, 3); //压力达到后, M18 - M40除 M30\M34\M39 MFC 5s ramp 到 0。
//等待压力到达 0可配置
//先关蝶阀,再关闭EPV2 SetThrottleToPressModeAndWait((int)RoutineStep.LoopSetTVPressMode1, _IoThrottle, 5);
SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode1, _IoThrottle, 8); SetMfcToDefaultByGroup((int)RoutineStep.LoopSetM18toM40, MfcGroupName.M18toM40No303439, 3);
SetThrottleDisable((int)RoutineStep.CLoseTV1, _IoThrottle, 8); SetThrottleToTargetAndNoWait((int)RoutineStep.LoopSetTv1, _IoThrottle, _pressureMin);
TimeDelay((int)RoutineStep.TimeDelay5, 1); SetMfcByGroup((int)RoutineStep.LoopSet0M18toM40, MfcGroupName.M18toM40No303439, 0, 5);
SetIoValueByGroup((int)RoutineStep.SetEPV2_1, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout); SetMfcToDefaultByGroup((int)RoutineStep.LoopSetM18Default, MfcGroupName.M18, 3);
WaitChamberPressDownTo((int)RoutineStep.LoopWaitTv1, _pressureMin, _pressureMinTimeout);
SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown1, PressureUpOrDown.Uping);
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
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.M2toM42, 0, 3);
SetMfcByGroup((int)RoutineStep.SetM18_1, MfcGroupName.M18, 0, 3);
//伺服到0mbar
SetThrottlePressureAndWait((int)RoutineStep.SetPressureDown, _IoThrottle, _pressureMin, _pressureMinTimeout);
EndLoop((int)RoutineStep.EndLoop); EndLoop((int)RoutineStep.EndLoop);
//11、 依次关闭 Final valves
//依次关闭Final1 //先 关 闭 V93 ChamberPurge.Final )、 V94 RotationUpPurge.Final )、 V95ConfinementRing.Final、 V96HeaterWF.Final
SetIoValueByGroup((int)RoutineStep.CloseGasIn1, IoGroupName.GasIn1, false, _IoValueOpenCloseTimeout); //再关闭 V87 SHPurge.Final、 V88 OuterGas.Final、 V89 InnerGas.Final、 V90 MiddleGas.Final )、 V91 OpticPurge.Final )、 V92 GasRingPurge.Final )、 V97CarryGas.Final
Delay((int)RoutineStep.TimeDelay13, 5); SetIoValueByGroup((int)RoutineStep.CloseFinal1, IoGroupName.Final1, false, _IoValueOpenCloseTimeout);
//关闭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);
//关闭Final1阀
SetIoValueByGroup((int)RoutineStep.CloseFinanl1, IoGroupName.Final1, false, _IoValueOpenCloseTimeout);
//关闭Final2
SetIoValueByGroup((int)RoutineStep.CloseFinal2, IoGroupName.Final2, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.CloseFinal2, IoGroupName.Final2, false, _IoValueOpenCloseTimeout);
//12、延时一定时间后参数配置 关闭蝶阀,再关闭 EPV2 开始测漏记录腔体压力 P1mbar和时间 T1测试时间 T 结束后, 记录腔体压力 P2 和时间 T2
//延时 //计算腔体漏率
//腔体漏率 =P2 - P1 /T2 - T1 *60
//所得漏率与设定范围对比,小于范围,测漏成功,否则报错提示
TimeDelay((int)RoutineStep.TimeDelay15, _paramContinuePumpTime); TimeDelay((int)RoutineStep.TimeDelay15, _paramContinuePumpTime);
//先关蝶阀,再关闭EPV2
SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode2, _IoThrottle, 8); SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode2, _IoThrottle, 8);
SetThrottleDisable((int)RoutineStep.CLoseTvvvv, _IoThrottle, 8); SetThrottleDisable((int)RoutineStep.CLoseTvvvv, _IoThrottle, 8);
TimeDelay((int)RoutineStep.TimeDelay16, 1); TimeDelay((int)RoutineStep.TimeDelay16, 1);

View File

@ -1,8 +1,11 @@
using Aitex.Core.RT.Event; using Aitex.Core.RT.Device;
using Aitex.Core.RT.Device.Devices;
using Aitex.Core.RT.Event;
using Aitex.Core.RT.Routine; using Aitex.Core.RT.Routine;
using Aitex.Core.RT.SCCore; using Aitex.Core.RT.SCCore;
using MECF.Framework.Common.Equipment; using MECF.Framework.Common.Equipment;
using MECF.Framework.Common.SubstrateTrackings; using MECF.Framework.Common.SubstrateTrackings;
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.MFCs;
using SicModules.PMs.Routines.Base; using SicModules.PMs.Routines.Base;
namespace SicModules.PMs.Routines namespace SicModules.PMs.Routines
@ -46,11 +49,37 @@ namespace SicModules.PMs.Routines
TimeDelay12, TimeDelay12,
TimeDelay13, TimeDelay13,
TimeDelay14, TimeDelay14,
TimeDelay15 TimeDelay15,
SetV31,
SetV32,
SetV35V36,
SetGroupB,
SetGroupC,
SetGroupE,
SetGroupF,
SetGroupH,
SetGroupK,
SetGroupD,
SetGroupG,
SetM1toM17,
SetPC,
SetM18toM40,
SetEPV2,
SetGroupJ,
SetV72,
SetV25,
SetPressureDown,
SetTVto300
} }
bool hasWafer; bool hasWafer;
private IoThrottleValve2 _IoThrottle;
private double _throttleFinalPressure = 300;//蝶阀最终调整对的压力
private double _pmPressureMaxDiff; //蝶阀与目标压力的差值范围(认为调整到位了)
private int _throttleTimeout; //蝶阀调整到指定压力的超时时间
//private int _timeout; //private int _timeout;
private int _rotationSpeed = 60; private int _rotationSpeed = 60;
@ -68,6 +97,7 @@ namespace SicModules.PMs.Routines
private float _scrL2Ratio = 0; private float _scrL2Ratio = 0;
private float _scrL3Ratio = 0; private float _scrL3Ratio = 0;
private int _IoValueOpenCloseTimeout = 10; //开关超时时间
private double _targetPressure; private double _targetPressure;
private PMServoToPressure _pmServoToPressure; private PMServoToPressure _pmServoToPressure;
@ -99,11 +129,14 @@ namespace SicModules.PMs.Routines
public override Result Start(params object[] objs) public override Result Start(params object[] objs)
{ {
//servo = DEVICE.GetDevice<NAISServo>($"{Module}.NAISServo");
//_timeout = SC.GetValue<int>($"NAISServo.UpTimeout"); _IoThrottle = DEVICE.GetDevice<IoThrottleValve2>($"{Module}.TV");
_rotationSpeed = SC.GetValue<int>($"PM.{Module}.ProcessIdle.RotationSpeed"); _rotationSpeed = SC.GetValue<int>($"PM.{Module}.ProcessIdle.RotationSpeed");
_pmPressureMaxDiff = SC.GetValue<double>($"PM.{Module}.ThrottlePressureMaxDiff");
_throttleFinalPressure = SC.GetValue<double>($"PM.{Module}.ProcessIdle.FinalPressure");
_throttleTimeout = SC.GetValue<int>($"PM.{Module}.ThrottlePressureTimeout");
_psuHeatEnable = SC.GetValue<bool>($"PM.{Module}.ProcessIdle.PSUHeaterEnable"); _psuHeatEnable = SC.GetValue<bool>($"PM.{Module}.ProcessIdle.PSUHeaterEnable");
_psuHeatMode = SC.GetValue<int>($"PM.{Module}.ProcessIdle.PSUHeaterMode"); _psuHeatMode = SC.GetValue<int>($"PM.{Module}.ProcessIdle.PSUHeaterMode");
//_psuPowerRef = (float)SC.GetValue<double>($"PM.{Module}.ProcessIdle.PSUPowerRef"); //_psuPowerRef = (float)SC.GetValue<double>($"PM.{Module}.ProcessIdle.PSUPowerRef");
@ -135,19 +168,41 @@ namespace SicModules.PMs.Routines
public override Result Monitor() public override Result Monitor()
{ {
try try
{ {
//1、 打开 V31(H2.Supply)、 V32(Ar.Supply)。
SetIoValueByGroup((int)RoutineStep.SetV31, IoGroupName.V31, true, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout);
//2、 打开 V35(H2N2.Line1)、 V36(H2N2.Line2),关闭 B/ C / E / F / H / KValves,打开 D/ G Valves。
SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout);
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);
SetIoValueByGroup((int)RoutineStep.SetGroupD, IoGroupName.D, true, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupG, IoGroupName.G, true, _IoValueOpenCloseTimeout);
//3、 M1 - M17 设定为 default 值,所有 PC 设定为 default 值(PC1 - PC9)。
SetMfcToDefaultByGroup((int)RoutineStep.SetM1toM17, MfcGroupName.M1toM17, 0);
SetPcToDefault((int)RoutineStep.SetPC, _lstPcList);
//4、 M18 - M40除 M30\M34\M39) MFC 3s ramp 到 default 值。
SetMfcToDefaultByGroup((int)RoutineStep.SetM18toM40, MfcGroupName.M18toM40No303439, 3);
//5、 打开 EPV2。
SetIoValueByGroup((int)RoutineStep.SetEPV2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout);
//6、打开 J Valves
SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout);
//7、打开 V72(GasBox.Vent.Pump 关闭 V25(GasBox.Vent.Bypass) 反应腔压力伺服到300mbar可配置
SetIoValueByGroup((int)RoutineStep.SetV72, IoGroupName.VentPump, true, _IoValueOpenCloseTimeout);
TimeDelay((int)RoutineStep.TimeDelay5, 1);
SetIoValueByGroup((int)RoutineStep.SetV25, IoGroupName.V25, false, _IoValueOpenCloseTimeout);
SetThrottleToTargetAndNoWait((int)RoutineStep.SetPressureDown, _IoThrottle, _throttleFinalPressure);
WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.SetTVto300, _IoThrottle, _throttleFinalPressure, _pmPressureMaxDiff, _throttleTimeout);
//8、设定转速可配置
EnableRotation((int)RoutineStep.EnableRotation, 5); EnableRotation((int)RoutineStep.EnableRotation, 5);
SetRotationValveAndNoWait((int)RoutineStep.SetRotation1, _rotationSpeed); SetRotationValveAndNoWait((int)RoutineStep.SetRotation1, _rotationSpeed);
TimeDelay((int)RoutineStep.TimeDelay1, _servoUpDelay); //9、加热使能PSU 和 SCR可配置
SetConfinementRingUpAndWait((int)RoutineStep.SetServoUp, 30);
ExecuteRoutine((int)RoutineStep.SetChamberPressure, _pmServoToPressure);
TimeDelay((int)RoutineStep.TimeDelay8, 1);
if (_psuHeatEnable && _needEnableHeat) if (_psuHeatEnable && _needEnableHeat)
{ {
SetPSUEnable((int)RoutineStep.EnableTC1, true, 5); SetPSUEnable((int)RoutineStep.EnableTC1, true, 5);
@ -168,6 +223,7 @@ namespace SicModules.PMs.Routines
SetSCRHeatRatio((int)RoutineStep.SetTC2Ratio, _scrL1Ratio, _scrL2Ratio, _scrL3Ratio); SetSCRHeatRatio((int)RoutineStep.SetTC2Ratio, _scrL1Ratio, _scrL2Ratio, _scrL3Ratio);
} }
TimeDelay((int)RoutineStep.TimeDelay8, 1);
WaitRotationValve((int)RoutineStep.WaitRotation1, _rotationSpeed, true, _rotationSpeed / 2); WaitRotationValve((int)RoutineStep.WaitRotation1, _rotationSpeed, true, _rotationSpeed / 2);
} }
catch (RoutineBreakException) catch (RoutineBreakException)

View File

@ -1,11 +1,12 @@
using System; using Aitex.Core.RT.Device.Devices;
using System.Collections.Generic;
using System.Diagnostics;
using Aitex.Core.RT.Event; using Aitex.Core.RT.Event;
using Aitex.Core.RT.Routine; using Aitex.Core.RT.Routine;
using Aitex.Core.RT.SCCore; using Aitex.Core.RT.SCCore;
using MECF.Framework.Common.Equipment; using MECF.Framework.Common.Equipment;
using SicModules.PMs.Routines.Base; using SicModules.PMs.Routines.Base;
using System;
using System.Collections.Generic;
using System.Diagnostics;
namespace SicModules.PMs.Routines namespace SicModules.PMs.Routines
{ {
@ -19,9 +20,9 @@ namespace SicModules.PMs.Routines
SetPSURatio, SetPSURatio,
SetSCRRatio, SetSCRRatio,
SetRotation, SetRotation,
SetM2toM40, SetM18toM40,
SetM17M18, SetM17M18,
SetM1to16, SetM1toM17,
SetM5M21, SetM5M21,
SetPC, SetPC,
SetV32, SetV32,
@ -41,7 +42,8 @@ namespace SicModules.PMs.Routines
SetV34, SetV34,
SetV100, SetV100,
TimeDelay1, TimeDelay1,
TimeDelay2, TimeDelay2,
SetGroupJ
} }
private int _heatTimeOut = 5; private int _heatTimeOut = 5;
@ -81,66 +83,35 @@ namespace SicModules.PMs.Routines
{ {
//CheckRoutineTimeOut(); //CheckRoutineTimeOut();
//停止加热 //停止加热、停止旋转
SetHeatEnable((int)RoutineStep.HeatEnable, false, _heatTimeOut); SetHeatEnable((int)RoutineStep.HeatEnable, false, _heatTimeOut);
//设置模式为Power
SetPSUHeatMode((int)RoutineStep.SetPSUMode, 0);
SetSCRHeatMode((int)RoutineStep.SetSCRMode, 0);
//设定功率为0
SetPSUHeatRatio((int)RoutineStep.SetPSURatio, 0, 0, 0);
SetSCRHeatRatio((int)RoutineStep.SetSCRRatio, 0, 0, 0);
//停止旋转
SetRotationValveAndNoWait((int)RoutineStep.SetRotation, 0); SetRotationValveAndNoWait((int)RoutineStep.SetRotation, 0);
//M2、M9、M15、M19-M40 MFC 30s ramp 到 default 值 //2、 M18-M40除 M30\M34\M39 MFC 30s ramp 到 default 值(时间可配置)
SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM42, _mfc2to40RampTime); SetMfcToDefaultByGroup((int)RoutineStep.SetM18toM40, MfcGroupName.M18toM40No303439, _mfc2to40RampTime);
SetMfcToDefaultByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, _mfc2to40RampTime);
//M1 - M16 MFC 30s ramp 到 default 值(M2、M9、M15除外) //3、 M1-M17 MFC 30s ramp 到 default 值(时间可配置) 所有 PC 设定为 default 值PC1-PC9
SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, _mfc1to16RampTime); SetMfcToDefaultByGroup((int)RoutineStep.SetM1toM17, MfcGroupName.M1toM17, _mfc1to16RampTime);
//M5 M2130s ramp 到 default 值
SetMfcToDefaultByGroup((int)RoutineStep.SetM5M21, MfcGroupName.M5M21, _mfc1to16RampTime);
//所有PC设定为默认值
SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); SetPcToDefault((int)RoutineStep.SetPC, _lstPcList);
//等待MFC等流量 //等待MFC等流量
TimeDelay((int)RoutineStep.TimeDelay1, Math.Max(_mfc2to40RampTime, _mfc1to16RampTime)); TimeDelay((int)RoutineStep.TimeDelay1, Math.Max(_mfc2to40RampTime, _mfc1to16RampTime));
//打开V32 //4、打开 V32(N2.Supply
SetIoValueByGroupNoWait((int)RoutineStep.SetV32, IoGroupName.V32, true); SetIoValueByGroupNoWait((int)RoutineStep.SetV32, IoGroupName.V32, true);
//打开V35,打开V36 //5、 打开 V35(H2N2.Line1)、 V36(H2N2.Line2),关闭 B/C/E/F/H/KValves,打开 D/G Valves打开 J valve。
SetIoValueByGroupNoWait((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true); SetIoValueByGroupNoWait((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true);
//关闭B/C/E/F/H/K 阀门
SetIoValueByGroupNoWait((int)RoutineStep.SetGroupB, IoGroupName.B, false); SetIoValueByGroupNoWait((int)RoutineStep.SetGroupB, IoGroupName.B, false);
SetIoValueByGroupNoWait((int)RoutineStep.SetGroupC, IoGroupName.C, false); SetIoValueByGroupNoWait((int)RoutineStep.SetGroupC, IoGroupName.C, false);
SetIoValueByGroupNoWait((int)RoutineStep.SetGroupE, IoGroupName.E, false); SetIoValueByGroupNoWait((int)RoutineStep.SetGroupE, IoGroupName.E, false);
SetIoValueByGroupNoWait((int)RoutineStep.SetGroupF, IoGroupName.F, false); SetIoValueByGroupNoWait((int)RoutineStep.SetGroupF, IoGroupName.F, false);
SetIoValueByGroupNoWait((int)RoutineStep.SetGroupH, IoGroupName.H, false); SetIoValueByGroupNoWait((int)RoutineStep.SetGroupH, IoGroupName.H, false);
SetIoValueByGroupNoWait((int)RoutineStep.SetGroupK, IoGroupName.K, false); SetIoValueByGroupNoWait((int)RoutineStep.SetGroupK, IoGroupName.K, false);
SetIoValueByGroupNoWait((int)RoutineStep.SetV100, IoGroupName.V100, false);
//打开D/G 阀门
SetIoValueByGroupNoWait((int)RoutineStep.SetGroupD, IoGroupName.D, true); SetIoValueByGroupNoWait((int)RoutineStep.SetGroupD, IoGroupName.D, true);
SetIoValueByGroupNoWait((int)RoutineStep.SetGroupG, IoGroupName.G, true); SetIoValueByGroupNoWait((int)RoutineStep.SetGroupG, IoGroupName.G, true);
SetIoValueByGroupNoWait((int)RoutineStep.SetGroupJ, IoGroupName.V65, true);
//打开V65
SetIoValueByGroupNoWait((int)RoutineStep.SetV65, IoGroupName.V65, true);
//打开V68
SetIoValueByGroupNoWait((int)RoutineStep.SetV68, IoGroupName.GasIn1, true);
//关闭V72,打开V25
SetIoValueByGroupNoWait((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false);
TimeDelay((int)RoutineStep.TimeDelay2, 2);
SetIoValueByGroupNoWait((int)RoutineStep.SetGroupV25, IoGroupName.V25, true);
} }
catch (RoutineBreakException) catch (RoutineBreakException)

View File

@ -1,12 +1,13 @@
using System.Collections.Generic; using Aitex.Core.RT.Device;
using System.Diagnostics;
using Aitex.Core.RT.Device;
using Aitex.Core.RT.Device.Devices; using Aitex.Core.RT.Device.Devices;
using Aitex.Core.RT.Event; using Aitex.Core.RT.Event;
using Aitex.Core.RT.Routine; using Aitex.Core.RT.Routine;
using Aitex.Core.RT.SCCore; using Aitex.Core.RT.SCCore;
using MECF.Framework.Common.Equipment; using MECF.Framework.Common.Equipment;
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.MFCs;
using SicModules.PMs.Routines.Base; using SicModules.PMs.Routines.Base;
using System.Collections.Generic;
using System.Diagnostics;
namespace SicModules.PMs.Routines namespace SicModules.PMs.Routines
{ {
@ -32,7 +33,7 @@ namespace SicModules.PMs.Routines
SetMFCMode, SetMFCMode,
SetPCMode, SetPCMode,
SetM1to16, SetM1toM17,
SetM17M18, SetM17M18,
SetPC, SetPC,
SetGroupJ, SetGroupJ,
@ -50,9 +51,11 @@ namespace SicModules.PMs.Routines
SetTVCloseMode, SetTVCloseMode,
SetTvPositionToZero, SetTvPositionToZero,
WaitPressUpTo950,
SetGasIn2, SetGasIn2,
SetGroupJOpen, SetGroupJOpen,
SetM291519to26, SetM18toM40,
SetM291519to26_1, SetM291519to26_1,
OpenFinal2, OpenFinal2,
@ -68,7 +71,8 @@ namespace SicModules.PMs.Routines
SetTVEnable_1, SetTVEnable_1,
SetTVEnable_2, SetTVEnable_2,
SetTVPressMode, SetTVPressMode,
SetTVPressMode2,
SetTVPressMode1, SetTVPressMode1,
SetTv1, SetTv1,
WaitTv1, WaitTv1,
@ -85,7 +89,7 @@ namespace SicModules.PMs.Routines
SetPressureUp, SetPressureUp,
SetPressureDown, SetPressureDown,
WaitPressureDown, WaitPressureDown,
WaitPressureUp,
VentPumpOpen, VentPumpOpen,
PressureToMax, PressureToMax,
@ -104,14 +108,29 @@ namespace SicModules.PMs.Routines
CLoseTvvvv, CLoseTvvvv,
CLoseTV1, CLoseTV1,
CLoseTV2, CLoseTV2,
SetEPV2_1,
SetEPV2_2, FirstWaitPressureUp,
FirstSetDefault_M18toM40,
FirstSet0_M18toM40,
FirstSetEPV2_1,
FirstSetEPV2_2,
FirstSetTv1,
SetEPV2_3, SetEPV2_3,
CLoseEPV1, CLoseEPV1,
CheckPM1000, CheckPM1000,
WaitPressUpTo1000, WaitPressUpTo1000,
WaitPressUpTo1020, WaitPressUpTo1020,
LoopSetDefault_M18toM40,
LoopSetEPV2_1,
LoopWaitPressureUp,
LoopSetEPV2_2,
LoopSetTv1,
LoopSet0_M18toM40,
Loop2Set0_M18toM40,
LoopWaitTv1,
SetPressUpOrDown1, SetPressUpOrDown1,
SetPressUpOrDown2, SetPressUpOrDown2,
SetMfc28to40Special, SetMfc28to40Special,
@ -128,7 +147,8 @@ namespace SicModules.PMs.Routines
SetV761, SetV761,
SetV103, SetV103,
SetV105, SetV105,
SetM2toM40, Set0_M18toM40,
SetM2toM40_1, SetM2toM40_1,
SetM2TOM40Default, SetM2TOM40Default,
SetM18, SetM18,
@ -200,6 +220,14 @@ namespace SicModules.PMs.Routines
Notify1, Notify1,
Notify2 Notify2
,FinishSetM1toM17,
FinishSetDefault_M18toM40,
FinishSetTVCloseMode2,
FinishCLoseTV2,
FinishSetEPV2_3,
FinishWaitPressUpTo1020,
FinishSet0_M2M9M15M19_M26
} }
private ModuleName moduleName; private ModuleName moduleName;
@ -296,195 +324,118 @@ namespace SicModules.PMs.Routines
SetIoValueByGroup((int)RoutineStep.SetV76, IoGroupName.V76, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV76, IoGroupName.V76, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetV75, IoGroupName.V75, true, _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); SetRotationValve((int)RoutineStep.RotationEnable, _rotationCheckSpeed, false, _rotationCloseTimeout);
//关闭V72,打开V25 //3、 关闭 V72(GasBox.Vent.Pump 打开 V25(GasBox.Vent.Bypass)。
SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupV25, IoGroupName.V25, true, _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 //4、 打开 V31H2.Supply、 V32(Ar.Supply
SetIoValueByGroup((int)RoutineStep.SetV31, IoGroupName.V31, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV31, IoGroupName.V31, true, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout);
//打开V35,打开V36 //5、 打开 V35(H2N2.Line1)、 V36(H2N2.Line2),关闭 B/C/E/F/H/KValves,打开 D/G Valves 打开 J valve。
SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout);
//关闭B/C/E/F/H/K 阀门
SetIoValueByGroup((int)RoutineStep.SetGroupB, IoGroupName.B, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupB, IoGroupName.B, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupC, IoGroupName.C, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupC, IoGroupName.C, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupE, IoGroupName.E, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupE, IoGroupName.E, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupF, IoGroupName.F, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupF, IoGroupName.F, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupH, IoGroupName.H, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupH, IoGroupName.H, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupK, IoGroupName.K, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupK, IoGroupName.K, false, _IoValueOpenCloseTimeout);
//打开D/G 阀门
SetIoValueByGroup((int)RoutineStep.SetGroupD, IoGroupName.D, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupD, IoGroupName.D, true, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupG, IoGroupName.G, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupG, IoGroupName.G, true, _IoValueOpenCloseTimeout);
//打开V65
SetIoValueByGroup((int)RoutineStep.SetV65, IoGroupName.V65, true, _IoValueOpenCloseTimeout);
//设置MFC和PC的模式
SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All);
SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList);
//打开J阀门
SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout);
//M1-M16设定为default值(M2、M9、M15除外) //6、 M1-M17 设定为 default 值,所有 PC 设定为 default 值(PC1-PC9) M18-M40除M30\M34\M39 MFC 3s ramp 到 default 值。
SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0); SetMfcToDefaultByGroup((int)RoutineStep.SetM1toM17, MfcGroupName.M1toM17, 0);
SetMfcToDefaultByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, 0); SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList);
SetMfcToDefaultByGroup((int)RoutineStep.SetM18toM40, MfcGroupName.M18toM40No303439, 3);
//设置所有PC到默认值 //7、打开 EPV2等待 3s, 打开 TV enable, 压力模式,伺服压力默认设定为 0mbar
SetPcToDefault((int)RoutineStep.SetPC, _lstPcList);
//设置M2,M9,M15,M19-M26 3s ramp 到default 值
SetMfcToDefaultByGroup((int)RoutineStep.SetM291519to26, MfcGroupName.M2toM26, 3);
//打开EPV2
SetIoValueByGroup((int)RoutineStep.SetEPV2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetEPV2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout);
TimeDelay((int)RoutineStep.TimeDelay1, 3); TimeDelay((int)RoutineStep.TimeDelay1, 3);
//设置蝶阀Enable
SetThrottleEnableAndWait((int)RoutineStep.SetTVEnable_1, _IoThrottle, 5); SetThrottleEnableAndWait((int)RoutineStep.SetTVEnable_1, _IoThrottle, 5);
//设置蝶阀为压力模式
SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode, _IoThrottle, 5); SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode, _IoThrottle, 5);
SetThrottleToTargetAndNoWait((int)RoutineStep.SetTv1, _IoThrottle, _pumpBasePressure);
//伺服压力设定值到0mbar //8、当蝶阀设定值 ramp 到 0 后,将 M18-M40除 M30\M34\M39 MFC 3s ramp 到 0
SetThrottleToTargetAndNoWait((int)RoutineStep.SetTv1, _IoThrottle, _pumpBasePressure); SetMfcByGroup((int)RoutineStep.Set0_M18toM40, MfcGroupName.M18toM40No303439, 0, 3);
//M2、M9、M15、M19-M40 MFC 5s ramp 到0 //9、等待腔体压力到 Pump Base Pressure可配置蝶阀改为位置模式开度设定 100 %
SetMfcByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM42, 0, 5);
SetMfcByGroup((int)RoutineStep.SetM18, MfcGroupName.M18, 0, 5);
//等待腔体压力Pump到设定值
WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _pumpBasePressure, _throttleTimeout); WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _pumpBasePressure, _throttleTimeout);
TimeDelay((int)RoutineStep.TimeDelay2, 3); TimeDelay((int)RoutineStep.TimeDelay2, 3);
//蝶阀设置为位置模式,开度设置为最大
SetThrottleToPositionMode((int)RoutineStep.SetTVPositionMode, _IoThrottle, _throttleTimeout); SetThrottleToPositionMode((int)RoutineStep.SetTVPositionMode, _IoThrottle, _throttleTimeout);
TimeDelay((int)RoutineStep.TimeDelay11, 3); TimeDelay((int)RoutineStep.TimeDelay11, 3);
SetThrottleSetPosition((int)RoutineStep.SetTVPositionMax, _IoThrottle, 100, _throttleTimeout); SetThrottleSetPosition((int)RoutineStep.SetTVPositionMax, _IoThrottle, 100, _throttleTimeout);
//Final2阀对应的MFC 3s Ramp到Default值 //10、 M27、 M28、 M29、 M31、 M33、 M40 依次设定 3S ramp 到 default 值
SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal2, MfcGroupName.Final2, 3); SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal2, MfcGroupName.Final2, 3);
//打开Final2阀 //11、 打 开 V87 SHPurge.Final、 V88 OuterGas.Final、 V89 InnerGas.Final )、 V90MiddleGas.Final、 V91OpticPurge.Final、 V97CarryGas.Final
SetIoValueByGroup((int)RoutineStep.OpenFinal2, IoGroupName.Final2, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.OpenFinal2, IoGroupName.Final2, true, _IoValueOpenCloseTimeout);
//打开V68 //12、 打开 V68ChamBody.N2.Purge
SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout);
TimeDelay((int)RoutineStep.TimeDelay3, 1); TimeDelay((int)RoutineStep.TimeDelay3, 1);
//打开V92,V93和V95,再打开V94,在打开V96 //13、 M32、 M35、 M36、 M37、 M38 依次设定 3S ramp 到 default 值
SetMfcToDefaultByGroup((int)RoutineStep.SetM32M35M37, MfcGroupName.M32M35M37, 1); SetMfcToDefaultByGroup((int)RoutineStep.SetM32M35M37, MfcGroupName.M32M35M37, 1);
SetMfcToDefaultByGroup((int)RoutineStep.SetM36, MfcGroupName.M36, 1); SetMfcToDefaultByGroup((int)RoutineStep.SetM36, MfcGroupName.M36, 1);
SetMfcToDefaultByGroup((int)RoutineStep.SetM38, MfcGroupName.M38, 1); SetMfcToDefaultByGroup((int)RoutineStep.SetM38, MfcGroupName.M38, 1);
TimeDelay((int)RoutineStep.TimeDelay4, 3);
//14、打开 V92GasRingPurge.Final、 V93ChamberPurge.Final、 V95ConfinementRing.Final
//等待 950打开 V94RotationUpPurge.Final、 等待 3S打开 V96HeaterWF.Final
//蝶阀改为压力模式
SetIoValueByGroup((int)RoutineStep.SetV92V93V95, IoGroupName.V92V93V95, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV92V93V95, IoGroupName.V92V93V95, true, _IoValueOpenCloseTimeout);
WaitChamberPressUpTo((int)RoutineStep.WaitPressUpTo950, 950, _waitPressureTimeout);
//循环开始 SetIoValueByGroup((int)RoutineStep.SetV94, IoGroupName.V94, true, _IoValueOpenCloseTimeout);
Loop((int)RoutineStep.StartLoop, _pressureLoopCount); TimeDelay((int)RoutineStep.TimeDelay4, 3);
SetIoValueByGroup((int)RoutineStep.SetV96, IoGroupName.V96, true, _IoValueOpenCloseTimeout);
//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); SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode1, _IoThrottle, 5);
//M2、M9、M15、M19-M40 MFC 3s ramp 0 //M18-M40除 M30\M34\M39 MFC 3s ramp 到 default 值。
SetMfcByGroup((int)RoutineStep.SetM2toM40_1, MfcGroupName.M2toM42, 0, 3); //关闭 EPV2等待压力达到设定值压力达到后 打开 EPV2 M18 - M40除 M30\M34\M39 MFC 5s ramp 到 0。
SetMfcByGroup((int)RoutineStep.SetM18_1, MfcGroupName.M18, 0, 3); //伺服压力到设定值 0可配置
SetMfcToDefaultByGroup((int)RoutineStep.FirstSetDefault_M18toM40, MfcGroupName.M18toM40No303439, 3);
SetIoValueByGroup((int)RoutineStep.FirstSetEPV2_1, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout);
WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.FirstWaitPressureUp, _IoThrottle, _ventBasePressure, _ventTimeout);
SetIoValueByGroup((int)RoutineStep.FirstSetEPV2_2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout);
SetMfcByGroup((int)RoutineStep.FirstSet0_M18toM40, MfcGroupName.M18toM40No303439, 0, 5);
SetThrottleToTargetAndNoWait((int)RoutineStep.FirstSetTv1, _IoThrottle, _pumpBasePressure);
//伺服到0mbar //循环开始
SetThrottlePressureAndWait((int)RoutineStep.SetPressureDown, _IoThrottle, _pumpBasePressure, _pumpTimeout); Loop((int)RoutineStep.StartLoop, _pressureLoopCount);
//TimeDelay((int)RoutineStep.TimeDelay8, 3); //M18 - M40除 M30\M34\M39 MFC 3s ramp 到 default 值。
//关闭 EPV2等待压力达到设定值压力达到后打开 EPV2
////蝶阀设置为位置模式,开度设置为最大 //M18 - M40除 M30\M34\M39 MFC 5s ramp 到 0。
//SetThrottleToPositionMode((int)RoutineStep.SetTVPositionMode_1, _IoThrottle, _throttleTimeout); //伺服压力到设定值 0可配置
//SetThrottleSetPositionNoWait((int)RoutineStep.SetTVPositionMax_1, _IoThrottle, 100, _throttleTimeout); //M18 - M40除 M30\M34\M39 MFC5s ramp 到 0。
//等待压力到达 0可配置
//TimeDelay((int)RoutineStep.TimeDelay9, _pressureMinDelay); SetMfcToDefaultByGroup((int)RoutineStep.LoopSetDefault_M18toM40, MfcGroupName.M18toM40No303439, 3);
SetIoValueByGroup((int)RoutineStep.LoopSetEPV2_1, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout);
WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.LoopWaitPressureUp, _IoThrottle, _ventBasePressure, _ventTimeout);
SetIoValueByGroup((int)RoutineStep.LoopSetEPV2_2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout);
SetMfcByGroup((int)RoutineStep.LoopSet0_M18toM40, MfcGroupName.M18toM40No303439, 0, 5);
SetThrottleToTargetAndNoWait((int)RoutineStep.LoopSetTv1, _IoThrottle, _pumpBasePressure);
SetMfcByGroup((int)RoutineStep.Loop2Set0_M18toM40, MfcGroupName.M18toM40No303439, 0, 5);
WaitChamberPressDownTo((int)RoutineStep.LoopWaitTv1, _pumpBasePressure, _pumpTimeout);
EndLoop((int)RoutineStep.EndLoop); EndLoop((int)RoutineStep.EndLoop);
//设置 M1-M17 3s ramp 到 default M18 - M40除 M30\M34\M39 MFC 3s ramp到 default 值。
//关闭蝶阀,再关闭 EPV2 等待压力到达 1020。
//M2,M9,M15,M19-M26 3s ramp 到0 //M2,M9,M15,M19-M26 3s ramp 到0
SetMfcToDefaultByGroup((int)RoutineStep.SetM291519to26_1, MfcGroupName.M2toM26, 3); SetMfcToDefaultByGroup((int)RoutineStep.FinishSetM1toM17, MfcGroupName.M1toM17, 3);
SetMfcToDefaultByGroup((int)RoutineStep.SetM18_2, MfcGroupName.M18, 3); SetMfcToDefaultByGroup((int)RoutineStep.FinishSetDefault_M18toM40, MfcGroupName.M18toM40No303439, 3);
SetThrottleToCloseMode((int)RoutineStep.FinishSetTVCloseMode2, _IoThrottle, 8);
//M27-M40 MFC 3s ramp 到 default 值 SetThrottleDisable((int)RoutineStep.FinishCLoseTV2, _IoThrottle, 8);
SetMfcToDefaultByGroup((int)RoutineStep.SetMfc27to40Default, MfcGroupName.M27toM40, 3);
//关闭J阀门
SetIoValueByGroup((int)RoutineStep.CloseGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout);
//关闭先关蝶阀,再EPV2
SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode2, _IoThrottle, 8);
SetThrottleDisable((int)RoutineStep.CLoseTV2, _IoThrottle, 8);
TimeDelay((int)RoutineStep.TimeDelay10, 1); TimeDelay((int)RoutineStep.TimeDelay10, 1);
SetIoValueByGroup((int)RoutineStep.SetEPV2_3, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.FinishSetEPV2_3, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout);
NotifyInfo((int)RoutineStep.Notify1, $"Wait pm pressure to 1020 mbar!");
//等待反应腔压力到达950 WaitChamberPressUpTo((int)RoutineStep.FinishWaitPressUpTo1020, 1020, _waitPressureTimeout);
NotifyInfo((int)RoutineStep.Notify1, $"Wait pm pressure to 950 mbar!"); SetMfcByGroup((int)RoutineStep.FinishSet0_M2M9M15M19_M26, MfcGroupName.M2M9M15M19_M26, 0, 3);
WaitChamberPressUpTo((int)RoutineStep.WaitPressUpTo1000, 950, _waitPressureTimeout);
if (_needFinalValveOpen)
{
//打开Final1阀
SetIoValueByGroup((int)RoutineStep.IsOpenFinal1, IoGroupName.Final1, true, _IoValueOpenCloseTimeout);
//打开Final2阀
SetIoValueByGroup((int)RoutineStep.IsOpenFinal2, IoGroupName.Final2, true, _IoValueOpenCloseTimeout);
SetMfcToDefaultByGroup((int)RoutineStep.SetM36_1, MfcGroupName.M36, 3);
SetMfcToDefaultByGroup((int)RoutineStep.SetM38_1, MfcGroupName.M38, 3);
SetIoValueByGroup((int)RoutineStep.SetV111_1, IoGroupName.V111, true, _IoValueOpenCloseTimeout);
}
else
{
//关闭Final1阀
SetIoValueByGroup((int)RoutineStep.IsCloseFinal1, IoGroupName.Final1, false, _IoValueOpenCloseTimeout);
//关闭Final2阀
SetIoValueByGroup((int)RoutineStep.IsCloseFinal2, IoGroupName.Final2, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetV111_2, IoGroupName.V111, false, _IoValueOpenCloseTimeout);
}
} }
catch (RoutineBreakException) catch (RoutineBreakException)
{ {

View File

@ -1,9 +1,10 @@
using System.Collections.Generic; using Aitex.Core.RT.Device;
using Aitex.Core.RT.Device;
using Aitex.Core.RT.Device.Devices; using Aitex.Core.RT.Device.Devices;
using Aitex.Core.RT.Routine; using Aitex.Core.RT.Routine;
using MECF.Framework.Common.Equipment; using MECF.Framework.Common.Equipment;
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.MFCs;
using SicModules.PMs.Routines.Base; using SicModules.PMs.Routines.Base;
using System.Collections.Generic;
namespace SicModules.PMs.Routines namespace SicModules.PMs.Routines
{ {
@ -25,8 +26,8 @@ namespace SicModules.PMs.Routines
SetGroupG, SetGroupG,
SetGroupK, SetGroupK,
SetM1to16, SetM1to17,
SetM2toM40, SetM18toM40,
SetM17M18, SetM17M18,
SetPC, SetPC,
SetGroupI, //V87-96 SetGroupI, //V87-96
@ -125,67 +126,46 @@ namespace SicModules.PMs.Routines
SetIoValueByGroup((int)RoutineStep.SetV76, IoGroupName.V76, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV76, IoGroupName.V76, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetV75, IoGroupName.V75, true, _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, 0, false, _rotationCloseTimeout); SetRotationValve((int)RoutineStep.RotationEnable, 0, false, _rotationCloseTimeout);
//关闭V72 //3、 关闭 V72(GasBox.Vent.Pump
SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout); 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);
//打开V31,打开V32 //4、 打开 V31(H2.Supply)、 V32(N2Supply)。
SetIoValueByGroup((int)RoutineStep.SetV31, IoGroupName.V31, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV31, IoGroupName.V31, true, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout);
//打开V35,打开V36 //5、 打开 V35(H2N2.Line1)、V36(H2N2.Line2),关闭 B/ C / E / F / H / KValves,打开D / G Valves。关闭 V68ChamBody.Ar.Purge
SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout);
//关闭B/C/E/F/H/K 阀门
SetIoValueByGroup((int)RoutineStep.SetGroupB, IoGroupName.B, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupB, IoGroupName.B, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupC, IoGroupName.C, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupC, IoGroupName.C, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupE, IoGroupName.E, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupE, IoGroupName.E, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupF, IoGroupName.F, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupF, IoGroupName.F, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupH, IoGroupName.H, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupH, IoGroupName.H, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupK, IoGroupName.K, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupK, IoGroupName.K, false, _IoValueOpenCloseTimeout);
//打开V65
SetIoValueByGroup((int)RoutineStep.SetV65, IoGroupName.V65, true, _IoValueOpenCloseTimeout);
//打开D/G 阀门
SetIoValueByGroup((int)RoutineStep.SetGroupD, IoGroupName.D, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupD, IoGroupName.D, true, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupG, IoGroupName.G, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupG, IoGroupName.G, true, _IoValueOpenCloseTimeout);
//关闭V68
SetIoValueByGroup((int)RoutineStep.CloseV68, IoGroupName.V68, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.CloseV68, IoGroupName.V68, false, _IoValueOpenCloseTimeout);
//设置MFC和PC的模式 //6、 1 - M17 设定为 default 值,所有 PC 设定为 default 值(PC1 - PC9)
SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All); SetMfcToDefaultByGroup((int)RoutineStep.SetM1to17, MfcGroupName.M1toM17, 0);
SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList);
//M1-M16设定为default值(M2、M9、M15除外)
SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0);
//设置所有PC到默认值
SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); SetPcToDefault((int)RoutineStep.SetPC, _lstPcList);
//M2、M9、M15、M19-M40 MFC 5s ramp到0 //7、 M18 - M40除 M30\M34\M39 MFC 5s ramp 到 0。
SetMfcByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM42, 0, 5); SetMfcByGroup((int)RoutineStep.SetM18toM40, MfcGroupName.M18toM40No303439, 0, 5);
SetMfcByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, 0, 5);
//关闭Final1阀 //8、 依次关闭 Final valves
//先关闭 V93ChamberPurge.Final、 V94RotationUpPurge.Final、 V95ConfinementRing.Final、 V96HeaterWF.Final
//再关闭 V87SHPurge.Final、 V88OuterGas.Final、 V89InnerGas.Final、 V90MiddleGas.Final、 V91OpticPurge.Final、 V92GasRingPurge.Final、 V97CarryGas.Final
SetIoValueByGroup((int)RoutineStep.CloseFinal1, IoGroupName.Final1, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.CloseFinal1, IoGroupName.Final1, false, _IoValueOpenCloseTimeout);
//关闭Final2
SetIoValueByGroup((int)RoutineStep.CloseFinal2, IoGroupName.Final2, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.CloseFinal2, IoGroupName.Final2, false, _IoValueOpenCloseTimeout);
//关闭蝶阀 //9、 关闭蝶阀,再关闭 EPV2
SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode, _IoThrottle, 8); SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode, _IoThrottle, 8);
SetThrottleDisable((int)RoutineStep.SetTvPositionToZero, _IoThrottle, 8); SetThrottleDisable((int)RoutineStep.SetTvPositionToZero, _IoThrottle, 8);
TimeDelay((int)RoutineStep.TimeDelay1, 1); TimeDelay((int)RoutineStep.TimeDelay1, 1);
//关闭EPV2
SetIoValueByGroup((int)RoutineStep.CloseEPV2, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.CloseEPV2, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout);
} }
catch (RoutineBreakException) catch (RoutineBreakException)

View File

@ -312,7 +312,7 @@ namespace SicModules.PMs.Routines
SetIoValueByGroup((int)RoutineStep.SetGroupG, IoGroupName.G, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupG, IoGroupName.G, true, _IoValueOpenCloseTimeout);
//5、 M1-M17 设定为 default 值,所有 PC 设定为 default 值(PC1-PC9)。 //5、 M1-M17 设定为 default 值,所有 PC 设定为 default 值(PC1-PC9)。
SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.M1to17); SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.M1toM17);
SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); SetPcToDefault((int)RoutineStep.SetPC, _lstPcList);
//M1-M16设定为default值(M2、M9、M15除外) //M1-M16设定为default值(M2、M9、M15除外)
@ -320,7 +320,7 @@ namespace SicModules.PMs.Routines
SetMfcToDefaultByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, 0); SetMfcToDefaultByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, 0);
//6、 M18-M40除 M30\M34\M39 MFC 5s ramp 到 0。 //6、 M18-M40除 M30\M34\M39 MFC 5s ramp 到 0。
SetMfcByGroup((int)RoutineStep.SetM18toM40, MfcGroupName.M18to40No303439, 0, 5); SetMfcByGroup((int)RoutineStep.SetM18toM40, MfcGroupName.M18toM40No303439, 0, 5);
//7、 打开 EPV2。 //7、 打开 EPV2。
SetIoValueByGroup((int)RoutineStep.SetEPV2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetEPV2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout);
@ -361,7 +361,6 @@ namespace SicModules.PMs.Routines
SetIoValueByGroup((int)RoutineStep.SetV72, IoGroupName.VentPump, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV72, IoGroupName.VentPump, true, _IoValueOpenCloseTimeout);
TimeDelay((int)RoutineStep.TimeDelay5, 1); TimeDelay((int)RoutineStep.TimeDelay5, 1);
SetIoValueByGroup((int)RoutineStep.SetV25, IoGroupName.V25, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV25, IoGroupName.V25, false, _IoValueOpenCloseTimeout);
SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown1, PressureUpOrDown.Dowing);
SetThrottleToTargetAndNoWait((int)RoutineStep.SetPressureDown, _IoThrottle, _throttleFinalPressure); SetThrottleToTargetAndNoWait((int)RoutineStep.SetPressureDown, _IoThrottle, _throttleFinalPressure);
WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.SetTVto300, _IoThrottle, _throttleFinalPressure, _pmPressureMaxDiff, _throttleTimeout); WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.SetTVto300, _IoThrottle, _throttleFinalPressure, _pmPressureMaxDiff, _throttleTimeout);

View File

@ -193,9 +193,9 @@ namespace SicModules.PMs.Routines
SetIoValueByGroup((int)RoutineStep.SetGroupG, IoGroupName.G, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupG, IoGroupName.G, true, _IoValueOpenCloseTimeout);
//6、 M1-M17 设定为 default 值, 所有 PC 设定为 default 值PC1-PC9 M18 - M40除 M30\M34\M39 MFC 5s ramp 到 0。 //6、 M1-M17 设定为 default 值, 所有 PC 设定为 default 值PC1-PC9 M18 - M40除 M30\M34\M39 MFC 5s ramp 到 0。
SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.M1to17); SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.M1toM17);
SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); SetPcToDefault((int)RoutineStep.SetPC, _lstPcList);
SetMfcToDefaultByGroup((int)RoutineStep.SetM18toM40, MfcGroupName.M18to40No303439, 5); SetMfcToDefaultByGroup((int)RoutineStep.SetM18toM40, MfcGroupName.M18toM40No303439, 5);
//7、 关闭蝶阀, 再关闭 EPV2 //7、 关闭蝶阀, 再关闭 EPV2
SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode, _IoThrottle, 8); SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode, _IoThrottle, 8);