添加M41-M45配置

修改Routine
This commit is contained in:
hanqiangqiang 2026-04-07 16:08:18 +08:00
parent a28609dec3
commit cac67d78d9
23 changed files with 1121 additions and 1204 deletions

View File

@ -192,7 +192,12 @@
<IoMfc id="Mfc36" display="Mfc36" schematicId="Mfc36" unit="sccm" aiActMode="AI_M36ActMode" aoSetMode="AO_M36CtrlMode" aiFlow="AI_M36" aoFlow="AO_M36" scBasePath="PM.PM1.MFC" aioType="float" formatString="F1" diAlarm="DI_MFC36Offline" maskDOProcessIdle="DO_ProcessIdleRunning" maskDOPreProcess="DO_PreprocessRunning" maskDOPostProcess="DO_PostProcessRunning" maskDOProcess="DO_ProcessRunning" AlarmText="Alarm136 MFC36 Offline[DI-386]" /> <IoMfc id="Mfc36" display="Mfc36" schematicId="Mfc36" unit="sccm" aiActMode="AI_M36ActMode" aoSetMode="AO_M36CtrlMode" aiFlow="AI_M36" aoFlow="AO_M36" scBasePath="PM.PM1.MFC" aioType="float" formatString="F1" diAlarm="DI_MFC36Offline" maskDOProcessIdle="DO_ProcessIdleRunning" maskDOPreProcess="DO_PreprocessRunning" maskDOPostProcess="DO_PostProcessRunning" maskDOProcess="DO_ProcessRunning" AlarmText="Alarm136 MFC36 Offline[DI-386]" />
<IoMfc id="Mfc37" display="Mfc37" schematicId="Mfc37" unit="sccm" aiActMode="AI_M37ActMode" aoSetMode="AO_M37CtrlMode" aiFlow="AI_M37" aoFlow="AO_M37" scBasePath="PM.PM1.MFC" aioType="float" formatString="F1" diAlarm="DI_MFC37Offline" maskDOProcessIdle="DO_ProcessIdleRunning" maskDOPreProcess="DO_PreprocessRunning" maskDOPostProcess="DO_PostProcessRunning" maskDOProcess="DO_ProcessRunning" AlarmText="Alarm137 MFC37 Offline[DI-387]" /> <IoMfc id="Mfc37" display="Mfc37" schematicId="Mfc37" unit="sccm" aiActMode="AI_M37ActMode" aoSetMode="AO_M37CtrlMode" aiFlow="AI_M37" aoFlow="AO_M37" scBasePath="PM.PM1.MFC" aioType="float" formatString="F1" diAlarm="DI_MFC37Offline" maskDOProcessIdle="DO_ProcessIdleRunning" maskDOPreProcess="DO_PreprocessRunning" maskDOPostProcess="DO_PostProcessRunning" maskDOProcess="DO_ProcessRunning" AlarmText="Alarm137 MFC37 Offline[DI-387]" />
<IoMfc id="Mfc38" display="Mfc38" schematicId="Mfc38" unit="sccm" aiActMode="AI_M38ActMode" aoSetMode="AO_M38CtrlMode" aiFlow="AI_M38" aoFlow="AO_M38" scBasePath="PM.PM1.MFC" aioType="float" formatString="F1" diAlarm="DI_MFC38Offline" maskDOProcessIdle="DO_ProcessIdleRunning" maskDOPreProcess="DO_PreprocessRunning" maskDOPostProcess="DO_PostProcessRunning" maskDOProcess="DO_ProcessRunning" AlarmText="Alarm138 MFC38 Offline[DI-388]" /> <IoMfc id="Mfc38" display="Mfc38" schematicId="Mfc38" unit="sccm" aiActMode="AI_M38ActMode" aoSetMode="AO_M38CtrlMode" aiFlow="AI_M38" aoFlow="AO_M38" scBasePath="PM.PM1.MFC" aioType="float" formatString="F1" diAlarm="DI_MFC38Offline" maskDOProcessIdle="DO_ProcessIdleRunning" maskDOPreProcess="DO_PreprocessRunning" maskDOPostProcess="DO_PostProcessRunning" maskDOProcess="DO_ProcessRunning" AlarmText="Alarm138 MFC38 Offline[DI-388]" />
<IoMfc id="Mfc40" display="Mfc40" schematicId="Mfc40" unit="sccm" aiActMode="AI_M40ActMode" aoSetMode="AO_M40CtrlMode" aiFlow="AI_M40" aoFlow="AO_M40" scBasePath="PM.PM1.MFC" aioType="float" formatString="F1" diAlarm="" maskDOProcessIdle="DO_ProcessIdleRunning" maskDOPreProcess="DO_PreprocessRunning" maskDOPostProcess="DO_PostProcessRunning" maskDOProcess="DO_ProcessRunning" AlarmText="" /> <IoMfc id="Mfc40" display="Mfc40" schematicId="Mfc40" unit="sccm" aiActMode="AI_M40ActMode" aoSetMode="AO_M40CtrlMode" aiFlow="AI_M40" aoFlow="AO_M40" scBasePath="PM.PM1.MFC" aioType="float" formatString="F1" diAlarm="DI_MFC40Offline" maskDOProcessIdle="DO_ProcessIdleRunning" maskDOPreProcess="DO_PreprocessRunning" maskDOPostProcess="DO_PostProcessRunning" maskDOProcess="DO_ProcessRunning" AlarmText="" />
<IoMfc id="Mfc41" display="Mfc41" schematicId="Mfc41" unit="sccm" aiActMode="AI_M41ActMode" aoSetMode="AO_M41CtrlMode" aiFlow="AI_M41" aoFlow="AO_M41" scBasePath="PM.PM1.MFC" aioType="float" formatString="F1" diAlarm="DI_MFC41Offline" maskDOProcessIdle="DO_ProcessIdleRunning" maskDOPreProcess="DO_PreprocessRunning" maskDOPostProcess="DO_PostProcessRunning" maskDOProcess="DO_ProcessRunning" AlarmText="Alarm141 MFC41 Offline[DI-391]" />
<IoMfc id="Mfc42" display="Mfc42" schematicId="Mfc42" unit="sccm" aiActMode="AI_M42ActMode" aoSetMode="AO_M42CtrlMode" aiFlow="AI_M42" aoFlow="AO_M42" scBasePath="PM.PM1.MFC" aioType="float" formatString="F1" diAlarm="DI_MFC42Offline" maskDOProcessIdle="DO_ProcessIdleRunning" maskDOPreProcess="DO_PreprocessRunning" maskDOPostProcess="DO_PostProcessRunning" maskDOProcess="DO_ProcessRunning" AlarmText="Alarm142 MFC42 Offline[DI-392]" />
<IoMfc id="Mfc43" display="Mfc43" schematicId="Mfc43" unit="sccm" aiActMode="AI_M43ActMode" aoSetMode="AO_M43CtrlMode" aiFlow="AI_M43" aoFlow="AO_M43" scBasePath="PM.PM1.MFC" aioType="float" formatString="F1" diAlarm="DI_MFC43Offline" maskDOProcessIdle="DO_ProcessIdleRunning" maskDOPreProcess="DO_PreprocessRunning" maskDOPostProcess="DO_PostProcessRunning" maskDOProcess="DO_ProcessRunning" AlarmText="Alarm143 MFC43 Offline[DI-393]" />
<IoMfc id="Mfc44" display="Mfc44" schematicId="Mfc44" unit="sccm" aiActMode="AI_M44ActMode" aoSetMode="AO_M44CtrlMode" aiFlow="AI_M44" aoFlow="AO_M44" scBasePath="PM.PM1.MFC" aioType="float" formatString="F1" diAlarm="DI_MFC44Offline" maskDOProcessIdle="DO_ProcessIdleRunning" maskDOPreProcess="DO_PreprocessRunning" maskDOPostProcess="DO_PostProcessRunning" maskDOProcess="DO_ProcessRunning" AlarmText="Alarm144 MFC44 Offline[DI-394]" />
<IoMfc id="Mfc45" display="Mfc45" schematicId="Mfc45" unit="sccm" aiActMode="AI_M45ActMode" aoSetMode="AO_M45CtrlMode" aiFlow="AI_M45" aoFlow="AO_M45" scBasePath="PM.PM1.MFC" aioType="float" formatString="F1" diAlarm="DI_MFC45Offline" maskDOProcessIdle="DO_ProcessIdleRunning" maskDOPreProcess="DO_PreprocessRunning" maskDOPostProcess="DO_PostProcessRunning" maskDOProcess="DO_ProcessRunning" AlarmText="Alarm145 MFC45 Offline[DI-395]" />
</IoMfcs> </IoMfcs>
<IoPressureMeters classType="Aitex.Core.RT.Device.Devices.IoPressure" assembly="MECF.Framework.RT.EquipmentLibrary"> <IoPressureMeters classType="Aitex.Core.RT.Device.Devices.IoPressure" assembly="MECF.Framework.RT.EquipmentLibrary">
<IoPressureMeter id="Pressure1" display="PC1" schematicId="Pressure1" scBasePath="PM.{module}.PC" unit="mbar" aioType="float" aiOpenDegree="AI_PC1Valve" aiActMode="AI_PC1ActMode" aoSetMode="AO_PC1CtrlMode" aiValue="AI_PressCtrl1" aoValue="AO_PressCtrl1" formatString="0.0" diAlarm="DI_PC01Offline" AlarmText="Alarm141 PC1 Offline[DI-391]" /> <IoPressureMeter id="Pressure1" display="PC1" schematicId="Pressure1" scBasePath="PM.{module}.PC" unit="mbar" aioType="float" aiOpenDegree="AI_PC1Valve" aiActMode="AI_PC1ActMode" aoSetMode="AO_PC1CtrlMode" aiValue="AI_PressCtrl1" aoValue="AO_PressCtrl1" formatString="0.0" diAlarm="DI_PC01Offline" AlarmText="Alarm141 PC1 Offline[DI-391]" />

View File

@ -692,6 +692,17 @@
<AI_ITEM Index="275" Name="AI_PSU3SimVoltage" BufferOffset="94" Addr="94" Description="" /> <AI_ITEM Index="275" Name="AI_PSU3SimVoltage" BufferOffset="94" Addr="94" Description="" />
<AI_ITEM Index="276" Name="AI_PSU3SimArms" BufferOffset="95" Addr="95" Description="" /> <AI_ITEM Index="276" Name="AI_PSU3SimArms" BufferOffset="95" Addr="95" Description="" />
<AI_ITEM Index="277" Name="AI_PSU3Alarm" BufferOffset="96" Addr="96" Description="" /> <AI_ITEM Index="277" Name="AI_PSU3Alarm" BufferOffset="96" Addr="96" Description="" />
<AO_ITEM Index="281" Name="AO_M41" BufferOffset="97" Addr="97" Description="" />
<AO_ITEM Index="282" Name="AO_M42" BufferOffset="98" Addr="98" Description="" />
<AO_ITEM Index="283" Name="AO_M43" BufferOffset="99" Addr="99" Description="" />
<AO_ITEM Index="284" Name="AO_M44" BufferOffset="100" Addr="100" Description="" />
<AO_ITEM Index="285" Name="AO_M45" BufferOffset="101" Addr="101" Description="" />
<AO_ITEM Index="301" Name="AO_M41CtrlMode" BufferOffset="102" Addr="102" Description="" />
<AO_ITEM Index="302" Name="AO_M42CtrlMode" BufferOffset="103" Addr="103" Description="" />
<AO_ITEM Index="303" Name="AO_M43CtrlMode" BufferOffset="104" Addr="104" Description="" />
<AO_ITEM Index="304" Name="AO_M44CtrlMode" BufferOffset="105" Addr="105" Description="" />
<AO_ITEM Index="305" Name="AO_M45CtrlMode" BufferOffset="106" Addr="106" Description="" />
</Block> </Block>
</Ana_In> </Ana_In>
<Ana_Out> <Ana_Out>
@ -926,6 +937,17 @@
<AO_ITEM Index="272" Name="AO_PSU3Reset" BufferOffset="91" Addr="91" Description="" /> <AO_ITEM Index="272" Name="AO_PSU3Reset" BufferOffset="91" Addr="91" Description="" />
<AO_ITEM Index="273" Name="AO_PSU3ArmLimited" BufferOffset="92" Addr="92" Description="" /> <AO_ITEM Index="273" Name="AO_PSU3ArmLimited" BufferOffset="92" Addr="92" Description="" />
<AO_ITEM Index="280" Name="AO_PSU3Constant" BufferOffset="99" Addr="99" Description="" /> <AO_ITEM Index="280" Name="AO_PSU3Constant" BufferOffset="99" Addr="99" Description="" />
<AO_ITEM Index="281" Name="AO_M41" BufferOffset="100" Addr="100" Description="" />
<AO_ITEM Index="282" Name="AO_M42" BufferOffset="101" Addr="101" Description="" />
<AO_ITEM Index="283" Name="AO_M43" BufferOffset="102" Addr="102" Description="" />
<AO_ITEM Index="284" Name="AO_M44" BufferOffset="103" Addr="103" Description="" />
<AO_ITEM Index="285" Name="AO_M45" BufferOffset="104" Addr="104" Description="" />
<AO_ITEM Index="301" Name="AO_M41CtrlMode" BufferOffset="105" Addr="105" Description="" />
<AO_ITEM Index="302" Name="AO_M42CtrlMode" BufferOffset="106" Addr="106" Description="" />
<AO_ITEM Index="303" Name="AO_M43CtrlMode" BufferOffset="107" Addr="107" Description="" />
<AO_ITEM Index="304" Name="AO_M44CtrlMode" BufferOffset="108" Addr="108" Description="" />
<AO_ITEM Index="305" Name="AO_M45CtrlMode" BufferOffset="109" Addr="109" Description="" />
</Block> </Block>
</Ana_Out> </Ana_Out>
</IO_DEFINE> </IO_DEFINE>

File diff suppressed because it is too large Load Diff

View File

