From c6bcd06b617df6942b5e0b8154bf021f2a30e78b Mon Sep 17 00:00:00 2001 From: "SIC1016\\caipeilun" <905168240@qq.com> Date: Tue, 18 Aug 2026 19:18:07 +0800 Subject: [PATCH 1/4] =?UTF-8?q?load=E4=BC=BA=E6=9C=8D=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E4=B8=8D=E9=9A=90=E8=97=8F=20=E5=88=A0=E9=99=A4tm=E6=8E=A7?= =?UTF-8?q?=E5=88=B6v124=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Config/TM/DeviceModelSystem.xml | 8 +- .../LLs/Routines/LoadHomeRoutine.cs | 82 +------------- .../LLs/Routines/LoadLockBaseRoutine.cs | 105 ++++++++++++++++++ .../LLs/Routines/LoadLockPumpRoutine.cs | 6 + .../LLs/Routines/LoadLockVentRoutine.cs | 6 + App/Modules/SicModules/TMs/SicTM.cs | 11 +- App/SicRT/Config/System.sccfg | 2 +- App/SicUI/Models/Maintenances/TM/TMView.xaml | 91 +-------------- 8 files changed, 137 insertions(+), 174 deletions(-) diff --git a/App/Modules/SicModules/Config/TM/DeviceModelSystem.xml b/App/Modules/SicModules/Config/TM/DeviceModelSystem.xml index 4d667df..092aa09 100644 --- a/App/Modules/SicModules/Config/TM/DeviceModelSystem.xml +++ b/App/Modules/SicModules/Config/TM/DeviceModelSystem.xml @@ -17,12 +17,12 @@ + aiCurPos="AI_LdRotationRelativeDegree" aiCCD1Degree="AI_LdRotationCCD1Degree" aiCCD2Degree="AI_LdRotationCCD2Degree" + aoCCD1Degree="AO_LdRotationCCD1Degree" aoHomeSpeed="AO_LdRotationSpeed" aoPosSpeed="AO_LdRotationPosSpeed" aoCCD2Degree="AO_LdRotationCCD2Degree" + aoJogDegree="AO_LdRotationJogDegree" aoHomeOffset="AO_LdRotationHomeOffset"/> diff --git a/App/Modules/SicModules/LLs/Routines/LoadHomeRoutine.cs b/App/Modules/SicModules/LLs/Routines/LoadHomeRoutine.cs index b031e2f..6b942a3 100644 --- a/App/Modules/SicModules/LLs/Routines/LoadHomeRoutine.cs +++ b/App/Modules/SicModules/LLs/Routines/LoadHomeRoutine.cs @@ -12,7 +12,8 @@ namespace SicModules.LLs.Routines { CloseV79, CloseV83, - CloseV84 + CloseV84, + CloseV85 } private int _homeTimeout; @@ -41,6 +42,7 @@ namespace SicModules.LLs.Routines CloseLoadVent((int)RoutineStep.CloseV79); CloseFastPump((int)RoutineStep.CloseV83); CloseSlowPump((int)RoutineStep.CloseV84); + CloseBalanceValve((int)RoutineStep.CloseV85); LoadLockDevice.AutoCreatWafer(); } @@ -59,84 +61,6 @@ namespace SicModules.LLs.Routines return Result.DONE; } - public void CloseLoadVent(int id) - { - Tuple ret = Execute(id, () => - { - Notify($"Close Load vent valve"); - - if (!LoadLockDevice.SetFastVentValve(false, out string reason)) - { - Stop(reason); - return false; - } - - return true; - }); - - if (ret.Item1) - { - if (ret.Item2 == Result.FAIL) - { - throw (new RoutineFaildException()); - } - else - throw (new RoutineBreakException()); - } - } - - public void CloseFastPump(int id) - { - Tuple ret = Execute(id, () => - { - Notify($"Close Load fast pump valve"); - - if (!LoadLockDevice.SetFastPumpValve(false, out string reason)) - { - Stop(reason); - return false; - } - - return true; - }); - - if (ret.Item1) - { - if (ret.Item2 == Result.FAIL) - { - throw (new RoutineFaildException()); - } - else - throw (new RoutineBreakException()); - } - } - - public void CloseSlowPump(int id) - { - Tuple ret = Execute(id, () => - { - Notify($"Close slow pump valve"); - - if (!LoadLockDevice.SetSlowPumpValve(false, out string reason)) - { - Stop(reason); - return false; - } - - return true; - }); - - if (ret.Item1) - { - if (ret.Item2 == Result.FAIL) - { - throw (new RoutineFaildException()); - } - else - throw (new RoutineBreakException()); - } - } - public override void Abort() { base.Abort(); diff --git a/App/Modules/SicModules/LLs/Routines/LoadLockBaseRoutine.cs b/App/Modules/SicModules/LLs/Routines/LoadLockBaseRoutine.cs index 3088af0..0ff2bb5 100644 --- a/App/Modules/SicModules/LLs/Routines/LoadLockBaseRoutine.cs +++ b/App/Modules/SicModules/LLs/Routines/LoadLockBaseRoutine.cs @@ -87,6 +87,7 @@ namespace SicModules.LLs.Routines LoadLockDevice.SetSlowPumpValve(false, out _); LoadLockDevice.SetFastPumpValve(false, out _); LoadLockDevice.SetSlowVentValve(false, out _); + TMDevice.SetTmToLLVent(false, out _); } protected void LiftMove(int id, bool up, int timeout) @@ -855,5 +856,109 @@ namespace SicModules.LLs.Routines return CCDTriggerResult; } + public void CloseLoadVent(int id) + { + Tuple ret = Execute(id, () => + { + Notify($"Close Load vent valve"); + + if (!LoadLockDevice.SetFastVentValve(false, out string reason)) + { + Stop(reason); + return false; + } + + return true; + }); + + if (ret.Item1) + { + if (ret.Item2 == Result.FAIL) + { + throw (new RoutineFaildException()); + } + else + throw (new RoutineBreakException()); + } + } + + public void CloseFastPump(int id) + { + Tuple ret = Execute(id, () => + { + Notify($"Close Load fast pump valve"); + + if (!LoadLockDevice.SetFastPumpValve(false, out string reason)) + { + Stop(reason); + return false; + } + + return true; + }); + + if (ret.Item1) + { + if (ret.Item2 == Result.FAIL) + { + throw (new RoutineFaildException()); + } + else + throw (new RoutineBreakException()); + } + } + + public void CloseSlowPump(int id) + { + Tuple ret = Execute(id, () => + { + Notify($"Close slow pump valve"); + + if (!LoadLockDevice.SetSlowPumpValve(false, out string reason)) + { + Stop(reason); + return false; + } + + return true; + }); + + if (ret.Item1) + { + if (ret.Item2 == Result.FAIL) + { + throw (new RoutineFaildException()); + } + else + throw (new RoutineBreakException()); + } + } + + public void CloseBalanceValve(int id) + { + Tuple ret = Execute(id, () => + { + Notify($"Close Balance valve V85"); + + if (!TMDevice.SetTmToLLVent(false, out string reason)) + { + Stop(reason); + return false; + } + + return true; + }); + + if (ret.Item1) + { + if (ret.Item2 == Result.FAIL) + { + throw (new RoutineFaildException()); + } + else + throw (new RoutineBreakException()); + } + } + } } diff --git a/App/Modules/SicModules/LLs/Routines/LoadLockPumpRoutine.cs b/App/Modules/SicModules/LLs/Routines/LoadLockPumpRoutine.cs index 06060d3..1e122a4 100644 --- a/App/Modules/SicModules/LLs/Routines/LoadLockPumpRoutine.cs +++ b/App/Modules/SicModules/LLs/Routines/LoadLockPumpRoutine.cs @@ -22,6 +22,8 @@ namespace SicModules.LLs.Routines CloseFastValve, Delay, TimeDelay1, + CloseV79, + CloseV85 } private double _pumpBasePressure=0; @@ -138,8 +140,12 @@ namespace SicModules.LLs.Routines { try { + //关闭 V79, V85;打开 V84,等待压力低于 200mbar(可配置),打开 V83,压力达到 0mbar(可配置),等待 5s(可配置),关闭 V83、 V84。 Routine 结束。 CheckRoutineTimeOut(); + CloseLoadVent((int)RoutineStep.CloseV79); + CloseBalanceValve((int)RoutineStep.CloseV85); + TimeDelay((int)RoutineStep.RequestPumpDelay, 1); SlowPump((int)RoutineStep.SlowPump, _pumpSwitchPressure, _slowPumpTimeout); diff --git a/App/Modules/SicModules/LLs/Routines/LoadLockVentRoutine.cs b/App/Modules/SicModules/LLs/Routines/LoadLockVentRoutine.cs index 90647bb..5d3a742 100644 --- a/App/Modules/SicModules/LLs/Routines/LoadLockVentRoutine.cs +++ b/App/Modules/SicModules/LLs/Routines/LoadLockVentRoutine.cs @@ -18,6 +18,7 @@ namespace SicModules.LLs.Routines CloseSlowVentValve, CloseFastVentValve, CloseValveDelay, + CloseFastPumpValve, CloseSlowPumpValve, CloseV85 } private double _ventBasePressure; @@ -110,8 +111,13 @@ namespace SicModules.LLs.Routines { try { + //关闭 V83, V84, V85;打开 V79,等到压力等于 ATM(1020mbar 可配置),等待 5s(可配置),关闭 V79。 Routine 结束。 CheckRoutineTimeOut(); + CloseFastPumpValve((int)RoutineStep.CloseFastPumpValve); + CloseSlowPumpValve((int)RoutineStep.CloseSlowPumpValve); + CloseBalanceValve((int)RoutineStep.CloseV85); + SlowVent((int)RoutineStep.SlowVent, _ventBasePressure, _slowVentTimeout); TimeDelay((int)RoutineStep.VentDelay, _ventDelayTime); diff --git a/App/Modules/SicModules/TMs/SicTM.cs b/App/Modules/SicModules/TMs/SicTM.cs index d250c53..0df8acb 100644 --- a/App/Modules/SicModules/TMs/SicTM.cs +++ b/App/Modules/SicModules/TMs/SicTM.cs @@ -26,7 +26,7 @@ namespace SicModules.TMs //四个联通阀 private IoValve _tmLoadBanlance_V85; - private IoValve _tmUnLoadBanlance_V124; + //private IoValve _tmUnLoadBanlance_V124; private IoValve _tmPMABanlance_V70_1; //private IoValve _tmPMABanlance_V70_2; @@ -153,7 +153,7 @@ namespace SicModules.TMs _pumpValveV81 = DEVICE.GetDevice("TM.TMFastPump"); _pumpSlowValveV82 = DEVICE.GetDevice("TM.TMSlowPump"); _tmLoadBanlance_V85 = DEVICE.GetDevice("TM.TMLoadBanlance"); - _tmUnLoadBanlance_V124 = DEVICE.GetDevice("TM.TMUnLoadBanlance"); + //_tmUnLoadBanlance_V124 = DEVICE.GetDevice("TM.TMUnLoadBanlance"); _tmPMABanlance_V70_1 = DEVICE.GetDevice("PM1.V70"); //_tmPMABanlance_V70_2 = DEVICE.GetDevice("TM.TMPMBBanlance"); _bufferVentValveV80 = DEVICE.GetDevice("TM.BufferVent"); @@ -352,7 +352,7 @@ namespace SicModules.TMs _ventValveV77.TurnValve(false, out reason); _tmLoadBanlance_V85.TurnValve(false, out reason); _tmPMABanlance_V70_1.TurnValve(false, out reason); - _tmUnLoadBanlance_V124.TurnValve(false, out reason); + //_tmUnLoadBanlance_V124.TurnValve(false, out reason); return true; } @@ -364,7 +364,8 @@ namespace SicModules.TMs public override bool SetTmToUnLoadVent(bool isOpen, out string reason) { - return _tmUnLoadBanlance_V124.TurnValve(isOpen, out reason); + reason = ""; + return true; } public bool SetPIDValve(bool isOpen, out string reason) @@ -511,7 +512,7 @@ namespace SicModules.TMs _pumpSlowValveV82.TurnValve(false, out reason); //_bufferVentValveV80.TurnValve(false, out reason); _tmLoadBanlance_V85.TurnValve(false, out reason); - _tmUnLoadBanlance_V124.TurnValve(false, out reason); + //_tmUnLoadBanlance_V124.TurnValve(false, out reason); _tmPMABanlance_V70_1.TurnValve(false, out reason); //_tmPMABanlance_V70_2.TurnValve(false, out reason); diff --git a/App/SicRT/Config/System.sccfg b/App/SicRT/Config/System.sccfg index 5b08200..490961d 100644 --- a/App/SicRT/Config/System.sccfg +++ b/App/SicRT/Config/System.sccfg @@ -2090,7 +2090,7 @@ - + diff --git a/App/SicUI/Models/Maintenances/TM/TMView.xaml b/App/SicUI/Models/Maintenances/TM/TMView.xaml index 7371ff5..3afd7bd 100644 --- a/App/SicUI/Models/Maintenances/TM/TMView.xaml +++ b/App/SicUI/Models/Maintenances/TM/TMView.xaml @@ -1651,86 +1651,7 @@ - - - - - - - - - - - - - - - TextWrapping="Wrap" /> TextWrapping="Wrap" /> Date: Tue, 18 Aug 2026 19:54:36 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9tm=E9=83=A8=E5=88=86routi?= =?UTF-8?q?ne?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SicModules/TMs/Routines/TMBaseRoutine.cs | 30 +++++++++++++++++++ .../SicModules/TMs/Routines/TMHomeRoutine.cs | 5 ++-- .../SicModules/TMs/Routines/TMPumpRoutine.cs | 3 -- .../SicModules/TMs/Routines/TMVentRoutine.cs | 10 +++---- 4 files changed, 37 insertions(+), 11 deletions(-) diff --git a/App/Modules/SicModules/TMs/Routines/TMBaseRoutine.cs b/App/Modules/SicModules/TMs/Routines/TMBaseRoutine.cs index c34cb7f..40d44ea 100644 --- a/App/Modules/SicModules/TMs/Routines/TMBaseRoutine.cs +++ b/App/Modules/SicModules/TMs/Routines/TMBaseRoutine.cs @@ -62,6 +62,8 @@ namespace SicModules.TMs.Routines private IoLift4 _loadLift; private IoLift4 _unLoadLift; + private IoValve PM1ToTm_V70; + public TMBaseRoutine() : base(ModuleName.TM.ToString()) { Module = ModuleName.TM.ToString(); @@ -82,6 +84,8 @@ namespace SicModules.TMs.Routines _reactorSuspectorCheckPM1 = DEVICE.GetDevice($"PM1.SensorReactorSuspectorCheck"); _reactorSuspectorCheckPM2 = DEVICE.GetDevice($"PM2.SensorReactorSuspectorCheck"); + + PM1ToTm_V70 = DEVICE.GetDevice($"PM1.V70"); } public virtual Result Start(params object[] objs) @@ -1694,6 +1698,32 @@ namespace SicModules.TMs.Routines } } + public void ClosePM1ToTMV70(int id) + { + Tuple ret = Execute(id, () => + { + Notify($"Close V70 valve"); + + if (!PM1ToTm_V70.TurnValve(false, out string reason)) + { + Stop(reason); + return false; + } + + return true; + }); + + if (ret.Item1) + { + if (ret.Item2 == Result.FAIL) + { + throw (new RoutineFaildException()); + } + else + throw (new RoutineBreakException()); + } + } + public void SetMFCToSetPoint(int id, IoMFC _mfc, double setPoint) { Tuple ret = Execute(id, () => diff --git a/App/Modules/SicModules/TMs/Routines/TMHomeRoutine.cs b/App/Modules/SicModules/TMs/Routines/TMHomeRoutine.cs index 036db99..7fb254c 100644 --- a/App/Modules/SicModules/TMs/Routines/TMHomeRoutine.cs +++ b/App/Modules/SicModules/TMs/Routines/TMHomeRoutine.cs @@ -8,7 +8,8 @@ namespace SicModules.TMs.Routines { enum RoutineStep { - CloseV77, + CloseV77, + CloseV70, CloseV80, CloseV85, TMRobotHome @@ -47,7 +48,7 @@ namespace SicModules.TMs.Routines CloseTMVent((int)RoutineStep.CloseV77); //没有V78 SetTMLLBalanceValve((int)RoutineStep.CloseV85, TMDevice,false); - //没有V70 + ClosePM1ToTMV70((int)RoutineStep.CloseV70); ExecuteRoutine((int)RoutineStep.TMRobotHome, _tmRobotHomeRoutine); } catch (RoutineBreakException) diff --git a/App/Modules/SicModules/TMs/Routines/TMPumpRoutine.cs b/App/Modules/SicModules/TMs/Routines/TMPumpRoutine.cs index bd8e5c7..3397ee6 100644 --- a/App/Modules/SicModules/TMs/Routines/TMPumpRoutine.cs +++ b/App/Modules/SicModules/TMs/Routines/TMPumpRoutine.cs @@ -171,9 +171,6 @@ namespace SicModules.TMs.Routines //关闭V77 CloseTMVent((int)RoutineStep.CloseV77); - //关闭V80 - //CloseBufferVent((int)RoutineStep.CloseV80); - //打开V82,等待压力低于200mbar(可配置) OpenSlowPump((int)RoutineStep.SlowPump, TMDevice, _slowFastPumpSwitchPressure, _slowPumpTimeout); diff --git a/App/Modules/SicModules/TMs/Routines/TMVentRoutine.cs b/App/Modules/SicModules/TMs/Routines/TMVentRoutine.cs index f41d333..5172be3 100644 --- a/App/Modules/SicModules/TMs/Routines/TMVentRoutine.cs +++ b/App/Modules/SicModules/TMs/Routines/TMVentRoutine.cs @@ -28,6 +28,7 @@ namespace SicModules.TMs.Routines CloseVentValveDelay, TimeDelay, OpenV80, + OpenV77, CloseV80, CloseV81, CloseV82, @@ -195,13 +196,13 @@ namespace SicModules.TMs.Routines SetMFCToSetPoint((int)RoutineStep.SetMFC1, _mfc60, _mfc60Default1); ////打开V77,等待压力大于200mbar - //OpenSlowVent((int)RoutineStep.OpenSlowVent, _tm, _slowFastVentSwitchPressure, _slowVentTimeout); + OpenSlowVent((int)RoutineStep.OpenSlowVent, _tm, _slowFastVentSwitchPressure, _ventTimeOut); ////设定MFC60快充流量 - //SetMFCToSetPoint((int)RoutineStep.SetMFC2, _mfc60, _mfc60Default2); + SetMFCToSetPoint((int)RoutineStep.SetMFC2, _mfc60, _mfc60Default2); ////等待压力大于1020mbar - //OpenFastVent((int)RoutineStep.OpenFastVent, _tm, _ventBasePressure, _fastVentTime); + OpenFastVent((int)RoutineStep.OpenFastVent, _tm, _ventBasePressure, _ventTimeOut); //充气过程中检查是否到达打开快充流量的条件 OpenVent((int)RoutineStep.OpenVent, _tm, _ventBasePressure, _slowFastVentSwitchPressure, _mfc60Default2, _ventTimeOut); @@ -211,9 +212,6 @@ namespace SicModules.TMs.Routines //关闭V77 CloseSlowVentValve((int)RoutineStep.CloseSlowVent, _tm); - - //关闭V80 - //CloseBufferVent((int)RoutineStep.CloseV80); } catch (RoutineBreakException) { From 8b8246bec0ced9b183428a529ae879363a1d53f6 Mon Sep 17 00:00:00 2001 From: "SIC1016\\caipeilun" <905168240@qq.com> Date: Wed, 19 Aug 2026 08:46:09 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9tmpurge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SicModules/TMs/Routines/TMPurgeRoutine.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/App/Modules/SicModules/TMs/Routines/TMPurgeRoutine.cs b/App/Modules/SicModules/TMs/Routines/TMPurgeRoutine.cs index 493faf0..ad4e0b2 100644 --- a/App/Modules/SicModules/TMs/Routines/TMPurgeRoutine.cs +++ b/App/Modules/SicModules/TMs/Routines/TMPurgeRoutine.cs @@ -205,14 +205,14 @@ namespace SicModules.TMs.Routines //设定MFC60慢充流量 SetMFCToSetPoint((int)RoutineStep.SetMFC1, _mfc60, _mfc60Default1); - ////打开V77,等待压力大于200mbar - //OpenSlowVent((int)RoutineStep.OpenSlowVent, _tm, _slowFastVentSwitchPressure, _slowVentTimeout); + //打开V77,等待压力大于200mbar + OpenSlowVent((int)RoutineStep.OpenSlowVent, _tm, _slowFastVentSwitchPressure, _ventTimeOut); - ////设定MFC60快充流量 - //SetMFCToSetPoint((int)RoutineStep.SetMFC2, _mfc60, _mfc60Default2); + //设定MFC60快充流量 + SetMFCToSetPoint((int)RoutineStep.SetMFC2, _mfc60, _mfc60Default2); - ////等待压力大于1020mbar - //OpenFastVent((int)RoutineStep.OpenFastVent, _tm, _ventBasePressure, _fastVentTime); + //等待压力大于1020mbar + OpenFastVent((int)RoutineStep.OpenFastVent, _tm, _ventBasePressure, _ventTimeOut); //充气过程中检查是否到达打开快充流量的条件 OpenVent((int)RoutineStep.OpenVent, _tm, _ventBasePressure, _slowFastVentSwitchPressure, _mfc60Default2, _ventTimeOut); From 3902b5db43b55880e955c81bc2b374378aa284d6 Mon Sep 17 00:00:00 2001 From: HCL <1625932291@qq.com> Date: Wed, 19 Aug 2026 08:49:33 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9MFC5=E6=9C=AA=E5=AE=89?= =?UTF-8?q?=E8=A3=85=E6=8B=89=E5=8F=96=E5=8F=82=E6=95=B0=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App/SicUI/Models/PMs/PMOperationViewModel.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/App/SicUI/Models/PMs/PMOperationViewModel.cs b/App/SicUI/Models/PMs/PMOperationViewModel.cs index 9eeaf0d..6901d5d 100644 --- a/App/SicUI/Models/PMs/PMOperationViewModel.cs +++ b/App/SicUI/Models/PMs/PMOperationViewModel.cs @@ -1157,7 +1157,12 @@ namespace SicUI.Models.PMs private void GetSC() { - Mfc5IsInstalled = (bool)QueryDataClient.Instance.Service.GetConfig($"PM.{Module}.MFC.Mfc5.IsInstalled"); + var mfc5IsInstalled = QueryDataClient.Instance.Service.GetConfig($"PM.{Module}.MFC.Mfc5.IsInstalled"); + if (mfc5IsInstalled != null) + { + Mfc5IsInstalled = (bool)QueryDataClient.Instance.Service.GetConfig($"PM.{Module}.MFC.Mfc5.IsInstalled"); + } + TMAEnable = (bool)QueryDataClient.Instance.Service.GetConfig($"PM.{Module}.TMAEnable"); CarbonSource = (string)QueryDataClient.Instance.Service.GetConfig($"PM.{Module}.CarbonSource");