diff --git a/FrameworkLocal/UIClient/CenterViews/Configs/SystemConfig/SystemConfigViewModel.cs b/FrameworkLocal/UIClient/CenterViews/Configs/SystemConfig/SystemConfigViewModel.cs index 5e76767..4c4e47a 100644 --- a/FrameworkLocal/UIClient/CenterViews/Configs/SystemConfig/SystemConfigViewModel.cs +++ b/FrameworkLocal/UIClient/CenterViews/Configs/SystemConfig/SystemConfigViewModel.cs @@ -266,6 +266,28 @@ namespace MECF.Framework.UI.Client.CenterViews.Configs.SystemConfig item.TextSaved = true; Reload(); + // + if(key == "PM.PM1.PT.PT1Offset" + || key == "PM.PM1.PT.PT2Offset" + ) + { + SetPTOffset(key,value); + } + } + + + + private void SetPTOffset(string sKey, string sValue) + { + if (sKey == "PM.PM1.PT.PT1Offset") + { + InvokeClient.Instance.Service.DoOperation($"PM1.PT1Offset.SetSCPTOffset", new object[] { "PT1Offset", sValue}); + } + else if(sKey == "PM.PM1.PT.PT2Offset") + { + InvokeClient.Instance.Service.DoOperation($"PM1.PT2Offset.SetSCPTOffset", new object[] { "PT2Offset", sValue }); + } + } public void Reload() diff --git a/Modules/Mainframe/LLs/LoadLockModule.cs b/Modules/Mainframe/LLs/LoadLockModule.cs index 2783d42..b4169f8 100644 --- a/Modules/Mainframe/LLs/LoadLockModule.cs +++ b/Modules/Mainframe/LLs/LoadLockModule.cs @@ -478,7 +478,7 @@ namespace Mainframe.LLs QueueRoutine.Clear(); ModuleName mod = (ModuleName)param[0]; - if (mod == ModuleName.TrayRobot) + if (mod == ModuleName.TrayRobot || mod == ModuleName.WaferRobot) { //if ((EnumTransferType)param[2] == EnumTransferType.Place) { diff --git a/Modules/SicPM/Config/DeviceModelPM.xml b/Modules/SicPM/Config/DeviceModelPM.xml index 7958799..ed62462 100644 --- a/Modules/SicPM/Config/DeviceModelPM.xml +++ b/Modules/SicPM/Config/DeviceModelPM.xml @@ -236,12 +236,17 @@ diDryPump1Warning="DI_PM1DryPump1Warning"/> + + + + + - + diff --git a/Modules/SicPM/Config/_ioDefinePM.xml b/Modules/SicPM/Config/_ioDefinePM.xml index 24ddf26..b49465e 100644 --- a/Modules/SicPM/Config/_ioDefinePM.xml +++ b/Modules/SicPM/Config/_ioDefinePM.xml @@ -2,8 +2,7 @@ - - + diff --git a/Modules/SicPM/Devices/IoTC.cs b/Modules/SicPM/Devices/IoTC.cs index ac4d010..6983ed9 100644 --- a/Modules/SicPM/Devices/IoTC.cs +++ b/Modules/SicPM/Devices/IoTC.cs @@ -587,19 +587,7 @@ namespace SicPM.Devices L3TargetSPSetPoint = 600; } break; - case 1: - strHeaterMode = "TC"; - L1LoopModeSetPoint = 1; - if (L2LoopModeSetPoint == 1) - { - _rampTimerL2.Stop(); - L2TargetSPSetPoint = L2InputTempSetPoint; - } - L2LoopModeSetPoint = 0; - L3LoopModeSetPoint = 1; - TCPyroModeSetPoint = 0; - break; - case 2: + case 1: strHeaterMode = "Pyro"; if (L1LoopModeSetPoint == 1) { @@ -649,17 +637,7 @@ namespace SicPM.Devices TCPyroModeSetPoint = 0; break; case 1: - strHeaterMode = "TC"; - L1LoopModeSetPoint = 1; - L2LoopModeSetPoint = 1; - if (L3LoopModeSetPoint != 0) - { - L3TargetSPSetPoint = L3PVFeedBack; - } - L3LoopModeSetPoint = 0; - TCPyroModeSetPoint = 0; - break; - case 2: + strHeaterMode = "Pyro"; L1LoopModeSetPoint = 1; L2LoopModeSetPoint = 1; diff --git a/Modules/SicPM/Routines/PMCleanRoutine.cs b/Modules/SicPM/Routines/PMCleanRoutine.cs index a47cefd..b9445e0 100644 --- a/Modules/SicPM/Routines/PMCleanRoutine.cs +++ b/Modules/SicPM/Routines/PMCleanRoutine.cs @@ -20,6 +20,7 @@ namespace SicPM.Routines RotationEnable, HeatEnable, VentPumpClose, + VentPumpOpen, ArSupply, SetGroupB, @@ -34,6 +35,7 @@ namespace SicPM.Routines SetM1to16, SetPC, SetGroupJ, + SetGroupJ_1, SetM291519to38, SetGasOut, @@ -64,8 +66,8 @@ namespace SicPM.Routines PressureTo1050, SetPressureUp, + SetPressureUp1, SetPressureDown, - VentPumpOpen, PressureToMax, PressureToMin, @@ -84,8 +86,7 @@ namespace SicPM.Routines SetV76, SetV75, - SetV751, - SetV761, + SetTVto300, CheckPM1000, SetMfc28to40Special, @@ -107,12 +108,28 @@ namespace SicPM.Routines SetPressureDown1, SetMfc28to31Default1, CheckFinal1Open, - SetGroupV25, + SetGroupV25, + CloseGroupV25, SetM39, CheckEPV1Open1, CheckEPV2Open1, CheckTVOpen1, CheckEPV1Open2, + SetTVEnable, + SetTVPressMode, + SetTv1, + SetM2toM40, + SetV31, + SetV32, + SetV35V36, + WaitTv1, + SetTVPositionMode, + SetTVPositionMax, + SetTVPressMode1, + SetM2TOM40Default, + SetM2toM40_1, + SetMfc27to40Default, + SetV92V93V95, SetV94, @@ -170,20 +187,11 @@ namespace SicPM.Routines private int _IoValueOpenCloseTimeout = 10; //开关阀门超时时间 private double _pmPressureMaxDiff; //蝶阀与目标压力的差值范围(认为调整到位了) private int _throttleTimeout; //蝶阀调整到指定压力的超时时间 - private int _EPV2OpenTimeDelay =10; //EPV2 - private int _waitChamberTo1000TimeOut = 180; //等待腔体压力上升到1000的超时时间 - private double _mfc28SpecialFlow = 15000; - private double _mfc29SpecialFlow = 5000; - private double _mfc31SpecialFlow = 10000; - private double _mfc40SpecialFlow = 10000; - private double _ventBasePressure = 1000; - - //private int _EPV2OpenDelayTime = 9; + private double _throttleFinalPressure = 300;//蝶阀最终调整对的压力 private int _pmCleanTime = 20; - //private int _routineTimeOut; private Stopwatch _swTimer = new Stopwatch(); @@ -201,10 +209,6 @@ namespace SicPM.Routines { Reset(); - _mfc28SpecialFlow = SC.GetValue($"PM.{Module}.Mfc28FlowSpecail"); - _mfc29SpecialFlow = SC.GetValue($"PM.{Module}.Mfc29FlowSpecail"); - _mfc31SpecialFlow = SC.GetValue($"PM.{Module}.Mfc31FlowSpecail"); - _mfc40SpecialFlow = SC.GetValue($"PM.{Module}.Mfc40FlowSpecail"); _pmPressureMaxDiff = SC.GetValue($"PM.{Module}.ThrottlePressureMaxDiff"); _throttleTimeout = SC.GetValue($"PM.{Module}.ThrottlePressureTimeout"); @@ -217,9 +221,7 @@ namespace SicPM.Routines _pressureMaxTimeout = SC.GetValue($"PM.{Module}.Clean.VentTimeout"); _pmCleanTime = SC.GetValue($"PM.{Module}.Clean.CleanTime"); - //_EPV2OpenDelayTime = SC.GetValue($"PM.{Module}.TimeDelayAlterEPV2Open"); - - _ventBasePressure = SC.GetValue($"PM.{Module}.Clean.VentBasePressure"); + _throttleFinalPressure = SC.GetValue($"PM.{Module}.Clean.FinalPressure"); //Purge Succeed 清掉 _pmIoInterLock.DoLidOpenRoutineSucceed = false; @@ -241,150 +243,143 @@ namespace SicPM.Routines return Result.RUN; } - //PM Clean public override Result Monitor() { try { + //CheckRoutineTimeOut(); - if (SC.GetValue("System.IsATMMode")) - { - return Result.DONE; - } + //关闭V76,打开V75 + SetIoValueByGroup((int)RoutineStep.SetV76, IoGroupName.V76, false, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.SetV75, IoGroupName.V75, true, _IoValueOpenCloseTimeout); + + //旋转停止,加热停止 SetHeatEnable((int)RoutineStep.HeatEnable, false, _heatTimeOut); - SetRotationValve((int)RoutineStep.RotationEnable, _rotationCheckSpeed,false, _rotationCloseTimeout); + SetRotationValve((int)RoutineStep.RotationEnable, _rotationCheckSpeed, false, _rotationCloseTimeout); + //关闭V72,打开V25 SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout); - SetIoValueByGroup((int)RoutineStep.ArSupply, IoGroupName.ArSupply, true, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.SetGroupV25, IoGroupName.V25, true, _IoValueOpenCloseTimeout); + //打开V31,打开V32 + SetIoValueByGroup((int)RoutineStep.SetV31, IoGroupName.V31, true, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout); + + //打开V35,打开V36 + SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout); + + //关闭B/C/E/F/H/K 阀门 SetIoValueByGroup((int)RoutineStep.SetGroupB, IoGroupName.B, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupC, IoGroupName.C, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupE, IoGroupName.E, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupF, IoGroupName.F, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupH, IoGroupName.H, false, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupK, IoGroupName.K, false, _IoValueOpenCloseTimeout); - SetIoValueByGroup((int)RoutineStep.SetGroupV25, IoGroupName.V25, true, _IoValueOpenCloseTimeout); + //打开D/G 阀门 SetIoValueByGroup((int)RoutineStep.SetGroupD, IoGroupName.D, true, _IoValueOpenCloseTimeout); SetIoValueByGroup((int)RoutineStep.SetGroupG, IoGroupName.G, true, _IoValueOpenCloseTimeout); - SetIoValueByGroup((int)RoutineStep.SetV76, IoGroupName.V76, false, _IoValueOpenCloseTimeout); - SetIoValueByGroup((int)RoutineStep.SetV75, IoGroupName.V75, true, _IoValueOpenCloseTimeout); - + //设置MFC和PC的模式 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); + + //设置所有PC到默认值 SetPcToDefault((int)RoutineStep.SetPC, _lstPcList); - CheckFinalIoStatue((int)RoutineStep.CheckFinal1Open); - if (!_finalOpen) - { - SetMfcByGroup((int)RoutineStep.SetM291519to38, MfcGroupName.M2toM40, 0, 5); - TimeDelay((int)RoutineStep.TimeDelay1, 5); - } + //设置M2,M9,M15,M19-M26 3s ramp 到default 值 + SetMfcToDefaultByGroup((int)RoutineStep.SetM291519to26, MfcGroupName.M2toM26, 3); - GetPressureConditionPT2((int)RoutineStep.CheckPMPt21000, 1000); - if (!_checkPMPt2Over1000) - { - SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode, _IoThrottle, 8); - SetThrottleDisable((int)RoutineStep.SetTvPositionToZero, _IoThrottle, 8); - TimeDelay((int)RoutineStep.TimeDelay18, 1); - } + //打开EPV2 + SetIoValueByGroup((int)RoutineStep.SetEPV2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout); + TimeDelay((int)RoutineStep.TimeDelay1, 3); + + //设置蝶阀Enable + SetThrottleEnableAndWait((int)RoutineStep.SetTVEnable, _IoThrottle, 5); + + //设置蝶阀为压力模式 + SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode, _IoThrottle, 5); + + //伺服压力设定值到0mbar + SetThrottlePressureAndWaitSetPoint((int)RoutineStep.SetTv1, _IoThrottle, _pressureMin, _pmPressureMaxDiff, _throttleTimeout); + + //M2、M9、M15、M19-M40 MFC 3s ramp到0 + SetMfcByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM40, 0, 3); + + //等待腔体压力Pump到设定值 + WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _pressureMin, _pmPressureMaxDiff, _throttleTimeout); + + //蝶阀设置为位置模式,开度设置为最大 + SetThrottleToPositionMode((int)RoutineStep.SetTVPositionMode, _IoThrottle, _throttleTimeout); + SetThrottleSetPosition((int)RoutineStep.SetTVPositionMax, _IoThrottle, 100, _throttleTimeout); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //打开Final valves 和对应的MFC值 SetIoValueByGroup((int)RoutineStep.OpenFinal2, IoGroupName.Final2, true, _IoValueOpenCloseTimeout); SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal2, MfcGroupName.Final2, 3); - TimeDelay((int)RoutineStep.TimeDelay3, 3); - //SetIoValueByGroup((int)RoutineStep.OpenFinal1, IoGroupName.Final1, true, _IoValueOpenCloseTimeout); - //SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal1, MfcGroupName.Final1, 3); + TimeDelay((int)RoutineStep.TimeDelay2, 3); - //修改打开Final1的MFC和阀的开关流程 - //1.打开V92,V93和V95,再打开V94,在打开V96,在打开V68 + //打开V92,V93和V95,再打开V94,在打开V96,在打开V68 SetIoValueByGroup((int)RoutineStep.SetV92V93V95, IoGroupName.V92V93V95, true, _IoValueOpenCloseTimeout); - TimeDelay((int)RoutineStep.TimeDelay20, 3); + TimeDelay((int)RoutineStep.TimeDelay3, 3); SetIoValueByGroup((int)RoutineStep.SetV94, IoGroupName.V94, true, _IoValueOpenCloseTimeout); - TimeDelay((int)RoutineStep.TimeDelay21, 3); + TimeDelay((int)RoutineStep.TimeDelay4, 3); SetIoValueByGroup((int)RoutineStep.SetV96, IoGroupName.V96, true, _IoValueOpenCloseTimeout); - TimeDelay((int)RoutineStep.TimeDelay22, 3); + TimeDelay((int)RoutineStep.TimeDelay5, 3); SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout); - //2.设置M32,M35,M37到默认值,再设置M36,延时2s,再设置M38,不用Ramp + //设置M32,M35,M37到默认值,再设置M36,延时2s,再设置M38,不用Ramp SetMfcToDefaultByGroup((int)RoutineStep.SetM32M35M37, MfcGroupName.M32M35M37, 5); SetMfcToDefaultByGroup((int)RoutineStep.SetM36, MfcGroupName.M36, 5); - TimeDelay((int)RoutineStep.TimeDelay10, 2); + TimeDelay((int)RoutineStep.TimeDelay6, 2); SetMfcToDefaultByGroup((int)RoutineStep.SetM38, MfcGroupName.M38, 5); - TimeDelay((int)RoutineStep.TimeDelay4, 3); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + TimeDelay((int)RoutineStep.TimeDelay7, 3); + //设置蝶阀为压力模式 + SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode1, _IoThrottle, 5); - //4.打开J Valves - SetIoValueByGroup((int)RoutineStep.SetGroupJOpen, IoGroupName.J, true, _IoValueOpenCloseTimeout); - SetMfcToDefaultByGroup((int)RoutineStep.SetM291519to26, MfcGroupName.M2toM26, 3); - - - if (!_checkPMPt2Over1000) - { - //判断反应腔压力是否超过1000mbar - GetPressureCondition((int)RoutineStep.CheckPM1000, _ventBasePressure); - if (!_checkPMPressureOver1000) - { - //设置M28,M29,M31,M40 为特定值 - SetMfc28to40Special((int)RoutineStep.SetMfc28to40Special, _mfc28SpecialFlow, _mfc29SpecialFlow, _mfc31SpecialFlow, _mfc40SpecialFlow, 1); - } - - //等待反应腔压力到达1000 - NotifyInfo((int)RoutineStep.Notify1, $"Wait PM Pressure over {_ventBasePressure} mbar"); - WaitChamberPressUpTo((int)RoutineStep.WaitPressUpTo1000, _ventBasePressure, _waitChamberTo1000TimeOut); - SetMfcToDefaultByGroup((int)RoutineStep.SetMfc28to40Default, MfcGroupName.M27toM40, 0); - } - - - NotifyInfo((int)RoutineStep.Notify2, "Wait V27 open!"); - WaitV27Open((int)RoutineStep.WaitV27Open,60); - TimeDelay((int)RoutineStep.TimeDelay5, _pmCleanTime); - - if (_checkPMPt2Over1000) - { - //1.打开EPV1,等待10s - SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode, _IoThrottle, 8); - SetThrottleDisable((int)RoutineStep.SetTvPositionToZero, _IoThrottle, 8); - } - - //打开EPV2,等待9秒,打开蝶阀 - //打开EPV2,等待9秒,打开蝶阀 - CheckEPV2Open((int)RoutineStep.CheckEPV2Open1); - if (!_isEPV2Open) - { - SetIoValueByGroup((int)RoutineStep.OpenEPV2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout); - TimeDelay((int)RoutineStep.TimeDelay6, 2); - } - CheckTvOpen((int)RoutineStep.CheckTVOpen1); - if (!_isTvOpen) - { - SetThrottleEnableAndWait((int)RoutineStep.SetTvOpen, _IoThrottle, 10); - SetThrottleToPressModeAndWait((int)RoutineStep.SetTvModeToPress, _IoThrottle, 10); - } - SetThrottleToTargetAndNoWait((int)RoutineStep.SetTvTo1150, _IoThrottle, 1150); - - //打开V72 - //SetIoValueByGroup((int)RoutineStep.VentPumpOpen, IoGroupName.VentPump, true, _IoValueOpenCloseTimeout); - + //循环开始 Loop((int)RoutineStep.StartLoop, _pressureLoopCount); - SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown1, PressureUpOrDown.Dowing); - SetThrottleToTargetAndNoWait((int)RoutineStep.SetPressureDown, _IoThrottle, _pressureMin); - WaitThrottleToPressureAndSetMfcSpecialForLidOpen((int)RoutineStep.WaitPressureDown, _IoThrottle, _pressureMin, _pmPressureMaxDiff, _pressureMinTimeout); - TimeDelay((int)RoutineStep.TimeDelay8, _pressureMinDelay); - - SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown2, PressureUpOrDown.Uping); + + //M2、M9、M15、M19-M40 MFC 3s ramp 到 default 值 + SetMfcToDefaultByGroup((int)RoutineStep.SetM2TOM40Default, MfcGroupName.M2toM40, 3); + + //使用动态流量伺服到300mbar + SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown1, PressureUpOrDown.Uping); SetThrottleToTargetAndNoWait((int)RoutineStep.SetPressureUp, _IoThrottle, _pressureMax); - WaitThrottleToPressureAndSetMfcSpecialForLidOpen((int)RoutineStep.WaitPressureUp, _IoThrottle, _pressureMax, _pmPressureMaxDiff, _pressureMaxTimeout); - TimeDelay((int)RoutineStep.TimeDelay9, _pressureMaxDelay); + WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.WaitPressureUp, _IoThrottle, _pressureMax, _pmPressureMaxDiff, _pressureMaxTimeout); + TimeDelay((int)RoutineStep.TimeDelay8, _pressureMaxDelay); + + //M2、M9、M15、M19-M40 MFC 3s ramp 0 + SetMfcByGroup((int)RoutineStep.SetM2toM40_1, MfcGroupName.M2toM40, 0, 3); + + //使用动态流量伺服到0mbar + SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown2, PressureUpOrDown.Dowing); + SetThrottleToTargetAndNoWait((int)RoutineStep.SetPressureDown, _IoThrottle, _pressureMin); + WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.WaitPressureDown, _IoThrottle, _pressureMin, _pmPressureMaxDiff, _pressureMinTimeout); + TimeDelay((int)RoutineStep.TimeDelay9, _pressureMinDelay); + EndLoop((int)RoutineStep.EndLoop); + //M27-M40 MFC 3s ramp 到 default 值 + SetMfcToDefaultByGroup((int)RoutineStep.SetMfc27to40Default, MfcGroupName.M27toM40, 3); + //打开J阀门 + SetIoValueByGroup((int)RoutineStep.SetGroupJ_1, IoGroupName.J, true, _IoValueOpenCloseTimeout); + + //打开V72,关闭V25 + SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, true, _IoValueOpenCloseTimeout); + SetIoValueByGroup((int)RoutineStep.CloseGroupV25, IoGroupName.V25, false, _IoValueOpenCloseTimeout); + + //压力伺服到300mbar + SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown1, PressureUpOrDown.Uping); + SetThrottleToTargetAndNoWait((int)RoutineStep.SetPressureUp1, _IoThrottle, _throttleFinalPressure); + WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.SetTVto300, _IoThrottle, _throttleFinalPressure, _pmPressureMaxDiff, _throttleTimeout); } catch (RoutineBreakException) { diff --git a/Modules/SicPM/Routines/PMPurgeRoutine.cs b/Modules/SicPM/Routines/PMPurgeRoutine.cs index aa6daf6..5c1d118 100644 --- a/Modules/SicPM/Routines/PMPurgeRoutine.cs +++ b/Modules/SicPM/Routines/PMPurgeRoutine.cs @@ -398,7 +398,6 @@ namespace SicPM.Routines //等待反应腔压力到达1020 NotifyInfo((int)RoutineStep.Notify1, "Wait pm pressure to 1020 mbar!"); WaitChamberPressUpTo((int)RoutineStep.WaitPressUpTo1000, 1020, _waitChamberTo1000TimeOut); - } catch (RoutineBreakException) { diff --git a/Modules/SicPM/SicPM.csproj b/Modules/SicPM/SicPM.csproj index 6f7ec93..c29a011 100644 --- a/Modules/SicPM/SicPM.csproj +++ b/Modules/SicPM/SicPM.csproj @@ -59,6 +59,7 @@ + diff --git a/SicRT/Config/System.sccfg b/SicRT/Config/System.sccfg index c5dc2a0..35e4dde 100644 --- a/SicRT/Config/System.sccfg +++ b/SicRT/Config/System.sccfg @@ -192,8 +192,6 @@ - @@ -246,6 +244,7 @@ + @@ -1229,6 +1228,11 @@ + + + + + diff --git a/SicRT/Equipments/AutoTransfer.cs b/SicRT/Equipments/AutoTransfer.cs index c9fe981..406e606 100644 --- a/SicRT/Equipments/AutoTransfer.cs +++ b/SicRT/Equipments/AutoTransfer.cs @@ -2004,7 +2004,7 @@ namespace SicRT.Modules return; //pick from pm - if (_tmRobot.NoWafer(0)) + if (_tmRobot.NoWafer(0)&&_tmRobot.NoTray(0)) { Hand pickBlade = Hand.Blade1; diff --git a/SicRT/Equipments/Schedulers/SchedulerLoadLock.cs b/SicRT/Equipments/Schedulers/SchedulerLoadLock.cs index 781a519..17420cb 100644 --- a/SicRT/Equipments/Schedulers/SchedulerLoadLock.cs +++ b/SicRT/Equipments/Schedulers/SchedulerLoadLock.cs @@ -51,7 +51,7 @@ namespace SicRT.Scheduler private ModuleName _taskRobot; private int _taskSlot; private int _entityTaskToken = (int)FSM_MSG.NONE; - public bool IsInPumping { get => _task == TaskType.Pump || _task == TaskType.Purge || (_task == TaskType.PrepareTransfer && _taskRobot == ModuleName.TMRobot); } + public bool IsInPumping { get => _task == TaskType.Pump || _task == TaskType.Purge || _task == TaskType.PrepareTransfer ; } public SchedulerLoadLock(ModuleName module) : base(module.ToString()) { diff --git a/SicRT/Equipments/Schedulers/SchedulerUnLoad.cs b/SicRT/Equipments/Schedulers/SchedulerUnLoad.cs index 79b0fcb..dd9040f 100644 --- a/SicRT/Equipments/Schedulers/SchedulerUnLoad.cs +++ b/SicRT/Equipments/Schedulers/SchedulerUnLoad.cs @@ -208,7 +208,7 @@ namespace SicRT.Scheduler if (wafer.NextSequenceStep >= wafer.ProcessJob.Sequence.Steps.Count) return null; - if (!wafer.ProcessJob.Sequence.Steps[wafer.NextSequenceStep].StepModules.Any(m => m == ModuleName.LoadLock || m == ModuleName.Load)) + if (!wafer.ProcessJob.Sequence.Steps[wafer.NextSequenceStep].StepModules.Contains(Module)) return null; if (!wafer.ProcessJob.Sequence.Steps[wafer.NextSequenceStep].StepParameter.ContainsKey("PurgeCount")) @@ -235,7 +235,7 @@ namespace SicRT.Scheduler if (wafer.NextSequenceStep >= wafer.ProcessJob.Sequence.Steps.Count) return null; - if (!wafer.ProcessJob.Sequence.Steps[wafer.NextSequenceStep].StepModules.Any(m => m == ModuleName.LoadLock || m == ModuleName.Load)) + if (!wafer.ProcessJob.Sequence.Steps[wafer.NextSequenceStep].StepModules.Contains(Module)) return null; if (!wafer.ProcessJob.Sequence.Steps[wafer.NextSequenceStep].StepParameter.ContainsKey("PumpDelayTime")) diff --git a/SicRT/Equipments/Systems/EquipmentManager.cs b/SicRT/Equipments/Systems/EquipmentManager.cs index 811040b..3f677c9 100644 --- a/SicRT/Equipments/Systems/EquipmentManager.cs +++ b/SicRT/Equipments/Systems/EquipmentManager.cs @@ -164,6 +164,7 @@ namespace SicRT.Equipments.Systems private SicPM.Devices.IoSignalTower _st = null; // private SicPM.Devices.IoTC _tc = null; + private SicPM.Devices.IoPTOffset _pt1 = null, _pt2 = null; public EquipmentManager() { @@ -196,6 +197,7 @@ namespace SicRT.Equipments.Systems SubscribeOperation(); InitSetPSUY(); + InitPTOffset(); Singleton.Instance.OnAlarmEvent += Instance_OnAlarmEvent; @@ -283,6 +285,8 @@ namespace SicRT.Equipments.Systems // _st = DEVICE.GetDevice("PM1.SignalTower"); _tc = DEVICE.GetDevice("PM1.TC1"); + _pt1 = DEVICE.GetDevice("PM1.PT1Offset"); + _pt2 = DEVICE.GetDevice("PM1.PT2Offset"); // _thread = new PeriodicJob(200, OnTimer, "PmSlitDoor", false, true); Task.Delay(15000).ContinueWith((a) => _thread.Start()); @@ -498,6 +502,11 @@ namespace SicRT.Equipments.Systems _tc.SetPCPSUY(); } + void InitPTOffset() + { + _pt1.GetSCPTOffset("PT1Offset"); + _pt2.GetSCPTOffset("PT2Offset"); + } //EventManager触发OnAlarmEvent事件,即EV.PostAlarmLog触发 //具体值到 EventManager里面找 diff --git a/SicRT/Properties/AssemblyInfo.cs b/SicRT/Properties/AssemblyInfo.cs index aefd422..4590390 100644 --- a/SicRT/Properties/AssemblyInfo.cs +++ b/SicRT/Properties/AssemblyInfo.cs @@ -52,6 +52,6 @@ using System.Windows; // 方法是按如下所示使用“*”: : // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.1.0.1")] -[assembly: AssemblyFileVersion("1.1.0.1")] +[assembly: AssemblyVersion("1.1.0.3")] +[assembly: AssemblyFileVersion("1.1.0.3")] diff --git a/SicRT/ReleaseNotes.txt b/SicRT/ReleaseNotes.txt index 1ad7afb..3f8bc83 100644 --- a/SicRT/ReleaseNotes.txt +++ b/SicRT/ReleaseNotes.txt @@ -9,6 +9,14 @@ Sic 系统更新历史记录 --------------------------------------------------------------------------------- +Sic03 2022-08-02 Version 1.1.0.3 +1、PM Heater界面 heater mode 中去掉TC模式; +2、PM DI-2 ; +3、解决PM PT1和PT2 offset 值掉电丢失的问题; + +Sic03 2022-08-02 Version 1.1.0.2 +1.PM Clean Routine重新整理 + Sic03 2022-08-02 Version 1.1.0.1 1.更新 diff --git a/SicUI/Models/Maintenances/TM/TMView.xaml b/SicUI/Models/Maintenances/TM/TMView.xaml index ae9a605..83dff9b 100644 --- a/SicUI/Models/Maintenances/TM/TMView.xaml +++ b/SicUI/Models/Maintenances/TM/TMView.xaml @@ -1920,16 +1920,6 @@ x:Name="Devices" Canvas.Left="0" Canvas.Top="150"> - -