@ -122,7 +122,7 @@ namespace SicModules.PMs.RecipeExecutions
EV.PostAlarmLog(Module, $"can not run process,K valves is not closed!"); EV.PostAlarmLog(Module, $"can not run process,K valves is not closed!");
return Result.FAIL; return Result.FAIL;
} }
if (!PmDevice.CheckIOValueByGroup(IoGroupName.VentPump, true)) if (!PmDevice.CheckIOValueByGroup(IoGroupName.V72, true))
{ {
EV.PostAlarmLog(Module, $"can not run process,V72 is not open!"); EV.PostAlarmLog(Module, $"can not run process,V72 is not open!");
return Result.FAIL; return Result.FAIL;

View File

@ -55,8 +55,6 @@ namespace SicModules.PMs.RecipeExecutions
SetTC2Ratio1, SetTC2Ratio1,
CloseTC2, CloseTC2,
WaitRotation1, WaitRotation1,
SetV103,
SetV105,
TimeDelay1, TimeDelay1,
TimeDelay2, TimeDelay2,
@ -151,9 +149,6 @@ namespace SicModules.PMs.RecipeExecutions
//打开V31,打开V32 //打开V31,打开V32
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);
//打开V103,关闭V105
SetIoValueByGroup((int)RoutineStep.SetV103, IoGroupName.V103, true, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetV105, IoGroupName.V105, false, _IoValueOpenCloseTimeout);
//打开V35,打开V36 //打开V35,打开V36
SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout);
@ -174,14 +169,13 @@ namespace SicModules.PMs.RecipeExecutions
//SetIoValueByGroup((int)RoutineStep.SetV65, IoGroupName.V65, true, _IoValueOpenCloseTimeout); //SetIoValueByGroup((int)RoutineStep.SetV65, IoGroupName.V65, true, _IoValueOpenCloseTimeout);
//打开V68 //打开V68
SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.V68, true, _IoValueOpenCloseTimeout);
//M2、M9、M15、M19-M40 MFC 30s ramp 到 default 值 //M2、M9、M15、M19-M40 MFC 30s ramp 到 default 值
SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM40, 5); SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM45, 5);
//M1 - M16 MFC 30s ramp 到 default 值(M2、M9、M15除外) //M1 - M16 MFC 30s ramp 到 default 值(M2、M9、M15除外)
SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 5); SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 5);
SetMfcToDefaultByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, 5);
//所有PC设定为默认值 //所有PC设定为默认值
SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); SetPcToDefault((int)RoutineStep.SetPC, _lstPcList);
@ -193,7 +187,7 @@ namespace SicModules.PMs.RecipeExecutions
SetIoValueByGroup((int)RoutineStep.SetGroupJOpen, IoGroupName.J, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupJOpen, IoGroupName.J, true, _IoValueOpenCloseTimeout);
//打开V72,关闭V25 //打开V72,关闭V25
SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.V72, true, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetGroupV25, IoGroupName.V25, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupV25, IoGroupName.V25, false, _IoValueOpenCloseTimeout);
//设置蝶阀Enable //设置蝶阀Enable

View File

