添加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="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="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>
<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]" />

View File

@ -692,6 +692,17 @@
<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="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>
</Ana_In>
<Ana_Out>
@ -926,6 +937,17 @@
<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="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>
</Ana_Out>
</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!");
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!");
return Result.FAIL;

View File

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

View File

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

View File

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

View File

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

View File

@ -7,7 +7,6 @@ using Aitex.Core.RT.Event;
using Aitex.Core.RT.Routine;
using Aitex.Core.RT.SCCore;
using MECF.Framework.Common.Equipment;
using MECF.Framework.Common.Fsm;
using SicModules.PMs.Routines.Base;
namespace SicModules.PMs.Routines
@ -19,7 +18,6 @@ namespace SicModules.PMs.Routines
SetGroupK,
SetM7Or10,
SetM8Or11,
SetM21,
OpenV73,
StartLoop,
OpenGroup1,
@ -156,12 +154,11 @@ namespace SicModules.PMs.Routines
{
CheckRoutineTimeOut();
//关闭K阀组
//1 关闭K阀组
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.SetM21, 21, 80);
SetMfcValueByPercent((int)RoutineStep.SetM8Or11, mfc8Or11, 80);
//打开V73

View File

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

View File

@ -279,15 +279,6 @@ namespace SicModules.PMs.Routines
{
pc7FeedBack.Add(PmDevice.Pressure7.FeedBack);
}
else if (ioName == "Pressure8")
{
pc8FeedBack.Add(PmDevice.Pressure8.FeedBack);
}
else if (ioName == "Pressure9")
{
pc9FeedBack.Add(PmDevice.Pressure9.FeedBack);
}
return ElapsedTime>=10;
},
timeout * 1000);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -3,11 +3,11 @@ using System.Diagnostics;
using Aitex.Core.RT.Device;
using Aitex.Core.RT.Device.Devices;
using Aitex.Core.RT.Event;
using Aitex.Core.RT.Log;
using Aitex.Core.RT.Routine;
using Aitex.Core.RT.SCCore;
using MECF.Framework.Common.Equipment;
using SicModules.PMs.Routines.Base;
using static Aitex.Core.RT.Device.PmDevices.DicMode;
namespace SicModules.PMs.Routines
{
@ -38,7 +38,6 @@ namespace SicModules.PMs.Routines
SetPCMode,
SetM1to16,
SetM17M18,
SetPC,
SetGroupJ,
SetM2toM40,
@ -54,7 +53,7 @@ namespace SicModules.PMs.Routines
SetGasIn1, //V68
OpenFinal1, //V91-96
SetMfcFinal1, //M32-38
SetM291519to26,
SetM2toM26,
SetTVCloseMode,
SetTvPositionToZero,
@ -85,12 +84,11 @@ namespace SicModules.PMs.Routines
SetV25,
SetV76,
SetV75,
SetV30,
SetV31,
SetV32,
SetV35V36,
SetV65,
SetV103,
SetV105,
SetEPV1,
SetEPV2,
@ -130,11 +128,11 @@ namespace SicModules.PMs.Routines
CheckEpv2Open,
CheckEpv1Open,
SetV92V93V95,
SetV93V95,
SetV94,
SetV96,
SetV68,
SetM32M35M37,
SetM35M37,
SetM36,
SetM38,
WaitPmPressureUp1,
@ -167,6 +165,8 @@ namespace SicModules.PMs.Routines
private IoThrottleValve2 _IoThrottle;
List<int> _lstPcList = new List<int> { 1, 2, 3, 4, 5, 6, 7 };
private int _rotationCheckSpeed = 0; //设置旋转速度为0后检查是否转速低于此数值
private int _rotationCloseTimeout; //旋转停止超时
private int _IoValueOpenCloseTimeout = 10; //开关超时时间
@ -206,24 +206,16 @@ namespace SicModules.PMs.Routines
_IoThrottle = DEVICE.GetDevice<IoThrottleValve2>($"{Module}.TV");
_pmInterLock = DEVICE.GetDevice<IoInterLock>($"{Module}.PMInterLock");
//if (!_pmInterLock.SetPMProcessIdleRunning(true, out string reason))
//{
// 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))
if (!PmDevice.CheckSlitValveClose())
{
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))
@ -265,7 +257,7 @@ namespace SicModules.PMs.Routines
_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");
_scrL2Ratio = (float)SC.GetValue<double>($"PM.{Module}.ProcessIdle.SCRMiddleRatio");
_scrL3Ratio = (float)SC.GetValue<double>($"PM.{Module}.ProcessIdle.SCRLowerRatio");
@ -288,22 +280,20 @@ namespace SicModules.PMs.Routines
{
CheckRoutineTimeOut();
//关闭V76,打开V75
//1 关闭V76,打开V75
SetIoValueByGroup((int)RoutineStep.SetV76, IoGroupName.V76, false, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetV75, IoGroupName.V75, true, _IoValueOpenCloseTimeout);
//旋转停止
//SetHeatEnable((int)RoutineStep.HeatEnable, false, _heatTimeOut);
//2 旋转停止
SetHeatEnable((int)RoutineStep.HeatEnable, false, _heatTimeOut);
SetRotationValve((int)RoutineStep.RotationEnable, _rotationCheckSpeed, false, _rotationCloseTimeout);
//打开V103,关闭V105
SetIoValueByGroup((int)RoutineStep.SetV103, IoGroupName.V103, true, _IoValueOpenCloseTimeout);
SetIoValueByGroup((int)RoutineStep.SetV105, IoGroupName.V105, false, _IoValueOpenCloseTimeout);
//打开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.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout);
//打开V35,打开V36
//4 打开V35,打开V36
SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout);
//关闭B/C/E/F/H/K 阀门
@ -325,59 +315,62 @@ namespace SicModules.PMs.Routines
SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All);
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.SetM17M18, MfcGroupName.M17M18, 0);
//设置所有PC到默认值
SetPcToDefault((int)RoutineStep.SetPC, _lstPcList);
////M2、M9、M15、M19-M40 MFC 5s ramp 到0
//SetMfcByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM40, 0, 5);
//6 M2、M9、M15、M19-M40、M41-M45 5s ramp到default值
SetMfcByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM45, 0, 5);
//打开EPV2
//7 打开EPV2
SetIoValueByGroup((int)RoutineStep.SetEPV2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout);
TimeDelay((int)RoutineStep.TimeDelay1, 3);
//打开Final2阀
//8 打开Final2阀
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);
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);
SetMfcToDefaultByGroup((int)RoutineStep.SetM32M35M37, MfcGroupName.M32M35M37, 3);
//11 M35、M37依次设定3S ramp 到default值 等待3S
SetMfcToDefaultByGroup((int)RoutineStep.SetM35M37, MfcGroupName.M35M37, 3);
//打开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);
SetMfcToDefaultByGroup((int)RoutineStep.SetM36, MfcGroupName.M36, 5);
TimeDelay((int)RoutineStep.TimeDelay3, 3);
//打开V96HeaterWF.Final M38依次设定5S ramp 到default值
SetIoValueByGroup((int)RoutineStep.SetV96, IoGroupName.V96, true, _IoValueOpenCloseTimeout);
SetMfcToDefaultByGroup((int)RoutineStep.SetM38, MfcGroupName.M38, 5);
TimeDelay((int)RoutineStep.TimeDelay4, 3);
//打开J Valves
//13 打开J Valves
SetIoValueByGroup((int)RoutineStep.SetGroupJOpen, IoGroupName.J, true, _IoValueOpenCloseTimeout);
//设置M2,M9,M15,M19-M26 3s ramp 到default 值
SetMfcToDefaultByGroup((int)RoutineStep.SetM291519to26, MfcGroupName.M2toM26, 3);
//设置M2,M9,M15,M19-M26 M43、M44、M45 3s ramp 到default 值
SetMfcToDefaultByGroup((int)RoutineStep.SetM2toM26, MfcGroupName.M2toM26M43M44M45, 3);
//设置蝶阀Enable
SetThrottleEnableAndWait((int)RoutineStep.SetTVEnable, _IoThrottle, 5);
//设置蝶阀为压力模式
//14 设置蝶阀为压力模式
SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode, _IoThrottle, 5);
//伺服压力设定值到1050mbar
SetThrottleToTargetAndNoWait((int)RoutineStep.SetTV, _IoThrottle, 1050);
//打开V72
SetIoValueByGroup((int)RoutineStep.SetV72, IoGroupName.VentPump, true, _IoValueOpenCloseTimeout);
//15 打开V72
SetIoValueByGroup((int)RoutineStep.SetV72, IoGroupName.V72, true, _IoValueOpenCloseTimeout);
TimeDelay((int)RoutineStep.TimeDelay5, 1);
//关闭V25
@ -389,7 +382,7 @@ namespace SicModules.PMs.Routines
WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.SetTVto300, _IoThrottle, _throttleFinalPressure, _pmPressureMaxDiff, _throttleTimeout);
//TimeDelay((int)RoutineStep.TimeDelay8, 3);
//转速Enable,加热Enable, 电流功率可配置
//16 转速Enable,加热Enable, 电流功率可配置
EnableRotation((int)RoutineStep.EnableRotation, 5);
SetRotationValveAndNoWait((int)RoutineStep.SetRotation1, _rotationSpeed);
@ -426,7 +419,7 @@ namespace SicModules.PMs.Routines
SetSCREnable((int)RoutineStep.CloseTC2, false, 5);
}
WaitRotationValve((int)RoutineStep.WaitRotation1, _rotationSpeed, true, _rotationSpeed / 2);
WaitRotationValve((int)RoutineStep.WaitRotation1, _rotationSpeed, true, _rotationSpeed * 3);
}
catch (RoutineBreakException)
@ -438,13 +431,7 @@ namespace SicModules.PMs.Routines
return Result.FAIL;
}
// _pmInterLock.SetPMProcessIdleRunning(false, out string reason);
if (!_pmInterLock.SetPMProcessIdleRunning(true, out string reason))
{
LOG.Error($"Failed to set DOProcessIdle to true due to {reason}");
}
_pmInterLock.SetPMProcessIdleRunning(false, out string reason);
Notify($"Finished ! Elapsed time: {(int)(_swTimer.ElapsedMilliseconds / 1000)} s");
_swTimer.Stop();

