| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 | using Newtonsoft.Json;using Newtonsoft.Json.Converters;using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using System.Text;using System.Threading.Tasks;using Venus_Core.Attributes;namespace Venus_Core{    /// <summary>    /// 设计概述:    /// 本设计主要目的,为了满足复杂的刻蚀工艺需求(各个工艺参数之间相互关联), 和应对未来不断新增的工艺需求(新的设备、    ///     新的工艺、新的材料等等), 同时又能对现存的Recipe保持最大的兼容    ///     /// 1. 将Process 的每道工艺分解为1个至多个逻辑工艺单元, 每个逻辑工艺单元通过 Class Name 和RT的工艺算法绑定,     ///     同时也和 GUI Recipe Editor 的页面布局绑定。    ///         /// 2. 一个逻辑单元功能调试好, 并且有在客户端使用后, 此逻辑单元想关联的 RT Process 代码和GUI 界面代码,     ///     不允许再修改, 只能增加新的Class 来实现新的工艺需求    ///         /// 3. 通过配置文件里面定义 ProcessUnit Class Name列表, 来定义当前机台支持的工艺功能, 也就是说如果Recipe文件里面保函了    ///     配置文件里面没有列出的工艺单元, 表明本机台不支持此Recipe, 并报警提示用户    /// </summary>     public partial class PressureByPressureModeUnit : ProcessUnitBase    {        public string UnitName { get; set; } = "PressureByPressureModeUnit";        public bool EnableRamp { get; set; }        public int StartPressure { get; set; } = 10;        public int TargetPressure { get; set; } = 20;        public int ValvePositionPreset { get; set; } = 10;        public int HoldTime { get; set; } = 1000;        public event PropertyChangedEventHandler PropertyChanged;        public void InvokePropertyChanged(string propertyName)        {            if (PropertyChanged != null)            {                PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));            }        }    }    public class PressureByValveModeUnit : ProcessUnitBase    {        public string UnitName { get; set; } = "PressureByValveModeUnit";        public bool EnableRamp { get; set; }        public int StartPosition { get; set; } = 10;        public int TargetPosition { get; set; } = 100;        public int HoldTime { get; set; }= 10000;    }    public class TCPUnit : ProcessUnitBase    {        private string m_UnitName = "TCPUnit";        public string UnitName        {         get { return m_UnitName; }            set { m_UnitName = value; }        }        private bool m_EnableRamp;        public bool EnableRamp        {            get { return m_EnableRamp;}            set { m_EnableRamp = value; }        }        public int RFPower { get; set; } = 10;        public int StartPower { get; set; } = 10;        public int TargetPower { get; set; } = 100;        public int HoldTime { get; set; } = 1000;        public int TuneCapPreset { get; set; } = 10;        public int LoadCapPreset { get; set; } = 10;        public int MaxReflectedPower { get; set; } = 100;    }    public class BiasUnit : ProcessUnitBase    {        public string UnitName { get; set; } = "BiasUnit";        public int BiasRFPower { get; set; } = 10;        public bool EnableRamp { get; set; }        public int StartBiasRFPower { get; set; } = 10;        public int TargetBiasRFPower { get; set; } = 100;        public int BiasRFHoldTime { get; set; } = 1000;        public int BiasTuneCapPreset { get; set; } = 10;        public int BiasLoadCapPreset { get; set; } = 10;        public int BiasMaxReflectedPower { get; set; } = 1000;        [JsonConverter(typeof(StringEnumConverter))]        public GeneratorMode BiasGeneratorMode { get; set; }        public int PulseRateFreq { get; set; } = 10;        public int PulseDutyCycle { get; set; } = 10;    }    public class GasControlUnit : ProcessUnitBase    {        public string UnitName { get; set; } = "GasControlUnit";        public bool EnableRamp { get; set; }        public int Gas1 { get; set; } = 10;        public int Gas1Target { get; set; } = 100;        public int Gas2 { get; set; } = 10;        public int Gas2Target { get; set; }= 100;        public int Gas3 { get; set; }=10;        public int Gas3Target { get; set; }=100;        public int Gas4 { get; set; } = 10;        public int Gas4Target { get; set; } = 100;        public int Gas5 { get; set; } = 10;        public int Gas5Target { get; set; } = 100;        public int Gas6 { get; set; } = 100;        public int Gas6Target { get; set; } = 10;        public int Gas7 { get; set; } = 100;        public int Gas7Target { get; set; } = 10;        public int Gas8 { get; set; } = 100;        public int Gas8Target { get; set; } = 10;        public int FlowRatie { get; set; } = 100;    }    public class ESCHVUnit : ProcessUnitBase    {        public string UnitName { get; set; } = "ESCHVUnit";        public int BacksideHelum { get; set; } = 10;        public int MinHeFlow { get; set; } = 10;        public int MaxHeFlow { get; set; } = 100;        public int ESCClampValtage { get; set; } = 10;        public int Temperature { get; set; } = 20;    }    public class ProcessKitUnit : ProcessUnitBase    {        public string UnitName { get; set; } = "ProcessKitUnit";        [JsonConverter(typeof(StringEnumConverter))]        private MovementPosition m_LiftPinPostion;        public MovementPosition LiftPinPostion        {            get { return m_LiftPinPostion; }            set { m_LiftPinPostion = value;  }        }        [JsonConverter(typeof(StringEnumConverter))]        public MovementPosition WeprBasrPinPosition { get; set; }     }}
 |