@ -186,7 +186,7 @@ namespace SicModules.PMs.RecipeExecutions
EV.PostAlarmLog(Module, $"can not run process,K valves is not closed!"); EV.PostAlarmLog(Module, $"can not run process,K valves is not closed!");
return Result.FAIL; return Result.FAIL;
} }
if (!PmDevice.CheckIOValueByGroup(IoGroupName.VentPump, true)) if (!PmDevice.CheckIOValueByGroup(IoGroupName.V72, true))
{ {
EV.PostAlarmLog(Module, $"can not run process,V72 is not open!"); EV.PostAlarmLog(Module, $"can not run process,V72 is not open!");
return Result.FAIL; return Result.FAIL;

View File

@ -121,7 +121,7 @@ namespace SicModules.PMs.Routines.Base
public virtual void Abort() public virtual void Abort()
{ {
_pm.SetMfcToDefaultByGroup(MfcGroupName.M27toM40); _pm.SetMfcToDefaultByGroup(MfcGroupName.M27toM45);
} }
protected void PreparePump(int id, PMModuleBase pm, int timeout) protected void PreparePump(int id, PMModuleBase pm, int timeout)
@ -532,10 +532,10 @@ namespace SicModules.PMs.Routines.Base
{ {
Tuple<bool, Result> ret = Execute(id, () => Tuple<bool, Result> ret = Execute(id, () =>
{ {
//Notify($"Set {Module} rotation"); Notify($"Set {Module} rotation");
if (!_pm.SetRotationServo(checkSpeed, 0)) if (!_pm.SetRotationServo(checkSpeed, 0))
{ {
//Stop($"Set {Module} rotation error"); Stop($"Set {Module} rotation error");
return false; return false;
} }
@ -928,7 +928,7 @@ namespace SicModules.PMs.Routines.Base
{ {
Tuple<bool, Result> ret = Execute(id, () => Tuple<bool, Result> ret = Execute(id, () =>
{ {
_v72IsOpen = _pm.CheckIOValueByGroup(IoGroupName.VentPump, true) && _pm.CheckIOValueByGroup(IoGroupName.V888990, true) && _pm.PT1.FeedBack >= pressure; _v72IsOpen = _pm.CheckIOValueByGroup(IoGroupName.V72, true) && _pm.CheckIOValueByGroup(IoGroupName.V888990, true) && _pm.PT1.FeedBack >= pressure;
return true; return true;
}); });
@ -1299,7 +1299,7 @@ namespace SicModules.PMs.Routines.Base
Notify($"Set MFC28,29,31,40 to pressureLevel [{cIntLv - 50},{cIntLv + 50})"); Notify($"Set MFC28,29,31,40 to pressureLevel [{cIntLv - 50},{cIntLv + 50})");
} }
_lastPressureLevel = level; _lastPressureLevel = level;
_pm.SetMfcRampByGroupAndPressure(MfcGroupName.M28293140, Convert.ToDouble((int)level)); _pm.SetMfcRampByGroupAndPressure(MfcGroupName.M27To3540To42, Convert.ToDouble((int)level));
} }
} }
} }
@ -1840,13 +1840,13 @@ namespace SicModules.PMs.Routines.Base
if (!_setMfc291519to38Flag && currentPressureUpOrDown == PressureUpOrDown.Dowing && _IoThrottle.PressureFeedback < 20) if (!_setMfc291519to38Flag && currentPressureUpOrDown == PressureUpOrDown.Dowing && _IoThrottle.PressureFeedback < 20)
{ {
Notify($"Set M2toM40 value to 0 "); Notify($"Set M2toM40 value to 0 ");
_pm.SetMfcByGroup(MfcGroupName.M2toM40, 0, 2); _pm.SetMfcByGroup(MfcGroupName.M2toM45, 0, 2);
_setMfc291519to38Flag = true; _setMfc291519to38Flag = true;
} }
else if (!_setMfc291519to38Flag && currentPressureUpOrDown == PressureUpOrDown.Uping && _IoThrottle.PressureFeedback < 20) else if (!_setMfc291519to38Flag && currentPressureUpOrDown == PressureUpOrDown.Uping && _IoThrottle.PressureFeedback < 20)
{ {
Notify($"Set M2toM40 value to default"); Notify($"Set M2toM40 value to default");
_pm.SetMfcToDefaultByGroupRamp(MfcGroupName.M2toM40, 2); _pm.SetMfcToDefaultByGroupRamp(MfcGroupName.M2toM45, 2);
_setMfc291519to38Flag = true; _setMfc291519to38Flag = true;
} }

View File

@ -31,7 +31,6 @@ namespace SicModules.PMs.Routines
SetGroupK, SetGroupK,
SetM1to16, SetM1to16,
SetM17M18,
SetPC, SetPC,
SetGroupJ, SetGroupJ,
SetGroupJ_1, SetGroupJ_1,
@ -50,7 +49,7 @@ namespace SicModules.PMs.Routines
SetGasIn2, SetGasIn2,
SetGroupJOpen, SetGroupJOpen,
SetM291519to26, SetM2toM45,
OpenFinal2, OpenFinal2,
SetMfcFinal2, SetMfcFinal2,
@ -122,8 +121,9 @@ namespace SicModules.PMs.Routines
SetTVEnable_2, SetTVEnable_2,
SetTVPressMode, SetTVPressMode,
SetTv1, SetTv1,
SetM2toM40, SetM2toM45_Ramp0,
SetM18, SetM2toM45_Ramp01,
SetV30,
SetV31, SetV31,
SetV32, SetV32,
SetV35V36, SetV35V36,
@ -135,21 +135,16 @@ namespace SicModules.PMs.Routines
SetTVPositionMax_1, SetTVPositionMax_1,
SetTVPressMode1, SetTVPressMode1,
SetTVPressMode2, SetTVPressMode2,
SetM2TOM40Default, SetM2TOM45Default,
SetM2toM40_1, SetM2toM45_1,
SetMfc2to40Default, SetMfc2to45Default,
SetM18Default,
SetM18_1,
SetM18_2,
SetV92V93V95, SetV92V93V95,
SetV94, SetV94,
SetV96, SetV96,
SetV103,
SetV105,
SetV68, SetV68,
SetM32M35M37, SetM35M36M37M38,
SetM36, SetM36,
SetM38, SetM38,
WaitPmPressureUp1, WaitPmPressureUp1,
@ -185,6 +180,10 @@ namespace SicModules.PMs.Routines
private IoThrottleValve2 _IoThrottle; private IoThrottleValve2 _IoThrottle;
private IoInterLock _pmIoInterLock; private IoInterLock _pmIoInterLock;
List<int> _lstPcList = new List<int> { 1, 2, 3, 4, 5, 6, 7 };
private int _rotationCheckSpeed = 0; //设置旋转速度为0后检查是否转速低于此数值 private int _rotationCheckSpeed = 0; //设置旋转速度为0后检查是否转速低于此数值
private int _rotationCloseTimeout = 20; //旋转停止超时 private int _rotationCloseTimeout = 20; //旋转停止超时
private int _heatTimeOut = 5; //Heat关闭等待Di反馈超时时间 private int _heatTimeOut = 5; //Heat关闭等待Di反馈超时时间
@ -268,26 +267,25 @@ namespace SicModules.PMs.Routines
{ {
//CheckRoutineTimeOut(); //CheckRoutineTimeOut();
//关闭V76,打开V75 //1 关闭V76,打开V75
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,打开V25
SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.V72, 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 打开V30,打开V31,打开V32
SetIoValueByGroup((int)RoutineStep.SetV30, IoGroupName.V30, true, _IoValueOpenCloseTimeout);
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,打开V36
SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout);
//关闭B/C/E/F/H/K 阀门 //关闭B/C/E/F/H/K 阀门
@ -302,6 +300,12 @@ namespace SicModules.PMs.Routines
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);
//打开J阀门
SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout);
//6 M1-M16设定为default值(M2、M9、M15除外)
SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0);
////打开V65 ////打开V65
//SetIoValueByGroup((int)RoutineStep.SetV65, IoGroupName.V65, true, _IoValueOpenCloseTimeout); //SetIoValueByGroup((int)RoutineStep.SetV65, IoGroupName.V65, true, _IoValueOpenCloseTimeout);
@ -309,20 +313,13 @@ namespace SicModules.PMs.Routines
SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All); SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All);
SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList); 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到默认值 //设置所有PC到默认值
SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); SetPcToDefault((int)RoutineStep.SetPC, _lstPcList);
//设置M2,M9,M15,M19-M26 3s ramp 到default 值 //M2、M9、M15、M19-M45 3s ramp到default值。
SetMfcToDefaultByGroup((int)RoutineStep.SetM291519to26, MfcGroupName.M2toM26, 3); SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM45, MfcGroupName.M2toM45, 3);
//打开EPV2 //7 打开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);
@ -335,13 +332,11 @@ namespace SicModules.PMs.Routines
//伺服压力设定值到0mbar //伺服压力设定值到0mbar
SetThrottleToTargetAndNoWait((int)RoutineStep.SetTv1, _IoThrottle, _pressureMin); SetThrottleToTargetAndNoWait((int)RoutineStep.SetTv1, _IoThrottle, _pressureMin);
//M2、M9、M15、M19-M40 MFC 5s ramp 到0 //8 M2、M9、M15、M19-M45 MFC 3s ramp 到0
SetMfcByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM40, 0, 5); SetMfcByGroup((int)RoutineStep.SetM2toM45_Ramp0, MfcGroupName.M2toM45, 0, 3);
SetMfcByGroup((int)RoutineStep.SetM18, MfcGroupName.M18, 0, 5);
//等待腔体压力Pump到设定值 //9 等待腔体压力Pump到设定值
WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _pressureMin, _pumpTimeout); WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _pressureMin, _pumpTimeout);
TimeDelay((int)RoutineStep.TimeDelay2, 3); TimeDelay((int)RoutineStep.TimeDelay2, 3);
//蝶阀设置为位置模式,开度设置为最大 //蝶阀设置为位置模式,开度设置为最大
@ -349,39 +344,44 @@ namespace SicModules.PMs.Routines
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 M2、M9、M15、M19-M45 MFC 3s ramp 到0
SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal2, MfcGroupName.Final2, 3); SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM45, MfcGroupName.M2toM45, 3);
//11 打开V87、V88、V89、V90、V91、V97
SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal2, MfcGroupName.Final2, 3);
//打开Final2阀 //打开Final2阀
SetIoValueByGroup((int)RoutineStep.OpenFinal2, IoGroupName.Final2, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.OpenFinal2, IoGroupName.Final2, true, _IoValueOpenCloseTimeout);
//打开V68 //12 打开V65 V68
SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV65, IoGroupName.V65, true, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.V68, true, _IoValueOpenCloseTimeout);
TimeDelay((int)RoutineStep.TimeDelay3, 1); TimeDelay((int)RoutineStep.TimeDelay3, 1);
//打开V92,V93和V95,再打开V94,在打开V96 //13 M35\M36\M37\M38 ramp 到0
SetMfcToDefaultByGroup((int)RoutineStep.SetM32M35M37, MfcGroupName.M32M35M37, 1); SetMfcToDefaultByGroup((int)RoutineStep.SetM35M36M37M38, MfcGroupName.M35M36M37M38, 3);
SetMfcToDefaultByGroup((int)RoutineStep.SetM36, MfcGroupName.M36, 1);
SetMfcToDefaultByGroup((int)RoutineStep.SetM38, MfcGroupName.M38, 1); //14 打开V93、V95打开V94等待3S打开V96
TimeDelay((int)RoutineStep.TimeDelay4, 3);
SetIoValueByGroup((int)RoutineStep.SetV92V93V95, IoGroupName.V92V93V95, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV92V93V95, IoGroupName.V92V93V95, true, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetV94, IoGroupName.V94, true, _IoValueOpenCloseTimeout);
TimeDelay((int)RoutineStep.TimeDelay4, 3);
SetIoValueByGroup((int)RoutineStep.SetV96, IoGroupName.V96, true, _IoValueOpenCloseTimeout);
//循环开始 //循环开始
Loop((int)RoutineStep.StartLoop, _pressureLoopCount); Loop((int)RoutineStep.StartLoop, _pressureLoopCount);
//M2、M9、M15、M19-M40 MFC 3s ramp 到 default 值 //M2、M9、M15、M19-M45 MFC 3s ramp 到 default 值
SetMfcToDefaultByGroup((int)RoutineStep.SetM2TOM40Default, MfcGroupName.M2toM40, 3); SetMfcToDefaultByGroup((int)RoutineStep.SetM2TOM45Default, MfcGroupName.M2toM45, 3);
SetMfcToDefaultByGroup((int)RoutineStep.SetM18Default, MfcGroupName.M18, 3);
//先关蝶阀,再关闭EPV2 //先关蝶阀,再关闭EPV2
SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode1, _IoThrottle, 8); SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode1, _IoThrottle, 8);
SetThrottleDisable((int)RoutineStep.CLoseTV1, _IoThrottle, 8); SetThrottleDisable((int)RoutineStep.CLoseTV1, _IoThrottle, 8);
TimeDelay((int)RoutineStep.TimeDelay5, 1); TimeDelay((int)RoutineStep.TimeDelay5, 1);
SetIoValueByGroup((int)RoutineStep.SetEPV2_1, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout);
//关闭EPV2
SetIoValueByGroup((int)RoutineStep.SetEPV2_1, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout);
SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown1, PressureUpOrDown.Uping); SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown1, PressureUpOrDown.Uping);
WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.WaitPressureUp, _IoThrottle, _pressureMax, _ventTimeout); WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.WaitPressureUp, _IoThrottle, _pressureMax, _ventTimeout);
TimeDelay((int)RoutineStep.TimeDelay6, _pressureMaxDelay); TimeDelay((int)RoutineStep.TimeDelay6, _pressureMaxDelay);
//打开EPV2 //打开EPV2
@ -392,24 +392,23 @@ namespace SicModules.PMs.Routines
//设置蝶阀为压力模式 //设置蝶阀为压力模式
SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode1, _IoThrottle, 5); SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode1, _IoThrottle, 5);
//M2、M9、M15、M19-M40 MFC 3s ramp 0 //M2、M9、M15、M19-M45 MFC 3s ramp 0
SetMfcByGroup((int)RoutineStep.SetM2toM40_1, MfcGroupName.M2toM40, 0, 3); SetMfcByGroup((int)RoutineStep.SetM2toM45_1, MfcGroupName.M2toM45, 0, 3);
SetMfcByGroup((int)RoutineStep.SetM18_1, MfcGroupName.M18, 0, 3);
//伺服到0mbar //伺服到0mbar
SetThrottlePressureAndWait((int)RoutineStep.SetPressureDown, _IoThrottle, _pressureMin, _pumpTimeout); SetThrottlePressureAndWait((int)RoutineStep.SetPressureDown, _IoThrottle, _pressureMin, _pumpTimeout);
EndLoop((int)RoutineStep.EndLoop); EndLoop((int)RoutineStep.EndLoop);
//M27-M40 MFC 3s ramp 到 default 值 //M2-M40 MFC 3s ramp 到 default 值
SetMfcToDefaultByGroup((int)RoutineStep.SetMfc2to40Default, MfcGroupName.M2toM40, 3); SetMfcToDefaultByGroup((int)RoutineStep.SetMfc2to45Default, MfcGroupName.M2toM45, 3);
SetMfcToDefaultByGroup((int)RoutineStep.SetM18_2, MfcGroupName.M18, 3);
//打开J阀门 //打开J阀门
SetIoValueByGroup((int)RoutineStep.SetGroupJ_1, IoGroupName.J, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupJ_1, IoGroupName.J, true, _IoValueOpenCloseTimeout);
//打开V72,关闭V25 //打开V72,关闭V25
SetIoValueByGroup((int)RoutineStep.VentPumpClose_1, IoGroupName.VentPump, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.VentPumpClose_1, IoGroupName.V72, true, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.CloseGroupV25, IoGroupName.V25, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.CloseGroupV25, IoGroupName.V25, false, _IoValueOpenCloseTimeout);
//设置蝶阀为压力模式 //设置蝶阀为压力模式
@ -419,6 +418,8 @@ namespace SicModules.PMs.Routines
SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown2, PressureUpOrDown.Uping); SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown2, PressureUpOrDown.Uping);
SetThrottleToTargetAndNoWait((int)RoutineStep.SetPressureUp2, _IoThrottle, _throttleFinalPressure); SetThrottleToTargetAndNoWait((int)RoutineStep.SetPressureUp2, _IoThrottle, _throttleFinalPressure);
WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.SetTVto300, _IoThrottle, _throttleFinalPressure, _pmPressureMaxDiff, _throttleTimeout); WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.SetTVto300, _IoThrottle, _throttleFinalPressure, _pmPressureMaxDiff, _throttleTimeout);
} }
catch (RoutineBreakException) catch (RoutineBreakException)
{ {

View File

@ -7,7 +7,6 @@ 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.Fsm;
using SicModules.PMs.Routines.Base; using SicModules.PMs.Routines.Base;
namespace SicModules.PMs.Routines namespace SicModules.PMs.Routines
@ -19,7 +18,6 @@ namespace SicModules.PMs.Routines
SetGroupK, SetGroupK,
SetM7Or10, SetM7Or10,
SetM8Or11, SetM8Or11,
SetM21,
OpenV73, OpenV73,
StartLoop, StartLoop,
OpenGroup1, OpenGroup1,
@ -156,12 +154,11 @@ namespace SicModules.PMs.Routines
{ {
CheckRoutineTimeOut(); CheckRoutineTimeOut();
//关闭K阀组 //1 关闭K阀组
SetIoValueByGroup((int)RoutineStep.SetGroupK, IoGroupName.K, false, _IoValueTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupK, IoGroupName.K, false, _IoValueTimeout);
//设定M7,M8 80%,PC2设定Max //2 设定M7,M8 80%,PC2设定Max
SetMfcValueByPercent((int)RoutineStep.SetM7Or10, mfc7Or10, 80); SetMfcValueByPercent((int)RoutineStep.SetM7Or10, mfc7Or10, 80);
SetMfcValueByPercent((int)RoutineStep.SetM21, 21, 80);
SetMfcValueByPercent((int)RoutineStep.SetM8Or11, mfc8Or11, 80); SetMfcValueByPercent((int)RoutineStep.SetM8Or11, mfc8Or11, 80);
//打开V73 //打开V73

View File

@ -52,8 +52,7 @@ namespace SicModules.PMs.Routines
SetGasIn2, SetGasIn2,
SetGroupJOpen, SetGroupJOpen,
SetM291519to26, SetM2toM45Default_1,
SetM17M18,
OpenFinal2, OpenFinal2,
CloseFinal2, CloseFinal2,
@ -62,21 +61,22 @@ namespace SicModules.PMs.Routines
SetEPV1, SetEPV1,
SetEPV2, SetEPV2,
SetTvMode, SetTvMode,
SetTVEnable, SetTVEnable_1,
SetTVEnable_2,
SetTVEnable_3,
SetTVPressMode, SetTVPressMode,
SetTv1, SetTv1,
WaitTv1, WaitTv1,
SetM2toM40, SetM2toM45,
SetM18,
SetTVPositionMode, SetTVPositionMode,
SetTVPositionMode_1, SetTVPositionMode_1,
SetTVPositionMax, SetTVPositionMax,
SetTVPositionMax_1, SetTVPositionMax_1,
SetTVPressMode1, SetTVPressMode_1,
SetM2TOM40Default, SetTVPressMode_2,
SetTVPressMode_3,
SetM2toM45Default_2,
SetM2toM40_1, SetM2toM40_1,
SetM18Default,
SetM18_1,
SetTvOpen, SetTvOpen,
SetTvModeToPress, SetTvModeToPress,
@ -100,7 +100,7 @@ namespace SicModules.PMs.Routines
CloseFinanl1, CloseFinanl1,
CloseFinanl2, CloseFinanl2,
CloseEPV2, CloseEPV2,
SetTVCloseMode2, SetTVCloseMode_2,
CLoseTvvvv, CLoseTvvvv,
SetEPVVV2, SetEPVVV2,
CLoseEPV1, CLoseEPV1,
@ -142,6 +142,7 @@ namespace SicModules.PMs.Routines
CloseV69, CloseV69,
CloseV70, CloseV70,
SetGroupV25, SetGroupV25,
SetV30,
SetV31, SetV31,
SetV32, SetV32,
SetV35V36, SetV35V36,
@ -157,15 +158,12 @@ namespace SicModules.PMs.Routines
CloseM32M35M37, CloseM32M35M37,
CloseM36, CloseM36,
CloseM38, CloseM38,
SetV103,
SetV105,
CloseGasIn1, CloseGasIn1,
SetTVCloseMode1, SetTVCloseMode1,
CLoseTV1, CLoseTV1,
SetEPV2_1, SetEPV2_1,
SetEPV2_2, SetEPV2_2,
SetTVEnable_2,
TimeDelay1, TimeDelay1,
TimeDelay2, TimeDelay2,
@ -200,6 +198,9 @@ namespace SicModules.PMs.Routines
private IoThrottleValve2 _IoThrottle; private IoThrottleValve2 _IoThrottle;
private IoInterLock _pmIoInterLock; private IoInterLock _pmIoInterLock;
List<int> _lstPcList = new List<int> { 1, 2, 3, 4, 5, 6, 7 };
private int _rotationCheckSpeed = 0; //设置旋转速度为0后检查是否转速低于此数值 private int _rotationCheckSpeed = 0; //设置旋转速度为0后检查是否转速低于此数值
private int _rotationCloseTimeout; //旋转停止超时 private int _rotationCloseTimeout; //旋转停止超时
private int _heatTimeOut = 5; //Heat关闭等待Di反馈超时时间 private int _heatTimeOut = 5; //Heat关闭等待Di反馈超时时间
@ -238,6 +239,7 @@ namespace SicModules.PMs.Routines
Module = module.ToString(); Module = module.ToString();
Name = "Leak Check"; Name = "Leak Check";
_IoThrottle = DEVICE.GetDevice<IoThrottleValve2>($"{Module}.TV"); _IoThrottle = DEVICE.GetDevice<IoThrottleValve2>($"{Module}.TV");
} }
@ -300,26 +302,24 @@ namespace SicModules.PMs.Routines
{ {
CheckRoutineTimeOut(); CheckRoutineTimeOut();
//关闭V76,打开V75 //1 关闭V76,打开V75
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,打开V25
SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.V72, 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 打开V30,打开V31,打开V32
SetIoValueByGroup((int)RoutineStep.SetV30, IoGroupName.V30, true, _IoValueOpenCloseTimeout);
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,打开V36
SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout);
//关闭B/C/E/F/H/K 阀门 //关闭B/C/E/F/H/K 阀门
@ -338,57 +338,52 @@ namespace SicModules.PMs.Routines
SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All); SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All);
SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList); SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList);
//M1-M16设定为default值(M2、M9、M15除外) //6 M1-M16设定为default值(M2、M9、M15除外)
SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0); SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0);
//设置所有PC到默认值 //设置所有PC到默认值
SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); SetPcToDefault((int)RoutineStep.SetPC, _lstPcList);
//设置M2,M9,M15,M19-M26 3s ramp 到default 值 //7 设置M2,M9,M15,M19-M45 3s ramp 到default 值
SetMfcToDefaultByGroup((int)RoutineStep.SetM291519to26, MfcGroupName.M2toM40, 3);//组改变,.M2toM26改变为->M2toM40防止MFC不在正常状态 SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM45Default_1, MfcGroupName.M2toM45, 3);
SetMfcToDefaultByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, 3);
//打开V68 //8 打开A阀门
SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.A, true, _IoValueOpenCloseTimeout);
//打开J阀门 //打开J阀门
SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout);
//打开EPV2 //9 打开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 //设置蝶阀Enable
SetThrottleEnableAndWait((int)RoutineStep.SetTVEnable, _IoThrottle, 5); SetThrottleEnableAndWait((int)RoutineStep.SetTVEnable_1, _IoThrottle, 5);
//设置蝶阀为压力模式 //设置蝶阀为压力模式
SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode, _IoThrottle, 5); SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode_1, _IoThrottle, 5);
//伺服压力设定值到0mbar //10 伺服压力设定值到0mbar
SetThrottleToTargetAndNoWait((int)RoutineStep.SetTv1, _IoThrottle, _pressureMin); SetThrottleToTargetAndNoWait((int)RoutineStep.SetTv1, _IoThrottle, _pressureMin);
//M2、M9、M15、M19-M40 MFC 3s ramp到0 //M2、M9、M15、M19-M45 MFC 3s ramp到0
SetMfcByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM40, 0, 3); SetMfcByGroup((int)RoutineStep.SetM2toM45, MfcGroupName.M2toM45, 0, 3);
SetMfcByGroup((int)RoutineStep.SetM18, MfcGroupName.M18, 0, 3);
//等待腔体压力Pump到设定值 //11 等待腔体压力Pump到设定值
WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _pressureMin, _pressureMinTimeout); WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _pressureMin, _pressureMinTimeout);
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 值 //M2、M9、M15、M19-M40 MFC 3s ramp 到 default 值
SetMfcToDefaultByGroup((int)RoutineStep.SetM2TOM40Default, MfcGroupName.M2toM40, 3); SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM45Default_2, MfcGroupName.M2toM45, 3);
SetMfcToDefaultByGroup((int)RoutineStep.SetM18Default, MfcGroupName.M18, 3);
//先关蝶阀,再关闭EPV2 //先关蝶阀,再关闭EPV2
SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode1, _IoThrottle, 8); SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode1, _IoThrottle, 8);
@ -397,37 +392,36 @@ namespace SicModules.PMs.Routines
SetIoValueByGroup((int)RoutineStep.SetEPV2_1, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetEPV2_1, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout);
SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown1, PressureUpOrDown.Uping); SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown1, PressureUpOrDown.Uping);
WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.WaitPressureUp, _IoThrottle, _pressureMax, _pressureMaxTimeout); WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.WaitPressureUp, _IoThrottle, _pressureMax, _pmPressureMaxDiff, _pressureMaxTimeout);
TimeDelay((int)RoutineStep.TimeDelay6, _pressureMaxDelay); TimeDelay((int)RoutineStep.TimeDelay6, _pressureMaxDelay);
//打开EPV2 //打开EPV2
SetIoValueByGroup((int)RoutineStep.SetEPV2_2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetEPV2_2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout);
TimeDelay((int)RoutineStep.TimeDelay7, 1); TimeDelay((int)RoutineStep.TimeDelay7, 1);
//设置蝶阀Enable ////设置蝶阀Enable
SetThrottleEnableAndWait((int)RoutineStep.SetTVEnable_2, _IoThrottle, 5); SetThrottleEnableAndWait((int)RoutineStep.SetTVEnable_2, _IoThrottle, 5);
//设置蝶阀为压力模式 //设置蝶阀为压力模式
SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode1, _IoThrottle, 5); SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode_3, _IoThrottle, 5);
//M2、M9、M15、M19-M40 MFC 3s ramp 0 //M2、M9、M15、M19-M40 MFC 3s ramp 0
SetMfcByGroup((int)RoutineStep.SetM2toM40_1, MfcGroupName.M2toM40, 0, 3); SetMfcByGroup((int)RoutineStep.SetM2toM40_1, MfcGroupName.M2toM45, 0, 3);
SetMfcByGroup((int)RoutineStep.SetM18_1, MfcGroupName.M18, 0, 3);
//伺服到0mbar //伺服到0mbar
SetThrottlePressureAndWait((int)RoutineStep.SetPressureDown, _IoThrottle, _pressureMin, _pressureMinTimeout); SetThrottlePressureAndWait((int)RoutineStep.SetPressureDown, _IoThrottle, _pressureMin, _pmPressureMaxDiff, _pressureMinTimeout);
EndLoop((int)RoutineStep.EndLoop); EndLoop((int)RoutineStep.EndLoop);
//依次关闭Final1 ////依次关闭Final1
SetIoValueByGroup((int)RoutineStep.CloseGasIn1, IoGroupName.GasIn1, false, _IoValueOpenCloseTimeout); //SetIoValueByGroup((int)RoutineStep.CloseGasIn1, IoGroupName.Final1, false, _IoValueOpenCloseTimeout);
Delay((int)RoutineStep.TimeDelay13, 5); //Delay((int)RoutineStep.TimeDelay13, 5);
//关闭M32,M35,M36,M37,M38 ////关闭M32,M35,M36,M37,M38
SetMfcByGroup((int)RoutineStep.CloseM32M35M37, MfcGroupName.M32M35M37, 0, 5); //SetMfcByGroup((int)RoutineStep.CloseM32M35M37, MfcGroupName.M35M37, 0, 5);
SetMfcByGroup((int)RoutineStep.CloseM36, MfcGroupName.M36, 0, 5); //SetMfcByGroup((int)RoutineStep.CloseM36, MfcGroupName.M36, 0, 5);
SetMfcByGroup((int)RoutineStep.CloseM38, MfcGroupName.M38, 0, 5); //SetMfcByGroup((int)RoutineStep.CloseM38, MfcGroupName.M38, 0, 5);
Delay((int)RoutineStep.TimeDelay14, 5); //Delay((int)RoutineStep.TimeDelay14, 5);
//关闭Final1阀 //关闭Final1阀
SetIoValueByGroup((int)RoutineStep.CloseFinanl1, IoGroupName.Final1, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.CloseFinanl1, IoGroupName.Final1, false, _IoValueOpenCloseTimeout);
@ -439,7 +433,7 @@ namespace SicModules.PMs.Routines
TimeDelay((int)RoutineStep.TimeDelay15, _paramContinuePumpTime); TimeDelay((int)RoutineStep.TimeDelay15, _paramContinuePumpTime);
//先关蝶阀,再关闭EPV2 //先关蝶阀,再关闭EPV2
SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode2, _IoThrottle, 8); SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode_2, _IoThrottle, 8);
SetThrottleDisable((int)RoutineStep.CLoseTvvvv, _IoThrottle, 8); SetThrottleDisable((int)RoutineStep.CLoseTvvvv, _IoThrottle, 8);
TimeDelay((int)RoutineStep.TimeDelay16, 1); TimeDelay((int)RoutineStep.TimeDelay16, 1);
SetIoValueByGroup((int)RoutineStep.SetEPVVV2, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetEPVVV2, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout);