View File

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

View File

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

View File

@ -134,7 +134,7 @@ namespace SicModules.PMs.Routines.Recipe
// EV.PostAlarmLog(Module, $"can not run process,K valves is not closed!");
// return Result.FAIL;
//}
//if (!PMDevice.CheckIOValueByGroup(IoGroupName.VentPump, true))
//if (!PMDevice.CheckIOValueByGroup(IoGroupName.V72, true))
//{
// EV.PostAlarmLog(Module, $"can not run process,V72 is not open!");
// 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="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="ai" index="1" size="100" 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="ai" index="1" size="140" value_type="float" variable="GVL_IO.PM1_AI_G_2"></Block>
<Block type="ao" index="1" size="140" value_type="float" variable="GVL_IO.PM1_AO_G_2"></Block>
</Blocks>
</IoProvider>
@ -53,8 +53,8 @@
<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="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="ao" index="1" size="100" value_type="float" variable="GVL_IO.PM2_AO_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="140" value_type="float" variable="GVL_IO.PM2_AO_G_2"></Block>
</Blocks>
</IoProvider>
@ -83,8 +83,8 @@
<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="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="ao" index="1" size="100" value_type="float" variable="DB100.DBD2032"></Block>
<Block type="ai" index="1" size="140" value_type="float" variable="DB100.DBD1632"></Block>
<Block type="ao" index="1" size="140" value_type="float" variable="DB100.DBD2032"></Block>
</Blocks>
</IoProvider>
@ -95,8 +95,8 @@
<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="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="ao" index="1" size="100" value_type="float" variable="DB100.DBD2032"></Block>
<Block type="ai" index="1" size="140" value_type="float" variable="DB100.DBD1632"></Block>
<Block type="ao" index="1" size="140" value_type="float" variable="DB100.DBD2032"></Block>
</Blocks>
</IoProvider>

View File

@ -686,6 +686,17 @@
<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="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>
</Ana_In>
<Ana_Out>
@ -915,6 +926,17 @@
<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="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>
</Ana_Out>
</IO_DEFINE>

View File

@ -433,6 +433,13 @@ namespace SicSimulator.Instances
new Tuple<string, string>("AI_M37","AO_M37"),
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_PressCtrl2","AO_PressCtrl2"),
new Tuple<string, string>("AI_PressCtrl3","AO_PressCtrl3"),