diff --git a/Modules/Mainframe/Config/PM/PM1/DeviceModelPM1.xml b/Modules/Mainframe/Config/PM/PM1/DeviceModelPM1.xml index 6e8a702..267aaef 100644 --- a/Modules/Mainframe/Config/PM/PM1/DeviceModelPM1.xml +++ b/Modules/Mainframe/Config/PM/PM1/DeviceModelPM1.xml @@ -301,14 +301,6 @@ - - - diff --git a/Modules/Mainframe/Config/Recipe/Sic/Process/RecipeFormat.xml b/Modules/Mainframe/Config/Recipe/Sic/Process/RecipeFormat.xml index c926d09..085907b 100644 --- a/Modules/Mainframe/Config/Recipe/Sic/Process/RecipeFormat.xml +++ b/Modules/Mainframe/Config/Recipe/Sic/Process/RecipeFormat.xml @@ -37,7 +37,9 @@ - + + + diff --git a/Modules/Mainframe/PMs/PMModule.cs b/Modules/Mainframe/PMs/PMModule.cs index ccb8484..f425059 100644 --- a/Modules/Mainframe/PMs/PMModule.cs +++ b/Modules/Mainframe/PMs/PMModule.cs @@ -863,6 +863,7 @@ namespace SicModules.PMs private bool FsmEnterError(object[] param) { + AbortRoutine(); InvokeOnEnterError(Module); if (IsOnline) { @@ -1401,7 +1402,7 @@ namespace SicModules.PMs { return false; } - + StopRamp(); _pmInterLock.SetPMProcessRunning(false, out string reason); _pmInterLock.SetPMPreProcessRunning(false, out reason); diff --git a/Modules/Mainframe/PMs/Routines/PMMfcRorRoutine.cs b/Modules/Mainframe/PMs/Routines/PMMfcRorRoutine.cs index bb90838..beaa35a 100644 --- a/Modules/Mainframe/PMs/Routines/PMMfcRorRoutine.cs +++ b/Modules/Mainframe/PMs/Routines/PMMfcRorRoutine.cs @@ -43,6 +43,7 @@ namespace SicModules.PMs.Routines TimeDelay7, TimeDelay8, TimeDelay9, + TimeDelay10, SetEPV2_1, SetEPV2_2, @@ -63,6 +64,7 @@ namespace SicModules.PMs.Routines PreSetMfcFlow, SetMfcFlow_1, SetMfcFlow_2, + SetMfcFlow_3, PostSetMfcFlow, SetPressure1, @@ -253,6 +255,19 @@ namespace SicModules.PMs.Routines { try { + //检查是否退出 + if(_pmModule.GetChamberPressure() >980) + { + //设置对应的MFC流量为0 + SetMfcFlow((int)RoutineStep.SetMfcFlow_3, _mfcData.Name, 0, 3); + + TimeDelay((int)RoutineStep.TimeDelay10, 3); + + EV.PostWarningLog(Module, "Chamber Pressure above 980mbar,Mfc Ror Routine Abort!"); + + throw (new RoutineFaildException()); + } + //CheckRoutineTimeOut(); if (_flag1) { @@ -577,7 +592,7 @@ namespace SicModules.PMs.Routines } else if (value == "Default") { - pc.Ramp(pc.DefaultValue, 3); + pc.Ramp(pc.DefaultValue, 3000); EV.PostInfoLog(Module, $"{pcName} Set {value} Succeed"); @@ -620,7 +635,7 @@ namespace SicModules.PMs.Routines } else if (value == "Default") { - mfc.SetToDefaultByRamp(3); + mfc.SetToDefaultByRamp(3000); return true; } @@ -628,7 +643,7 @@ namespace SicModules.PMs.Routines { if(double.TryParse(value,out double dValue)) { - mfc.Ramp(dValue,3,out reason); + mfc.Ramp(dValue,3000,out reason); return true; } @@ -722,7 +737,7 @@ namespace SicModules.PMs.Routines _mfcData.Volume = Math.Round(_mfcData.Volume, 2); //大于3%的MFC为超标 - _mfcData.IsOverStandard = Math.Abs(_mfcData.Deviation) - 3 > 0; + _mfcData.IsOverStandard = Math.Abs(_mfcData.Deviation) > 3; _endTime = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"); diff --git a/SicRT/Config/DBModel.sql b/SicRT/Config/DBModel.sql index eac463b..9474aac 100644 --- a/SicRT/Config/DBModel.sql +++ b/SicRT/Config/DBModel.sql @@ -425,13 +425,14 @@ begin CREATE TABLE tray_thickness_main ( + "tray_guid" text NOT NULL, "tray_number" text NOT NULL, + "tray_label" text, "pm_number" text, "tray_coating_thickness" real, - "tray_max_thickness"real, - "last_date" date, - "last_time" time, - CONSTRAINT "tray_thickness_main_pkey" PRIMARY KEY ("tray_number" ) + "tray_max_thickness" real, + "create_time" timestamp, + CONSTRAINT "tray_thickness_main_pkey" PRIMARY KEY ("tray_guid" ) ) WITH ( OIDS=FALSE @@ -449,13 +450,12 @@ begin CREATE TABLE tray_thickness_data ( - "wafer_guid" text NOT NULL, + "tray_guid" text NOT NULL, "tray_number" text , "tray_inner_number" text, "ring_inner_number" text, "ring_outer_number" text, - - CONSTRAINT "tray_thickness_data_pkey" PRIMARY KEY ("wafer_guid" ) + CONSTRAINT "tray_thickness_data_pkey" PRIMARY KEY ("tray_guid" ) ) WITH ( OIDS=FALSE @@ -465,7 +465,55 @@ begin GRANT SELECT ON TABLE tray_thickness_data TO postgres; end if; ------------------------------------------------------------------------------------------------ + -- + if not exists(select * from information_schema.tables + where + table_catalog = CURRENT_CATALOG and table_schema = CURRENT_SCHEMA + and table_name = 'pm_thickness_data') then + + CREATE TABLE pm_thickness_data + ( + + "pm_guid" text NOT NULL, + "pm_minor_cycle" text , + "pm_major_cycle" text, + CONSTRAINT "pm_thickness_data_pkey" PRIMARY KEY ("pm_guid" ) + ) + WITH ( + OIDS=FALSE + ); + ALTER TABLE pm_thickness_data + OWNER TO postgres; + GRANT SELECT ON TABLE pm_thickness_data TO postgres; + end if; + ------------------------------------------------------------------------------------------------ + -- + if not exists(select * from information_schema.tables + where + table_catalog = CURRENT_CATALOG and table_schema = CURRENT_SCHEMA + and table_name = 'pm_thickness_main') then + + CREATE TABLE pm_thickness_main + ( + "pm_guid" text NOT NULL, + "pm_cycle" text NOT NULL, + "pm_label" text, + "pm_number" text, + "pm_coating_thickness" real, + "pm_max_thickness" real, + "create_time" timestamp, + CONSTRAINT "pm_thickness_main_pkey" PRIMARY KEY ("pm_guid" ) + ) + WITH ( + OIDS=FALSE + ); + ALTER TABLE "pm_thickness_main" + OWNER TO postgres; + GRANT SELECT ON TABLE "pm_thickness_main" TO postgres; + end if; + ------------------------------------------------------------------------------------------------ + -- if not exists(select * from information_schema.tables where table_catalog = CURRENT_CATALOG and table_schema = CURRENT_SCHEMA diff --git a/SicRT/Equipments/AutoTransfer.cs b/SicRT/Equipments/AutoTransfer.cs index a7a4684..6fdafe3 100644 --- a/SicRT/Equipments/AutoTransfer.cs +++ b/SicRT/Equipments/AutoTransfer.cs @@ -4,22 +4,14 @@ using System.IO; using System.Linq; using System.Windows.Media.Imaging; using Aitex.Core.Common; -using Aitex.Core.RT.DataCenter; using Aitex.Core.RT.Device; -using Aitex.Core.RT.Event; -using Aitex.Core.RT.Log; -using Aitex.Core.RT.OperationCenter; -using Aitex.Core.RT.RecipeCenter; using Aitex.Core.RT.Routine; using Aitex.Core.RT.SCCore; -using Aitex.Core.Util; using Aitex.Sorter.Common; using MECF.Framework.Common.DataCenter; using MECF.Framework.Common.DBCore; -using MECF.Framework.Common.Equipment; using MECF.Framework.Common.Jobs; using MECF.Framework.Common.Schedulers; -using MECF.Framework.Common.SubstrateTrackings; using SicRT.Equipments.Schedulers; using SicRT.Modules.Schedulers; using SicRT.Scheduler; diff --git a/SicRT/Equipments/DemoUtils.cs b/SicRT/Equipments/DemoUtils.cs index a06b38c..bfd82aa 100644 --- a/SicRT/Equipments/DemoUtils.cs +++ b/SicRT/Equipments/DemoUtils.cs @@ -6,7 +6,6 @@ using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; -using Aitex.Core.RT.Event; using MECF.Framework.RT.Core.IoProviders.Siemens.Transfer; using MECF.Framework.RT.Core.IoProviders.Siemens.Net; diff --git a/SicRT/Equipments/HomeAll.cs b/SicRT/Equipments/HomeAll.cs index 173e3e3..6ca1a8e 100644 --- a/SicRT/Equipments/HomeAll.cs +++ b/SicRT/Equipments/HomeAll.cs @@ -1,11 +1,8 @@ using System.Collections.Generic; using System.Diagnostics; using Aitex.Core.RT.Device; -using Aitex.Core.RT.Event; using Aitex.Core.RT.Routine; using Aitex.Core.RT.SCCore; -using Aitex.Core.Util; -using MECF.Framework.Common.Equipment; using SicModules.Aligners; using SicModules.Buffers; using SicModules.Cassettes; diff --git a/SicRT/Equipments/ManualTransfer.cs b/SicRT/Equipments/ManualTransfer.cs index 856d29a..15b97cb 100644 --- a/SicRT/Equipments/ManualTransfer.cs +++ b/SicRT/Equipments/ManualTransfer.cs @@ -1,13 +1,9 @@ using System.Collections.Generic; using System.Diagnostics; -using Aitex.Core.RT.Event; using Aitex.Core.RT.Routine; using Aitex.Core.RT.SCCore; -using Aitex.Core.Util; using Aitex.Sorter.Common; -using MECF.Framework.Common.Equipment; using MECF.Framework.Common.Schedulers; -using MECF.Framework.Common.SubstrateTrackings; using SicModules.Aligners.Routines; using SicRT.Modules.Schedulers; diff --git a/SicRT/Equipments/ReturnAllWafer.cs b/SicRT/Equipments/ReturnAllWafer.cs index 7876dab..dd29ff3 100644 --- a/SicRT/Equipments/ReturnAllWafer.cs +++ b/SicRT/Equipments/ReturnAllWafer.cs @@ -1,14 +1,11 @@ using System.Collections.Generic; using Aitex.Core.Common; -using Aitex.Core.RT.Event; using Aitex.Core.RT.Routine; using Aitex.Core.RT.SCCore; using Aitex.Sorter.Common; using SicRT.Modules.Schedulers; using SicRT.Scheduler; -using MECF.Framework.Common.Equipment; using MECF.Framework.Common.Schedulers; -using MECF.Framework.Common.SubstrateTrackings; using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Buffers; namespace SicRT.Modules diff --git a/SicRT/Equipments/Schedulers/SchedulerAligner.cs b/SicRT/Equipments/Schedulers/SchedulerAligner.cs index 51ca9cf..e3787cc 100644 --- a/SicRT/Equipments/Schedulers/SchedulerAligner.cs +++ b/SicRT/Equipments/Schedulers/SchedulerAligner.cs @@ -1,8 +1,5 @@ using Aitex.Core.RT.Fsm; -using Aitex.Core.Util; using SicRT.Scheduler; -using MECF.Framework.Common.Equipment; -using MECF.Framework.Common.SubstrateTrackings; using SicRT.Equipments; using SicRT.Equipments.Systems; using Aitex.Core.RT.Device; diff --git a/SicRT/Equipments/Schedulers/SchedulerBuffer.cs b/SicRT/Equipments/Schedulers/SchedulerBuffer.cs index 73cd795..dde091d 100644 --- a/SicRT/Equipments/Schedulers/SchedulerBuffer.cs +++ b/SicRT/Equipments/Schedulers/SchedulerBuffer.cs @@ -1,8 +1,5 @@ using Aitex.Core.RT.Fsm; -using Aitex.Core.Util; using SicRT.Scheduler; -using MECF.Framework.Common.Equipment; -using MECF.Framework.Common.SubstrateTrackings; using SicRT.Equipments; using SicRT.Equipments.Systems; using Aitex.Core.RT.Device; diff --git a/SicRT/Equipments/Schedulers/SchedulerCassette.cs b/SicRT/Equipments/Schedulers/SchedulerCassette.cs index 51e45db..2412cb7 100644 --- a/SicRT/Equipments/Schedulers/SchedulerCassette.cs +++ b/SicRT/Equipments/Schedulers/SchedulerCassette.cs @@ -1,8 +1,4 @@ using System.Linq; -using Aitex.Core.RT.Event; -using Aitex.Core.Util; -using MECF.Framework.Common.Equipment; -using MECF.Framework.Common.SubstrateTrackings; using SicModules.Cassettes; using SicModules.PMs; using SicRT.Equipments.Systems; diff --git a/SicRT/Equipments/Schedulers/SchedulerDBCallback.cs b/SicRT/Equipments/Schedulers/SchedulerDBCallback.cs index fb81a0c..de1f054 100644 --- a/SicRT/Equipments/Schedulers/SchedulerDBCallback.cs +++ b/SicRT/Equipments/Schedulers/SchedulerDBCallback.cs @@ -5,9 +5,7 @@ using System.Text; using System.Threading.Tasks; using Aitex.Core.Common; using MECF.Framework.Common.DBCore; -using MECF.Framework.Common.Equipment; using MECF.Framework.Common.Jobs; -using MECF.Framework.Common.SubstrateTrackings; namespace SicRT.Equipments.Schedulers { diff --git a/SicRT/Equipments/Schedulers/SchedulerLoadLock.cs b/SicRT/Equipments/Schedulers/SchedulerLoadLock.cs index 56cb001..0633286 100644 --- a/SicRT/Equipments/Schedulers/SchedulerLoadLock.cs +++ b/SicRT/Equipments/Schedulers/SchedulerLoadLock.cs @@ -6,11 +6,8 @@ using System.Threading.Tasks; using Aitex.Core.Common; using Aitex.Core.RT.Device; using Aitex.Core.RT.Fsm; -using Aitex.Core.Util; using Aitex.Sorter.Common; -using MECF.Framework.Common.Equipment; using MECF.Framework.Common.Schedulers; -using MECF.Framework.Common.SubstrateTrackings; using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadLocks; using SicRT.Equipments; using SicRT.Equipments.Systems; diff --git a/SicRT/Equipments/Schedulers/SchedulerModule.cs b/SicRT/Equipments/Schedulers/SchedulerModule.cs index 370d371..291d342 100644 --- a/SicRT/Equipments/Schedulers/SchedulerModule.cs +++ b/SicRT/Equipments/Schedulers/SchedulerModule.cs @@ -1,11 +1,7 @@ using System.Collections.Generic; using Aitex.Core.Common; -using Aitex.Core.RT.Event; -using Aitex.Core.Util; using DocumentFormat.OpenXml.Wordprocessing; -using MECF.Framework.Common.Equipment; using MECF.Framework.Common.Schedulers; -using MECF.Framework.Common.SubstrateTrackings; namespace SicRT.Modules.Schedulers { diff --git a/SicRT/Equipments/Schedulers/SchedulerModuleFactory.cs b/SicRT/Equipments/Schedulers/SchedulerModuleFactory.cs index 125ca8a..46970b1 100644 --- a/SicRT/Equipments/Schedulers/SchedulerModuleFactory.cs +++ b/SicRT/Equipments/Schedulers/SchedulerModuleFactory.cs @@ -1,5 +1,4 @@ using SicRT.Scheduler; -using MECF.Framework.Common.Equipment; using System.Collections.Generic; using Aitex.Core.RT.SCCore; diff --git a/SicRT/Equipments/Schedulers/SchedulerPM.cs b/SicRT/Equipments/Schedulers/SchedulerPM.cs index ed1e3c0..48b4f3d 100644 --- a/SicRT/Equipments/Schedulers/SchedulerPM.cs +++ b/SicRT/Equipments/Schedulers/SchedulerPM.cs @@ -1,12 +1,9 @@ using Aitex.Core.Common; using Aitex.Core.RT.Fsm; using Aitex.Core.RT.SCCore; -using Aitex.Core.Util; using SicRT.Modules; using SicRT.Modules.Schedulers; -using MECF.Framework.Common.Equipment; using MECF.Framework.Common.Schedulers; -using MECF.Framework.Common.SubstrateTrackings; using SicRT.Equipments; using SicRT.Equipments.Systems; using Aitex.Core.RT.Device; diff --git a/SicRT/Equipments/Schedulers/SchedulerTMRobot.cs b/SicRT/Equipments/Schedulers/SchedulerTMRobot.cs index a4c515f..04caacb 100644 --- a/SicRT/Equipments/Schedulers/SchedulerTMRobot.cs +++ b/SicRT/Equipments/Schedulers/SchedulerTMRobot.cs @@ -3,12 +3,9 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; -using Aitex.Core.Util; using Aitex.Sorter.Common; using SicRT.Modules; using SicRT.Modules.Schedulers; -using MECF.Framework.Common.Equipment; -using MECF.Framework.Common.SubstrateTrackings; using SicRT.Equipments.Systems; using Aitex.Core.RT.Fsm; using SicModules.TMs; diff --git a/SicRT/Equipments/Schedulers/SchedulerTrayRobot.cs b/SicRT/Equipments/Schedulers/SchedulerTrayRobot.cs index e7f0c3f..4ddeb61 100644 --- a/SicRT/Equipments/Schedulers/SchedulerTrayRobot.cs +++ b/SicRT/Equipments/Schedulers/SchedulerTrayRobot.cs @@ -1,8 +1,5 @@ -using Aitex.Core.Util; -using Aitex.Sorter.Common; +using Aitex.Sorter.Common; using SicRT.Modules.Schedulers; -using MECF.Framework.Common.Equipment; -using MECF.Framework.Common.SubstrateTrackings; using SicModules.EFEMs; using SicRT.Equipments.Systems; diff --git a/SicRT/Equipments/Schedulers/SchedulerUnLoad.cs b/SicRT/Equipments/Schedulers/SchedulerUnLoad.cs index 342a17f..5a70aa9 100644 --- a/SicRT/Equipments/Schedulers/SchedulerUnLoad.cs +++ b/SicRT/Equipments/Schedulers/SchedulerUnLoad.cs @@ -2,15 +2,11 @@ using Aitex.Core.Common; using Aitex.Core.RT.Device; using Aitex.Core.RT.Fsm; -using Aitex.Core.Util; using Aitex.Sorter.Common; -using MECF.Framework.Common.Equipment; using MECF.Framework.Common.Schedulers; -using MECF.Framework.Common.SubstrateTrackings; using SicRT.Equipments.Systems; using SicRT.Modules.Schedulers; using System.Diagnostics; -using Aitex.Core.RT.Event; using SicModules.LLs; using SicModules.UnLoads; diff --git a/SicRT/Equipments/Schedulers/SchedulerWaferRobot.cs b/SicRT/Equipments/Schedulers/SchedulerWaferRobot.cs index 0071e60..b82e8eb 100644 --- a/SicRT/Equipments/Schedulers/SchedulerWaferRobot.cs +++ b/SicRT/Equipments/Schedulers/SchedulerWaferRobot.cs @@ -1,8 +1,5 @@ -using Aitex.Core.Util; -using Aitex.Sorter.Common; +using Aitex.Sorter.Common; using SicRT.Modules.Schedulers; -using MECF.Framework.Common.Equipment; -using MECF.Framework.Common.SubstrateTrackings; using SicModules.EFEMs; using SicRT.Equipments.Systems; diff --git a/SicRT/Equipments/Systems/EquipmentManager.cs b/SicRT/Equipments/Systems/EquipmentManager.cs index 017a4cf..135d32c 100644 --- a/SicRT/Equipments/Systems/EquipmentManager.cs +++ b/SicRT/Equipments/Systems/EquipmentManager.cs @@ -1,18 +1,11 @@ using System; using System.Collections.Generic; using Aitex.Core.Common; -using Aitex.Core.RT.DataCenter; using Aitex.Core.RT.Device; -using Aitex.Core.RT.Event; using Aitex.Core.RT.Fsm; -using Aitex.Core.RT.OperationCenter; using Aitex.Core.RT.Routine; -using Aitex.Core.Util; using Aitex.Core.Utilities; -using MECF.Framework.Common.Equipment; using MECF.Framework.Common.Fsm; -using MECF.Framework.Common.SubstrateTrackings; -using MECF.Framework.RT.Core.IoProviders; using SicRT.Instances; using SicRT.Modules; using System.Linq; @@ -30,9 +23,7 @@ using SicModules.LLs; using SicModules.PMs; using SicModules.TMs; using SicModules.UnLoads; -using Aitex.Core.RT.DBCore; using System.Diagnostics; -using Aitex.Core.RT.Log; using MECF.Framework.RT.EquipmentLibrary.Devices; namespace SicRT.Equipments.Systems diff --git a/SicRT/GlobalUsings.cs b/SicRT/GlobalUsings.cs new file mode 100644 index 0000000..99359ad --- /dev/null +++ b/SicRT/GlobalUsings.cs @@ -0,0 +1,24 @@ +// Global using directives + +global using Aitex.Common.Util; +global using Aitex.Core.RT.ConfigCenter; +global using Aitex.Core.RT.DataCenter; +global using Aitex.Core.RT.DataCollection; +global using Aitex.Core.RT.DBCore; +global using Aitex.Core.RT.Event; +global using Aitex.Core.RT.Log; +global using Aitex.Core.RT.OperationCenter; +global using Aitex.Core.RT.RecipeCenter; +global using Aitex.Core.Util; +global using Aitex.Core.WCF; +global using MECF.Framework.Common.Account; +global using MECF.Framework.Common.Communications; +global using MECF.Framework.Common.Equipment; +global using MECF.Framework.Common.IOCore; +global using MECF.Framework.Common.SCCore; +global using MECF.Framework.Common.SubstrateTrackings; +global using MECF.Framework.RT.Core.Applications; +global using MECF.Framework.RT.Core.Backend; +global using MECF.Framework.RT.Core.IoProviders; +global using SicModules.PMs.RecipeExecutions; +global using SorterRT.Modules; \ No newline at end of file diff --git a/SicRT/Instances/App.xaml.cs b/SicRT/Instances/App.xaml.cs index 0a4f1df..89c6d88 100644 --- a/SicRT/Instances/App.xaml.cs +++ b/SicRT/Instances/App.xaml.cs @@ -1,6 +1,4 @@ using System.Windows; -using MECF.Framework.RT.Core.Applications; -using SorterRT.Modules; namespace SicRT.Instances { diff --git a/SicRT/Instances/RtInstance.cs b/SicRT/Instances/RtInstance.cs index 72726ef..e0353c4 100644 --- a/SicRT/Instances/RtInstance.cs +++ b/SicRT/Instances/RtInstance.cs @@ -3,7 +3,6 @@ using System.Reflection; using System.Windows.Media; using System.Windows.Media.Imaging; using SicRT.Instances; -using MECF.Framework.RT.Core.Applications; namespace SorterRT.Modules { diff --git a/SicRT/Instances/ToolLoader.cs b/SicRT/Instances/ToolLoader.cs index cce968c..7aeba94 100644 --- a/SicRT/Instances/ToolLoader.cs +++ b/SicRT/Instances/ToolLoader.cs @@ -1,26 +1,4 @@ -using Aitex.Common.Util; -using Aitex.Core.RT.ConfigCenter; -using Aitex.Core.RT.DataCenter; -using Aitex.Core.RT.DataCollection; -using Aitex.Core.RT.DBCore; -using Aitex.Core.RT.Event; -using Aitex.Core.RT.Log; -using Aitex.Core.RT.OperationCenter; -using Aitex.Core.RT.RecipeCenter; -using Aitex.Core.Util; -using Aitex.Core.WCF; -using MECF.Framework.Common.Account; -using MECF.Framework.Common.Communications; -using MECF.Framework.Common.Equipment; -using MECF.Framework.Common.IOCore; -using MECF.Framework.Common.SCCore; -using MECF.Framework.Common.SubstrateTrackings; -using MECF.Framework.RT.Core.Applications; -using MECF.Framework.RT.Core.Backend; -using MECF.Framework.RT.Core.IoProviders; -using SicModules.PMs.RecipeExecutions; -using SorterRT.Modules; -using SicRT.Equipments.Systems; +using SicRT.Equipments.Systems; using MECF.Framework.UI.Client.TrayThickness.HistoryData; namespace SicRT.Instances diff --git a/SicRT/SicRT.csproj b/SicRT/SicRT.csproj index b32b88c..090d118 100644 --- a/SicRT/SicRT.csproj +++ b/SicRT/SicRT.csproj @@ -143,6 +143,7 @@ + MSBuild:Compile diff --git a/SicUI/Bootstrapper.cs b/SicUI/Bootstrapper.cs index bcf2e04..c713f49 100644 --- a/SicUI/Bootstrapper.cs +++ b/SicUI/Bootstrapper.cs @@ -11,8 +11,6 @@ using System.Text.RegularExpressions; using System.Threading; using System.Windows; using System.Xml.Linq; -using Aitex.Core.RT.Log; -using Aitex.Core.Util; using Aitex.Core.WCF; using CommandLine; using MECF.Framework.UI.Client.ClientBase; diff --git a/SicUI/Config/Menu.xml b/SicUI/Config/Menu.xml index b94b621..25b32fb 100644 --- a/SicUI/Config/Menu.xml +++ b/SicUI/Config/Menu.xml @@ -43,7 +43,7 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/SicUI/Controls/AITPump.xaml.cs b/SicUI/Controls/AITPump.xaml.cs index c0ff57e..17211d6 100644 --- a/SicUI/Controls/AITPump.xaml.cs +++ b/SicUI/Controls/AITPump.xaml.cs @@ -1,5 +1,4 @@ using Aitex.Core.Common.DeviceData; -using MECF.Framework.Common.OperationCenter; using System; using System.Windows; using System.Windows.Controls; diff --git a/SicUI/Controls/AnalogControl.xaml.cs b/SicUI/Controls/AnalogControl.xaml.cs index e5b9bfc..5b1f147 100644 --- a/SicUI/Controls/AnalogControl.xaml.cs +++ b/SicUI/Controls/AnalogControl.xaml.cs @@ -1,6 +1,5 @@ using Aitex.Core.Common.DeviceData; using Aitex.Core.UI.ControlDataContext; -using MECF.Framework.Common.OperationCenter; using System; using System.Collections.Generic; using System.Linq; diff --git a/SicUI/Controls/AnalogControl2.xaml.cs b/SicUI/Controls/AnalogControl2.xaml.cs index 2bd3879..da5b78d 100644 --- a/SicUI/Controls/AnalogControl2.xaml.cs +++ b/SicUI/Controls/AnalogControl2.xaml.cs @@ -1,7 +1,6 @@ using Aitex.Core.Common.DeviceData; using Aitex.Core.UI.ControlDataContext; using Caliburn.Micro; -using MECF.Framework.Common.OperationCenter; using MECF.Framework.UI.Client.Ctrlib.UnitControls; using System; using System.Collections.Generic; diff --git a/SicUI/Controls/Common/ViewModelControl.cs b/SicUI/Controls/Common/ViewModelControl.cs index ea1550d..0da5de0 100644 --- a/SicUI/Controls/Common/ViewModelControl.cs +++ b/SicUI/Controls/Common/ViewModelControl.cs @@ -6,8 +6,6 @@ using System.Text; using System.Windows.Controls; using System.Windows.Input; using Aitex.Core.UI.MVVM; -using Aitex.Core.Util; -using Aitex.Core.Utilities; namespace SicUI.Controls.Common { diff --git a/SicUI/Controls/InputDialogBox.xaml.cs b/SicUI/Controls/InputDialogBox.xaml.cs index 142b2fd..7974005 100644 --- a/SicUI/Controls/InputDialogBox.xaml.cs +++ b/SicUI/Controls/InputDialogBox.xaml.cs @@ -1,5 +1,4 @@ -using Aitex.Core.RT.Log; -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Text; diff --git a/SicUI/Controls/Mainframe/Wafer.xaml.cs b/SicUI/Controls/Mainframe/Wafer.xaml.cs index 3ecec4c..cf762f4 100644 --- a/SicUI/Controls/Mainframe/Wafer.xaml.cs +++ b/SicUI/Controls/Mainframe/Wafer.xaml.cs @@ -1,6 +1,5 @@ using Aitex.Core.UI.MVVM; using MECF.Framework.Common.Equipment; -using MECF.Framework.Common.OperationCenter; using System.Windows; using System.Windows.Controls; using System.Windows.Input; diff --git a/SicUI/Controls/SlitDoor.xaml.cs b/SicUI/Controls/SlitDoor.xaml.cs index d9c16a4..5429a1e 100644 --- a/SicUI/Controls/SlitDoor.xaml.cs +++ b/SicUI/Controls/SlitDoor.xaml.cs @@ -1,5 +1,4 @@ using Aitex.Core.Common.DeviceData; -using MECF.Framework.Common.OperationCenter; using System; using System.Collections.Generic; using System.Linq; diff --git a/SicUI/Controls/Tray.xaml.cs b/SicUI/Controls/Tray.xaml.cs index b824c60..babf3e8 100644 --- a/SicUI/Controls/Tray.xaml.cs +++ b/SicUI/Controls/Tray.xaml.cs @@ -1,5 +1,4 @@ -using MECF.Framework.Common.OperationCenter; -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Text; diff --git a/SicUI/Controls/ValveBig.xaml.cs b/SicUI/Controls/ValveBig.xaml.cs index 7a90a52..d64d7f2 100644 --- a/SicUI/Controls/ValveBig.xaml.cs +++ b/SicUI/Controls/ValveBig.xaml.cs @@ -1,7 +1,5 @@ using Aitex.Core.Common.DeviceData; -using Aitex.Core.RT.Log; using Aitex.Core.UI.Control; -using Aitex.Core.Util; using System; using System.Collections.Generic; using System.Linq; diff --git a/SicUI/GlobalUsings.cs b/SicUI/GlobalUsings.cs new file mode 100644 index 0000000..b188ec2 --- /dev/null +++ b/SicUI/GlobalUsings.cs @@ -0,0 +1,9 @@ +// Global using directives + +global using Aitex.Core.RT.Event; +global using Aitex.Core.RT.Log; +global using Aitex.Core.UI.View.Common; +global using Aitex.Core.Util; +global using Aitex.Core.Utilities; +global using MECF.Framework.Common.OperationCenter; +global using MECF.Framework.UI.Client; \ No newline at end of file diff --git a/SicUI/MainViewModel.cs b/SicUI/MainViewModel.cs index d847f01..cc3225e 100644 --- a/SicUI/MainViewModel.cs +++ b/SicUI/MainViewModel.cs @@ -1,13 +1,9 @@ using Aitex.Core.Account; using Aitex.Core.Common.DeviceData; -using Aitex.Core.RT.Event; -using Aitex.Core.RT.Log; -using Aitex.Core.Util; using Aitex.Core.WCF; using Caliburn.Micro; using MECF.Framework.Common.Account.Extends; using MECF.Framework.Common.DataCenter; -using MECF.Framework.Common.OperationCenter; using MECF.Framework.UI.Client.CenterViews.LogOnOff; using MECF.Framework.UI.Client.ClientBase; using MECF.Framework.UI.Core.Accounts; diff --git a/SicUI/Models/LocalUIViewModelBase.cs b/SicUI/Models/LocalUIViewModelBase.cs index 2f54601..4616120 100644 --- a/SicUI/Models/LocalUIViewModelBase.cs +++ b/SicUI/Models/LocalUIViewModelBase.cs @@ -1,216 +1,11 @@ using System; using System.Windows; -using Aitex.Core.RT.Log; -using Aitex.Core.Util; using Caliburn.Micro; -using MECF.Framework.Common.OperationCenter; using MECF.Framework.UI.Client.ClientBase; using OpenSEMI.Ctrlib.Controls; namespace SicUI.Models { - public class SicModuleUIViewModelBase : UiViewModelBase - { - public override void SubscribeKeys() - { - SubscribeKeys(this); - } - - public ModuleInfo CassAL - { - get - { - if (ModuleManager.ModuleInfos["CassAL"].WaferManager.Wafers.Count > 0) - return ModuleManager.ModuleInfos["CassAL"]; - return null; - } - } - public ModuleInfo CassAR - { - get - { - if (ModuleManager.ModuleInfos["CassAR"].WaferManager.Wafers.Count > 0) - return ModuleManager.ModuleInfos["CassAR"]; - return null; - } - } - public ModuleInfo CassBL - { - get - { - if (ModuleManager.ModuleInfos["CassBL"].WaferManager.Wafers.Count > 0) - return ModuleManager.ModuleInfos["CassBL"]; - return null; - } - } - - public ModuleInfo Buffer - { - get - { - if (ModuleManager.ModuleInfos["Buffer"].WaferManager.Wafers.Count > 0) - return ModuleManager.ModuleInfos["Buffer"]; - return null; - } - } - - - public ModuleInfo Aligner { get; set; } - public ModuleInfo TMRobot { get; set; } - public ModuleInfo WaferRobot { get; set; } - public ModuleInfo TrayRobot { get; set; } - public ModuleInfo LoadLock { get; set; } - public ModuleInfo UnLoad { get; set; } - public ModuleInfo PM1 { get; set; } - public ModuleInfo PM2 { get; set; } - - - #region Wafer info for machine - - - public WaferInfo BufferWafer - { - get - { - if (ModuleManager.ModuleInfos["Buffer"].WaferManager.Wafers.Count > 0) - return ModuleManager.ModuleInfos["Buffer"].WaferManager.Wafers[0]; - return null; - } - } - - public WaferInfo PM1Wafer - { - get - { - if (ModuleManager.ModuleInfos["PM1"].WaferManager.Wafers.Count > 0) - return ModuleManager.ModuleInfos["PM1"].WaferManager.Wafers[0]; - return null; - } - } - public WaferInfo PM2Wafer - { - get - { - if (ModuleManager.ModuleInfos["PM2"].WaferManager.Wafers.Count > 0) - return ModuleManager.ModuleInfos["PM2"].WaferManager.Wafers[0]; - return null; - } - } - - public WaferInfo Wafer1 - { - get - { - if (ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers.Count > 0) - return ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0]; - return null; - } - } - public WaferInfo TrayRobotWafer - { - get - { - if (ModuleManager.ModuleInfos["TrayRobot"].WaferManager.Wafers.Count > 0) - return ModuleManager.ModuleInfos["TrayRobot"].WaferManager.Wafers[0]; - return null; - } - } - public WaferInfo WaferRobotWafer - { - get - { - if (ModuleManager.ModuleInfos["WaferRobot"].WaferManager.Wafers.Count > 0) - return ModuleManager.ModuleInfos["WaferRobot"].WaferManager.Wafers[0]; - return null; - } - } - - #endregion - - #region Tray Visble - public Visibility TrayRobotHaveTray - { - get - { - if (ModuleManager.ModuleInfos["TrayRobot"].WaferManager.Wafers.Count > 0 && ModuleManager.ModuleInfos["TrayRobot"].WaferManager.Wafers[0].WaferTrayStatus > 0) - { - return Visibility.Visible; - } - return Visibility.Hidden; - } - } - - public Visibility TMRobotHaveTray - { - get - { - if (ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers.Count > 0 && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0].WaferTrayStatus > 0) - { - return Visibility.Visible; - } - return Visibility.Hidden; - } - } - - public Visibility LoadLockHaveTray - { - get - { - if (ModuleManager.ModuleInfos["LoadLock"].WaferManager.Wafers.Count > 0 && ModuleManager.ModuleInfos["LoadLock"].WaferManager.Wafers[0].WaferTrayStatus > 0) - { - return Visibility.Visible; - } - return Visibility.Hidden; - } - } - - public Visibility UnLoadHaveTray - { - get - { - if (ModuleManager.ModuleInfos["UnLoad"].WaferManager.Wafers.Count > 0 && ModuleManager.ModuleInfos["UnLoad"].WaferManager.Wafers[0].WaferTrayStatus > 0) - { - return Visibility.Visible; - } - return Visibility.Hidden; - } - } - - public Visibility PM1HaveTray - { - get - { - if (ModuleManager.ModuleInfos["PM1"].WaferManager.Wafers.Count > 0 && ModuleManager.ModuleInfos["PM1"].WaferManager.Wafers[0].WaferTrayStatus > 0) - { - return Visibility.Visible; - } - return Visibility.Hidden; - } - } - - public Visibility PM2HaveTray - { - get - { - if (ModuleManager.ModuleInfos["PM2"].WaferManager.Wafers.Count > 0 && ModuleManager.ModuleInfos["PM2"].WaferManager.Wafers[0].WaferTrayStatus > 0) - { - return Visibility.Visible; - } - return Visibility.Hidden; - } - } - #endregion - - - protected void InitPM() - { - TMRobot = ModuleManager.ModuleInfos["TMRobot"]; - PM1 = ModuleManager.ModuleInfos["PM1"]; - PM2 = ModuleManager.ModuleInfos["PM2"]; - } - - } - public class SicUIViewModelBase : UiViewModelBase { public ModuleInfo CassAL diff --git a/SicUI/Models/Maintenances/LeakCheck/TMLeakCheckViewModel.cs b/SicUI/Models/Maintenances/LeakCheck/TMLeakCheckViewModel.cs index 35a3e8e..0e8497e 100644 --- a/SicUI/Models/Maintenances/LeakCheck/TMLeakCheckViewModel.cs +++ b/SicUI/Models/Maintenances/LeakCheck/TMLeakCheckViewModel.cs @@ -2,11 +2,9 @@ using System.Collections.ObjectModel; using System.Data; using System.Windows; -using Aitex.Core.RT.Log; using SicUI.Models; using MECF.Framework.Common.CommonData; using MECF.Framework.Common.DataCenter; -using MECF.Framework.Common.OperationCenter; using MECF.Framework.Common.Equipment; namespace SicUI.Client.Models.Platform.LeakCheck diff --git a/SicUI/Models/Maintenances/TM/DeviceViewModel.cs b/SicUI/Models/Maintenances/TM/DeviceViewModel.cs index c350762..ad4d89d 100644 --- a/SicUI/Models/Maintenances/TM/DeviceViewModel.cs +++ b/SicUI/Models/Maintenances/TM/DeviceViewModel.cs @@ -1,16 +1,12 @@ using Aitex.Core.RT.DataCenter; using Aitex.Core.RT.SCCore; -using Aitex.Core.Util; using MECF.Framework.Common.DataCenter; -using MECF.Framework.Common.OperationCenter; using SicUI.Models; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; -using Aitex.Core.RT.Event; - using System.Threading; using Aitex.Core.Common.DeviceData; diff --git a/SicUI/Models/Maintenances/TM/EFEMViewModel.cs b/SicUI/Models/Maintenances/TM/EFEMViewModel.cs index 3eba011..a0f9439 100644 --- a/SicUI/Models/Maintenances/TM/EFEMViewModel.cs +++ b/SicUI/Models/Maintenances/TM/EFEMViewModel.cs @@ -1,8 +1,6 @@ using Aitex.Core.Common.DeviceData; -using Aitex.Core.Util; using Aitex.Sorter.Common; using MECF.Framework.Common.CommonData; -using MECF.Framework.Common.OperationCenter; using SicUI.Models; using System; using System.Collections.Generic; diff --git a/SicUI/Models/Maintenances/TM/TMProvider.cs b/SicUI/Models/Maintenances/TM/TMProvider.cs index dd9b380..14ba7dc 100644 --- a/SicUI/Models/Maintenances/TM/TMProvider.cs +++ b/SicUI/Models/Maintenances/TM/TMProvider.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; -using MECF.Framework.Common.OperationCenter; using OpenSEMI.ClientBase.ServiceProvider; namespace SicUI.Client.Models.Platform.TM diff --git a/SicUI/Models/Maintenances/TM/TMViewModel.cs b/SicUI/Models/Maintenances/TM/TMViewModel.cs index a03fa92..b4d3583 100644 --- a/SicUI/Models/Maintenances/TM/TMViewModel.cs +++ b/SicUI/Models/Maintenances/TM/TMViewModel.cs @@ -1,19 +1,16 @@ using System.Collections.Generic; using System.Windows; using Aitex.Core.Common.DeviceData; -using Aitex.Core.Util; using Aitex.Sorter.Common; using SicUI.Models; using MECF.Framework.Common.CommonData; using MECF.Framework.Common.DataCenter; -using MECF.Framework.Common.OperationCenter; using Caliburn.Micro; using System.Windows.Input; using Aitex.Core.UI.MVVM; using OpenSEMI.ClientBase; using MECF.Framework.UI.Client.ClientBase; using Aitex.Core.RT.SCCore; -using Aitex.Core.RT.Event; using Aitex.Core.RT.DataCenter; using MECF.Framework.Common.DBCore; using System; diff --git a/SicUI/Models/Operations/Overviews/OverViewViewModel.cs b/SicUI/Models/Operations/Overviews/OverViewViewModel.cs index 345bba6..fcccba5 100644 --- a/SicUI/Models/Operations/Overviews/OverViewViewModel.cs +++ b/SicUI/Models/Operations/Overviews/OverViewViewModel.cs @@ -1,8 +1,6 @@ -using Aitex.Core.Util; -using Aitex.Sorter.Common; +using Aitex.Sorter.Common; using MECF.Framework.Common.CommonData; using MECF.Framework.Common.DataCenter; -using MECF.Framework.Common.OperationCenter; using MECF.Framework.Common.RecipeCenter; using System.Collections.Generic; using System.Collections.ObjectModel; diff --git a/SicUI/Models/PMs/Charting/ChartDataLineX.cs b/SicUI/Models/PMs/Charting/ChartDataLineX.cs index b6abe34..b65fd40 100644 --- a/SicUI/Models/PMs/Charting/ChartDataLineX.cs +++ b/SicUI/Models/PMs/Charting/ChartDataLineX.cs @@ -4,7 +4,6 @@ using System.Linq; using System.ComponentModel; using SciChart.Charting.Model.DataSeries; using SciChart.Charting.Visuals.RenderableSeries; -using Aitex.Core.Util; using System.Windows.Media; using System.Threading.Tasks; using SciChart.Charting.Visuals.Annotations; diff --git a/SicUI/Models/PMs/Charting/ChartingSelectDataViewModel.cs b/SicUI/Models/PMs/Charting/ChartingSelectDataViewModel.cs index cf3d624..85a2a85 100644 --- a/SicUI/Models/PMs/Charting/ChartingSelectDataViewModel.cs +++ b/SicUI/Models/PMs/Charting/ChartingSelectDataViewModel.cs @@ -1,5 +1,4 @@ -using Aitex.Core.RT.Log; -using MECF.Framework.Common.DataCenter; +using MECF.Framework.Common.DataCenter; using MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory; using MECF.Framework.UI.Client.ClientBase; using System; diff --git a/SicUI/Models/PMs/Charting/ChartingTemplateViewModel.cs b/SicUI/Models/PMs/Charting/ChartingTemplateViewModel.cs index 90bc0d0..f7ed220 100644 --- a/SicUI/Models/PMs/Charting/ChartingTemplateViewModel.cs +++ b/SicUI/Models/PMs/Charting/ChartingTemplateViewModel.cs @@ -1,14 +1,10 @@ using Aitex.Common.Util; using MECF.Framework.UI.Client.ClientBase; -using SciChart.Charting.Visuals.RenderableSeries; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Linq; -using System.Runtime.Serialization.Formatters.Binary; -using System.Text; -using System.Threading.Tasks; namespace SicUI.Models.PMs.Charting { diff --git a/SicUI/Models/PMs/Charting/PMChartingViewModel.cs b/SicUI/Models/PMs/Charting/PMChartingViewModel.cs index d06af3c..f239ed5 100644 --- a/SicUI/Models/PMs/Charting/PMChartingViewModel.cs +++ b/SicUI/Models/PMs/Charting/PMChartingViewModel.cs @@ -1,7 +1,4 @@ -using Aitex.Core.RT.Log; -using Aitex.Core.UI.ControlDataContext; -using Aitex.Core.Util; -using Aitex.Core.Utilities; +using Aitex.Core.UI.ControlDataContext; using Caliburn.Micro.Core; using MECF.Framework.Common.ControlDataContext; using MECF.Framework.Common.DataCenter; diff --git a/SicUI/Models/PMs/PMAlarmView.xaml.cs b/SicUI/Models/PMs/PMAlarmView.xaml.cs index 6317ca5..c1f750c 100644 --- a/SicUI/Models/PMs/PMAlarmView.xaml.cs +++ b/SicUI/Models/PMs/PMAlarmView.xaml.cs @@ -1,5 +1,4 @@ -using Aitex.Core.UI.View.Common; -using System.Windows.Controls; +using System.Windows.Controls; using AlarmInfoUi = Aitex.Core.UI.View.Common.AlarmItem; namespace SicUI.Models.PMs diff --git a/SicUI/Models/PMs/PMAlarmViewModel.cs b/SicUI/Models/PMs/PMAlarmViewModel.cs index 127cf00..8d5078f 100644 --- a/SicUI/Models/PMs/PMAlarmViewModel.cs +++ b/SicUI/Models/PMs/PMAlarmViewModel.cs @@ -1,9 +1,5 @@ using System.Collections.Generic; -using Aitex.Core.Utilities; -using Aitex.Core.UI.View.Common; -using System.Windows.Media; using MECF.Framework.UI.Client.ClientBase; -using Aitex.Core.RT.Event; using System.Linq; using AlarmInfoUi = Aitex.Core.UI.View.Common.AlarmItem; diff --git a/SicUI/Models/PMs/PMCommMonitorViewModel.cs b/SicUI/Models/PMs/PMCommMonitorViewModel.cs index 9b9940b..de176d4 100644 --- a/SicUI/Models/PMs/PMCommMonitorViewModel.cs +++ b/SicUI/Models/PMs/PMCommMonitorViewModel.cs @@ -1,6 +1,4 @@ using Aitex.Core.Common.DeviceData; -using Aitex.Core.Util; -using MECF.Framework.Common.OperationCenter; using MECF.Framework.UI.Client.ClientBase; using System; using System.Collections.Generic; diff --git a/SicUI/Models/PMs/PMHeaterViewModel.cs b/SicUI/Models/PMs/PMHeaterViewModel.cs index 4d72dc6..7332602 100644 --- a/SicUI/Models/PMs/PMHeaterViewModel.cs +++ b/SicUI/Models/PMs/PMHeaterViewModel.cs @@ -1,6 +1,4 @@ -using Aitex.Core.Util; -using MECF.Framework.Common.DataCenter; -using MECF.Framework.Common.OperationCenter; +using MECF.Framework.Common.DataCenter; using MECF.Framework.UI.Client.ClientBase; using System; using System.Collections.Generic; @@ -8,8 +6,6 @@ using System.Threading; using System.Threading.Tasks; using System.Windows; using System.Windows.Media; - -using Aitex.Core.RT.Event; using Timer = System.Timers.Timer; namespace SicUI.Models.PMs diff --git a/SicUI/Models/PMs/PMLeakCheckViewModel.cs b/SicUI/Models/PMs/PMLeakCheckViewModel.cs index 57f424d..7b7729d 100644 --- a/SicUI/Models/PMs/PMLeakCheckViewModel.cs +++ b/SicUI/Models/PMs/PMLeakCheckViewModel.cs @@ -5,14 +5,11 @@ using System.Data; using System.Linq; using System.Windows; using Aitex.Core.Common.DeviceData; -using Aitex.Core.RT.Log; -using Aitex.Core.Util; using Aitex.Sorter.Common; using Caliburn.Micro.Core; using MECF.Framework.Common.CommonData; using MECF.Framework.Common.DataCenter; using MECF.Framework.Common.Equipment; -using MECF.Framework.Common.OperationCenter; using MECF.Framework.UI.Client.ClientBase; using OpenSEMI.ClientBase; using SciChart.Core.Extensions; diff --git a/SicUI/Models/PMs/PMLinkedDeviceViewModel.cs b/SicUI/Models/PMs/PMLinkedDeviceViewModel.cs index 5415d2f..0e8210c 100644 --- a/SicUI/Models/PMs/PMLinkedDeviceViewModel.cs +++ b/SicUI/Models/PMs/PMLinkedDeviceViewModel.cs @@ -1,6 +1,4 @@ using Aitex.Core.Common.DeviceData; -using Aitex.Core.Util; -using MECF.Framework.Common.OperationCenter; using MECF.Framework.UI.Client.ClientBase; using System; using System.Collections.Generic; diff --git a/SicUI/Models/PMs/PMMfcDynamicFlowViewModel.cs b/SicUI/Models/PMs/PMMfcDynamicFlowViewModel.cs index cf3e305..51f4185 100644 --- a/SicUI/Models/PMs/PMMfcDynamicFlowViewModel.cs +++ b/SicUI/Models/PMs/PMMfcDynamicFlowViewModel.cs @@ -1,5 +1,4 @@ using MECF.Framework.Common.DataCenter; -using MECF.Framework.Common.OperationCenter; using MECF.Framework.UI.Client.ClientBase; using System; using System.Collections.Generic; diff --git a/SicUI/Models/PMs/PMMfcRorView.xaml b/SicUI/Models/PMs/PMMfcRorView.xaml index 9aad6e8..681c8bd 100644 --- a/SicUI/Models/PMs/PMMfcRorView.xaml +++ b/SicUI/Models/PMs/PMMfcRorView.xaml @@ -58,7 +58,7 @@ - + @@ -223,6 +223,9 @@ + + + @@ -240,6 +243,9 @@ + + + : Queue, INotifyCollectionChanged - { - public event NotifyCollectionChangedEventHandler CollectionChanged; - - private readonly object _syncRoot = new object(); - - #region Constructors - - public ObservableQueue() - { - LimitSize = 0; - } - - public ObservableQueue(int capacity) : base(capacity) - { - LimitSize = capacity; - } - - - #endregion - - #region Properties - - public int LimitSize { get; } - - public new virtual void Enqueue(T obj) - { - lock (_syncRoot) - { - base.Enqueue(obj); - - if (LimitSize > 0 && base.Count > LimitSize) - base.Dequeue(); - - CollectionChanged?.Invoke(this, - new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, obj)); - } - } - - public new virtual T Dequeue() - { - lock (_syncRoot) - { - var obj = base.Dequeue(); - CollectionChanged?.Invoke(this, - new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, obj)); - return obj; - } - } - - - public new virtual void Clear() - { - lock (_syncRoot) - { - base.Clear(); - CollectionChanged?.Invoke(this, - new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); - - } - } - - #endregion - } - - public class GasFlowCounter : BindableBase - { - #region Variables - - #endregion - - #region Constructors - - public GasFlowCounter(string gasName) - { - GasName = gasName; - TotalFlow = 0; - } - - public GasFlowCounter(string gasName, double initValue) : this(gasName) - { - TotalFlow = initValue; - } - - #endregion - - #region Properties - - public string GasName { get; } - - public double TotalFlow { get; private set; } - - #endregion - - #region Methods - - public void AddFlow(double increment) - { - TotalFlow += increment; - } - - public override string ToString() - { - return $"{TotalFlow:F1}"; - } - - #endregion - } - - public class PmGasFlowCountInfo : BindableBase - { - #region Variables - - private DateTime _statStart; - private DateTime? _statEnd; - - - #endregion - - #region Constructors - - public PmGasFlowCountInfo(int index, Guid uid, string recipeName, string waferUid, DateTime beginTime, DateTime endTime, double h2, - double ar, - double pn2, double hcl, double sih4, double cxhx, double tcs, double tma) - { - Index = index; - StatisticsUid = uid; - RecipeName = recipeName; - WaferId = waferUid; - StatisticsStart = beginTime; - StatisticsEnd = endTime; - H2 = new GasFlowCounter(nameof(H2), h2); - Ar = new GasFlowCounter(nameof(Ar), ar); - PN2 = new GasFlowCounter(nameof(PN2), pn2); - HCL = new GasFlowCounter(nameof(HCL), hcl); - SiH4 = new GasFlowCounter(nameof(SiH4), sih4); - CxHx = new GasFlowCounter(nameof(CxHx), cxhx); - TCS = new GasFlowCounter(nameof(TCS), tcs); - TMA = new GasFlowCounter(nameof(TMA), tma); - - - } - - public PmGasFlowCountInfo() - { - StatisticsUid = Guid.NewGuid(); - WaferId = string.Empty; - RecipeName = string.Empty; - StatisticsStart = DateTime.Now; - - H2 = new GasFlowCounter(nameof(H2)); - Ar = new GasFlowCounter(nameof(Ar)); - PN2 = new GasFlowCounter(nameof(PN2)); - HCL = new GasFlowCounter(nameof(HCL)); - SiH4 = new GasFlowCounter(nameof(SiH4)); - CxHx = new GasFlowCounter(nameof(CxHx)); - TCS = new GasFlowCounter(nameof(TCS)); - TMA = new GasFlowCounter(nameof(TMA)); - } - - public PmGasFlowCountInfo(string waferId) : this() - { - WaferId = waferId; - } - - #endregion - - #region Properties - - public int Index { get; set; } - - public string WaferId { get; } - - public string RecipeName { get; } - - public Guid StatisticsUid { get; } - - public DateTime StatisticsStart - { - get => _statStart; - set => Set(ref _statStart, value); - } - - public DateTime? StatisticsEnd - { - get => _statEnd; - set => Set(ref _statEnd, value); - } - - public GasFlowCounter H2 { get; } - - public GasFlowCounter Ar { get; } - - public GasFlowCounter PN2 { get; } - - public GasFlowCounter HCL { get; } - - public GasFlowCounter SiH4 { get; } - - public GasFlowCounter CxHx { get; } - - public GasFlowCounter TCS { get; } - - public GasFlowCounter TMA { get; } - - #endregion - } - - public class PMProcessGasFlowCounterViewModel : UiViewModelBase - { - #region Variables - - private const int MAX_ROWS = 10; - - private readonly object _syncObject = new object(); - - private readonly PMProcessViewModel _pmProcessVm; - private string _previousStatus; - - -#if FAKE_DATA - - private readonly Random _randomFlow; - -#endif - - #endregion - - #region Constructors - - public PMProcessGasFlowCounterViewModel(PMProcessViewModel vm) - { - _previousStatus = PMModule.STATE.Init.ToString(); - _pmProcessVm = vm; - GasFlowCountCollection = new ObservableQueue(MAX_ROWS); - GasFlowCountCollection.CollectionChanged += GasFlowCountCollectionOnCollectionChanged; - vm.PropertyChanged += VmOnPropertyChanged; - - // 加载历史记录。 - ReadLastFlowCounts(); - -#if FAKE_DATA - - _randomFlow = new Random(); - - //for (var i = 0; i < 10; i++) - //{ - // var counter = new PmGasFlowCountInfo(); - // counter.H2.AddFlow(_randomFlow.NextDouble()); - // counter.Ar.AddFlow(_randomFlow.NextDouble()); - // counter.PN2.AddFlow(_randomFlow.NextDouble()); - // counter.HCL.AddFlow(_randomFlow.NextDouble()); - // counter.SiH4.AddFlow(_randomFlow.NextDouble()); - // counter.C3H8.AddFlow(_randomFlow.NextDouble()); - // counter.TCS.AddFlow(_randomFlow.NextDouble()); - // counter.TMA.AddFlow(_randomFlow.NextDouble()); - // counter.StatisticsEnd = DateTime.Now; - - // GasFlowCountCollection.Enqueue(counter); - - // CurrentFlowCounter = counter; - //} - - // Add new Flow Counter every 5s - Task.Run(() => - { - while (true) - { - Thread.Sleep(5000); - if (CurrentFlowCounter != null) - { - // 结束当前的统计,随后开启新统计 - CurrentFlowCounter.StatisticsEnd = DateTime.Now; - SaveFlowCount(CurrentFlowCounter); - } - - var counter = new PmGasFlowCountInfo(); - GasFlowCountCollection.Enqueue(counter); - CurrentFlowCounter = counter; - } - }); - -#endif - - } - - #endregion - - #region Properties - - public ObservableQueue GasFlowCountCollection { get; } - - public PmGasFlowCountInfo CurrentFlowCounter { get; private set; } - - public ICollectionView GasFlowDetailList - { - get - { - var view = CollectionViewSource.GetDefaultView(GasFlowCountCollection.ToList()); - view.SortDescriptions.Add(new SortDescription(nameof(PmGasFlowCountInfo.Index), - ListSortDirection.Ascending)); - return view; - } - } - - #endregion - - #region Methods - - private void GasFlowCountCollectionOnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) - { - // 列表发生变化时重新排序。 - if (e.Action == NotifyCollectionChangedAction.Add) - { - var i = 1; - GasFlowCountCollection.ToList().OrderByDescending(x => x.StatisticsStart).ToList().ForEach(x => - { - x.Index = i; - i++; - }); - } - } - - - /// - /// 监测Process的Status属性是否变化,以确定Process的开始和结束时机。 - /// - /// - /// - private void VmOnPropertyChanged(object sender, PropertyChangedEventArgs e) - { - if (e.PropertyName == nameof(PMOperationViewModel.Status)) - { - var currentStatus = _pmProcessVm.Status; - - if (CheckIfProcessStarted(_previousStatus, currentStatus)) - { - // Process启动 - - lock (_syncObject) - { - CurrentFlowCounter = new PmGasFlowCountInfo(); - GasFlowCountCollection.Enqueue(CurrentFlowCounter); - } - - } - else if (CheckIfProcessStopped(_previousStatus, currentStatus)) - { - lock (_syncObject) - { - // Process结束 - if (CurrentFlowCounter != null) - { - CurrentFlowCounter.StatisticsEnd = DateTime.Now; - - // 写数据库 - SaveFlowCount(CurrentFlowCounter); - - } - } - } - - Debug.WriteLineIf(_previousStatus != currentStatus, - $"PM Process Status: {_previousStatus} to {currentStatus}"); - - _previousStatus = currentStatus; - } - } - - private bool CheckIfProcessStarted(string previousStatus, string currentStatus) - { - if (previousStatus == PMModule.STATE.ProcessIdle.ToString() && - currentStatus == PMModule.STATE.PreProcess.ToString()) - - return true; - - return false; - } - - private bool CheckIfProcessStopped(string previousStatus, string currentStatus) - { - if ((previousStatus != PMModule.STATE.ProcessIdle.ToString() && - currentStatus == PMModule.STATE.ProcessIdle.ToString()) || - (previousStatus != PMModule.STATE.Error.ToString() && - currentStatus == PMModule.STATE.Error.ToString())) - return true; - - return false; - } - - /// - /// 将统计值保存到数据库。 - /// - /// - private void SaveFlowCount(PmGasFlowCountInfo count) - { - try - { - var c = count; - var sql = $"INSERT INTO process_flow_data " + - $"(process_guid, module_name, recipe_name, wafer_guid, process_begin_time, process_end_time, h2, ar, pn2, hcl, sih4, c3h8, tcs, tma) " + - $"VALUES " + - $"('{c.StatisticsUid:D}', '{_pmProcessVm.SystemName}', '{_pmProcessVm.SelectedRecipe}', '{c.WaferId:D}', " + - $"'{c.StatisticsStart:yyyy/MM/dd HH:mm:ss.fff}', '{c.StatisticsEnd:yyyy/MM/dd HH:mm:ss.fff}', " + - $"{c.H2}, {c.Ar}, {c.PN2}, {c.HCL}, {c.SiH4}, {c.CxHx}, {c.TCS}, {c.TMA})"; - - QueryDataClient.Instance.Service.QueryData(sql); - } - catch (Exception ex) - { - LOG.Error($"Unable to save total gas flow to database, {ex.Message}", ex); - } - } - - /// - /// 从数据库加载指定的记录。 - /// - /// - private void ReadLastFlowCounts(int limit = MAX_ROWS) - { - try - { - var sql = - $"SELECT * FROM process_flow_data where module_name = '{_pmProcessVm.SystemName}' " + - $" ORDER BY process_begin_time DESC LIMIT {limit}"; - var dt = QueryDataClient.Instance.Service.QueryData(sql); - if (dt != null && dt.Rows.Count > 0) - { - for (var i = 0; i < dt.Rows.Count; i++) - { - try - { - var row = dt.Rows[i]; - var uid = Guid.Parse(row["process_guid"].ToString()); - var recipeName = row["recipe_name"].ToString(); - var waferUid = row["wafer_guid"].ToString(); - var beginTime = DateTime.Parse(row["process_begin_time"].ToString()); - var endTime = DateTime.Parse(row["process_end_time"].ToString()); - var h2 = double.Parse(row["h2"].ToString()); - var ar = double.Parse(row["ar"].ToString()); - var pn2 = double.Parse(row["pn2"].ToString()); - var hcl = double.Parse(row["hcl"].ToString()); - var sih4 = double.Parse(row["sih4"].ToString()); - var cxhx = double.Parse(row["c3h8"].ToString()); - var tcs = double.Parse(row["tcs"].ToString()); - var tma = double.Parse(row["tma"].ToString()); - var counter = new PmGasFlowCountInfo(i + 1, uid, recipeName, waferUid, beginTime, endTime, h2, ar, pn2, - hcl, - sih4, cxhx, tcs, tma); - - GasFlowCountCollection.Enqueue(counter); - } - catch (Exception ex) - { - LOG.Error($"Unable to load process flow count history at row {i}, {ex.Message}", ex); - } - } - - } - } - catch (Exception ex) - { - LOG.Error($"Unable to load process flow count history, {ex.Message}", ex); - } - } - - protected override void Poll() - { - base.Poll(); - - lock (_syncObject) - { - if (CurrentFlowCounter != null && CurrentFlowCounter.StatisticsEnd.HasValue == false) - { -#if FAKE_DATA - CurrentFlowCounter.H2.AddFlow(_randomFlow.NextDouble()); - CurrentFlowCounter.Ar.AddFlow(_randomFlow.NextDouble()); - CurrentFlowCounter.PN2.AddFlow(_randomFlow.NextDouble()); - CurrentFlowCounter.HCL.AddFlow(_randomFlow.NextDouble()); - CurrentFlowCounter.SiH4.AddFlow(_randomFlow.NextDouble()); - CurrentFlowCounter.CxHx.AddFlow(_randomFlow.NextDouble()); - CurrentFlowCounter.TCS.AddFlow(_randomFlow.NextDouble()); - CurrentFlowCounter.TMA.AddFlow(_randomFlow.NextDouble()); -#else - - CurrentFlowCounter.H2.AddFlow(_pmProcessVm.H2Flow); - CurrentFlowCounter.Ar.AddFlow(_pmProcessVm.ArFlow); - CurrentFlowCounter.PN2.AddFlow(_pmProcessVm.PN2Flow); - CurrentFlowCounter.HCL.AddFlow(_pmProcessVm.HCLFlow); - CurrentFlowCounter.SiH4.AddFlow(_pmProcessVm.SiH4Flow); - CurrentFlowCounter.CxHx.AddFlow(_pmProcessVm.C2H4Flow); - CurrentFlowCounter.TCS.AddFlow(_pmProcessVm.TCSFlow); - CurrentFlowCounter.TMA.AddFlow(_pmProcessVm.TMAFlow); - -#endif - } - } - } - - #endregion - } -} diff --git a/SicUI/Models/PMs/PMProcessView.xaml b/SicUI/Models/PMs/PMProcessView.xaml deleted file mode 100644 index 3a77c48..0000000 --- a/SicUI/Models/PMs/PMProcessView.xaml +++ /dev/null @@ -1,2215 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/SicUI/Models/PMs/PMProcessView.xaml.cs b/SicUI/Models/PMs/PMProcessView.xaml.cs deleted file mode 100644 index 671e71b..0000000 --- a/SicUI/Models/PMs/PMProcessView.xaml.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; - -namespace SicUI.Models.PMs -{ - /// - /// PMProcessView.xaml 的交互逻辑 - /// - public partial class PMProcessView : UserControl - { - public PMProcessView() - { - InitializeComponent(); - } - - private void BtnLockRecipe_OnClick(object sender, RoutedEventArgs e) - { - recipeLocker.Lock(); - } - } -} diff --git a/SicUI/Models/PMs/PMProcessViewModel.cs b/SicUI/Models/PMs/PMProcessViewModel.cs deleted file mode 100644 index 886cfe8..0000000 --- a/SicUI/Models/PMs/PMProcessViewModel.cs +++ /dev/null @@ -1,1733 +0,0 @@ -using System.Collections.Generic; -using Aitex.Core.Common.DeviceData; -using Aitex.Core.Util; -using Caliburn.Micro; -using MECF.Framework.Common.OperationCenter; -using System; -using MECF.Framework.Common.DataCenter; -using MECF.Framework.UI.Client.CenterViews.Editors.Recipe; -using MECF.Framework.UI.Client.ClientBase; -using System.Windows; -using System.Windows.Controls; -using Caliburn.Micro.Core; -using System.Windows.Media; -using SicUI.Client; -using System.Windows.Threading; -using SicUI.Controls; -using System.Data; -using System.Linq; -using System.Threading.Tasks; -using OpenSEMI.ClientBase; -using Sicentury.Core; -using System.Text; -using MECF.Framework.UI.Client.CenterViews.Editors; -using MECF.Framework.UI.Client.RecipeEditorLib.DGExtension.CustomColumn; -using MECF.Framework.UI.Client.RecipeEditorLib.RecipeModel; -using MECF.Framework.UI.Client.RecipeEditorLib.RecipeModel.Params; -using Action = System.Action; -using static Aitex.Core.RT.Device.PmDevices.DicMode; -using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.MfcCalculation; -using Newtonsoft.Json; -using System.Dynamic; - -namespace SicUI.Models.PMs -{ - public class PMProcessViewModel : SicModuleUIViewModelBase, ISupportMultipleSystem - { - private double _tmaFlowRatio = 1; - private double _tcsFlowRatio = 1; - private double _hclFlowRatio = 1; - private double _C2H4FlowRatio = 1; - private double _sih4FlowRatio = 1; - private double _pn2FlowRatio = 1; - - - private bool _isHideRecipeValue = false; - private bool _allowSaveRecipe = false; - private bool _allowRipRecipe = false; - - private readonly IRecipeGasFlowCalculator _recipeGasFlowCalculator; - private string _currectProcessingRecipe; - private IProgress _progressRecipeStepChanged; - private IProgress _progressLoadRecipe; - private readonly object _lockerLoadingRecipe = new object(); - - - public string title { get; set; } = "123"; - public PMProcessGasFlowCounterViewModel GasFlowCounterVm { get; private set; } - - public PMProcessViewModel() - { - _recipeGasFlowCalculator = IoC.Get(); - } - - #region properties - - public bool IsPermission { get => this.Permission == 3; } - - public bool AllowSaveRecipe - { - get => _allowSaveRecipe; - set - { - _allowSaveRecipe = value; - NotifyOfPropertyChange(); - } - } - - public bool AllowRipRecipe - { - get => _allowRipRecipe; - set - { - _allowRipRecipe = value; - NotifyOfPropertyChange(); - } - } - - [Subscription("IsBusy")] - public bool IsBusy { get; set; } - - [Subscription("Status")] - public string Status { get; set; } - - public bool IsPMProcess => Status == "Process" || Status == "PostProcess" || Status == "Paused" || Status == "PMMacroPause" || Status == "PMMacro" || Status == "PostPMMacro"; - public bool IsPreProcess => Status == "PreProcess" || Status == "PrePMMacro"; - - [Subscription("IsOnline")] - public bool IsOnline { get; set; } - - [Subscription("Recipe.DeviceData")] - public AITDeviceData Recipe { get; set; } - public float[] RecipeData1 => RecipeData; - public float[] RecipeData = new float[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, 1, 1, 1, 1, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, 1, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; - - - private string selectedRecipe; - public string SelectedRecipe - { - set - { - selectedRecipe = value; - } - get - { - return selectedRecipe; - } - } - - - [Subscription("SelectedRecipeName")] - public string CurrentProcessingRecipeName - { - get => _currectProcessingRecipe; - set - { - if (_currectProcessingRecipe != value) - { - _currectProcessingRecipe = value; - DisplayingRecipeName = value; - } - } - } - - - [Subscription("RecipeStepName")] - public string RecipeStepName { get; set; } - - [Subscription("RecipeStepNumber")] - public int RecipeStepNumber { get; set; } - - [Subscription("ArH2Switch")] - public string ArH2Switch { get; set; } - - [Subscription("N2FlowMode")] - public string N2FlowMode { get; set; } - - [Subscription("RecipeStepElapseTime")] - public int RecipeStepElapseTime { get; set; } - - [Subscription("RecipeStepTime")] - public int RecipeStepTime { get; set; } - - [Subscription("RecipeStepElapseTime2")] - public int RecipeStepElapseTime2 { get; set; } - - [Subscription("RecipeTotalElapseTime")] - public int RecipeTotalElapseTime { get; set; } - - [Subscription("RecipeTotalTime")] - public int RecipeTotalTime { get; set; } - - [Subscription("RecipeTotalElapseTime2")] - public int RecipeTotalElapseTime2 { get; set; } - - public string StepNumber - { - get - { - if (IsPMProcess) - { - return $"{RecipeStepNumber}"; - } - else if (IsPreProcess) - { - return "0"; - } - return "--"; - - } - set - { - - } - } - - public string StepName - { - get - { - if (IsPMProcess) - { - return $"{RecipeStepName}"; - } - else if (IsPreProcess) - { - return "0"; - } - return "--"; - } - } - - public string StepTime - { - get - { - if (IsPMProcess) - { - return $"{RecipeStepElapseTime}/{RecipeStepTime}"; - } - else if (IsPreProcess) - { - return "0"; - } - return "--"; - - } - } - - public string RecipeTime - { - get - { - if (IsPMProcess) - { - return $"{RecipeTotalElapseTime}/{RecipeTotalTime}"; - } - else if (IsPreProcess) - { - return "0"; - } - return "--"; - } - } - - private string _displayingRecipeName; - public string DisplayingRecipeName - { - get => _displayingRecipeName; - private set - { - if (_displayingRecipeName != value) - { - _displayingRecipeName = value; - _progressLoadRecipe.Report(value); - NotifyOfPropertyChange(); - } - } - } - - private bool _isRecipeLoading; - - public bool IsRecipeLoading - { - get => _isRecipeLoading; - set - { - if (_isRecipeLoading != value) - { - _isRecipeLoading = value; - NotifyOfPropertyChange(); - } - } - - } - - //qbh 20220523 - private int x = 0; - private DispatcherTimer timer; - - - - - // - public RecipeData CurrentRecipe { get; set; } = new RecipeData(null); - public List Columns { get; set; } = new List(); - - private RecipeFormatBuilder _columnBuilder = new RecipeFormatBuilder(); - - public bool IsSelectButtonEnable => !string.IsNullOrEmpty(Status) && !Status.Equals("Process") - && !Status.Equals("PreProcess") && !Status.Equals("PostProcess") && !Status.Equals("Paused") && !IsOnline && !IsRecipeLoading; - public bool IsStartButtonEnable => !string.IsNullOrEmpty(SelectedRecipe) && !string.IsNullOrEmpty(Status) - && !Status.Equals("Process") && !Status.Equals("PreProcess") && !Status.Equals("PostProcess") && - !Status.Equals("PrePMMacro") && !Status.Equals("PMMacro") && !Status.Equals("PostPMMacro") && - !Status.Equals("Paused") && !IsOnline;// !IsProcessRunning; - public bool IsStopButtonEnable => !string.IsNullOrEmpty(Status) && (Status.Equals("Process") || Status.Equals("PMMacro")) && !IsOnline; - public bool IsAbortButtonEnable => !string.IsNullOrEmpty(Status) && (Status.Equals("Process") || Status.Equals("PMMacro")) && !IsOnline; //|| Status.Equals("PreProcess") || Status.Equals("PostProcess") || Status.Equals("Paused"));//IsProcessRunning; - public bool IsPauseButtonEnable => !string.IsNullOrEmpty(Status) && (Status.Equals("Process") || Status.Equals("PMMacro")) && !IsOnline; - public bool IsSkipButtonEnable => !string.IsNullOrEmpty(Status) && Status.Equals("Process") && !IsOnline; - public bool IsContinueButtonEnable => !string.IsNullOrEmpty(Status) && (Status.Equals("Paused") || Status.Equals("PMMacroPause")) && !IsOnline; - - public WaferInfo MLLWafer - { - get - { - if (ModuleManager.ModuleInfos["LLH"].WaferManager.Wafers.Count > 0) - return ModuleManager.ModuleInfos["LLH"].WaferManager.Wafers[0]; - return null; - } - } - - public bool MLLHasWafer - { - get - { - return MLLWafer.WaferStatus > 0; - } - } - - public WaferInfo PMWafer - { - get - { - if (ModuleManager.ModuleInfos[SystemName].WaferManager.Wafers.Count > 0) - return ModuleManager.ModuleInfos[SystemName].WaferManager.Wafers[0]; - return null; - } - } - - public bool PMHasWafer => PMWafer.WaferStatus > 0; - - public Dictionary DicGas { get; set; } - - public int MLLCurrentWafer { get; set; } - public int MLLTotalWafer { get; set; } - - // public bool IsEnableGasMap => !IsBusy && IsMaintainMode; - - //public string SystemName { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } - - public object View { get; set; } - - public string CurrentProcessType { get; set; } - - private bool needLoadRecipe = false; - - #endregion - - /// - /// 获取角色权限配置. - /// - /// - private void LoadRolePermissions() - { - var roleID = BaseApp.Instance.UserContext.RoleID; - _isHideRecipeValue = RoleAccountProvider.Instance.GetMenuPermission(roleID, "Recipe.Behaviour.ShowValueInProcessView") == (int)MenuPermissionEnum.MP_NONE; - AllowSaveRecipe = RoleAccountProvider.Instance.GetMenuPermission(roleID, "Recipe.Behaviour.AllowSaveInProcessView") != (int)MenuPermissionEnum.MP_NONE; - AllowRipRecipe = RoleAccountProvider.Instance.GetMenuPermission(roleID, "Recipe.Behaviour.AllowRipInProcessView") != (int)MenuPermissionEnum.MP_NONE; - - } - - protected override void OnActivate() - { - try - { - LoadRolePermissions(); - - if (string.IsNullOrEmpty(DisplayingRecipeName)) - { - needLoadRecipe = false; - var recipeName = - (string)QueryDataClient.Instance.Service.GetConfig($"PM.{SystemName}.LastRecipeName"); - DisplayingRecipeName = recipeName; - - } - - // 更新Recipe参数值显示状态 - SetRecipeValueVisibilityByCurrentRole(); - - ((PMProcessView)View)?.recipeLocker.Lock(); - - //流量需要乘以此系数 - //_tmaFlowRatio = (double)QueryDataClient.Instance.Service.GetConfig($"PM.{SystemName}.TMAFlowRatio"); - //_tcsFlowRatio = (double)QueryDataClient.Instance.Service.GetConfig($"PM.{SystemName}.TCSFlowRatio"); - //_hclFlowRatio = (double)QueryDataClient.Instance.Service.GetConfig($"PM.{SystemName}.HCLFlowRatio"); - //_C2H4FlowRatio = (double)QueryDataClient.Instance.Service.GetConfig($"PM.{SystemName}.C2H4FlowRatio"); - //_sih4FlowRatio = (double)QueryDataClient.Instance.Service.GetConfig($"PM.{SystemName}.SiH4FlowRatio"); - //_pn2FlowRatio = (double)QueryDataClient.Instance.Service.GetConfig($"PM.{SystemName}.PN2FlowRatio"); - base.OnActivate(); - } - catch (Exception ex) - { } - } - - protected override void OnDeactivate(bool close) - { - ActiveUpdateData = true; - base.OnDeactivate(close); - } - - protected override void OnInitialize() - { - base.OnInitialize(); - - //权限 - string roleID = BaseApp.Instance.UserContext.RoleID; - stepsVisibility = RoleAccountProvider.Instance.GetMenuPermission(roleID, "PM1.Process.Steps") == 3; - _progressLoadRecipe = new Progress(ProgLoadRecipeOnUiThread); - _progressRecipeStepChanged = new Progress(RecipeStepInProcessChanged); - - _columnBuilder = new RecipeFormatBuilder(); - - UpdateRecipeFormat(); - - - - - GasFlowCounterVm = new PMProcessGasFlowCounterViewModel(this); - GasFlowCounterVm.EnableTimer(true); - - } - - private bool stepsVisibility; - public bool StepsVisibility - { - get { return stepsVisibility; } - } - - public void UpdateRecipeFormat() - { - this.Columns = this._columnBuilder.Build($"Sic\\Process", SystemName, false, ClientApp.Instance.UserContext.RoleName); - - this.CurrentRecipe = new RecipeData(_recipeGasFlowCalculator); - CurrentRecipe.BuildFormat($"Sic\\Process", "PM1", BaseApp.Instance.UserContext.RoleName); - } - - protected override void Poll() - { - try - { - base.Poll(); - } - catch (Exception ex) - { - - } - } - - protected override void InvokeAfterUpdateProperty(Dictionary data) - { - try - { - if (needLoadRecipe) - { - needLoadRecipe = false; - } - - base.InvokeAfterUpdateProperty(data); - } - catch (Exception ex) - { - - } - } - - - public void ParamsExpanded(ExpanderColumn col) - { - int index = this.Columns.IndexOf(col); - for (var i = index + 1; i < this.Columns.Count; i++) - { - if (this.Columns[i] is ExpanderColumn) - break; - this.Columns[i].Visibility = Visibility.Visible; - } - } - - public void ParamsCollapsed(ExpanderColumn col) - { - int index = this.Columns.IndexOf(col); - for (var i = index + 1; i < this.Columns.Count; i++) - { - if (this.Columns[i] is ExpanderColumn) - break; - this.Columns[i].Visibility = Visibility.Collapsed; - } - } - - protected override void OnViewLoaded(object view) - { - View = view; - base.OnViewLoaded(view); - - ViewWin = (PMProcessView)view; - StartDateTime = DateTime.Now.Date; - EndDateTime = DateTime.Now.Date.AddDays(1).AddTicks(-1); - - string str = "[{\"Name\":\"Ar\",\"RunVolume\":5.8561316539732289,\"VentVolume\":0.078784436017824339},{\"Name\":\"H2\",\"RunVolume\":0.0,\"VentVolume\":0.0},{\"Name\":\"C2H4\",\"RunVolume\":0.0,\"VentVolume\":0.0},{\"Name\":\"SiH4\",\"RunVolume\":0.0,\"VentVolume\":0.0},{\"Name\":\"HCL\",\"RunVolume\":0.0,\"VentVolume\":0.0},{\"Name\":\"PN2\",\"RunVolume\":0.0,\"VentVolume\":0.0},{\"Name\":\"TCS\",\"RunVolume\":0.0,\"VentVolume\":0.0},{\"Name\":\"TMA\",\"RunVolume\":0.0,\"VentVolume\":0.0}]"; - var o= JsonConvert.DeserializeObject>(str); - } - - - public void SelectRecipe() - { - var dialog = new RecipeSelectDialogViewModel(false, false, ProcessTypeFileItem.ProcessFileTypes.Process); - dialog.DisplayName = "Select Recipe"; - - var wm = new WindowManager(); - var bret = wm.ShowDialog(dialog); - - if ((bool)bret) - { - var recipeName = dialog.DialogResult; - - if (recipeName.StartsWith("Sic\\Process")) - { - CurrentProcessType = "Process"; - } - else if (recipeName.StartsWith("Sic\\Routine")) - { - CurrentProcessType = "Routine"; - } - - DisplayingRecipeName = recipeName; - - SelectedRecipe = recipeName; - - InvokeClient.Instance.Service.DoOperation($"{SystemName}.SelectRecipe", recipeName); - InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"PM.{SystemName}.LastRecipeName", - recipeName); - } - - } - - public void DeleteProcessData() - { - - } - - private static void RenderStepsWithSameValue(IReadOnlyList previousStep, IReadOnlyList currentStep) - { - for (var i = 0; i < currentStep.Count; i++) - { - if (currentStep[i] is DoubleParam currDblParam && previousStep[i] is DoubleParam prevDblParam) - { - currDblParam.IsEqualsToPrevious = - GlobalDefs.IsDoubleValueEquals(currDblParam.Value, prevDblParam.Value); - } - - else if (currentStep[i] is ComboxParam currCbxParam && previousStep[i] is ComboxParam prevCbxParam) - { - if (currCbxParam.Value != prevCbxParam.Value) - { - currCbxParam.IsEqualsToPrevious = false; - } - else - { - currCbxParam.IsEqualsToPrevious = true; - } - } - - } - } - - /// - /// 将发生变更的配方推送到当前工艺。 - /// - public void PushRecipeToCurrentProcess() - { - // 如果配方没变,不需要推送 - if (!CurrentRecipe.IsChanged) - { - DialogBox.ShowWarning("The recipe does not change."); - return; - } - - if (!CurrentRecipe.Validate()) - { - var ret = DialogBox.ShowDialog(DialogButton.Yes | DialogButton.No, DialogType.WARNING, - $"{CurrentRecipe.ValidationErrorSummary}\r\n Are you sure to push changes to current process?"); - if (ret == DialogButton.No) - return; - /*var mbr = MessageBox.Show($"{errors}\r\n Are you sure to push changes to current process", "Warning", - MessageBoxButton.YesNo, MessageBoxImage.Warning); - if (mbr == MessageBoxResult.No) - return;*/ - } - - var xmlRecipe = CurrentRecipe.GetXmlString(); - InvokeClient.Instance.Service.DoOperation($"PM1.ReloadRecipe", xmlRecipe); - //InvokeClient.Instance.Service.DoOperation($"PM2.ReloadRecipe"); - } - - - public void SaveToBaselineRecipe() - { - if (string.IsNullOrEmpty(CurrentRecipe.Name)) - { - DialogBox.ShowError("Recipe name can't be empty"); - return; - } - - // 如果配方没变,不需要推送 - if (!CurrentRecipe.IsChanged) - { - DialogBox.ShowInfo("The recipe does not change."); - return; - } - - if (!CurrentRecipe.Validate()) - { - var ret = DialogBox.ShowDialog(DialogButton.Yes | DialogButton.No, DialogType.WARNING, - $"{CurrentRecipe.ValidationErrorSummary}\r\n Are you sure to save to baseline recipe?"); - if (ret == DialogButton.No) - return; - } - - var result = false; - - - CurrentRecipe.Revisor = BaseApp.Instance.UserContext.LoginName; - CurrentRecipe.ReviseTime = DateTime.Now; - - var recipeProvider = new RecipeProvider(); - result = recipeProvider.WriteRecipeFile(CurrentRecipe.PrefixPath, CurrentRecipe.Name, CurrentRecipe.GetXmlString()); - - if (result) - { - CurrentRecipe.MarkAsSaved(); - } - else - { - MessageBox.Show("Save failed!"); - } - } - - /// - /// 重新加载配方,当前修改的参数被抛弃。 - /// - public void RestoreToBaselineRecipe() - { - // 如果改变,提示 - if (CurrentRecipe.IsChanged) - { - if (DialogBox.Confirm( - "The recipe has changed, are you sure to discard changes and reload baseline recipe?") == false) - return; - } - - if (CurrentRecipe != null - && !string.IsNullOrEmpty(CurrentRecipe.FullName)) - _progressLoadRecipe.Report(CurrentRecipe.FullName); - } - - /// - /// 根据配置获取Cascade方式呈现Recipe的Dispatcher,或返回null。 - /// - /// - private static Dispatcher GetLoadingDispatcher() - { - // 判断Step呈现方式 - var isCascadeLoading = (bool)QueryDataClient.Instance.Service.GetConfig("System.RecipeCascadeLoading"); - var dispatcher = isCascadeLoading ? Application.Current?.Dispatcher : null; - if (dispatcher == null || !dispatcher.CheckAccess()) - return null; - - return dispatcher; - } - - - #region Recipe相关控制函数 - - /// - /// 根据权限设置Recipe参数的可见性。 - /// - private void SetRecipeValueVisibilityByCurrentRole() - { - // 是否在编辑器中隐藏Recipe参数值 - // CurrentRecipe.Steps.IsHideValue = _isHideRecipeValue; // 当权限为None时隐藏,其它时显示。 - - // 白名单的Param显示出来 - ApplyRecipeCellAccessPermissionWhitelist(); - } - - /// - /// 从数据库读取单元格访问白名单。 - /// - /// - private DataTable ReadRecipeCellAccessPermissionWhitelist() - { - if (CurrentRecipe == null) - return null; - - var cmd = $"select * from recipe_cell_access_permission_whitelist where \"recipeName\" = '{CurrentRecipe.FullName}'"; - var dt = QueryDataClient.Instance.Service.QueryData(cmd); - return dt; - } - - /// - /// 如果Recipe参数设置为隐藏,将白名单中的单元格显示出来。 - /// - private void ApplyRecipeCellAccessPermissionWhitelist() - { - /*var dt = ReadRecipeCellAccessPermissionWhitelist(); - - if (dt != null && dt.Rows.Count > 0) - { - foreach (DataRow dataRow in dt.Rows) - { - var stepUid = dataRow["stepUid"].ToString(); - var controlName = dataRow["columnName"].ToString(); - - var step = CurrentRecipe.Steps.FirstOrDefault(s => s.StepUid == stepUid); - var param = step?.FirstOrDefault(p => p.Name == controlName); - if (param != null) - param.IsHideValue = false; - } - }*/ - } - - - /// - /// 正在工艺中的Recipe Step发生改变。 - /// - /// - private void RecipeStepInProcessChanged(int currentStepNum) - { - UpdateRecipeStepProcessedStatus(currentStepNum); - } - - /// - /// 更新Recipe步骤。 - /// - /// - private void UpdateRecipeStepProcessedStatus(int currentStepNum) - { - if (CurrentRecipe == null) - return; - - if (CurrentRecipe.Steps.Count <= 0) - return; - - // Recipe不是当前正在运行的Recipe。 - if (CurrentRecipe.FullName != DisplayingRecipeName) - return; - - foreach (var step in CurrentRecipe.Steps) - { - if (step.StepNo.HasValue) - { - if (step.StepNo < currentStepNum) - step.IsProcessed = true; - else if (step.StepNo == currentStepNum) - { - if (IsPMProcess) - step.IsProcessed = false; - else - step.IsProcessed = true; - } - else - { - step.IsProcessed = false; - } - } - - } - - - // 自动滚到当前做工艺的Step - var dg = ((PMProcessView)View)?.dgCustom; - if (currentStepNum > 0) - { - var stepScrollTo = currentStepNum - 1; - if (stepScrollTo < 0) - stepScrollTo = 0; - - dg?.ScrollToRecipeStep(CurrentRecipe.Steps[stepScrollTo]); - - } - } - - /// - /// 在UI线程加载Recipe - /// - /// - private void ProgLoadRecipeOnUiThread(string recipeName) - { - lock (_lockerLoadingRecipe) - { - if (IsRecipeLoading) - return; - - IsRecipeLoading = true; - NotifyOfPropertyChange(nameof(IsSelectButtonEnable)); - } - - if (recipeName.StartsWith("Sic\\Process")) - { - CurrentProcessType = "Process"; - } - else if (recipeName.StartsWith("Sic\\Routine")) - { - CurrentProcessType = "Routine"; - } - - - //UpdateRecipeFormat(); - LoadRecipe(recipeName).ContinueWith(t => - { - if (!t.IsCanceled && !t.IsFaulted && t.IsCompleted) - { - Application.Current?.Dispatcher.Invoke(() => - { - UpdateRecipeStepProcessedStatus(RecipeStepNumber); - }); - } - }).ContinueWith(t => - { - Application.Current?.Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => - { - lock (_lockerLoadingRecipe) - { - IsRecipeLoading = false; - } - })); - }); - - } - - - #endregion - - private async Task LoadRecipe(string selectedRecipePath) - { - CurrentRecipe.Clear(); - - var array = selectedRecipePath.Split(new char[] { '\\' }); - - string recipeName = array[array.Length - 1]; - string prefixPath = selectedRecipePath.Replace(recipeName, "").TrimEnd('\\'); - - var _recipeProvider = new RecipeProvider(); - var recipeContent = _recipeProvider.ReadRecipeFile(prefixPath, recipeName); - - if (string.IsNullOrEmpty(recipeContent)) - { - MessageBox.Show($"{prefixPath}\\{recipeName} is empty, please confirm the file is valid."); - return; - } - - CurrentRecipe.RecipeChamberType = _columnBuilder.RecipeChamberType; - CurrentRecipe.RecipeVersion = _columnBuilder.RecipeVersion; - - await CurrentRecipe.LoadFile(prefixPath, recipeName, recipeContent, - SystemName, GetLoadingDispatcher()); - - // 显示Cell访问白名单中的参数 - SetRecipeValueVisibilityByCurrentRole(); - } - - public void Start() - { - ChooseDialogBoxViewModel dialog = new ChooseDialogBoxViewModel(); - dialog.DisplayName = "Tips"; - dialog.InfoStr = "Please Check All Gas Ready Before Start Process!"; - - WindowManager wm = new WindowManager(); - bool? bret = wm.ShowDialog(dialog); - if (!bret.HasValue || !bret.Value) - { - return; - } - - var array = DisplayingRecipeName.Split(new char[] { '\\' }); - if (array[1] == "Process") - { - InvokeClient.Instance.Service.DoOperation($"{SystemName}.RunRecipe", DisplayingRecipeName, false, true); - } - else if (array[1] == "Routine") - { - InvokeClient.Instance.Service.DoOperation($"{SystemName}.RunPMMacro", DisplayingRecipeName); - } - } - - public void Skip() - { - InvokeClient.Instance.Service.DoOperation($"{SystemName}.RecipeSkipStep"); - } - - public void Stop() - { - InvokeClient.Instance.Service.DoOperation($"{SystemName}.Abort"); - } - - public void Pause() - { - InvokeClient.Instance.Service.DoOperation($"{SystemName}.Pause"); - } - - public void Continue() - { - InvokeClient.Instance.Service.DoOperation($"{SystemName}.Continue", "Step continue"); - } - - public void Abort() - { - InvokeClient.Instance.Service.DoOperation($"{SystemName}.Abort"); - } - - #region 腔体绑定数据 - [Subscription("TC1.L1InputTempSetPoint")] - public float L1InputTemp { get; set; } - - [Subscription("TC1.L2InputTempSetPoint")] - public float L2InputTemp { get; set; } - - [Subscription("TC1.L3InputTempSetPoint")] - public float L3InputTemp { get; set; } - - [Subscription("TC2.L3InputTempSetPoint")] - public float SCRL3InputTemp { get; set; } - - - [Subscription("TC1.L1TargetSPSetPoint")] - public float L1TargetSP { get; set; } - - [Subscription("TC1.L2TargetSPSetPoint")] - public float L2TargetSP { get; set; } - - [Subscription("TC1.L3TargetSPSetPoint")] - public float L3TargetSP { get; set; } - - [Subscription("TC2.L3TargetSPSetPoint")] - public float SCRL3TargetSP { get; set; } - - [Subscription("TC1.TempCtrlTCIN")] - public float PM1Temprature { get; set; } - - //底部温度 - [Subscription("TC1.TempCtrlTCIN")] - public float TC1Temp2 { get; set; } - - [Subscription("TC1.HeaterModeSetPoint")] - public float TC1HeaterMode { get; set; } - public string TC1Mode - { - get - { - int mode = (int)TC1HeaterMode; - return Enum.GetName(typeof(HeaterControlMode), mode); - } - } - - [Subscription("TC2.HeaterModeSetPoint")] - public float TC2HeaterMode { get; set; } - public string TC2Mode - { - get - { - switch (TC2HeaterMode) - { - case 0: return "Power"; - case 1: return "TC"; - case 2: return "Pyro"; - } - return "Power"; - - } - } - - - [Subscription("SCR1.PowerFeedBack")] - public float SCR1Power { get; set; } - - [Subscription("SCR2.PowerFeedBack")] - public float SCR2Power { get; set; } - - [Subscription("SCR3.PowerFeedBack")] - public float SCR3Power { get; set; } - - [Subscription("PSU1.OutputPowerFeedBack")] - public float PSU1Power { get; set; } - - [Subscription("PSU2.OutputPowerFeedBack")] - public float PSU2Power { get; set; } - - [Subscription("PSU3.OutputPowerFeedBack")] - public float PSU3Power { get; set; } - - - [Subscription("PMServo.ActualSpeedFeedback")] - public float ActualSpeedFeedback { get; set; } - - [Subscription("PT1.FeedBack")] - public float PT1Pressure { get; set; } - #endregion 腔体绑定数据 - - #region MFC - [Subscription("Mfc1.DeviceData")] - public AITMfcData Mfc1Data { get; set; } - - [Subscription("Mfc2.DeviceData")] - public AITMfcData Mfc2Data { get; set; } - - [Subscription("Mfc3.DeviceData")] - public AITMfcData Mfc3Data { get; set; } - - [Subscription("Mfc4.DeviceData")] - public AITMfcData Mfc4Data { get; set; } - - [Subscription("Mfc5.DeviceData")] - public AITMfcData Mfc5Data { get; set; } - - [Subscription("Mfc6.DeviceData")] - public AITMfcData Mfc6Data { get; set; } - - [Subscription("Mfc7.DeviceData")] - public AITMfcData Mfc7Data { get; set; } - - [Subscription("Mfc8.DeviceData")] - public AITMfcData Mfc8Data { get; set; } - - [Subscription("Mfc9.DeviceData")] - public AITMfcData Mfc9Data { get; set; } - - [Subscription("Mfc10.DeviceData")] - public AITMfcData Mfc10Data { get; set; } - - [Subscription("Mfc11.DeviceData")] - public AITMfcData Mfc11Data { get; set; } - - [Subscription("Mfc12.DeviceData")] - public AITMfcData Mfc12Data { get; set; } - - [Subscription("Mfc13.DeviceData")] - public AITMfcData Mfc13Data { get; set; } - - [Subscription("Mfc14.DeviceData")] - public AITMfcData Mfc14Data { get; set; } - - [Subscription("Mfc15.DeviceData")] - public AITMfcData Mfc15Data { get; set; } - - [Subscription("Mfc16.DeviceData")] - public AITMfcData Mfc16Data { get; set; } - - - - [Subscription("Mfc19.DeviceData")] - public AITMfcData Mfc19Data { get; set; } - - [Subscription("Mfc20.DeviceData")] - public AITMfcData Mfc20Data { get; set; } - - - - [Subscription("Mfc22.DeviceData")] - public AITMfcData Mfc22Data { get; set; } - - [Subscription("Mfc23.DeviceData")] - public AITMfcData Mfc23Data { get; set; } - - - - [Subscription("Mfc25.DeviceData")] - public AITMfcData Mfc25Data { get; set; } - - [Subscription("Mfc26.DeviceData")] - public AITMfcData Mfc26Data { get; set; } - - [Subscription("Mfc27.DeviceData")] - public AITMfcData Mfc27Data { get; set; } - - [Subscription("Mfc28.DeviceData")] - public AITMfcData Mfc28Data { get; set; } - - [Subscription("Mfc29.DeviceData")] - public AITMfcData Mfc29Data { get; set; } - - - [Subscription("Mfc30.DeviceData")] - public AITMfcData Mfc30Data { get; set; } - - [Subscription("Mfc31.DeviceData")] - public AITMfcData Mfc31Data { get; set; } - - - - [Subscription("Mfc32.DeviceData")] - public AITMfcData Mfc32Data { get; set; } - - [Subscription("Mfc33.DeviceData")] - public AITMfcData Mfc33Data { get; set; } - - - - [Subscription("Mfc35.DeviceData")] - public AITMfcData Mfc35Data { get; set; } - - [Subscription("Mfc36.DeviceData")] - public AITMfcData Mfc36Data { get; set; } - - [Subscription("Mfc37.DeviceData")] - public AITMfcData Mfc37Data { get; set; } - - [Subscription("Mfc38.DeviceData")] - public AITMfcData Mfc38Data { get; set; } - - [Subscription("Mfc40.DeviceData")] - public AITMfcData Mfc40Data { get; set; } - #endregion - - #region Valve - - [Subscription("V27.DeviceData")] - public AITValveData V27 { get; set; } - - [Subscription("V25.DeviceData")] - public AITValveData V25 { get; set; } - - [Subscription("V31.DeviceData")] - public AITValveData V31 { get; set; } - - [Subscription("V32.DeviceData")] - public AITValveData V32 { get; set; } - - [Subscription("V33.DeviceData")] - public AITValveData V33 { get; set; } - - [Subscription("V33s.DeviceData")] - public AITValveData V33s { get; set; } - - [Subscription("V35.DeviceData")] - public AITValveData V35 { get; set; } - - [Subscription("V36.DeviceData")] - public AITValveData V36 { get; set; } - - [Subscription("V37.DeviceData")] - public AITValveData V37 { get; set; } - - [Subscription("V37s.DeviceData")] - public AITValveData V37s { get; set; } - - - [Subscription("V39.DeviceData")] - public AITValveData V39 { get; set; } - - [Subscription("V39s.DeviceData")] - public AITValveData V39s { get; set; } - - [Subscription("V40.DeviceData")] - public AITValveData V40 { get; set; } - - [Subscription("V40s.DeviceData")] - public AITValveData V40s { get; set; } - - - [Subscription("V41.DeviceData")] - public AITValveData V41 { get; set; } - - [Subscription("V41s.DeviceData")] - public AITValveData V41s { get; set; } - - - [Subscription("V42.DeviceData")] - public AITValveData V42 { get; set; } - - [Subscription("V43.DeviceData")] - public AITValveData V43 { get; set; } - - [Subscription("V43s.DeviceData")] - public AITValveData V43s { get; set; } - - - [Subscription("V45.DeviceData")] - public AITValveData V45 { get; set; } - - - [Subscription("V46.DeviceData")] - public AITValveData V46 { get; set; } - - [Subscription("V46s.DeviceData")] - public AITValveData V46s { get; set; } - - [Subscription("V48.DeviceData")] - public AITValveData V48 { get; set; } - - [Subscription("V48s.DeviceData")] - public AITValveData V48s { get; set; } - - - [Subscription("V49.DeviceData")] - public AITValveData V49 { get; set; } - - [Subscription("V50.DeviceData")] - public AITValveData V50 { get; set; } - - [Subscription("V50s.DeviceData")] - public AITValveData V50s { get; set; } - - [Subscription("V51.DeviceData")] - public AITValveData V51 { get; set; } - - [Subscription("V51s.DeviceData")] - public AITValveData V51s { get; set; } - - - [Subscription("V52.DeviceData")] - public AITValveData V52 { get; set; } - - [Subscription("V52s.DeviceData")] - public AITValveData V52s { get; set; } - - [Subscription("V53.DeviceData")] - public AITValveData V53 { get; set; } - - [Subscription("V53s.DeviceData")] - public AITValveData V53s { get; set; } - - [Subscription("V54.DeviceData")] - public AITValveData V54 { get; set; } - - [Subscription("V54s.DeviceData")] - public AITValveData V54s { get; set; } - - [Subscription("V55.DeviceData")] - public AITValveData V55 { get; set; } - - [Subscription("V56.DeviceData")] - public AITValveData V56 { get; set; } - - [Subscription("V58.DeviceData")] - public AITValveData V58 { get; set; } - - [Subscription("V58s.DeviceData")] - public AITValveData V58s { get; set; } - - - - [Subscription("V59.DeviceData")] - public AITValveData V59 { get; set; } - - [Subscription("V60.DeviceData")] - public AITValveData V60 { get; set; } - - [Subscription("V61.DeviceData")] - public AITValveData V61 { get; set; } - - [Subscription("V62.DeviceData")] - public AITValveData V62 { get; set; } - - [Subscription("V63.DeviceData")] - public AITValveData V63 { get; set; } - - //[Subscription("V64.DeviceData")] - //public AITValveData V64 { get; set; } - - //[Subscription("V65.DeviceData")] - //public AITValveData V65 { get; set; } - - - [Subscription("V68.DeviceData")] - public AITValveData V68 { get; set; } - - [Subscription("V69.DeviceData")] - public AITValveData V69 { get; set; } - - [Subscription("V70.DeviceData")] - public AITValveData V70 { get; set; } - - [Subscription("V72.DeviceData")] - public AITValveData V72 { get; set; } - - [Subscription("V73.DeviceData")] - public AITValveData V73 { get; set; } - - [Subscription("V74.DeviceData")] - public AITValveData V74 { get; set; } - - [Subscription("V75.DeviceData")] - public AITValveData V75 { get; set; } - - [Subscription("V76.DeviceData")] - public AITValveData V76 { get; set; } - - [Subscription("V87.DeviceData")] - public AITValveData V87 { get; set; } - - [Subscription("V88.DeviceData")] - public AITValveData V88 { get; set; } - - [Subscription("V89.DeviceData")] - public AITValveData V89 { get; set; } - - [Subscription("V90.DeviceData")] - public AITValveData V90 { get; set; } - - [Subscription("V91.DeviceData")] - public AITValveData V91 { get; set; } - - [Subscription("V92.DeviceData")] - public AITValveData V92 { get; set; } - - [Subscription("V93.DeviceData")] - public AITValveData V93 { get; set; } - - [Subscription("V94.DeviceData")] - public AITValveData V94 { get; set; } - - [Subscription("V95.DeviceData")] - public AITValveData V95 { get; set; } - - [Subscription("V96.DeviceData")] - public AITValveData V96 { get; set; } - - [Subscription("V97.DeviceData")] - public AITValveData V97 { get; set; } - - [Subscription("EPV1.DeviceData")] - public AITValveData EPV1 { get; set; } - - [Subscription("EPV2.DeviceData")] - public AITValveData EPV2 { get; set; } - - [Subscription("V99.DeviceData")] - public AITValveData V99 { get; set; } - - [Subscription("V99s.DeviceData")] - public AITValveData V99s { get; set; } - - - #endregion - - #region Pressure - [Subscription("Pressure1.DeviceData")] - public AITPressureMeterData PT1Data { get; set; } - - [Subscription("Pressure2.DeviceData")] - public AITPressureMeterData PT2Data { get; set; } - [Subscription("Pressure3.DeviceData")] - public AITPressureMeterData PT3Data { get; set; } - - - [Subscription("Pressure4.DeviceData")] - public AITPressureMeterData PT4Data { get; set; } - [Subscription("Pressure5.DeviceData")] - public AITPressureMeterData PT5Data { get; set; } - [Subscription("Pressure6.DeviceData")] - public AITPressureMeterData PT6Data { get; set; } - - [Subscription("Pressure7.DeviceData")] - public AITPressureMeterData PT7Data { get; set; } - - [Subscription("PT1.DeviceData")] - public AITPressureMeterData ChamPress { get; set; } - - [Subscription("PT2.DeviceData")] - public AITPressureMeterData ForelinePress { get; set; } - - - #endregion - - #region 特气显示颜色 - - public SolidColorBrush PN2Color - { - get - { - if (IsPN2RunMode) - { - return new SolidColorBrush(Color.FromRgb(0, 0, 0)); - } - else - { - return new SolidColorBrush(Color.FromRgb(255, 0, 0)); - } - } - } - public SolidColorBrush C2H4Color - { - get - { - if (IsC2H4RunMode) - { - return new SolidColorBrush(Color.FromRgb(0, 0, 0)); - } - else - { - return new SolidColorBrush(Color.FromRgb(255, 0, 0)); - } - } - } - public SolidColorBrush SIH4Color - { - get - { - if (IsSiH4RunMode) - { - return new SolidColorBrush(Color.FromRgb(0, 0, 0)); - } - else - { - return new SolidColorBrush(Color.FromRgb(255, 0, 0)); - } - } - } - public SolidColorBrush HCLColor - { - get - { - if (IsHCLRunMode) - { - return new SolidColorBrush(Color.FromRgb(0, 0, 0)); - } - else - { - return new SolidColorBrush(Color.FromRgb(255, 0, 0)); - } - } - } - - public SolidColorBrush TMAColor - { - get - { - if (IsTMARunMode) - { - return new SolidColorBrush(Color.FromRgb(0, 0, 0)); - } - else - { - return new SolidColorBrush(Color.FromRgb(255, 0, 0)); - } - } - } - - public SolidColorBrush TCSColor - { - get - { - if (IsTCSRunMode) - { - return new SolidColorBrush(Color.FromRgb(0, 0, 0)); - } - else - { - return new SolidColorBrush(Color.FromRgb(255, 0, 0)); - } - } - } - - public SolidColorBrush PN2FlowColor - { - get - { - if (IsPN2RunMode) - { - return new SolidColorBrush(Color.FromArgb(255, 0, 255, 255)); - } - else - { - return new SolidColorBrush(Color.FromArgb(255, 190, 190, 190)); - } - } - } - public SolidColorBrush C2H4FlowColor - { - get - { - if (IsC2H4RunMode) - { - return new SolidColorBrush(Color.FromArgb(255, 0, 255, 255)); - } - else - { - return new SolidColorBrush(Color.FromArgb(255, 190, 190, 190)); - } - } - } - public SolidColorBrush SIH4FlowColor - { - get - { - if (IsSiH4RunMode) - { - return new SolidColorBrush(Color.FromArgb(255, 0, 255, 255)); - } - else - { - return new SolidColorBrush(Color.FromArgb(255, 190, 190, 190)); - } - } - } - public SolidColorBrush HCLFlowColor - { - get - { - if (IsHCLRunMode) - { - return new SolidColorBrush(Color.FromArgb(255, 0, 255, 255)); - } - else - { - return new SolidColorBrush(Color.FromArgb(255, 190, 190, 190)); - } - } - } - - public SolidColorBrush TMAFlowColor - { - get - { - if (IsTMARunMode) - { - return new SolidColorBrush(Color.FromArgb(255, 0, 255, 255)); - } - else - { - return new SolidColorBrush(Color.FromArgb(255, 190, 190, 190)); - } - } - } - - public SolidColorBrush TCSFlowColor - { - get - { - if (IsTCSRunMode) - { - return new SolidColorBrush(Color.FromArgb(255, 0, 255, 255)); - } - else - { - return new SolidColorBrush(Color.FromArgb(255, 190, 190, 190)); - } - } - } - #endregion - - - - public bool IsPN2RunMode => V37s.IsOpen && (V39.IsOpen || V40.IsOpen);//N2FlowMode == "Run";按照洪膺要求修改 2023年6月9日10:34:54 - public bool IsHCLRunMode => V54.IsOpen; - public bool IsSiH4RunMode => V55.IsOpen && !V56.IsOpen; - public bool IsC2H4RunMode => V59.IsOpen && !V60.IsOpen; - public bool IsTCSRunMode => V53.IsOpen; - public bool IsTMARunMode => V41.IsOpen && !V42.IsOpen; - - - [Subscription("Flow.Ar_Run.FeedBack")] - public double ArFlow_Run { get; set; } - [Subscription("Flow.Ar_Vent.FeedBack")] - public double ArFlow_Vent { get; set; } - - public double ArFlow => ArFlow_Run>0 ? ArFlow_Run : ArFlow_Vent; - public double ArMol => GetMol(ArFlow_Run); - - [Subscription("Flow.H2_Run.FeedBack")] - public double H2_Run { get; set; } - [Subscription("Flow.H2_Vent.FeedBack")] - public double H2_Vent { get; set; } - - public double H2Flow => H2_Run>0 ? H2_Run : H2_Vent; - public double H2Mol => GetMol(H2_Run); - - [Subscription("Flow.PN2_Run.FeedBack")] - public double PN2_Run { get; set; } - [Subscription("Flow.PN2_Vent.FeedBackSpecial")] - public double PN2_Vent { get; set; } - - public double PN2Flow => PN2_Run + PN2_Vent;//=> GetPN2MFCFlow(IsPN2RunMode) * _pn2FlowRatio; - public double PN2Mol => GetMol(PN2Flow); - - [Subscription("Flow.HCL_Run.FeedBack")] - public double HCL_Run { get; set; } - [Subscription("Flow.HCL_Vent.FeedBack")] - public double HCL_Vent { get; set; } - - public double HCLFlow => HCL_Run + HCL_Vent; - public double HCLMol => GetMol(HCLFlow); - - [Subscription("Flow.SiH4_Run.FeedBack")] - public double SiH4_Run { get; set; } - [Subscription("Flow.SiH4_Vent.FeedBack")] - public double SiH4_Vent { get; set; } - - public double SiH4Flow => SiH4_Run + SiH4_Vent; - public double SIH4Mol => GetMol(SiH4Flow); - - [Subscription("Flow.C2H4_Run.FeedBack")] - public double C2H4_Run { get; set; } - [Subscription("Flow.C2H4_Vent.FeedBack")] - public double C2H4_Vent { get; set; } - - public double C2H4Flow => C2H4_Run + C2H4_Vent; - public double C2H4Mol => GetMol(C2H4Flow); - - [Subscription("Flow.TCS_Run.FeedBack")] - public double TCS_Run { get; set; } - [Subscription("Flow.TCS_Vent.FeedBack")] - public double TCS_Vent { get; set; } - - public double TCSFlow => TCS_Run + TCS_Vent; - public double TCSMol => GetMol(TCSFlow); - - [Subscription("Flow.TMA_Run.FeedBack")] - public double TMA_Run { get; set; } - [Subscription("Flow.TMA_Vent.FeedBack")] - public double TMA_Vent { get; set; } - - public double TMAFlow => TMA_Run + TMA_Vent; - public double TMAMol => GetMol(TMAFlow); - - public bool ISPN2Flow => PN2Flow > 0 && IsPN2RunMode; - public bool ISHCLFlow => HCLFlow > 0 && IsHCLRunMode; - public bool ISSiH4Flow => SiH4Flow > 0 && IsSiH4RunMode; - public bool ISC2H4Flow => C2H4Flow > 0 && IsC2H4RunMode; - public bool ISArFlow => ArFlow_Run > 0; - public bool ISH2Flow => H2_Run > 0; - public bool ISTCSFlow => TCSFlow > 0 && IsTCSRunMode; - public bool ISTMAFlow => TMAFlow > 0 && IsTMARunMode; - - private double GetMol(double fedback) - { - return fedback / 1000 / 22.4141; - } - - #region 真值表方式统计流量 - /// - /// 返回ViewModel绑定的视图对象。 - /// - public PMProcessView ViewWin { get; private set; } - - public DateTime StartDateTime - { - get => ViewWin.wfTimeFrom.Value; - set - { - ViewWin.wfTimeFrom.Value = value; - } - } - - public DateTime EndDateTime - { - get => ViewWin.wfTimeTo.Value; - set - { - ViewWin.wfTimeTo.Value = value; - } - } - - private string _mfcManagerDataFlow; - - [Subscription("MfcManager.DataFlow")] - public string MfcManagerDataFlow - { - get => _mfcManagerDataFlow; - set - { - if (_mfcManagerDataFlow != value && value != null) - { - DataFlowList = JsonConvert.DeserializeObject>(value); - } - - _mfcManagerDataFlow = value; - } - } - - public List DataFlowList { get; set; } - - public List FlowNameList { get; set; } = new List() - { - "All", - "Ar", - "H2", - "C2H4", - "SiH4", - "HCL", - "PN2", - "TCS", - "TMA" - }; - public string FlowName { get; set; } - - private string CacheName; - private DateTime CacheStartDateTime; - private DateTime CacheEndDateTime; - - public void Query() - { - if (FlowName is null) - { - MessageBox.Show("查询名称为空"); - return; - } - if (CacheStartDateTime== StartDateTime && CacheEndDateTime == EndDateTime && CacheName == FlowName) - { - MessageBox.Show("重复查询"); - return; - } - if (StartDateTime > EndDateTime) - { - MessageBox.Show("time range invalid, start time should be early than end time.", "Error", - MessageBoxButton.OK, - MessageBoxImage.Error); - return; - } - InvokeClient.Instance.Service.DoOperation($"{SystemName}.FlowName.Query", new object[] { FlowName, StartDateTime, EndDateTime }); - CacheStartDateTime = StartDateTime; - CacheEndDateTime = EndDateTime; - CacheName = FlowName; - } - - #endregion - - /// - /// 打开 ProcessMonitor - /// - public void ShowMonitorWindow() - { - var wins = Application.Current.Windows.OfType().ToArray(); - if (wins.Any()) - { - foreach (var w in wins) - { - if (w.WindowState == WindowState.Minimized) - w.WindowState = WindowState.Normal; - w.Show(); - w.Activate(); - } - } - else - { - var wm = new WindowManager(); - var model = new ProcessMonitorViewModel(); - dynamic settings = new ExpandoObject(); - settings.WindowStartupLocation = WindowStartupLocation.CenterOwner; - wm.ShowWindow(model, null, settings); - } - - } - } -} diff --git a/SicUI/Models/PMs/PMServoViewModel.cs b/SicUI/Models/PMs/PMServoViewModel.cs index 1a98adb..1bbb9ac 100644 --- a/SicUI/Models/PMs/PMServoViewModel.cs +++ b/SicUI/Models/PMs/PMServoViewModel.cs @@ -1,6 +1,4 @@ -using Aitex.Core.Util; -using MECF.Framework.Common.OperationCenter; -using MECF.Framework.UI.Client.ClientBase; +using MECF.Framework.UI.Client.ClientBase; using System; using System.Collections.Generic; using System.Linq; diff --git a/SicUI/Models/RecipeEditors/RoutineConfigViewModel.cs b/SicUI/Models/RecipeEditors/RoutineConfigViewModel.cs index f8103d7..8d485ce 100644 --- a/SicUI/Models/RecipeEditors/RoutineConfigViewModel.cs +++ b/SicUI/Models/RecipeEditors/RoutineConfigViewModel.cs @@ -1,6 +1,5 @@ using Caliburn.Micro; using MECF.Framework.Common.DataCenter; -using MECF.Framework.Common.OperationCenter; using MECF.Framework.UI.Client.CenterViews.Editors.Recipe; using MECF.Framework.UI.Client.CenterViews.Editors.Sequence; using MECF.Framework.UI.Client.ClientBase; diff --git a/SicUI/ProcessMonitorView.xaml b/SicUI/ProcessMonitorView.xaml deleted file mode 100644 index 4da0230..0000000 --- a/SicUI/ProcessMonitorView.xaml +++ /dev/null @@ -1,598 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/SicUI/ProcessMonitorView.xaml.cs b/SicUI/ProcessMonitorView.xaml.cs deleted file mode 100644 index 734e00d..0000000 --- a/SicUI/ProcessMonitorView.xaml.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Shapes; - -namespace SicUI -{ - /// - /// ProcessMonitorView.xaml 的交互逻辑 - /// - public partial class ProcessMonitorView : Window - { - public ProcessMonitorView() - { - InitializeComponent(); - } - } -} diff --git a/SicUI/ProcessMonitorViewModel.cs b/SicUI/ProcessMonitorViewModel.cs deleted file mode 100644 index 83e534b..0000000 --- a/SicUI/ProcessMonitorViewModel.cs +++ /dev/null @@ -1,214 +0,0 @@ -using Aitex.Core.Util; -using SicUI.Models; -using Aitex.Core.Common.DeviceData; -using MECF.Framework.UI.Client.ClientBase; -using System.Threading.Tasks; -using System; -using Aitex.Core.RT.Device.PmDevices; - -namespace SicUI -{ - public class ProcessMonitorViewModel : SicModuleUIViewModelBase - { - - public ProcessMonitorViewModel() - { - Pm1Monitor = new MonitorModel() { SystemName = "PM1" }; - Pm2Monitor = new MonitorModel() { SystemName = "PM2" }; - - - } - - public MonitorModel Pm1Monitor { get; set; } - public MonitorModel Pm2Monitor { get; } - - - protected override void OnInitialize() - { - base.OnInitialize(); - - Pm1Monitor.SubscribeKeys(); - Pm2Monitor.SubscribeKeys(); - } - - protected override void OnActivate() - { - base.OnActivate(); - - Pm1Monitor.EnableTimer(true); - Pm2Monitor.EnableTimer(true); - } - - protected override void OnDeactivate(bool close) - { - base.OnDeactivate(close); - - Pm1Monitor.EnableTimer(false); - Pm2Monitor.EnableTimer(false); - } - } - public class MonitorModel : SicModuleUIViewModelBase, ISupportMultipleSystem - { - public string TargetModule { get; set; } - - - [Subscription("SelectedRecipeName")] - public string RecipeName { get; set; } - - [Subscription("RecipeStepNumber")] - public int RecipeStepNumber { get; set; } - - [Subscription("RecipeStepName")] - public string RecipeStepName { get; set; } - - [Subscription("RecipeStepElapseTime")] - public int RecipeStepElapseTime { get; set; } - - [Subscription("RecipeStepTime")] - public int RecipeStepTime { get; set; } - - [Subscription("RecipeTotalElapseTime")] - public int RecipeTotalElapseTime { get; set; } - - [Subscription("RecipeTotalTime")] - public int RecipeTotalTime { get; set; } - - [Subscription("TC1.HeaterModeSetPoint")] - public float TC1HeaterMode { get; set; } - - [Subscription("TC2.HeaterModeSetPoint")] - public float TC2HeaterMode { get; set; } - - [Subscription("SCR1.PowerFeedBack")] - public float SCR1Power { get; set; } - - [Subscription("SCR2.PowerFeedBack")] - public float SCR2Power { get; set; } - - [Subscription("SCR3.PowerFeedBack")] - public float SCR3Power { get; set; } - - [Subscription("PSU1.OutputPowerFeedBack")] - public float PSU1Power { get; set; } - - [Subscription("PSU2.OutputPowerFeedBack")] - public float PSU2Power { get; set; } - - [Subscription("PSU3.OutputPowerFeedBack")] - public float PSU3Power { get; set; } - - [Subscription("TC1.L2InputTempSetPoint")] - public float L2InputTemp { get; set; } - - [Subscription("TC1.L3InputTempSetPoint")] - public float L3InputTemp { get; set; } - - [Subscription("TC2.L3InputTempSetPoint")] - public float SCRL3InputTemp { get; set; } - - [Subscription("PMServo.ActualSpeedFeedback")] - public float ActualSpeedFeedback { get; set; } - - [Subscription("PT1.DeviceData")] - public AITPressureMeterData ChamPress { get; set; } - - [Subscription("TC1.TempCtrlTCIN")] - public float PM1Temprature { get; set; } - - [Subscription("Status")] - public string Status { get; set; } - - public bool IsPMProcess => Status == "Process" || Status == "PostProcess" || Status == "Paused" || - Status == "PMMacroPause" || Status == "PMMacro" || Status == "PostPMMacro"; - - public bool IsPreProcess => Status == "PreProcess" || Status == "PrePMMacro"; - - public string StepNumber - { - get - { - if (IsPMProcess) - { - return $"{RecipeStepNumber}"; - } - else if (IsPreProcess) - { - return "0"; - } - return "--"; - - } - set - { - - } - } - - public string StepName - { - get - { - if (IsPMProcess) - { - return $"{RecipeStepName}"; - } - else if (IsPreProcess) - { - return "0"; - } - return "--"; - } - } - - public string StepTime - { - get - { - if (IsPMProcess) - { - return $"{RecipeStepElapseTime}/{RecipeStepTime}"; - } - else if (IsPreProcess) - { - return "0"; - } - return "--"; - - } - } - - public string RecipeTime - { - get - { - if (IsPMProcess) - { - return $"{RecipeTotalElapseTime}/{RecipeTotalTime}"; - } - else if (IsPreProcess) - { - return "0"; - } - return "--"; - } - } - - public string PsuMode - { - get - { - return Enum.GetName(typeof(DicMode.HeaterControlMode), Convert.ToInt32(TC1HeaterMode)); - } - } - - public string ScrMode - { - get - { - return Enum.GetName(typeof(DicMode.HeaterControlMode), Convert.ToInt32(TC2HeaterMode)); - } - } - - public string ChamberPressureFeedback => ChamPress?.FeedBack.ToString(ChamPress?.FormatString); - } -} diff --git a/SicUI/SicUI.csproj b/SicUI/SicUI.csproj index fb08ea3..8a1f270 100644 --- a/SicUI/SicUI.csproj +++ b/SicUI/SicUI.csproj @@ -249,6 +249,7 @@ if exist "$(ProjectDir)..\SicSetup\Packages\SicUI\PresetGroups" rd "$(ProjectDir + RuntimeView.xaml @@ -384,15 +385,10 @@ if exist "$(ProjectDir)..\SicSetup\Packages\SicUI\PresetGroups" rd "$(ProjectDir - RoutineConfigView.xaml - - ProcessMonitorView.xaml - - RtIpAddressInput.xaml @@ -617,10 +613,6 @@ if exist "$(ProjectDir)..\SicSetup\Packages\SicUI\PresetGroups" rd "$(ProjectDir MSBuild:Compile Designer - - MSBuild:Compile - Designer - Designer MSBuild:Compile @@ -629,10 +621,6 @@ if exist "$(ProjectDir)..\SicSetup\Packages\SicUI\PresetGroups" rd "$(ProjectDir MSBuild:Compile Designer - - Designer - MSBuild:Compile - Designer MSBuild:Compile @@ -647,10 +635,6 @@ if exist "$(ProjectDir)..\SicSetup\Packages\SicUI\PresetGroups" rd "$(ProjectDir PMOperationView.xaml - - PMProcessView.xaml - - PMServoView.xaml diff --git a/ThirdParty/MECF.Framework/MECF.Framework.Common.dll b/ThirdParty/MECF.Framework/MECF.Framework.Common.dll index 85cf63b..9182ac6 100644 Binary files a/ThirdParty/MECF.Framework/MECF.Framework.Common.dll and b/ThirdParty/MECF.Framework/MECF.Framework.Common.dll differ diff --git a/ThirdParty/MECF.Framework/MECF.Framework.RT.Core.dll b/ThirdParty/MECF.Framework/MECF.Framework.RT.Core.dll index 64d5826..72556e3 100644 Binary files a/ThirdParty/MECF.Framework/MECF.Framework.RT.Core.dll and b/ThirdParty/MECF.Framework/MECF.Framework.RT.Core.dll differ diff --git a/ThirdParty/MECF.Framework/MECF.Framework.RT.EquipmentLibrary.dll b/ThirdParty/MECF.Framework/MECF.Framework.RT.EquipmentLibrary.dll index 88e2e30..a9b25fb 100644 Binary files a/ThirdParty/MECF.Framework/MECF.Framework.RT.EquipmentLibrary.dll and b/ThirdParty/MECF.Framework/MECF.Framework.RT.EquipmentLibrary.dll differ diff --git a/ThirdParty/MECF.Framework/MECF.Framework.Simulator.Core.dll b/ThirdParty/MECF.Framework/MECF.Framework.Simulator.Core.dll index c38f0be..c5a1095 100644 Binary files a/ThirdParty/MECF.Framework/MECF.Framework.Simulator.Core.dll and b/ThirdParty/MECF.Framework/MECF.Framework.Simulator.Core.dll differ diff --git a/ThirdParty/MECF.Framework/MECF.Framework.UI.Client.dll b/ThirdParty/MECF.Framework/MECF.Framework.UI.Client.dll index d63939a..9cd4090 100644 Binary files a/ThirdParty/MECF.Framework/MECF.Framework.UI.Client.dll and b/ThirdParty/MECF.Framework/MECF.Framework.UI.Client.dll differ diff --git a/ThirdParty/MECF.Framework/MECF.Framework.UI.Core.dll b/ThirdParty/MECF.Framework/MECF.Framework.UI.Core.dll index cc92491..0afd216 100644 Binary files a/ThirdParty/MECF.Framework/MECF.Framework.UI.Core.dll and b/ThirdParty/MECF.Framework/MECF.Framework.UI.Core.dll differ diff --git a/ThirdParty/MECF.Framework/Sicentury.Core.dll b/ThirdParty/MECF.Framework/Sicentury.Core.dll index 8a8bf3b..8e21db1 100644 Binary files a/ThirdParty/MECF.Framework/Sicentury.Core.dll and b/ThirdParty/MECF.Framework/Sicentury.Core.dll differ