View File

@ -279,15 +279,6 @@ namespace SicModules.PMs.Routines
{ {
pc7FeedBack.Add(PmDevice.Pressure7.FeedBack); 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; return ElapsedTime>=10;
}, },
timeout * 1000); timeout * 1000);

View File

@ -19,15 +19,14 @@ namespace SicModules.PMs.Routines
SetPSURatio, SetPSURatio,
SetSCRRatio, SetSCRRatio,
SetRotation, SetRotation,
SetM2toM40, SetM2toM45,
SetM17M18,
SetM1to16, SetM1to16,
SetM5M21,
SetPC, SetPC,
SetV32, SetV32,
SetV35V36, SetV35V36,
SetV68, SetV68,
SetV65, SetV65,
SetGroupA,
SetGroupB, SetGroupB,
SetGroupC, SetGroupC,
SetGroupE, SetGroupE,
@ -36,21 +35,22 @@ namespace SicModules.PMs.Routines
SetGroupK, SetGroupK,
SetGroupD, SetGroupD,
SetGroupG, SetGroupG,
VentPumpClose, VentPumpClose,
SetGroupV25, SetGroupV25,
SetV34,
SetV100,
TimeDelay1, TimeDelay1,
TimeDelay2,
} }
private int _heatTimeOut = 5; private int _heatTimeOut = 5;
private int _mfc1to16RampTime = 30; private int _mfc1to16RampTime = 30;
private int _mfc2to40RampTime = 30; private int _mfc2to45RampTime = 30;
List<int> _lstPcList = new List<int> { 1, 2, 3, 4, 5, 6, 7 };
private int _IoValueOpenCloseTimeout = 10;
private int _IoValueOpenCloseTimeout = 10;
private int _routineTimeOut = 10; private int _routineTimeOut = 10;
private Stopwatch _swTimer = new Stopwatch(); private Stopwatch _swTimer = new Stopwatch();
@ -65,7 +65,7 @@ namespace SicModules.PMs.Routines
Reset(); Reset();
_mfc1to16RampTime = SC.GetValue<int>($"PM.{Module}.ProcessIdle.MFC1to16RampTime"); _mfc1to16RampTime = SC.GetValue<int>($"PM.{Module}.ProcessIdle.MFC1to16RampTime");
_mfc2to40RampTime = SC.GetValue<int>($"PM.{Module}.ProcessIdle.MFC19to40RampTime"); _mfc2to45RampTime = SC.GetValue<int>($"PM.{Module}.ProcessIdle.MFC19to40RampTime");
_routineTimeOut = SC.GetValue<int>($"PM.{Module}.ProcessIdle.RoutineTimeOut"); _routineTimeOut = SC.GetValue<int>($"PM.{Module}.ProcessIdle.RoutineTimeOut");
@ -81,7 +81,7 @@ namespace SicModules.PMs.Routines
{ {
//CheckRoutineTimeOut(); //CheckRoutineTimeOut();
//停止加热 //1 停止加热
SetHeatEnable((int)RoutineStep.HeatEnable, false, _heatTimeOut); SetHeatEnable((int)RoutineStep.HeatEnable, false, _heatTimeOut);
//设置模式为Power //设置模式为Power
@ -95,53 +95,47 @@ namespace SicModules.PMs.Routines
//停止旋转 //停止旋转
SetRotationValveAndNoWait((int)RoutineStep.SetRotation, 0); SetRotationValveAndNoWait((int)RoutineStep.SetRotation, 0);
//M2、M9、M15、M19-M40 MFC 30s ramp 到 default 值 //2 M2、M9、M15、M19-M45 MFC 30s ramp 到 default 值
SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM40, _mfc2to40RampTime); SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM45, MfcGroupName.M2toM45, _mfc2to45RampTime);
SetMfcToDefaultByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, _mfc2to40RampTime);
//M1 - M16 MFC 30s ramp 到 default 值(M2、M9、M15除外) //3 M1 - M16 MFC 30s ramp 到 default 值(M2、M9、M15除外)
SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, _mfc1to16RampTime); SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, _mfc1to16RampTime);
//M5 M2130s ramp 到 default 值
SetMfcToDefaultByGroup((int)RoutineStep.SetM5M21, MfcGroupName.M5M21, _mfc1to16RampTime);
//所有PC设定为默认值 //所有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(_mfc2to45RampTime, _mfc1to16RampTime));
//打开V32 //4 打开V32
SetIoValueByGroupNoWait((int)RoutineStep.SetV32, IoGroupName.V32, true); SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout);
//打开V35,打开V36
SetIoValueByGroupNoWait((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true); //4 打开A
SetIoValueByGroup((int)RoutineStep.SetGroupA, IoGroupName.A, true, _IoValueOpenCloseTimeout);
//5 打开V35、V36
SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout);
//关闭B/C/E/F/H/K 阀门 //关闭B/C/E/F/H/K 阀门
SetIoValueByGroupNoWait((int)RoutineStep.SetGroupB, IoGroupName.B, false); SetIoValueByGroup((int)RoutineStep.SetGroupB, IoGroupName.B, false, _IoValueOpenCloseTimeout);
SetIoValueByGroupNoWait((int)RoutineStep.SetGroupC, IoGroupName.C, false); SetIoValueByGroup((int)RoutineStep.SetGroupC, IoGroupName.C, false, _IoValueOpenCloseTimeout);
SetIoValueByGroupNoWait((int)RoutineStep.SetGroupE, IoGroupName.E, false); SetIoValueByGroup((int)RoutineStep.SetGroupE, IoGroupName.E, false, _IoValueOpenCloseTimeout);
SetIoValueByGroupNoWait((int)RoutineStep.SetGroupF, IoGroupName.F, false); SetIoValueByGroup((int)RoutineStep.SetGroupF, IoGroupName.F, false, _IoValueOpenCloseTimeout);
SetIoValueByGroupNoWait((int)RoutineStep.SetGroupH, IoGroupName.H, false); SetIoValueByGroup((int)RoutineStep.SetGroupH, IoGroupName.H, false, _IoValueOpenCloseTimeout);
SetIoValueByGroupNoWait((int)RoutineStep.SetGroupK, IoGroupName.K, false); SetIoValueByGroup((int)RoutineStep.SetGroupK, IoGroupName.K, false, _IoValueOpenCloseTimeout);
SetIoValueByGroupNoWait((int)RoutineStep.SetV34, IoGroupName.V34, false);
SetIoValueByGroupNoWait((int)RoutineStep.SetV100, IoGroupName.V100, false);
//打开D/G 阀门 //打开D/G 阀门
SetIoValueByGroupNoWait((int)RoutineStep.SetGroupD, IoGroupName.D, true); SetIoValueByGroup((int)RoutineStep.SetGroupD, IoGroupName.D, true, _IoValueOpenCloseTimeout);
SetIoValueByGroupNoWait((int)RoutineStep.SetGroupG, IoGroupName.G, true); SetIoValueByGroup((int)RoutineStep.SetGroupG, IoGroupName.G, true, _IoValueOpenCloseTimeout);
////打开V65
//SetIoValueByGroupNoWait((int)RoutineStep.SetV65, IoGroupName.V65, true);
//打开V68 //打开V68
SetIoValueByGroupNoWait((int)RoutineStep.SetV68, IoGroupName.GasIn1, true); //SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.V68, true, _IoValueOpenCloseTimeout);
//关闭V72,打开V25 ////关闭V72,打开V25
SetIoValueByGroupNoWait((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false); //SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.V72, false, _IoValueOpenCloseTimeout);
//SetIoValueByGroup((int)RoutineStep.SetGroupV25, IoGroupName.V25, true, _IoValueOpenCloseTimeout);
TimeDelay((int)RoutineStep.TimeDelay2, 2);
SetIoValueByGroupNoWait((int)RoutineStep.SetGroupV25, IoGroupName.V25, true);
} }
catch (RoutineBreakException) catch (RoutineBreakException)

View File

@ -18,7 +18,7 @@ namespace SicModules.PMs.Routines
HeatEnable, HeatEnable,
VentPumpClose, VentPumpClose,
ArSupply, ArSupply,
SetGroupA,
SetGroupB, SetGroupB,
SetGroupC, SetGroupC,
SetGroupE, SetGroupE,
@ -30,10 +30,8 @@ namespace SicModules.PMs.Routines
SetGroupJ, SetGroupJ,
SetM1to16, SetM1to16,
SetM17M18,
SetPC, SetPC,
SetGroupI, //V87-96 SetGroupI, //V87-96
SetM18,
SetM2to40, SetM2to40,
SetM2to40_1, SetM2to40_1,
MfcAll, MfcAll,
@ -76,13 +74,11 @@ namespace SicModules.PMs.Routines
SetV76, SetV76,
SetV75, SetV75,
SetGroupV25, SetGroupV25,
SetV30,
SetV31, SetV31,
SetV32, SetV32,
SetV35V36, SetV35V36,
SetV87V97,
SetV65, SetV65,
SetV103,
SetV105,
SetTVPositionMode, SetTVPositionMode,
SetTVPositionMax, SetTVPositionMax,
@ -110,6 +106,8 @@ namespace SicModules.PMs.Routines
private IoThrottleValve2 _IoThrottle; private IoThrottleValve2 _IoThrottle;
private IoInterLock _pmIoInterLock; private IoInterLock _pmIoInterLock;
List<int> _lstPcList = new List<int> { 1, 2, 3, 4, 5, 6, 7 };
private int _rotationCheckSpeed = 0; //设置旋转速度为0后检查是否转速低于此数值 private int _rotationCheckSpeed = 0; //设置旋转速度为0后检查是否转速低于此数值
private int _rotationCloseTimeout; //旋转停止超时 private int _rotationCloseTimeout; //旋转停止超时
private int _IoValueOpenCloseTimeout = 10; //开关超时时间 private int _IoValueOpenCloseTimeout = 10; //开关超时时间
@ -145,6 +143,7 @@ namespace SicModules.PMs.Routines
_routineTimeOut = SC.GetValue<int>($"PM.{Module}.Pump.RoutineTimeOut"); _routineTimeOut = SC.GetValue<int>($"PM.{Module}.Pump.RoutineTimeOut");
_pumpTimeOut = SC.GetValue<int>($"PM.{Module}.Pump.PumpTimeOut"); _pumpTimeOut = SC.GetValue<int>($"PM.{Module}.Pump.PumpTimeOut");
if (!_pmIoInterLock.SetPMPumpRoutineRunning(true, out string reason)) if (!_pmIoInterLock.SetPMPumpRoutineRunning(true, out string reason))
{ {
EV.PostAlarmLog(Module, $"can not Pump,{reason}"); EV.PostAlarmLog(Module, $"can not Pump,{reason}");
@ -170,13 +169,11 @@ namespace SicModules.PMs.Routines
SetRotationValve((int)RoutineStep.RotationEnable, _rotationCheckSpeed, false, _rotationCloseTimeout); SetRotationValve((int)RoutineStep.RotationEnable, _rotationCheckSpeed, false, _rotationCloseTimeout);
//关闭V72,打开V25 //关闭V72,打开V25
SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.V72, 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 //打开V30,打开V31,打开V32
SetIoValueByGroup((int)RoutineStep.SetV30, IoGroupName.V30, true, _IoValueOpenCloseTimeout);
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);
@ -201,16 +198,15 @@ namespace SicModules.PMs.Routines
//M1-M16设定为default值(M2、M9、M15除外) //M1-M16设定为default值(M2、M9、M15除外)
SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0); SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0);
SetMfcToDefaultByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, 0);
//M2、M9、M15、M19-M40 MFC 3s ramp 到 default值 //M2、M9、M15、M19-M40 MFC 3s ramp 到 default值
SetMfcToDefaultByGroup((int)RoutineStep.SetM2to40_1, MfcGroupName.M2toM40, 3); SetMfcToDefaultByGroup((int)RoutineStep.SetM2to40_1, MfcGroupName.M2toM45, 3);
//设置所有PC到默认值 //设置所有PC到默认值
SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); SetPcToDefault((int)RoutineStep.SetPC, _lstPcList);
//打开V68 //8 打开A 组阀
SetIoValueByGroup((int)RoutineStep.OpenGasIn1, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupA, IoGroupName.A, true, _IoValueOpenCloseTimeout);
//打开J阀门 //打开J阀门
SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout);
@ -232,10 +228,7 @@ namespace SicModules.PMs.Routines
SetThrottleToTargetAndNoWait((int)RoutineStep.SetTv1, _IoThrottle, _pumpBasePressure); SetThrottleToTargetAndNoWait((int)RoutineStep.SetTv1, _IoThrottle, _pumpBasePressure);
//M2、M9、M15、M19-M40 MFC 3s ramp到0 //M2、M9、M15、M19-M40 MFC 3s ramp到0
SetMfcByGroup((int)RoutineStep.SetM2to40, MfcGroupName.M2toM40, 0, 3); SetMfcByGroup((int)RoutineStep.SetM2to40, MfcGroupName.M2toM45, 0, 3);
SetMfcByGroup((int)RoutineStep.SetM18, MfcGroupName.M18, 0, 3);
//关闭V87 V97
SetIoValueByGroup((int)RoutineStep.SetV87V97, IoGroupName.V87V97, false, _IoValueOpenCloseTimeout);
//等待腔体压力Pump到设定值 //等待腔体压力Pump到设定值
WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _pumpBasePressure, _pumpTimeOut); WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _pumpBasePressure, _pumpTimeOut);

View File

@ -33,7 +33,6 @@ namespace SicModules.PMs.Routines
SetPCMode, SetPCMode,
SetM1to16, SetM1to16,
SetM17M18,
SetPC, SetPC,
SetGroupJ, SetGroupJ,
CloseGroupJ, CloseGroupJ,
@ -52,8 +51,8 @@ namespace SicModules.PMs.Routines
SetGasIn2, SetGasIn2,
SetGroupJOpen, SetGroupJOpen,
SetM291519to26, SetM2toM26M43M44M45,
SetM291519to26_1, SetM2M9M15_M19toM26,
OpenFinal2, OpenFinal2,
IsOpenFinal1, IsOpenFinal1,
@ -116,31 +115,26 @@ namespace SicModules.PMs.Routines
SetPressUpOrDown2, SetPressUpOrDown2,
SetMfc28to40Special, SetMfc28to40Special,
WaitPmPressureUp, WaitPmPressureUp,
SetMfc27to40Default, SetMfc27to45Default,
SetV75, SetV75,
SetV76, SetV76,
SetV30,
SetV31, SetV31,
SetV32, SetV32,
SetV35V36, SetV35V36,
SetV65, SetV65,
SetV751, SetV751,
SetV761, SetV761,
SetV103, SetM2toM45,
SetV105,
SetM2toM40,
SetM2toM40_1, SetM2toM40_1,
SetM2TOM40Default, SetM2TOM40Default,
SetM18,
SetM18_1,
SetM18_2,
SetM18Default,
SetV92V93V95, SetV93V95,
SetV94, SetV94,
SetV96, SetV96,
SetV68, SetV68,
SetM32M35M37, SetM35M36M37M38,
SetM36, SetM36,
SetM38, SetM38,
SetM36_1, SetM36_1,
@ -207,6 +201,9 @@ namespace SicModules.PMs.Routines
private IoThrottleValve2 _IoThrottle; private IoThrottleValve2 _IoThrottle;
private IoInterLock _pmIoInterLock; private IoInterLock _pmIoInterLock;
List<int> _lstPcList = new List<int> { 1, 2, 3, 4, 5, 6, 7 };
private int _rotationCheckSpeed = 0; //设置旋转速度为0后检查是否转速低于此数值 private int _rotationCheckSpeed = 0; //设置旋转速度为0后检查是否转速低于此数值
private int _rotationCloseTimeout; //旋转停止超时 private int _rotationCloseTimeout; //旋转停止超时
private int _heatTimeOut = 5; //Heat关闭等待Di反馈超时时间 private int _heatTimeOut = 5; //Heat关闭等待Di反馈超时时间
@ -292,26 +289,24 @@ namespace SicModules.PMs.Routines
{ {
//CheckRoutineTimeOut(); //CheckRoutineTimeOut();
//关闭V76,打开V75 //1 关闭V76,打开V75
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,打开V25
SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.V72, 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 打开V30,打开V31,打开V32
SetIoValueByGroup((int)RoutineStep.SetV30, IoGroupName.V30, true, _IoValueOpenCloseTimeout);
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,打开V36
SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout);
//关闭B/C/E/F/H/K 阀门 //关闭B/C/E/F/H/K 阀门
@ -326,6 +321,9 @@ namespace SicModules.PMs.Routines
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);
//打开J阀门
SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout);
////打开V65 ////打开V65
//SetIoValueByGroup((int)RoutineStep.SetV65, IoGroupName.V65, true, _IoValueOpenCloseTimeout); //SetIoValueByGroup((int)RoutineStep.SetV65, IoGroupName.V65, true, _IoValueOpenCloseTimeout);
@ -333,20 +331,16 @@ namespace SicModules.PMs.Routines
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-M16设定为default值(M2、M9、M15除外)
SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout);
//M1-M16设定为default值(M2、M9、M15除外)
SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0); SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0);
SetMfcToDefaultByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, 0);
//设置所有PC到默认值 //设置所有PC到默认值
SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); SetPcToDefault((int)RoutineStep.SetPC, _lstPcList);
//设置M2,M9,M15,M19-M26 3s ramp 到default 值 //设置M2,M9,M15,M19-M26 3s ramp 到default 值
SetMfcToDefaultByGroup((int)RoutineStep.SetM291519to26, MfcGroupName.M2toM26, 3); SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM26M43M44M45, MfcGroupName.M2toM45, 3);
//打开EPV2 //7 打开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);
@ -359,12 +353,11 @@ namespace SicModules.PMs.Routines
//伺服压力设定值到0mbar //伺服压力设定值到0mbar
SetThrottleToTargetAndNoWait((int)RoutineStep.SetTv1, _IoThrottle, _pumpBasePressure); SetThrottleToTargetAndNoWait((int)RoutineStep.SetTv1, _IoThrottle, _pumpBasePressure);
//M2、M9、M15、M19-M40 MFC 5s ramp 到0 //8 M2、M9、M15、M19-M45 MFC 3s ramp 到0
SetMfcByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM40, 0, 5); SetMfcByGroup((int)RoutineStep.SetM2toM45, MfcGroupName.M2toM45, 0, 3);
SetMfcByGroup((int)RoutineStep.SetM18, MfcGroupName.M18, 0, 5);
//等待腔体压力Pump到设定值 //9 等待腔体压力Pump到设定值
WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _pumpBasePressure, _throttleTimeout); WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _pumpBasePressure, _pumpTimeout);
TimeDelay((int)RoutineStep.TimeDelay2, 3); TimeDelay((int)RoutineStep.TimeDelay2, 3);
@ -373,83 +366,70 @@ namespace SicModules.PMs.Routines
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 Final2阀对应的MFC 3s Ramp到Default值
SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal2, MfcGroupName.Final2, 3); SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal2, MfcGroupName.Final2, 3);
//打开Final2阀 //11 打开Final2阀
SetIoValueByGroup((int)RoutineStep.OpenFinal2, IoGroupName.Final2, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.OpenFinal2, IoGroupName.Final2, true, _IoValueOpenCloseTimeout);
//打开V68 //12 打开 V65 V68
SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV65, IoGroupName.V65, true, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.V68, true, _IoValueOpenCloseTimeout);
TimeDelay((int)RoutineStep.TimeDelay3, 1); TimeDelay((int)RoutineStep.TimeDelay3, 1);
//打开V92,V93和V95,再打开V94,在打开V96 //13 M35 36 37 38 MFC 3s ramp 到default
SetMfcToDefaultByGroup((int)RoutineStep.SetM32M35M37, MfcGroupName.M32M35M37, 1); SetMfcToDefaultByGroup((int)RoutineStep.SetM35M36M37M38, MfcGroupName.M35M36M37M38, 3);
SetMfcToDefaultByGroup((int)RoutineStep.SetM36, MfcGroupName.M36, 1);
SetMfcToDefaultByGroup((int)RoutineStep.SetM38, MfcGroupName.M38, 1);
//14 14.打开V93、V95打开V94等待3S打开V96
SetIoValueByGroup((int)RoutineStep.SetV93V95, IoGroupName.V93V95, true, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetV94, IoGroupName.V94, true, _IoValueOpenCloseTimeout);
TimeDelay((int)RoutineStep.TimeDelay4, 3); TimeDelay((int)RoutineStep.TimeDelay4, 3);
SetIoValueByGroup((int)RoutineStep.SetV92V93V95, IoGroupName.V92V93V95, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV96, IoGroupName.V96, true, _IoValueOpenCloseTimeout);
//循环开始 //循环开始
Loop((int)RoutineStep.StartLoop, _pressureLoopCount); Loop((int)RoutineStep.StartLoop, _pressureLoopCount);
//M2、M9、M15、M19-M40 MFC 3s ramp 到 default 值 //M2、M9、M15、M19-M45 MFC 3s ramp 到 default 值
SetMfcToDefaultByGroup((int)RoutineStep.SetM2TOM40Default, MfcGroupName.M2toM40, 3); SetMfcToDefaultByGroup((int)RoutineStep.SetM2TOM40Default, MfcGroupName.M2toM45, 3);
SetMfcToDefaultByGroup((int)RoutineStep.SetM18Default, MfcGroupName.M18, 3);
//先关蝶阀,再关闭EPV2 //先关蝶阀,再关闭EPV2
SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode1, _IoThrottle, 8); SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode1, _IoThrottle, 8);
SetThrottleDisable((int)RoutineStep.CLoseTV1, _IoThrottle, 8); SetThrottleDisable((int)RoutineStep.CLoseTV1, _IoThrottle, 8);
TimeDelay((int)RoutineStep.TimeDelay5, 1); TimeDelay((int)RoutineStep.TimeDelay5, 1);
SetIoValueByGroup((int)RoutineStep.SetEPV2_1, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetEPV2_1, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout);
//等待压力大于等于设定值(可配置)
SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown1, PressureUpOrDown.Uping); SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown1, PressureUpOrDown.Uping);
WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.WaitPressureUp, _IoThrottle, _ventBasePressure, _ventTimeout); 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); TimeDelay((int)RoutineStep.TimeDelay6, _pressureMaxDelay);
//打开EPV2 //打开EPV2
SetIoValueByGroup((int)RoutineStep.SetEPV2_2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetEPV2_2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout);
TimeDelay((int)RoutineStep.TimeDelay7, 1); TimeDelay((int)RoutineStep.TimeDelay7, 1);
//设置蝶阀Enable //设置蝶阀Enable
SetThrottleEnableAndWait((int)RoutineStep.SetTVEnable_2, _IoThrottle, 5); 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 //M2、M9、M15、M19-M40 MFC 3s ramp 0
SetMfcByGroup((int)RoutineStep.SetM2toM40_1, MfcGroupName.M2toM40, 0, 3); SetMfcByGroup((int)RoutineStep.SetM2toM40_1, MfcGroupName.M2toM45, 0, 3);
SetMfcByGroup((int)RoutineStep.SetM18_1, MfcGroupName.M18, 0, 3);
//伺服到0mbar //伺服到0mbar
SetThrottlePressureAndWait((int)RoutineStep.SetPressureDown, _IoThrottle, _pumpBasePressure, _pumpTimeout); 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); EndLoop((int)RoutineStep.EndLoop);
//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.SetM2M9M15_M19toM26, MfcGroupName.M2M9M15_M19toM26, 3);
SetMfcToDefaultByGroup((int)RoutineStep.SetM18_2, MfcGroupName.M18, 3);
//M27-M40 MFC 3s ramp 到 default 值 //M27-M45 MFC 3s ramp 到 default 值
SetMfcToDefaultByGroup((int)RoutineStep.SetMfc27to40Default, MfcGroupName.M27toM40, 3); SetMfcToDefaultByGroup((int)RoutineStep.SetMfc27to45Default, MfcGroupName.M27toM45, 3);
//关闭J阀门 //打开J阀门
SetIoValueByGroup((int)RoutineStep.CloseGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout); //SetIoValueByGroup((int)RoutineStep.CloseGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout);
//关闭先关蝶阀,再EPV2 //关闭先关蝶阀,再EPV2
SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode2, _IoThrottle, 8); SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode2, _IoThrottle, 8);

View File

@ -16,7 +16,7 @@ namespace SicModules.PMs.Routines
{ {
RotationEnable, RotationEnable,
HeatEnable, HeatEnable,
VentPumpClose, V72,
ArSupply, ArSupply,
SetGroupA, SetGroupA,
@ -33,8 +33,7 @@ namespace SicModules.PMs.Routines
SetPCMode, SetPCMode,
SetM1to16, SetM1to16,
SetM17M18, SetM2toM45,
SetM2toM40,
SetPC, SetPC,
SetM291519to38, SetM291519to38,
SetGroupJ, SetGroupJ,
@ -54,7 +53,7 @@ namespace SicModules.PMs.Routines
SetGasIn2, SetGasIn2,
SetGroupJOpen, SetGroupJOpen,
SetM291519to26, SetM2toM26M43M44M45,
OpenFinal2, OpenFinal2,
SetMfcFinal2, SetMfcFinal2,
@ -76,18 +75,17 @@ namespace SicModules.PMs.Routines
SetV76, SetV76,
SetV75, SetV75,
SetV30,
SetV31, SetV31,
SetV32, SetV32,
SetV35V36, SetV35V36,
SetGroupV25, SetGroupV25,
SetV103,
SetV105,
SetV92V93V95, SetV93V95,
SetV94, SetV94,
SetV96, SetV96,
SetV68, SetV68,
SetM32M35M37, SetM35M37,
SetM36, SetM36,
SetM38, SetM38,
@ -112,6 +110,8 @@ namespace SicModules.PMs.Routines
private IoThrottleValve2 _IoThrottle; private IoThrottleValve2 _IoThrottle;
private IoInterLock _pmIoInterLock; private IoInterLock _pmIoInterLock;
List<int> _lstPcList = new List<int> { 1, 2, 3, 4, 5, 6, 7 };
private int _rotationCheckSpeed = 0; //设置旋转速度为0后检查是否转速低于此数值 private int _rotationCheckSpeed = 0; //设置旋转速度为0后检查是否转速低于此数值
private int _rotationCloseTimeout; //旋转停止超时 private int _rotationCloseTimeout; //旋转停止超时
@ -164,26 +164,24 @@ namespace SicModules.PMs.Routines
{ {
CheckRoutineTimeOut(); CheckRoutineTimeOut();
//关闭V76,打开V75 //1 关闭V76,打开V75
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,打开V25
SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.V72, IoGroupName.V72, 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 打开V30,打开V31,打开V32
SetIoValueByGroup((int)RoutineStep.SetV30, IoGroupName.V30, true, _IoValueOpenCloseTimeout);
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,打开V36
SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout);
//关闭B/C/E/F/H/K 阀门 //关闭B/C/E/F/H/K 阀门
@ -202,46 +200,43 @@ namespace SicModules.PMs.Routines
SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All); SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All);
SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList); SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList);
//M1-M16设定为default值(M2、M9、M15除外) //6 M1-M16设定为default值(M2、M9、M15除外)
SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0); SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0);
SetMfcToDefaultByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, 0);
//设置所有PC到默认值 //设置所有PC到默认值
SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); SetPcToDefault((int)RoutineStep.SetPC, _lstPcList);
//M2、M9、M15、M19-M40 MFC 3s ramp 到默认值 //M2、M9、M15、M19-M45 MFC 5s ramp 到默认值
SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM40, 3); SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM45, MfcGroupName.M2toM45, 5);
//关闭蝶阀 //7 关闭蝶阀
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.SetEPV2, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetEPV2, IoGroupName.EPV2, false, _IoValueOpenCloseTimeout);
//打开A 组阀 //8 打开A 组阀
SetIoValueByGroup((int)RoutineStep.SetGroupA, IoGroupName.A, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupA, IoGroupName.A, true, _IoValueOpenCloseTimeout);
//打开Final2阀 //打开Final2阀
SetIoValueByGroup((int)RoutineStep.OpenFinal2, IoGroupName.Final2, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.OpenFinal2, IoGroupName.Final2, true, _IoValueOpenCloseTimeout);
//Final2阀对应的MFC 3s Ramp到Default值 //Final2阀对应的MFC 3s Ramp到Default值
SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal2, MfcGroupName.Final2, 3); SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal2, MfcGroupName.Final2, 3);
SetIoValueByGroup((int)RoutineStep.SetV92V93V95, IoGroupName.V92V93V95, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV93V95, IoGroupName.V93V95, true, _IoValueOpenCloseTimeout);
TimeDelay((int)RoutineStep.TimeDelay2, 3); TimeDelay((int)RoutineStep.TimeDelay2, 3);
SetMfcToDefaultByGroup((int)RoutineStep.SetM32M35M37, MfcGroupName.M32M35M37, 3); //M35、M37依次设定3S ramp 到default值 等待3S。
SetMfcToDefaultByGroup((int)RoutineStep.SetM35M37, MfcGroupName.M35M37, 3);
//打开V68 //打开V68
SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout); //SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.V68, true, _IoValueOpenCloseTimeout);
//打开J Valves //打开J Valves
SetIoValueByGroup((int)RoutineStep.SetGroupJOpen, IoGroupName.J, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupJOpen, IoGroupName.J, true, _IoValueOpenCloseTimeout);
//设置M2,M9,M15,M19-M26 3s ramp 到default 值 //设置M2,M9,M15,M19-M26 M43-M45 3s ramp 到default 值
SetMfcToDefaultByGroup((int)RoutineStep.SetM291519to26, MfcGroupName.M2toM26, 3); SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM26M43M44M45, MfcGroupName.M2toM26M43M44M45, 3);
//开V94,V96需等到腔体压力大于950 //开V94,V96需等到腔体压力大于950
WaitPMPressureAndSetMfcSpecial((int)RoutineStep.WaitPmPressureUp1, 950, _waitPMPressureUpTimeout); WaitPMPressureAndSetMfcSpecial((int)RoutineStep.WaitPmPressureUp1, 950, _waitPMPressureUpTimeout);
@ -259,7 +254,7 @@ namespace SicModules.PMs.Routines
WaitPMPressureAndSetMfcSpecial((int)RoutineStep.WaitPmPressureUp, _ventBasePressure, _waitPMPressureUpTimeout); WaitPMPressureAndSetMfcSpecial((int)RoutineStep.WaitPmPressureUp, _ventBasePressure, _waitPMPressureUpTimeout);
//设置M28,M29,M31,M40 3s ramp 到default 值 //设置M28,M29,M31,M40 3s ramp 到default 值
SetMfcToDefaultByGroup((int)RoutineStep.SetMfc28to40Default, MfcGroupName.M28293140, 3); //SetMfcToDefaultByGroup((int)RoutineStep.SetMfc28to40Default, MfcGroupName.M27To3540To42, 3);
} }
catch (RoutineBreakException) catch (RoutineBreakException)
{ {

View File

@ -26,8 +26,7 @@ namespace SicModules.PMs.Routines
SetGroupK, SetGroupK,
SetM1to16, SetM1to16,
SetM2toM40, SetM2toM45,
SetM17M18,
SetPC, SetPC,
SetGroupI, //V87-96 SetGroupI, //V87-96
SetM19to38, SetM19to38,
@ -58,14 +57,13 @@ namespace SicModules.PMs.Routines
SetV76, SetV76,
SetV75, SetV75,
SetV30,
SetV31, SetV31,
SetV32, SetV32,
SetV35V36, SetV35V36,
SetGroupV25, SetGroupV25,
SetV65, SetV65,
CloseV68, CloseV68,
SetV103,
SetV105,
CloseM32M35M37, CloseM32M35M37,
CloseM36, CloseM36,
@ -93,6 +91,8 @@ namespace SicModules.PMs.Routines
private PMModule _pm1Module; private PMModule _pm1Module;
private IoThrottleValve2 _IoThrottle; private IoThrottleValve2 _IoThrottle;
private List<int> _lstPcList = new List<int> { 1, 2, 3, 4, 5, 6, 7 };
private int _rotationCloseTimeout = 20; //旋转停止超时 private int _rotationCloseTimeout = 20; //旋转停止超时
private int _IoValueOpenCloseTimeout = 10; //开关超时时间 private int _IoValueOpenCloseTimeout = 10; //开关超时时间
private int _heatTimeOut = 5; //Heat关闭等待Di反馈超时时间 private int _heatTimeOut = 5; //Heat关闭等待Di反馈超时时间
@ -121,25 +121,23 @@ namespace SicModules.PMs.Routines
{ {
//CheckRoutineTimeOut(); //CheckRoutineTimeOut();
//关闭V76,打开V75 //1 关闭V76,打开V75
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
SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.V72, false, _IoValueOpenCloseTimeout);
//打开V103,关闭V105
SetIoValueByGroup((int)RoutineStep.SetV103, IoGroupName.V103, true, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetV105, IoGroupName.V105, false, _IoValueOpenCloseTimeout);
//打开V31,打开V32 //4 打开V30,打开V31,打开V32
SetIoValueByGroup((int)RoutineStep.SetV30, IoGroupName.V30, true, _IoValueOpenCloseTimeout);
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,打开V36
SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout);
//关闭B/C/E/F/H/K 阀门 //关闭B/C/E/F/H/K 阀门
@ -164,17 +162,16 @@ namespace SicModules.PMs.Routines
SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All); SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All);
SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList); SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList);
//M1-M16设定为default值(M2、M9、M15除外) //6 M1-M16设定为default值(M2、M9、M15除外)
SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0); SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0);
//设置所有PC到默认值 //设置所有PC到默认值
SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); SetPcToDefault((int)RoutineStep.SetPC, _lstPcList);
//M2、M9、M15、M19-M40 MFC 5s ramp到0 //M2、M9、M15、M19-M45 MFC 5s ramp到0
SetMfcByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM40, 0, 5); SetMfcByGroup((int)RoutineStep.SetM2toM45, MfcGroupName.M2toM45, 0, 5);
SetMfcByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, 0, 5);
//关闭Final1阀 //7 关闭Final1阀
SetIoValueByGroup((int)RoutineStep.CloseFinal1, IoGroupName.Final1, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.CloseFinal1, IoGroupName.Final1, false, _IoValueOpenCloseTimeout);
//关闭Final2 //关闭Final2

View File

@ -3,11 +3,11 @@ using System.Diagnostics;
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.Event; using Aitex.Core.RT.Event;
using Aitex.Core.RT.Log;
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 static Aitex.Core.RT.Device.PmDevices.DicMode;
namespace SicModules.PMs.Routines namespace SicModules.PMs.Routines
{ {
@ -38,7 +38,6 @@ namespace SicModules.PMs.Routines
SetPCMode, SetPCMode,
SetM1to16, SetM1to16,
SetM17M18,
SetPC, SetPC,
SetGroupJ, SetGroupJ,
SetM2toM40, SetM2toM40,
@ -54,7 +53,7 @@ namespace SicModules.PMs.Routines
SetGasIn1, //V68 SetGasIn1, //V68
OpenFinal1, //V91-96 OpenFinal1, //V91-96
SetMfcFinal1, //M32-38 SetMfcFinal1, //M32-38
SetM291519to26, SetM2toM26,
SetTVCloseMode, SetTVCloseMode,
SetTvPositionToZero, SetTvPositionToZero,
@ -85,12 +84,11 @@ namespace SicModules.PMs.Routines
SetV25, SetV25,
SetV76, SetV76,
SetV75, SetV75,
SetV30,
SetV31, SetV31,
SetV32, SetV32,
SetV35V36, SetV35V36,
SetV65, SetV65,
SetV103,
SetV105,
SetEPV1, SetEPV1,
SetEPV2, SetEPV2,
@ -130,11 +128,11 @@ namespace SicModules.PMs.Routines
CheckEpv2Open, CheckEpv2Open,
CheckEpv1Open, CheckEpv1Open,
SetV92V93V95, SetV93V95,
SetV94, SetV94,
SetV96, SetV96,
SetV68, SetV68,
SetM32M35M37, SetM35M37,
SetM36, SetM36,
SetM38, SetM38,
WaitPmPressureUp1, WaitPmPressureUp1,
@ -167,6 +165,8 @@ namespace SicModules.PMs.Routines
private IoThrottleValve2 _IoThrottle; private IoThrottleValve2 _IoThrottle;
List<int> _lstPcList = new List<int> { 1, 2, 3, 4, 5, 6, 7 };
private int _rotationCheckSpeed = 0; //设置旋转速度为0后检查是否转速低于此数值 private int _rotationCheckSpeed = 0; //设置旋转速度为0后检查是否转速低于此数值
private int _rotationCloseTimeout; //旋转停止超时 private int _rotationCloseTimeout; //旋转停止超时
private int _IoValueOpenCloseTimeout = 10; //开关超时时间 private int _IoValueOpenCloseTimeout = 10; //开关超时时间
@ -206,24 +206,16 @@ namespace SicModules.PMs.Routines
_IoThrottle = DEVICE.GetDevice<IoThrottleValve2>($"{Module}.TV"); _IoThrottle = DEVICE.GetDevice<IoThrottleValve2>($"{Module}.TV");
_pmInterLock = DEVICE.GetDevice<IoInterLock>($"{Module}.PMInterLock"); _pmInterLock = DEVICE.GetDevice<IoInterLock>($"{Module}.PMInterLock");
//if (!_pmInterLock.SetPMProcessIdleRunning(true, out string reason)) if (!PmDevice.CheckSlitValveClose())
//{
// EV.PostAlarmLog(Module, $"can not run ProcessIdle, {reason}");
// return Result.FAIL;
//}
/*
* 2025-07-16
* ProcessIdle Routine需禁用MFC报警ProcessIdle状态时生效
* DO原本用来指示正在执行RoutinePM维持在ProcessIdle状态
* ProcessIdle状态时MFC报警监测
*
* PM状态机ProcessIdle状态进入和退出时分别设置DOProcessIdleRunning为true和falseRoutine时
* DOProcessIdleRunning有可能为10Routine执行完毕后再将这个DO设置为1ProcessIdle状态
*/
if (!_pmInterLock.SetPMProcessIdleRunning(false, out var reason))
{ {
LOG.Error($"Failed to set DOProcessIdle to false due to {reason}"); 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 (!PmDevice.CheckHeadHeaterEnable(true)) if (!PmDevice.CheckHeadHeaterEnable(true))
@ -265,7 +257,7 @@ namespace SicModules.PMs.Routines
_scrHeatEnable = SC.GetValue<bool>($"PM.{Module}.ProcessIdle.SCRHeaterEnable"); _scrHeatEnable = SC.GetValue<bool>($"PM.{Module}.ProcessIdle.SCRHeaterEnable");
_scrHeatMode = SC.GetValue<int>($"PM.{Module}.ProcessIdle.SCRHeaterMode"); _scrHeatMode = (int)SC.GetValue<int>($"PM.{Module}.ProcessIdle.SCRHeaterMode");
_scrL1Ratio = (float)SC.GetValue<double>($"PM.{Module}.ProcessIdle.SCRUpperRatio"); _scrL1Ratio = (float)SC.GetValue<double>($"PM.{Module}.ProcessIdle.SCRUpperRatio");
_scrL2Ratio = (float)SC.GetValue<double>($"PM.{Module}.ProcessIdle.SCRMiddleRatio"); _scrL2Ratio = (float)SC.GetValue<double>($"PM.{Module}.ProcessIdle.SCRMiddleRatio");
_scrL3Ratio = (float)SC.GetValue<double>($"PM.{Module}.ProcessIdle.SCRLowerRatio"); _scrL3Ratio = (float)SC.GetValue<double>($"PM.{Module}.ProcessIdle.SCRLowerRatio");
@ -288,22 +280,20 @@ namespace SicModules.PMs.Routines
{ {
CheckRoutineTimeOut(); CheckRoutineTimeOut();
//关闭V76,打开V75 //1 关闭V76,打开V75
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);
//打开V103,关闭V105
SetIoValueByGroup((int)RoutineStep.SetV103, IoGroupName.V103, true, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetV105, IoGroupName.V105, false, _IoValueOpenCloseTimeout);
//打开V31,打开V32 //3 打开V30,打开V31,打开V32
SetIoValueByGroup((int)RoutineStep.SetV30, IoGroupName.V30, true, _IoValueOpenCloseTimeout);
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 //4 打开V35,打开V36
SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout);
//关闭B/C/E/F/H/K 阀门 //关闭B/C/E/F/H/K 阀门
@ -325,59 +315,62 @@ namespace SicModules.PMs.Routines
SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All); SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All);
SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList); SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList);
//M1-M16设定为default值(M2、M9、M15除外) //5 M1-M16设定为default值(M2、M9、M15除外)
SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0); SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0);
SetMfcToDefaultByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, 0);
//设置所有PC到默认值 //设置所有PC到默认值
SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); SetPcToDefault((int)RoutineStep.SetPC, _lstPcList);
////M2、M9、M15、M19-M40 MFC 5s ramp 到0 //6 M2、M9、M15、M19-M40、M41-M45 5s ramp到default值
//SetMfcByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM40, 0, 5); SetMfcByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM45, 0, 5);
//打开EPV2 //7 打开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);
//打开Final2阀 //8 打开Final2阀
SetIoValueByGroup((int)RoutineStep.OpenFinal2, IoGroupName.Final2, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.OpenFinal2, IoGroupName.Final2, true, _IoValueOpenCloseTimeout);
//Final2阀对应的MFC 3s Ramp到Default值 //9 Final2阀对应的MFC 3s Ramp到Default值
SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal2, MfcGroupName.Final2, 3); SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal2, MfcGroupName.Final2, 3);
SetIoValueByGroup((int)RoutineStep.SetV92V93V95, IoGroupName.V92V93V95, true, _IoValueOpenCloseTimeout); //10 打开V93ChamberPurge.Final、V95ConfinementRing.Final等待3S
SetIoValueByGroup((int)RoutineStep.SetV93V95, IoGroupName.V93V95, true, _IoValueOpenCloseTimeout);
TimeDelay((int)RoutineStep.TimeDelay2, 3); TimeDelay((int)RoutineStep.TimeDelay2, 3);
SetMfcToDefaultByGroup((int)RoutineStep.SetM32M35M37, MfcGroupName.M32M35M37, 3); //11 M35、M37依次设定3S ramp 到default值 等待3S
SetMfcToDefaultByGroup((int)RoutineStep.SetM35M37, MfcGroupName.M35M37, 3);
//打开V68 //打开V68
SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.V68, true, _IoValueOpenCloseTimeout);
//12 打开V94RotationUpPurge.Final、M36设定5S ramp 到default值等待3S
SetIoValueByGroup((int)RoutineStep.SetV94, IoGroupName.V94, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV94, IoGroupName.V94, true, _IoValueOpenCloseTimeout);
SetMfcToDefaultByGroup((int)RoutineStep.SetM36, MfcGroupName.M36, 5); SetMfcToDefaultByGroup((int)RoutineStep.SetM36, MfcGroupName.M36, 5);
TimeDelay((int)RoutineStep.TimeDelay3, 3); TimeDelay((int)RoutineStep.TimeDelay3, 3);
//打开V96HeaterWF.Final M38依次设定5S ramp 到default值
SetIoValueByGroup((int)RoutineStep.SetV96, IoGroupName.V96, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV96, IoGroupName.V96, true, _IoValueOpenCloseTimeout);
SetMfcToDefaultByGroup((int)RoutineStep.SetM38, MfcGroupName.M38, 5); SetMfcToDefaultByGroup((int)RoutineStep.SetM38, MfcGroupName.M38, 5);
TimeDelay((int)RoutineStep.TimeDelay4, 3); TimeDelay((int)RoutineStep.TimeDelay4, 3);
//打开J Valves //13 打开J Valves
SetIoValueByGroup((int)RoutineStep.SetGroupJOpen, IoGroupName.J, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupJOpen, IoGroupName.J, true, _IoValueOpenCloseTimeout);
//设置M2,M9,M15,M19-M26 3s ramp 到default 值 //设置M2,M9,M15,M19-M26 M43、M44、M45 3s ramp 到default 值
SetMfcToDefaultByGroup((int)RoutineStep.SetM291519to26, MfcGroupName.M2toM26, 3); SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM26, MfcGroupName.M2toM26M43M44M45, 3);
//设置蝶阀Enable //设置蝶阀Enable
SetThrottleEnableAndWait((int)RoutineStep.SetTVEnable, _IoThrottle, 5); SetThrottleEnableAndWait((int)RoutineStep.SetTVEnable, _IoThrottle, 5);
//设置蝶阀为压力模式 //14 设置蝶阀为压力模式
SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode, _IoThrottle, 5); SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode, _IoThrottle, 5);
//伺服压力设定值到1050mbar //伺服压力设定值到1050mbar
SetThrottleToTargetAndNoWait((int)RoutineStep.SetTV, _IoThrottle, 1050); SetThrottleToTargetAndNoWait((int)RoutineStep.SetTV, _IoThrottle, 1050);
//打开V72 //15 打开V72
SetIoValueByGroup((int)RoutineStep.SetV72, IoGroupName.VentPump, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV72, IoGroupName.V72, true, _IoValueOpenCloseTimeout);
TimeDelay((int)RoutineStep.TimeDelay5, 1); TimeDelay((int)RoutineStep.TimeDelay5, 1);
//关闭V25 //关闭V25
@ -389,7 +382,7 @@ namespace SicModules.PMs.Routines
WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.SetTVto300, _IoThrottle, _throttleFinalPressure, _pmPressureMaxDiff, _throttleTimeout); WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.SetTVto300, _IoThrottle, _throttleFinalPressure, _pmPressureMaxDiff, _throttleTimeout);
//TimeDelay((int)RoutineStep.TimeDelay8, 3); //TimeDelay((int)RoutineStep.TimeDelay8, 3);
//转速Enable,加热Enable, 电流功率可配置 //16 转速Enable,加热Enable, 电流功率可配置
EnableRotation((int)RoutineStep.EnableRotation, 5); EnableRotation((int)RoutineStep.EnableRotation, 5);
SetRotationValveAndNoWait((int)RoutineStep.SetRotation1, _rotationSpeed); SetRotationValveAndNoWait((int)RoutineStep.SetRotation1, _rotationSpeed);
@ -426,7 +419,7 @@ namespace SicModules.PMs.Routines
SetSCREnable((int)RoutineStep.CloseTC2, false, 5); SetSCREnable((int)RoutineStep.CloseTC2, false, 5);
} }
WaitRotationValve((int)RoutineStep.WaitRotation1, _rotationSpeed, true, _rotationSpeed / 2); WaitRotationValve((int)RoutineStep.WaitRotation1, _rotationSpeed, true, _rotationSpeed * 3);
} }
catch (RoutineBreakException) catch (RoutineBreakException)
@ -438,13 +431,7 @@ namespace SicModules.PMs.Routines
return Result.FAIL; 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"); Notify($"Finished ! Elapsed time: {(int)(_swTimer.ElapsedMilliseconds / 1000)} s");
_swTimer.Stop(); _swTimer.Stop();

View File

@ -30,10 +30,8 @@ namespace SicModules.PMs.Routines
SetGroupJ, SetGroupJ,
SetM1to16, SetM1to16,
SetM17M18,
SetPC, SetPC,
SetGroupI, //V87-96 SetGroupI, //V87-96
SetM18,
SetM2to40, SetM2to40,
SetM2to40_1, SetM2to40_1,
MfcAll, MfcAll,
@ -67,6 +65,7 @@ namespace SicModules.PMs.Routines
SetTvOpen, SetTvOpen,
SetTvModeToPress, SetTvModeToPress,
SetTVto1050, SetTVto1050,
SetGroupA,
OpenGasIn1, OpenGasIn1,
SetV65, SetV65,
CloseGasIn1, CloseGasIn1,
@ -77,12 +76,11 @@ namespace SicModules.PMs.Routines
SetV76, SetV76,
SetV75, SetV75,
SetGroupV25, SetGroupV25,
SetV30,
SetV31, SetV31,
SetV32, SetV32,
SetV35V36, SetV35V36,
SetV87V97, SetV97V87,
SetV103,
SetV105,
SetTVPositionMode, SetTVPositionMode,
SetTVPositionMax, SetTVPositionMax,
@ -110,6 +108,8 @@ namespace SicModules.PMs.Routines
private IoThrottleValve2 _IoThrottle; private IoThrottleValve2 _IoThrottle;
private IoInterLock _pmIoInterLock; private IoInterLock _pmIoInterLock;
List<int> _lstPcList = new List<int> { 1, 2, 3, 4, 5, 6, 7 };
private int _rotationCheckSpeed = 0; //设置旋转速度为0后检查是否转速低于此数值 private int _rotationCheckSpeed = 0; //设置旋转速度为0后检查是否转速低于此数值
private int _rotationCloseTimeout; //旋转停止超时 private int _rotationCloseTimeout; //旋转停止超时
private int _IoValueOpenCloseTimeout = 10; //开关超时时间 private int _IoValueOpenCloseTimeout = 10; //开关超时时间
@ -118,9 +118,11 @@ namespace SicModules.PMs.Routines
private double _pmPressureMaxDiff; //蝶阀与目标压力的差值范围(认为调整到位了) private double _pmPressureMaxDiff; //蝶阀与目标压力的差值范围(认为调整到位了)
private int _throttleTimeout; //蝶阀调整到指定压力的超时时间 private int _throttleTimeout; //蝶阀调整到指定压力的超时时间
private int _pumpTimeout;
private double _vacPumpBasePressure; private double _vacPumpBasePressure;
private int _routineTimeOut; private int _routineTimeOut;
private int _pumpTimeOut; //private int _EPV2OpenDelayTime = 9;
private Stopwatch _swTimer = new Stopwatch(); private Stopwatch _swTimer = new Stopwatch();
public PMVacIdleRoutine(ModuleName module, PMModule pm1) : base(module, pm1) public PMVacIdleRoutine(ModuleName module, PMModule pm1) : base(module, pm1)
@ -143,7 +145,8 @@ namespace SicModules.PMs.Routines
_vacPumpBasePressure = SC.GetValue<double>($"PM.{Module}.Pump.PumpBasePressure"); _vacPumpBasePressure = SC.GetValue<double>($"PM.{Module}.Pump.PumpBasePressure");
_routineTimeOut = SC.GetValue<int>($"PM.{Module}.Pump.RoutineTimeOut"); _routineTimeOut = SC.GetValue<int>($"PM.{Module}.Pump.RoutineTimeOut");
_pumpTimeOut = SC.GetValue<int>($"PM.{Module}.Pump.PumpTimeOut");
_pumpTimeout = SC.GetValue<int>($"PM.{Module}.Pump.PumpTimeOut");
if (!_pmIoInterLock.SetPMVacIdleRountingRunning(true, out var reason)) if (!_pmIoInterLock.SetPMVacIdleRountingRunning(true, out var reason))
{ {
@ -162,26 +165,24 @@ namespace SicModules.PMs.Routines
{ {
CheckRoutineTimeOut(); CheckRoutineTimeOut();
//关闭V76,打开V75 //1 关闭V76,打开V75
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,打开V25
SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.V72, 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 打开V31,打开V32
SetIoValueByGroup((int)RoutineStep.SetV30, IoGroupName.V30, true, _IoValueOpenCloseTimeout);
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,打开V36
SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout);
//关闭B/C/E/F/H/K 阀门 //关闭B/C/E/F/H/K 阀门
@ -200,18 +201,17 @@ namespace SicModules.PMs.Routines
SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All); SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All);
SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList); SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList);
//M1-M16设定为default值(M2、M9、M15除外) //6 M1-M16设定为default值(M2、M9、M15除外)
SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0); SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0);
SetMfcToDefaultByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, 0);
//M2、M9、M15、M19-M40 MFC 3s ramp 到 default值 //7 M2、M9、M15、M19-M40 、M41-M45 MFC 3s ramp 到 default值
SetMfcToDefaultByGroup((int)RoutineStep.SetM2to40_1, MfcGroupName.M2toM40, 3); SetMfcToDefaultByGroup((int)RoutineStep.SetM2to40_1, MfcGroupName.M2toM45, 3);
//设置所有PC到默认值 //设置所有PC到默认值
SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); SetPcToDefault((int)RoutineStep.SetPC, _lstPcList);
//打开V68 //8 打开A 组阀
SetIoValueByGroup((int)RoutineStep.OpenGasIn1, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupA, IoGroupName.A, true, _IoValueOpenCloseTimeout);
//打开J阀门 //打开J阀门
SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout);
@ -219,7 +219,7 @@ namespace SicModules.PMs.Routines
////打开V65 ////打开V65
//SetIoValueByGroup((int)RoutineStep.SetV65, IoGroupName.V65, true, _IoValueOpenCloseTimeout); //SetIoValueByGroup((int)RoutineStep.SetV65, IoGroupName.V65, true, _IoValueOpenCloseTimeout);
//打开EPV2 //9 打开EPV2
SetIoValueByGroup((int)RoutineStep.SetEPV2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetEPV2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout);
TimeDelay((int)RoutineStep.TimeDelay5, 3); TimeDelay((int)RoutineStep.TimeDelay5, 3);
@ -229,17 +229,16 @@ namespace SicModules.PMs.Routines
//设置蝶阀为压力模式 //设置蝶阀为压力模式
SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode, _IoThrottle, 5); SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode, _IoThrottle, 5);
//伺服压力设定值到0mbar //伺服到0mbar
SetThrottleToTargetAndNoWait((int)RoutineStep.SetTv1, _IoThrottle, _vacPumpBasePressure); SetThrottleToTargetAndNoWait((int)RoutineStep.SetTv1, _IoThrottle, _vacPumpBasePressure);
//M2、M9、M15、M19-M40 MFC 3s ramp到0 //10 M2、M9、M15、M19-M45 MFC 3s ramp到0
SetMfcByGroup((int)RoutineStep.SetM2to40, MfcGroupName.M2toM40, 0, 3); SetMfcByGroup((int)RoutineStep.SetM2to40, MfcGroupName.M2toM45, 0, 3);
SetMfcByGroup((int)RoutineStep.SetM18, MfcGroupName.M18, 0, 3);
//关闭V87 V97 SetIoValueByGroup((int)RoutineStep.SetV97V87, IoGroupName.V97V87, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetV87V97, IoGroupName.V87V97, false, _IoValueOpenCloseTimeout);
//等待腔体压力Pump到设定值 //等待腔体压力Pump到设定值
WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _vacPumpBasePressure, _pumpTimeOut); WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _vacPumpBasePressure, _pumpTimeout);
//蝶阀设置为位置模式,开度设置为最大 //蝶阀设置为位置模式,开度设置为最大
SetThrottleToPositionMode((int)RoutineStep.SetTVPositionMode, _IoThrottle, _throttleTimeout); SetThrottleToPositionMode((int)RoutineStep.SetTVPositionMode, _IoThrottle, _throttleTimeout);

View File

@ -33,7 +33,6 @@ namespace SicModules.PMs.Routines
SetPCMode, SetPCMode,
SetM1to16, SetM1to16,
SetM17M18,
SetM2toM40, SetM2toM40,
SetPC, SetPC,
SetM291519to38, SetM291519to38,
@ -76,18 +75,17 @@ namespace SicModules.PMs.Routines
SetV76, SetV76,
SetV75, SetV75,
SetV30,
SetV31, SetV31,
SetV32, SetV32,
SetV35V36, SetV35V36,
SetV103,
SetV105,
SetGroupV25, SetGroupV25,
SetV92V93V95, SetV93V95,
SetV94, SetV94,
SetV96, SetV96,
SetV68, SetV68,
SetM32M35M37, SetM35M37,
SetM36, SetM36,
SetM38, SetM38,
@ -112,6 +110,7 @@ namespace SicModules.PMs.Routines
private IoThrottleValve2 _IoThrottle; private IoThrottleValve2 _IoThrottle;
private IoInterLock _pmIoInterLock; private IoInterLock _pmIoInterLock;
List<int> _lstPcList = new List<int> { 1, 2, 3, 4, 5, 6, 7 };
private int _rotationCheckSpeed = 0; //设置旋转速度为0后检查是否转速低于此数值 private int _rotationCheckSpeed = 0; //设置旋转速度为0后检查是否转速低于此数值
private int _rotationCloseTimeout; //旋转停止超时 private int _rotationCloseTimeout; //旋转停止超时
@ -173,13 +172,11 @@ namespace SicModules.PMs.Routines
SetRotationValve((int)RoutineStep.RotationEnable, _rotationCheckSpeed, false, _rotationCloseTimeout); SetRotationValve((int)RoutineStep.RotationEnable, _rotationCheckSpeed, false, _rotationCloseTimeout);
//关闭V72,打开V25 //关闭V72,打开V25
SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.V72, 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 //打开V31,打开V32
SetIoValueByGroup((int)RoutineStep.SetV30, IoGroupName.V30, true, _IoValueOpenCloseTimeout);
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);
@ -204,13 +201,12 @@ namespace SicModules.PMs.Routines
//M1-M16设定为default值(M2、M9、M15除外) //M1-M16设定为default值(M2、M9、M15除外)
SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0); SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0);
SetMfcToDefaultByGroup((int)RoutineStep.SetM17M18, MfcGroupName.M17M18, 0);
//设置所有PC到默认值 //设置所有PC到默认值
SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); SetPcToDefault((int)RoutineStep.SetPC, _lstPcList);
//M2、M9、M15、M19-M40 MFC 3s ramp 到默认值 //M2、M9、M15、M19-M40 MFC 3s ramp 到默认值
SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM40, 3); SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM45, 3);
//关闭蝶阀 //关闭蝶阀
SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode, _IoThrottle, 8); SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode, _IoThrottle, 8);
@ -223,28 +219,25 @@ namespace SicModules.PMs.Routines
//打开A 组阀 //打开A 组阀
SetIoValueByGroup((int)RoutineStep.SetGroupA, IoGroupName.A, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupA, IoGroupName.A, true, _IoValueOpenCloseTimeout);
//Final2阀对应的MFC 3s Ramp到Default值
SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal2, MfcGroupName.Final2, 3);
//打开Final2阀 //打开Final2阀
SetIoValueByGroup((int)RoutineStep.OpenFinal2, IoGroupName.Final2, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.OpenFinal2, IoGroupName.Final2, true, _IoValueOpenCloseTimeout);
//Final2阀对应的MFC 3s Ramp到Default值 //Final2阀对应的MFC 3s Ramp到Default值
SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal2, MfcGroupName.Final2, 3); SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal2, MfcGroupName.Final2, 3);
SetIoValueByGroup((int)RoutineStep.SetV92V93V95, IoGroupName.V92V93V95, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetV93V95, IoGroupName.V93V95, true, _IoValueOpenCloseTimeout);
TimeDelay((int)RoutineStep.TimeDelay2, 3); TimeDelay((int)RoutineStep.TimeDelay2, 3);
SetMfcToDefaultByGroup((int)RoutineStep.SetM32M35M37, MfcGroupName.M32M35M37, 3); SetMfcToDefaultByGroup((int)RoutineStep.SetM35M37, MfcGroupName.M35M37, 3);
//打开V68 //打开V68
SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout); //SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.V68, true, _IoValueOpenCloseTimeout);
//打开J Valves //打开J Valves
SetIoValueByGroup((int)RoutineStep.SetGroupJOpen, IoGroupName.J, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupJOpen, IoGroupName.J, true, _IoValueOpenCloseTimeout);
//设置M2,M9,M15,M19-M26 3s ramp 到default 值 //设置M2,M9,M15,M19-M26 3s ramp 到default 值
SetMfcToDefaultByGroup((int)RoutineStep.SetM291519to26, MfcGroupName.M2toM26, 3); SetMfcToDefaultByGroup((int)RoutineStep.SetM291519to26, MfcGroupName.M2toM26M43M44M45, 3);
//开V94,V96需等到腔体压力大于950 //开V94,V96需等到腔体压力大于950
WaitPMPressureAndSetMfcSpecial((int)RoutineStep.WaitPmPressureUp1, 950, _waitPMPressureUpTimeout); WaitPMPressureAndSetMfcSpecial((int)RoutineStep.WaitPmPressureUp1, 950, _waitPMPressureUpTimeout);
@ -262,7 +255,7 @@ namespace SicModules.PMs.Routines
WaitPMPressureAndSetMfcSpecial((int)RoutineStep.WaitPmPressureUp, _ventBasePressure, _waitPMPressureUpTimeout); //等待反应腔压力大于1000 WaitPMPressureAndSetMfcSpecial((int)RoutineStep.WaitPmPressureUp, _ventBasePressure, _waitPMPressureUpTimeout); //等待反应腔压力大于1000
//设置M28,M29,M31,M40 3s ramp 到default 值 //设置M28,M29,M31,M40 3s ramp 到default 值
SetMfcToDefaultByGroup((int)RoutineStep.SetMfc28to40Default, MfcGroupName.M28293140, 3); //SetMfcToDefaultByGroup((int)RoutineStep.SetMfc28to40Default, MfcGroupName.M27To3540To42, 3);
_pmIoInterLock.SetPMVentRoutineRunning(false, out _); _pmIoInterLock.SetPMVentRoutineRunning(false, out _);

View File

@ -134,7 +134,7 @@ namespace SicModules.PMs.Routines.Recipe
// EV.PostAlarmLog(Module, $"can not run process,K valves is not closed!"); // EV.PostAlarmLog(Module, $"can not run process,K valves is not closed!");
// return Result.FAIL; // return Result.FAIL;
//} //}
//if (!PMDevice.CheckIOValueByGroup(IoGroupName.VentPump, true)) //if (!PMDevice.CheckIOValueByGroup(IoGroupName.V72, true))
//{ //{
// EV.PostAlarmLog(Module, $"can not run process,V72 is not open!"); // EV.PostAlarmLog(Module, $"can not run process,V72 is not open!");
// return Result.FAIL; // return Result.FAIL;

View File

@ -40,8 +40,8 @@
<Block type="do" index="0" size="256" value_type="" variable="GVL_IO.PM1_DO_G"></Block> <Block type="do" index="0" size="256" value_type="" variable="GVL_IO.PM1_DO_G"></Block>
<Block type="ai" index="0" size="181" value_type="float" variable="GVL_IO.PM1_AI_G"></Block> <Block type="ai" index="0" size="181" value_type="float" variable="GVL_IO.PM1_AI_G"></Block>
<Block type="ao" index="0" size="181" value_type="float" variable="GVL_IO.PM1_AO_G"></Block> <Block type="ao" index="0" size="181" value_type="float" variable="GVL_IO.PM1_AO_G"></Block>
<Block type="ai" index="1" size="100" value_type="float" variable="GVL_IO.PM1_AI_G_2"></Block> <Block type="ai" index="1" size="140" value_type="float" variable="GVL_IO.PM1_AI_G_2"></Block>
<Block type="ao" index="1" size="100" value_type="float" variable="GVL_IO.PM1_AO_G_2"></Block> <Block type="ao" index="1" size="140" value_type="float" variable="GVL_IO.PM1_AO_G_2"></Block>
</Blocks> </Blocks>
</IoProvider> </IoProvider>
@ -53,8 +53,8 @@
<Block type="do" index="0" size="256" value_type="" variable="GVL_IO.PM2_DO_G"></Block> <Block type="do" index="0" size="256" value_type="" variable="GVL_IO.PM2_DO_G"></Block>
<Block type="ai" index="0" size="181" value_type="float" variable="GVL_IO.PM2_AI_G"></Block> <Block type="ai" index="0" size="181" value_type="float" variable="GVL_IO.PM2_AI_G"></Block>
<Block type="ao" index="0" size="181" value_type="float" variable="GVL_IO.PM2_AO_G"></Block> <Block type="ao" index="0" size="181" value_type="float" variable="GVL_IO.PM2_AO_G"></Block>
<Block type="ai" index="1" size="100" value_type="float" variable="GVL_IO.PM2_AI_G_2"></Block> <Block type="ai" index="1" size="140" value_type="float" variable="GVL_IO.PM2_AI_G_2"></Block>
<Block type="ao" index="1" size="100" value_type="float" variable="GVL_IO.PM2_AO_G_2"></Block> <Block type="ao" index="1" size="140" value_type="float" variable="GVL_IO.PM2_AO_G_2"></Block>
</Blocks> </Blocks>
</IoProvider> </IoProvider>
@ -83,8 +83,8 @@
<Block type="do" index="0" size="256" value_type="" variable="DB100.DBB152"></Block> <Block type="do" index="0" size="256" value_type="" variable="DB100.DBB152"></Block>
<Block type="ai" index="0" size="181" value_type="float" variable="DB100.DBD184"></Block> <Block type="ai" index="0" size="181" value_type="float" variable="DB100.DBD184"></Block>
<Block type="ao" index="0" size="181" value_type="float" variable="DB100.DBD908"></Block> <Block type="ao" index="0" size="181" value_type="float" variable="DB100.DBD908"></Block>
<Block type="ai" index="1" size="100" value_type="float" variable="DB100.DBD1632"></Block> <Block type="ai" index="1" size="140" value_type="float" variable="DB100.DBD1632"></Block>
<Block type="ao" index="1" size="100" value_type="float" variable="DB100.DBD2032"></Block> <Block type="ao" index="1" size="140" value_type="float" variable="DB100.DBD2032"></Block>
</Blocks> </Blocks>
</IoProvider> </IoProvider>
@ -95,8 +95,8 @@
<Block type="do" index="0" size="256" value_type="" variable="DB100.DBB152"></Block> <Block type="do" index="0" size="256" value_type="" variable="DB100.DBB152"></Block>
<Block type="ai" index="0" size="181" value_type="float" variable="DB100.DBD184"></Block> <Block type="ai" index="0" size="181" value_type="float" variable="DB100.DBD184"></Block>
<Block type="ao" index="0" size="181" value_type="float" variable="DB100.DBD908"></Block> <Block type="ao" index="0" size="181" value_type="float" variable="DB100.DBD908"></Block>
<Block type="ai" index="1" size="100" value_type="float" variable="DB100.DBD1632"></Block> <Block type="ai" index="1" size="140" value_type="float" variable="DB100.DBD1632"></Block>
<Block type="ao" index="1" size="100" value_type="float" variable="DB100.DBD2032"></Block> <Block type="ao" index="1" size="140" value_type="float" variable="DB100.DBD2032"></Block>
</Blocks> </Blocks>
</IoProvider> </IoProvider>

View File

@ -686,6 +686,17 @@
<AI_ITEM Index="275" Name="AI_PSU3SimVoltage" BufferOffset="94" Addr="94" Description="" /> <AI_ITEM Index="275" Name="AI_PSU3SimVoltage" BufferOffset="94" Addr="94" Description="" />
<AI_ITEM Index="276" Name="AI_PSU3SimArms" BufferOffset="95" Addr="95" Description="" /> <AI_ITEM Index="276" Name="AI_PSU3SimArms" BufferOffset="95" Addr="95" Description="" />
<AI_ITEM Index="277" Name="AI_PSU3Alarm" BufferOffset="96" Addr="96" Description="" /> <AI_ITEM Index="277" Name="AI_PSU3Alarm" BufferOffset="96" Addr="96" Description="" />
<AO_ITEM Index="281" Name="AO_M41" BufferOffset="97" Addr="97" Description="" />
<AO_ITEM Index="282" Name="AO_M42" BufferOffset="98" Addr="98" Description="" />
<AO_ITEM Index="283" Name="AO_M43" BufferOffset="99" Addr="99" Description="" />
<AO_ITEM Index="284" Name="AO_M44" BufferOffset="100" Addr="100" Description="" />
<AO_ITEM Index="285" Name="AO_M45" BufferOffset="101" Addr="101" Description="" />
<AO_ITEM Index="301" Name="AO_M41CtrlMode" BufferOffset="102" Addr="102" Description="" />
<AO_ITEM Index="302" Name="AO_M42CtrlMode" BufferOffset="103" Addr="103" Description="" />
<AO_ITEM Index="303" Name="AO_M43CtrlMode" BufferOffset="104" Addr="104" Description="" />
<AO_ITEM Index="304" Name="AO_M44CtrlMode" BufferOffset="105" Addr="105" Description="" />
<AO_ITEM Index="305" Name="AO_M45CtrlMode" BufferOffset="106" Addr="106" Description="" />
</Block> </Block>
</Ana_In> </Ana_In>
<Ana_Out> <Ana_Out>
@ -915,6 +926,17 @@
<AO_ITEM Index="272" Name="AO_PSU3Reset" BufferOffset="91" Addr="91" Description="" /> <AO_ITEM Index="272" Name="AO_PSU3Reset" BufferOffset="91" Addr="91" Description="" />
<AO_ITEM Index="273" Name="AO_PSU3ArmLimited" BufferOffset="92" Addr="92" Description="" /> <AO_ITEM Index="273" Name="AO_PSU3ArmLimited" BufferOffset="92" Addr="92" Description="" />
<AO_ITEM Index="280" Name="AO_PSU3Constant" BufferOffset="99" Addr="99" Description="" /> <AO_ITEM Index="280" Name="AO_PSU3Constant" BufferOffset="99" Addr="99" Description="" />
<AO_ITEM Index="281" Name="AO_M41" BufferOffset="100" Addr="100" Description="" />
<AO_ITEM Index="282" Name="AO_M42" BufferOffset="101" Addr="101" Description="" />
<AO_ITEM Index="283" Name="AO_M43" BufferOffset="102" Addr="102" Description="" />
<AO_ITEM Index="284" Name="AO_M44" BufferOffset="103" Addr="103" Description="" />
<AO_ITEM Index="285" Name="AO_M45" BufferOffset="104" Addr="104" Description="" />
<AO_ITEM Index="301" Name="AO_M41CtrlMode" BufferOffset="105" Addr="105" Description="" />
<AO_ITEM Index="302" Name="AO_M42CtrlMode" BufferOffset="106" Addr="106" Description="" />
<AO_ITEM Index="303" Name="AO_M43CtrlMode" BufferOffset="107" Addr="107" Description="" />
<AO_ITEM Index="304" Name="AO_M44CtrlMode" BufferOffset="108" Addr="108" Description="" />
<AO_ITEM Index="305" Name="AO_M45CtrlMode" BufferOffset="109" Addr="109" Description="" />
</Block> </Block>
</Ana_Out> </Ana_Out>
</IO_DEFINE> </IO_DEFINE>

View File

@ -433,6 +433,13 @@ namespace SicSimulator.Instances
new Tuple<string, string>("AI_M37","AO_M37"), new Tuple<string, string>("AI_M37","AO_M37"),
new Tuple<string, string>("AI_M38","AO_M38"), new Tuple<string, string>("AI_M38","AO_M38"),
new Tuple<string, string>("AI_M40","AO_M40"),
new Tuple<string, string>("AI_M41","AO_M41"),
new Tuple<string, string>("AI_M42","AO_M42"),
new Tuple<string, string>("AI_M43","AO_M43"),
new Tuple<string, string>("AI_M44","AO_M44"),
new Tuple<string, string>("AI_M45","AO_M45"),
new Tuple<string, string>("AI_PressCtrl1","AO_PressCtrl1"), new Tuple<string, string>("AI_PressCtrl1","AO_PressCtrl1"),
new Tuple<string, string>("AI_PressCtrl2","AO_PressCtrl2"), new Tuple<string, string>("AI_PressCtrl2","AO_PressCtrl2"),
new Tuple<string, string>("AI_PressCtrl3","AO_PressCtrl3"), new Tuple<string, string>("AI_PressCtrl3","AO_PressCtrl3"),