Bladeren bron

add res/dep recipe

chenzk 1 dag geleden
bovenliggende
commit
28abb1ea49

+ 12 - 24
Framework/Common/RecipeCenter/CurrentRampProfile.cs

@@ -11,39 +11,27 @@ namespace MECF.Framework.Common.RecipeCenter
     public class CurrentRampProfile : NotifiableItem
     {
         #region 内部变量
-        private int _currentRampDurartionSeconds;
-        private double _forwardAmps;
-        private double _forwardAmps2;
-        private double _forwardAmps3;
-        private double _forwardAmps4;
-        private double _forwardAmps5;
-        private double _forwardAmps6;
-        private bool _pulseEnabled;
-        private double _reverseAmps;
-        private double _shearPlateSpeed;
+        private int _durartionSeconds;
+        private double _currentValue;
+        private double _PlatingZoffset;
+        private double _PlatingSpeed;
+        private bool _biDireaction;
+        private int _biDFrequency;
         #endregion
 
         #region 属性
         [JsonProperty]
-        public int CurrentRampDurartionSeconds { get { return _currentRampDurartionSeconds; } set { _currentRampDurartionSeconds = value;InvokePropertyChanged(nameof(CurrentRampDurartionSeconds)); } }
+        public int DurartionSeconds { get { return _durartionSeconds; } set { _durartionSeconds = value;InvokePropertyChanged(nameof(DurartionSeconds)); } }
         [JsonProperty]
-        public double ForwardAmps { get { return _forwardAmps; } set { _forwardAmps = value;InvokePropertyChanged(nameof(ForwardAmps)); } }
+        public double CurrentValue { get { return _currentValue; } set { _currentValue = value;InvokePropertyChanged(nameof(CurrentValue)); } }
         [JsonProperty]
-        public double ForwardAmps2 { get { return _forwardAmps2; } set { _forwardAmps2 = value; InvokePropertyChanged(nameof(ForwardAmps2)); } }
+        public double PlatingZoffset { get { return _PlatingZoffset; } set { _PlatingZoffset = value; InvokePropertyChanged(nameof(PlatingZoffset)); } }
         [JsonProperty]
-        public double ForwardAmps3 { get { return _forwardAmps3; } set { _forwardAmps3 = value; InvokePropertyChanged(nameof(ForwardAmps3)); } }
+        public double PlatingSpeed { get { return _PlatingSpeed; } set { _PlatingSpeed = value; InvokePropertyChanged(nameof(PlatingSpeed)); } }
         [JsonProperty]
-        public double ForwardAmps4 { get { return _forwardAmps4; } set { _forwardAmps4 = value; InvokePropertyChanged(nameof(ForwardAmps4)); } }
+        public bool BiDireaction { get { return _biDireaction; } set { _biDireaction = value; InvokePropertyChanged(nameof(BiDireaction)); } }
         [JsonProperty]
-        public double ForwardAmps5 { get { return _forwardAmps5; } set { _forwardAmps5 = value; InvokePropertyChanged(nameof(ForwardAmps5)); } }
-        [JsonProperty]
-        public double ForwardAmps6 { get { return _forwardAmps6; } set { _forwardAmps6 = value; InvokePropertyChanged(nameof(ForwardAmps6)); } }
-        [JsonProperty]
-        public bool PulseEnabled { get { return _pulseEnabled; } set { _pulseEnabled=value;InvokePropertyChanged(nameof(PulseEnabled)); } }
-        [JsonProperty]
-        public double ReversedAmps { get { return _reverseAmps; } set { _reverseAmps = value;InvokePropertyChanged(nameof(ReversedAmps)); } }
-        [JsonProperty]
-        public double ShearPlateSpeed { get { return _shearPlateSpeed;} set { _shearPlateSpeed = value; InvokePropertyChanged(nameof(ShearPlateSpeed)); } }
+        public int BiDFrequency { get { return _biDFrequency; } set { _biDFrequency = value; InvokePropertyChanged(nameof(BiDFrequency)); } }
         #endregion
     }
 }

+ 131 - 42
Framework/Common/RecipeCenter/DepRecipe.cs

@@ -14,34 +14,64 @@ namespace MECF.Framework.Common.RecipeCenter
     public class DepRecipe : NotifiableItem
     {
         #region 内部变量
+        private int _anodeType;
         private string _author;
         private string _description;
         private string _ppid;
         private RecipeType _recipeType = RecipeType.DEP;
         private DateTime _saveDate;
         private DateTime _createDate;
-        private int _anodeType;
         private string _chemistry;
-        private int _currentWarningLevel;
-        private int _cycleClampsMaxTries;
-        private int _faultPercent;
-        private int _platingDelaySeconds;
-        private int _volatageLimitMax;
-        private int _volatageLimitMin;
-        private int _voltageWarningLevel;
-        private bool _cycleClampsEnable;
-        private bool _hotPlatingCurrentOn;
-        private ObservableCollection<CurrentRampProfile> _currentRampProfileSteps;
-        private ObservableCollection<PulsePowerSupplyStep> _pulsePowerSupplySteps;
-        private bool _multiAnodeType;
-        private int _depositionPlatingSteps;
-        private string _depositionTotalTime;
-        private double _depositionTotalCurrent;
         private int _totalTime;
+
+        private int _entrySpinSpeed;
+        private double _entryZoffset;
+        private int _platingDelay;
+        private bool _isEntryTypeCold;
+        private int _entryCurrent;
+        private int _entryVoltage;
+
+        private int _depCurrentWarning;
+        private int _depCurrentFault;
+        private int _depMaxVoltageWarning;
+        private int _depMaxVoltageFault;
+        private double _depZoffset;
+        private ObservableCollection<CurrentRampProfile> _depSteps;
+        private int _depStepCount;
+        private string _depStepTotalTime;
+        private double _depStepTotalCurrent;
+        private bool _isSmartSpinEnable;
+        private int _numberOfSmartSping;
+        private int _section1Speed;
+        private int _section1AngleStartPosition;
+        private int _section1AngleEndPostion;
+        private int _section2Speed;
+        private int _section2AngleStartPosiotion;
+        private int _section2AngleEndPostion;
+        private int _normalSpeed;
+
+        private int _reclaimSpeed;
+        private int _reclaimTime;
+        private double _reclaimZoffset;
+        private int _rinseSpeed;
+        private int _rinseTime;
+        private double _rinseZoffset;
+        private int _drySpeed;
+        private int _dryTime;
+        private double _dryZoffset;
+        private bool _rinseBeforeEntryEnable;
+        private int _intervalRinseSpeed;
+        private int _intervalRinseTime;
+        private double _intervalRinseZoffset;
+
+
+
         #endregion
 
         #region 属性
         [JsonProperty]
+        public int AnodeType { get { return _anodeType; } set { _anodeType = value; InvokePropertyChanged(nameof(AnodeType)); } }
+        [JsonProperty]
         public string Author { get { return _author; } set { _author = value; InvokePropertyChanged(nameof(Author)); } }
 
         [JsonProperty]
@@ -54,78 +84,137 @@ namespace MECF.Framework.Common.RecipeCenter
         public RecipeType RecipeType { get { return _recipeType; } set { _recipeType = value; InvokePropertyChanged(nameof(RecipeType)); } }
 
         [JsonProperty]
-        public DateTime CreateDate { get { return _createDate; } set { _createDate = value; InvokePropertyChanged(nameof(CreateDate)); } }
+        public DateTime SaveDate { get { return _saveDate; } set { _saveDate = value; InvokePropertyChanged(nameof(SaveDate)); } }
 
         [JsonProperty]
-        public DateTime SaveDate { get { return _saveDate; } set { _saveDate = value; InvokePropertyChanged(nameof(SaveDate)); } }
+        public DateTime CreateDate { get { return _createDate; } set { _createDate = value; InvokePropertyChanged(nameof(CreateDate)); } }
 
         [JsonProperty]
         public string Chemistry { get { return _chemistry; } set { _chemistry = value; InvokePropertyChanged(nameof(Chemistry)); } }
 
         [JsonProperty]
-        public int AnodeType { get { return _anodeType; } set { _anodeType = value;InvokePropertyChanged(nameof(AnodeType)); } }
+        public int TotalTime { get { return _totalTime; } set { _totalTime = value; InvokePropertyChanged(nameof(TotalTime)); } }
 
         [JsonProperty]
-        public int CurrentWarningLevel { get { return _currentWarningLevel; } set { _currentWarningLevel = value; InvokePropertyChanged(nameof(CurrentWarningLevel)); } }
+        public int EntrySpinSpeed { get { return _entrySpinSpeed; } set { _entrySpinSpeed = value; InvokePropertyChanged(nameof(EntrySpinSpeed)); } }
 
         [JsonProperty]
-        public int CycleClampsMaxTries { get { return _cycleClampsMaxTries;} set { _cycleClampsMaxTries = value; InvokePropertyChanged(nameof(CycleClampsMaxTries)); } }
+        public double EntryZoffset { get { return _entryZoffset; } set { _entryZoffset = value; InvokePropertyChanged(nameof(EntryZoffset)); } }
 
         [JsonProperty]
-        public int FaultPercent { get { return _faultPercent; } set { _faultPercent = value; InvokePropertyChanged(nameof(FaultPercent)); } }
+        public int PlatingDelay { get { return _platingDelay; } set { _platingDelay = value; InvokePropertyChanged(nameof(PlatingDelay)); } }
 
         [JsonProperty]
-        public int PlatingDelaySeconds { get { return _platingDelaySeconds; } set { _platingDelaySeconds = value; InvokePropertyChanged(nameof(PlatingDelaySeconds)); } }
+        public bool IsEntryTypeCold { get { return _isEntryTypeCold; } set { _isEntryTypeCold = value; InvokePropertyChanged(nameof(IsEntryTypeCold)); } }
 
         [JsonProperty]
-        public int VolatageLimitMax { get { return _volatageLimitMax;} set { _volatageLimitMax = value; InvokePropertyChanged(nameof(VolatageLimitMax)); } }
+        public int EntryCurrent { get { return _entryCurrent; } set { _entryCurrent = value; InvokePropertyChanged(nameof(EntryCurrent)); } }
 
         [JsonProperty]
-        public int VolatageLimitMin { get { return _volatageLimitMin;} set { _volatageLimitMin = value; InvokePropertyChanged(nameof(VolatageLimitMin)); } }
+        public int EntryVoltage { get { return _entryVoltage; } set { _entryVoltage = value; InvokePropertyChanged(nameof(EntryVoltage)); } }
 
         [JsonProperty]
-        public int VoltageWarningLevel { get { return _voltageWarningLevel; } set { _voltageWarningLevel = value; InvokePropertyChanged(nameof(VoltageWarningLevel)); } }
+        public int DepCurrentWarning { get { return _depCurrentWarning; } set { _depCurrentWarning = value; InvokePropertyChanged(nameof(DepCurrentWarning)); } }
 
         [JsonProperty]
-        public bool CycleClampsEnable { get { return _cycleClampsEnable; } set { _cycleClampsEnable = value;InvokePropertyChanged(nameof(CycleClampsEnable)); } }
+        public int DepCurrentFault { get { return _depCurrentFault; } set { _depCurrentFault = value; InvokePropertyChanged(nameof(DepCurrentFault)); } }
 
         [JsonProperty]
-        public bool HotPlatingCurrentOn { get { return _hotPlatingCurrentOn; } set { _hotPlatingCurrentOn = value;InvokePropertyChanged(nameof(HotPlatingCurrentOn)); } }
+        public int DepMaxVoltageWarning { get { return _depMaxVoltageWarning; } set { _depMaxVoltageWarning = value; InvokePropertyChanged(nameof(DepMaxVoltageWarning)); } }
 
         [JsonProperty]
-        public ObservableCollection<CurrentRampProfile> CurrentRampProfileSteps { get { return _currentRampProfileSteps; } 
-            set { _currentRampProfileSteps = value; InvokePropertyChanged(nameof(CurrentRampProfileSteps));} }
+        public int DepMaxVoltageFault { get { return _depMaxVoltageFault; } set { _depMaxVoltageFault = value; InvokePropertyChanged(nameof(DepMaxVoltageFault)); } }
 
         [JsonProperty]
-        public ObservableCollection<PulsePowerSupplyStep> PulsePowerSupplySteps { get { return _pulsePowerSupplySteps; } 
-            set { _pulsePowerSupplySteps = value; InvokePropertyChanged(nameof(PulsePowerSupplySteps));} }
+        public double DepZoffset { get { return _depZoffset; } set { _depZoffset = value; InvokePropertyChanged(nameof(DepZoffset)); } }
 
         [JsonProperty]
-        public bool MultiAnodeType { get { return _multiAnodeType; } set { _multiAnodeType = value; InvokePropertyChanged(nameof(MultiAnodeType));} }
+        public ObservableCollection<CurrentRampProfile> DepSteps { get { return _depSteps; } set { _depSteps = value; InvokePropertyChanged(nameof(DepSteps)); } }
 
         [JsonProperty]
-        public int DepositionPlatingSteps { get { return _depositionPlatingSteps; } set { _depositionPlatingSteps = value; InvokePropertyChanged(nameof(DepositionPlatingSteps)); } }
+        public int DepStepCount { get { return _depStepCount; } set { _depStepCount = value; InvokePropertyChanged(nameof(DepStepCount)); } }
 
         [JsonProperty]
-        public string DepositionTotalTime { get { return _depositionTotalTime; } set { _depositionTotalTime = value; InvokePropertyChanged(nameof(DepositionTotalTime)); } }
+        public string DepStepTotalTime { get { return _depStepTotalTime; } set { _depStepTotalTime = value; InvokePropertyChanged(nameof(DepStepTotalTime)); } }
 
         [JsonProperty]
-        public double DepositionTotalCurrent { get { return _depositionTotalCurrent; } set { _depositionTotalCurrent = value; InvokePropertyChanged(nameof(DepositionTotalCurrent)); } }
+        public double DepStepTotalCurrent { get { return _depStepTotalCurrent; } set { _depStepTotalCurrent = value; InvokePropertyChanged(nameof(DepStepTotalCurrent)); } }
 
         [JsonProperty]
-        public int TotalTime { get { return _totalTime; } set { _totalTime = value; InvokePropertyChanged(nameof(TotalTime)); } }
+        public bool IsSmartSpinEnable { get { return _isSmartSpinEnable; } set { _isSmartSpinEnable = value; InvokePropertyChanged(nameof(IsSmartSpinEnable)); } }
+
+        [JsonProperty]
+        public int NumberOfSmartSping { get { return _numberOfSmartSping; } set { _numberOfSmartSping = value; InvokePropertyChanged(nameof(NumberOfSmartSping)); } }
+
+        [JsonProperty]
+        public int Section1Speed { get { return _section1Speed; } set { _section1Speed = value; InvokePropertyChanged(nameof(Section1Speed)); } }
+
+        [JsonProperty]
+        public int Section1AngleStartPosiotion { get { return _section1AngleStartPosition; } set { _section1AngleStartPosition = value; InvokePropertyChanged(nameof(Section1AngleStartPosiotion)); } }
+
+        [JsonProperty]
+        public int Section1AngleEndPostion { get { return _section1AngleEndPostion; } set { _section1AngleEndPostion = value; InvokePropertyChanged(nameof(Section1AngleEndPostion)); } }
+
+        [JsonProperty]
+        public int Section2Speed { get { return _section2Speed; } set { _section2Speed = value; InvokePropertyChanged(nameof(Section2Speed)); } }
+
+        [JsonProperty]
+        public int Section2AngleStartPosiotion { get { return _section2AngleStartPosiotion; } set { _section2AngleStartPosiotion = value; InvokePropertyChanged(nameof(Section2AngleStartPosiotion)); } }
+
+        [JsonProperty]
+        public int Section2AngleEndPostion { get { return _section2AngleEndPostion; } set { _section2AngleEndPostion = value; InvokePropertyChanged(nameof(Section2AngleEndPostion)); } }
+
+        [JsonProperty]
+        public int NormalSpeed { get { return _normalSpeed; } set { _normalSpeed = value; InvokePropertyChanged(nameof(NormalSpeed)); } }
+
+        [JsonProperty]
+        public int ReclaimSpeed { get { return _reclaimSpeed; } set { _reclaimSpeed = value; InvokePropertyChanged(nameof(ReclaimSpeed)); } }
+
+        [JsonProperty]
+        public int ReclaimTime { get { return _reclaimTime; } set { _reclaimTime = value; InvokePropertyChanged(nameof(ReclaimTime)); } }
+
+        [JsonProperty]
+        public double ReclaimZoffset { get { return _reclaimZoffset; } set { _reclaimZoffset = value; InvokePropertyChanged(nameof(ReclaimZoffset)); } }
+
+        [JsonProperty]
+        public int RinseSpeed { get { return _rinseSpeed; } set { _rinseSpeed = value; InvokePropertyChanged(nameof(RinseSpeed)); } }
+
+        [JsonProperty]
+        public int RinseTime { get { return _rinseTime; } set { _rinseTime = value; InvokePropertyChanged(nameof(RinseTime)); } }
+
+        [JsonProperty]
+        public double RinseZoffset { get { return _rinseZoffset; } set { _rinseZoffset = value; InvokePropertyChanged(nameof(RinseZoffset)); } }
+
+        [JsonProperty]
+        public int DrySpeed { get { return _drySpeed; } set { _drySpeed = value; InvokePropertyChanged(nameof(DrySpeed)); } }
+
+        [JsonProperty]
+        public int DryTime { get { return _dryTime; } set { _dryTime = value; InvokePropertyChanged(nameof(DryTime)); } }
+
+        [JsonProperty]
+        public double DryZoffset { get { return _dryZoffset; } set { _dryZoffset = value; InvokePropertyChanged(nameof(DryZoffset)); } }
+
+        [JsonProperty]
+        public bool RinseBeforeEntryEnable { get { return _rinseBeforeEntryEnable; } set { _rinseBeforeEntryEnable = value; InvokePropertyChanged(nameof(RinseBeforeEntryEnable)); } }
+
+        [JsonProperty]
+        public int IntervalRinseSpeed { get { return _intervalRinseSpeed; } set { _intervalRinseSpeed = value; InvokePropertyChanged(nameof(IntervalRinseSpeed)); } }
+
+        [JsonProperty]
+        public int IntervalRinseTime { get { return _intervalRinseTime; } set { _intervalRinseTime = value; InvokePropertyChanged(nameof(IntervalRinseTime)); } }
+
+        [JsonProperty]
+        public double IntervalRinseZoffset { get { return _intervalRinseZoffset; } set { _intervalRinseZoffset = value; InvokePropertyChanged(nameof(IntervalRinseZoffset)); } }
         #endregion
+
         /// <summary>
         /// 计算Recipe总时间
         /// </summary>
         /// <returns></returns>
         public int CalculateRecipeTotalTime()
         {
-            int count = this.PlatingDelaySeconds;
-            foreach (var item in this.CurrentRampProfileSteps)
-            {
-                count += item.CurrentRampDurartionSeconds;
-            }
+            int count = 0;
+ 
             return count;
         }
     }

+ 1 - 63
Framework/Common/RecipeCenter/ResRecipe.cs

@@ -18,7 +18,6 @@ namespace MECF.Framework.Common.RecipeCenter
         private RecipeType _recipeType = RecipeType.RES;
         private DateTime _saveDate;
         private DateTime _createDate;
-        private string _chemistryVendor;
 
 
         private string _metal;
@@ -33,7 +32,6 @@ namespace MECF.Framework.Common.RecipeCenter
         private int _caFlowSetPoint;
         private int _caFlowRateWarningLow;
         private int _caFlowRateErrorLow;
-        private bool _idleFlowEnable;
         private double _temperatureErrorHigh;
         private double _temperatureErrorLow;
         private double _temperatureSetPoint;
@@ -46,26 +44,9 @@ namespace MECF.Framework.Common.RecipeCenter
         private double _anFlowRateErrorLow;
         private double _anFlowRateWarningLow;
         private double _anFlowSetPoint;
-        private int  _anLevelErrorHigh;
-        private int  _anLevelErrorLow;
-        private int  _anLevelWarningLow;
-        private int _reservoirANLevel;
-        private int _crossDoseCurrentRate;
-        private int _crossDoseTimeRate;
+        
         private bool _currentBased;
         private bool _timeBased;
-        private bool _burnInEnable;
-        private int _burnInTime;
-        private int _burnInCurrent;
-        private int _burnInCycles;
-        private DateTimeOffset _burnInStartTime;
-        private bool _burnInCurrentLimitEnable;
-        private int _burnInMinCurrentLimit;
-        private bool _cmmEnable;
-        private double _cmmCurrentSetPoint;
-        private int _cmmCurrentFaultPercent;
-        private int _cmmCurrentWarningPercent;
-        private int _cmmMinVoltage;
 
         private bool _idleTime;
         private bool _charge;
@@ -96,8 +77,6 @@ namespace MECF.Framework.Common.RecipeCenter
         [JsonProperty]
         public string Ppid { get { return _ppid; } set { _ppid = value; InvokePropertyChanged(nameof(Ppid)); } }
         [JsonProperty]
-        public string ChemistryVendor { get { return _chemistryVendor; } set { _chemistryVendor = value; InvokePropertyChanged(nameof(ChemistryVendor)); } }
-        [JsonProperty]
         public string Metal { get { return _metal; } set { _metal = value; InvokePropertyChanged(nameof(Metal)); } }
 
 
@@ -133,8 +112,6 @@ namespace MECF.Framework.Common.RecipeCenter
         [JsonProperty]
         public int CAFlowRateErrorLow { get { return _caFlowRateErrorLow; } set { _caFlowRateErrorLow = value; InvokePropertyChanged(nameof(CAFlowRateErrorLow)); } }
         [JsonProperty]
-        public bool IdleFlowEnable { get { return _idleFlowEnable; } set { _idleFlowEnable = value; InvokePropertyChanged(nameof(IdleFlowEnable)); } }
-        [JsonProperty]
         public double TemperatureErrorHigh { get { return _temperatureErrorHigh; } set { _temperatureErrorHigh = value; InvokePropertyChanged(nameof(TemperatureErrorHigh)); } }
         [JsonProperty]
         public double TemperatureErrorLow { get { return _temperatureErrorLow; } set { _temperatureErrorLow = value; InvokePropertyChanged(nameof(TemperatureErrorLow)); } }
@@ -158,48 +135,9 @@ namespace MECF.Framework.Common.RecipeCenter
         [JsonProperty]
         public double ANFlowSetPoint { get { return _anFlowSetPoint; } set { _anFlowSetPoint = value; InvokePropertyChanged(nameof(ANFlowSetPoint)); } }
         [JsonProperty]
-        public int ANLevelErrorHigh { get { return _anLevelErrorHigh; } set { _anLevelErrorHigh = value; InvokePropertyChanged(nameof(ANLevelErrorHigh)); } }
-        [JsonProperty]
-        public int ANLevelErrorLow { get { return _anLevelErrorLow; } set { _anLevelErrorLow = value; InvokePropertyChanged(nameof(ANLevelErrorLow)); } }
-        [JsonProperty]
-        public int ANLevelWarningLow { get { return _anLevelWarningLow; } set { _anLevelWarningLow = value; InvokePropertyChanged(nameof(ANLevelWarningLow)); } }
-        [JsonProperty]
-        public int ReservoirANLevel { get { return _reservoirANLevel; } set { _reservoirANLevel = value; InvokePropertyChanged(nameof(ReservoirANLevel)); } }
-
-        [JsonProperty]
-        public int CrossDoseCurrentRate { get { return _crossDoseCurrentRate; } set { _crossDoseCurrentRate = value; InvokePropertyChanged(nameof(CrossDoseCurrentRate)); } }
-        [JsonProperty]
-        public int CrossDoseTimeRate { get { return _crossDoseTimeRate; } set { _crossDoseTimeRate = value; InvokePropertyChanged(nameof(CrossDoseTimeRate)); } }
-        [JsonProperty]
         public bool CurrentBased { get { return _currentBased; } set { _currentBased = value; InvokePropertyChanged(nameof(CurrentBased)); } }
         [JsonProperty]
         public bool TimeBased { get { return _timeBased; } set { _timeBased = value; InvokePropertyChanged(nameof(TimeBased)); } }
-
-        [JsonProperty]
-        public bool BurnInEnable { get { return _burnInEnable; } set { _burnInEnable = value; InvokePropertyChanged(nameof(BurnInEnable)); } }
-        [JsonProperty]
-        public int BurnInTime { get { return _burnInTime; } set { _burnInTime = value; InvokePropertyChanged(nameof(BurnInTime)); } }
-        [JsonProperty]
-        public int BurnInCurrent { get { return _burnInCurrent; } set { _burnInCurrent = value; InvokePropertyChanged(nameof(BurnInCurrent)); } }
-        [JsonProperty]
-        public int BurnInCycles { get { return _burnInCycles; } set { _burnInCycles = value; InvokePropertyChanged(nameof(BurnInCycles)); } }
-        [JsonProperty]
-        public DateTimeOffset BurnInStartTime { get { return _burnInStartTime; } set { _burnInStartTime = value; InvokePropertyChanged(nameof(BurnInStartTime)); } }
-        [JsonProperty]
-        public bool BurnInCurrentLimitEnable { get { return _burnInCurrentLimitEnable; } set { _burnInCurrentLimitEnable = value; InvokePropertyChanged(nameof(BurnInCurrentLimitEnable)); } }
-        [JsonProperty]
-        public int BurnInMinCurrentLimit { get { return _burnInMinCurrentLimit; } set { _burnInMinCurrentLimit = value; InvokePropertyChanged(nameof(BurnInMinCurrentLimit)); } }
-        [JsonProperty]
-        public bool CMMEnable { get { return _cmmEnable; } set { _cmmEnable = value; InvokePropertyChanged(nameof(CMMEnable)); } }
-        [JsonProperty]
-        public double CMMCurrentSetPoint { get { return _cmmCurrentSetPoint; } set { _cmmCurrentSetPoint = value; InvokePropertyChanged(nameof(CMMCurrentSetPoint)); } }
-        [JsonProperty]
-        public int CMMCurrentFaultPercent { get { return _cmmCurrentFaultPercent; } set { _cmmCurrentFaultPercent = value; InvokePropertyChanged(nameof(CMMCurrentFaultPercent)); } }
-        [JsonProperty]
-        public int CMMCurrentWarningPercent { get { return _cmmCurrentWarningPercent; } set { _cmmCurrentWarningPercent = value; InvokePropertyChanged(nameof(CMMCurrentWarningPercent)); } }
-        [JsonProperty]
-        public int CMMMinVoltage { get { return _cmmMinVoltage; } set { _cmmMinVoltage = value; InvokePropertyChanged(nameof(CMMMinVoltage)); } }
-
         #endregion
     }
 }

+ 54 - 230
PunkHPX8_MainPages/ViewModels/DepRecipeViewModel.cs

@@ -77,7 +77,7 @@ namespace PunkHPX8_MainPages.ViewModels
         /// <summary>
         /// 化学液集合
         /// </summary>
-        private List<string> _chemistryLst = new List<string>();
+        private List<string> _chemistryList = new List<string>();
         /// <summary>
         /// 显示MultiZone列
         /// </summary>
@@ -98,10 +98,6 @@ namespace PunkHPX8_MainPages.ViewModels
         /// Pulse DataGrid选择索引
         /// </summary>
         private int _selectedPulseIndex = -1;
-        /// <summary>
-        /// Pulse类型集合
-        /// </summary>
-        private List<string> _pulseTypeList = new List<string>();
         #endregion
 
         #region 属性
@@ -161,10 +157,10 @@ namespace PunkHPX8_MainPages.ViewModels
         /// <summary>
         /// 化学液集合
         /// </summary>
-        public List<string> ChemistryLst
+        public List<string> ChemistryList
         {
-            get { return _chemistryLst; }
-            set { SetProperty(ref _chemistryLst, value); }
+            get { return _chemistryList; }
+            set { SetProperty(ref _chemistryList, value); }
         }
         /// <summary>
         /// MultiZone 显示
@@ -186,18 +182,7 @@ namespace PunkHPX8_MainPages.ViewModels
             get { return _singleZoneShow; }
             set { SetProperty(ref _singleZoneShow, value);}
         }
-        /// <summary>
-        /// 选择Anode Type
-        /// </summary>
-        public string SelectedAnodeType
-        {
-            get { return _selectAnodeType; }
-            set 
-            {
-                SetProperty(ref _selectAnodeType, value);
-                UpdateDataGridShow();
-            }
-        }
+
         /// <summary>
         /// DataGrid 索引
         /// </summary>
@@ -215,11 +200,6 @@ namespace PunkHPX8_MainPages.ViewModels
             set { SetProperty(ref _selectedPulseIndex, value); }
         }
 
-        public List<string> PulseTypeList
-        {
-            get { return _pulseTypeList; }
-            set { SetProperty(ref _pulseTypeList, value); }
-        }
         #endregion
 
         #region 指令
@@ -251,18 +231,6 @@ namespace PunkHPX8_MainPages.ViewModels
 
         [IgnorePropertyChange]
         public ICommand DeleteCommand { get;private set; }
-
-        [IgnorePropertyChange]
-        public ICommand AddBelowPulseCommand { get; private set; }
-        [IgnorePropertyChange]
-        public ICommand AddAbovePulseCommand { get; private set; }
-        [IgnorePropertyChange]
-        public ICommand MoveUpPulseCommand { get; private set; }
-        [IgnorePropertyChange]
-        public ICommand MoveDownPulseCommand { get; private set; }
-
-        [IgnorePropertyChange]
-        public ICommand DeletePulseCommand { get; private set; }
         #endregion
         /// <summary>
         /// 构造函数
@@ -279,19 +247,13 @@ namespace PunkHPX8_MainPages.ViewModels
             MoveUpCommand=new DelegateCommand<object>(MoveUpAction);
             MoveDownCommand=new DelegateCommand<object>(MoveDownAction);
             DeleteCommand=new DelegateCommand<object>(DeleteAction);
-            AddBelowPulseCommand = new DelegateCommand<object>(AddBelowPulseAction);
-            AddAbovePulseCommand = new DelegateCommand<object>(AddAbovePulseAction);
-            MoveUpPulseCommand=new DelegateCommand<object>(MoveUpPulseAction);
-            MoveDownPulseCommand = new DelegateCommand<object>(MoveDownPulseAction);
-            DeletePulseCommand =new DelegateCommand<object>(DeletePulseAction);
+
             string chemistryContent = QueryDataClient.Instance.Service.GetConfig($"System.ChemistryList").ToString();
             if (!string.IsNullOrEmpty(chemistryContent))
             {
-                ChemistryLst = chemistryContent.Split(',').ToList();
+                ChemistryList = chemistryContent.Split(',').ToList();
             }
-            PulseTypeList.Add("Plus");
-            PulseTypeList.Add("Minus");
-            PulseTypeList.Add("Off");
+
             InitializeProprtyValidResultDictionary();
 
         }
@@ -300,12 +262,31 @@ namespace PunkHPX8_MainPages.ViewModels
         /// </summary>
         private void InitializeProprtyValidResultDictionary()
         {
-            PropertyValidResultDic["CurrentWarningLevel"] = false;
-            PropertyValidResultDic["FaultPercent"] = false;
-            PropertyValidResultDic["VolatageLimitMin"] = false;
-            PropertyValidResultDic["VolatageLimitMax"] = false;
-            PropertyValidResultDic["VoltageWarningLevel"] = false;
-            PropertyValidResultDic["PlatingDelaySeconds"] = false;
+            PropertyValidResultDic["EntrySpinSpeed"] = false;
+            PropertyValidResultDic["EntryZoffset"] = false;
+            PropertyValidResultDic["PlatingDelay"] = false;
+            PropertyValidResultDic["EntryCurrent"] = false;
+            PropertyValidResultDic["EntryVoltage"] = false;
+            PropertyValidResultDic["DepCurrentWarning"] = false;
+            PropertyValidResultDic["DepCurrentFault"] = false;
+            PropertyValidResultDic["DepMaxVoltageWarning"] = false;
+            PropertyValidResultDic["DepMaxVoltageFault"] = false;
+            PropertyValidResultDic["DepZoffset"] = false;
+            PropertyValidResultDic["Section1Speed"] = false;
+            PropertyValidResultDic["Section2Speed"] = false;
+            PropertyValidResultDic["NormalSpeed"] = false;
+            PropertyValidResultDic["ReclaimSpeed"] = false;
+            PropertyValidResultDic["ReclaimTime"] = false;
+            PropertyValidResultDic["ReclaimZoffset"] = false;
+            PropertyValidResultDic["RinseSpeed"] = false;
+            PropertyValidResultDic["RinseTime"] = false;
+            PropertyValidResultDic["RinseZoffset"] = false;
+            PropertyValidResultDic["DrySpeed"] = false;
+            PropertyValidResultDic["DryTime"] = false;
+            PropertyValidResultDic["DryZoffset"] = false;
+            PropertyValidResultDic["IntervalRinseSpeed"] = false;
+            PropertyValidResultDic["IntervalRinseTime"] = false;
+            PropertyValidResultDic["IntervalRinseZoffset"] = false;
             
         }
         /// <summary>
@@ -398,8 +379,7 @@ namespace PunkHPX8_MainPages.ViewModels
                 Recipe.CreateDate = DateTime.Now;
                 Recipe.Ppid = recipeNameDialog.RecipeName;
                 Recipe.Description=recipeNameDialog.RecipeDescription;
-                Recipe.CurrentRampProfileSteps = new ObservableCollection<CurrentRampProfile>();
-                Recipe.PulsePowerSupplySteps = new ObservableCollection<PulsePowerSupplyStep>();
+                Recipe.DepSteps = new ObservableCollection<CurrentRampProfile>();
                 Enable = true;
                 _isEdit = false;
             }
@@ -426,25 +406,26 @@ namespace PunkHPX8_MainPages.ViewModels
                 int platingsteps = 0;
                 int totaltime = 0;
                 double totalcurrent = 0;
-                foreach(var obj in Recipe.CurrentRampProfileSteps)
+                foreach(var obj in Recipe.DepSteps)
                 {
-                    totaltime += obj.CurrentRampDurartionSeconds;
-                    totalcurrent += (obj.CurrentRampDurartionSeconds * obj.ForwardAmps);
+                    totaltime += obj.DurartionSeconds;
+                    totalcurrent += (obj.CurrentValue * obj.DurartionSeconds);
                     platingsteps++;
                 }
                 //计算Deposition PlatingSteps
-                Recipe.DepositionPlatingSteps = platingsteps;
+                Recipe.DepStepCount = platingsteps;
                 //计算Deposition Totaltimes
                 string date = string.Empty;
                 var seconds = (int)(totaltime % 60);
                 var minutes = (int)(totaltime / 60) % 60;
                 var hours = (int)(totaltime / 3600) % 60;
                 date = string.Format("{0:00}:{1:00}:{2:00}", hours + "h", minutes + "m", seconds + "s");
-                Recipe.DepositionTotalTime = date;
+                Recipe.DepStepTotalTime = date;
                 //计算Deposition TotalCurrent
-                Recipe.DepositionTotalCurrent = totalcurrent / 3600;
+                Recipe.DepStepTotalCurrent = totalcurrent / 3600;
                 //计算TotalTime
-                Recipe.TotalTime = totaltime + Recipe.PlatingDelaySeconds;
+                Recipe.TotalTime = totaltime + Recipe.PlatingDelay + 
+                    Recipe.ReclaimTime + Recipe.RinseTime + Recipe.DryTime + Recipe.IntervalRinseTime;  
                 try
                 {
                     _uiRecipeManager.SaveRecipe<DepRecipe>(ENGINEERING, Recipe.Ppid,"dep", Recipe);
@@ -478,53 +459,6 @@ namespace PunkHPX8_MainPages.ViewModels
                     if (!CheckNameExist(recipeNameDialog.RecipeName))
                     {
                         recipe = new DepRecipe();
-
-                        //复制属性
-                        //recipe.Chemistry = Recipe.Chemistry;
-                        //recipe.AnodeType = Recipe.AnodeType;
-                        //recipe.CurrentWarningLevel = Recipe.CurrentWarningLevel;
-                        //recipe.CycleClampsMaxTries = Recipe.CycleClampsMaxTries;
-                        //recipe.FaultPercent = Recipe.FaultPercent;
-                        //recipe.PlatingDelaySeconds = Recipe.PlatingDelaySeconds;
-                        //recipe.VolatageLimitMax = Recipe.VolatageLimitMax;
-                        //recipe.VolatageLimitMin = Recipe.VolatageLimitMin;
-                        //recipe.VoltageWarningLevel = Recipe.VoltageWarningLevel;
-                        //recipe.CycleClampsEnable = Recipe.CycleClampsEnable;
-                        //recipe.HotPlatingCurrentOn = Recipe.HotPlatingCurrentOn;
-                        //recipe.MultiAnodeType = Recipe.MultiAnodeType;
-                        //recipe.DepositionPlatingSteps = Recipe.DepositionPlatingSteps;
-                        //recipe.DepositionTotalTime = Recipe.DepositionTotalTime;
-                        //recipe.DepositionTotalCurrent = Recipe.DepositionTotalCurrent;
-                        //recipe.TotalTime = Recipe.TotalTime;
-
-                        //recipe.CurrentRampProfileSteps = new ObservableCollection<CurrentRampProfile>();
-                        //foreach(var item in Recipe.CurrentRampProfileSteps)
-                        //{
-                        //    CurrentRampProfile currentRampProfile = new CurrentRampProfile();
-
-                        //    currentRampProfile.CurrentRampDurartionSeconds = item.CurrentRampDurartionSeconds;
-                        //    currentRampProfile.ForwardAmps = item.ForwardAmps;
-                        //    currentRampProfile.ForwardAmps2 = item.ForwardAmps2;
-                        //    currentRampProfile.ForwardAmps3 = item.ForwardAmps3;
-                        //    currentRampProfile.ForwardAmps4 = item.ForwardAmps4;
-                        //    currentRampProfile.ForwardAmps5 = item.ForwardAmps5;
-                        //    currentRampProfile.ForwardAmps6 = item.ForwardAmps6;
-                        //    currentRampProfile.PulseEnabled = item.PulseEnabled;
-                        //    currentRampProfile.ReversedAmps = item.ReversedAmps;
-                        //    currentRampProfile.ShearPlateSpeed = item.ShearPlateSpeed;
-
-                        //    recipe.CurrentRampProfileSteps.Add(currentRampProfile);
-                        //}
-
-                        //recipe.PulsePowerSupplySteps = new ObservableCollection<PulsePowerSupplyStep>();
-                        //foreach (var item in Recipe.PulsePowerSupplySteps)
-                        //{
-                        //    PulsePowerSupplyStep pulsePowerSupplyStep = new PulsePowerSupplyStep();
-
-                        //    pulsePowerSupplyStep.DurationHundredsMicroSeconds = item.DurationHundredsMicroSeconds;
-                        //    pulsePowerSupplyStep.Type = item.Type;
-                        //    recipe.PulsePowerSupplySteps.Add(pulsePowerSupplyStep);
-                        //}
                         recipe = (DepRecipe)PropertyUtil.Clone(Recipe);
 
                         recipe.CreateDate = DateTime.Now;
@@ -589,23 +523,6 @@ namespace PunkHPX8_MainPages.ViewModels
             }
             return true;
         }
-        /// <summary>
-        /// 更新表格显示
-        /// </summary>
-        private void UpdateDataGridShow()
-        {
-            if(Recipe!=null)
-            {
-                if(Recipe.AnodeType==0)
-                {
-                    MultiZoneShow = true;
-                }
-                else
-                {
-                    MultiZoneShow = false;
-                }
-            }
-        }
         #region Ramp按钮
         /// <summary>
         /// 增加
@@ -616,7 +533,7 @@ namespace PunkHPX8_MainPages.ViewModels
             if (Recipe != null)
             {
                 CurrentRampProfile currentRampProfile = new CurrentRampProfile();
-                Recipe.CurrentRampProfileSteps.Insert(SelectedRampIndex + 1, currentRampProfile);
+                Recipe.DepSteps.Insert(SelectedRampIndex + 1, currentRampProfile);
                 SelectedRampIndex++;
             }
 
@@ -632,12 +549,12 @@ namespace PunkHPX8_MainPages.ViewModels
                 CurrentRampProfile currentRampProfile = new CurrentRampProfile();
                 if (SelectedRampIndex == -1)
                 {
-                    Recipe.CurrentRampProfileSteps.Add(currentRampProfile);
+                    Recipe.DepSteps.Add(currentRampProfile);
                     SelectedRampIndex = 0;
                 }
                 else
                 {
-                    Recipe.CurrentRampProfileSteps.Insert(SelectedRampIndex, currentRampProfile);
+                    Recipe.DepSteps.Insert(SelectedRampIndex, currentRampProfile);
                     SelectedRampIndex--;
                 }
             }
@@ -653,9 +570,9 @@ namespace PunkHPX8_MainPages.ViewModels
                 if(SelectedRampIndex>0)
                 {
                     int currentIndex = SelectedRampIndex;
-                    CurrentRampProfile currentRampProfile = Recipe.CurrentRampProfileSteps[SelectedRampIndex];
-                    Recipe.CurrentRampProfileSteps.RemoveAt(SelectedRampIndex);
-                    Recipe.CurrentRampProfileSteps.Insert(currentIndex - 1,currentRampProfile);
+                    CurrentRampProfile currentRampProfile = Recipe.DepSteps[SelectedRampIndex];
+                    Recipe.DepSteps.RemoveAt(SelectedRampIndex);
+                    Recipe.DepSteps.Insert(currentIndex - 1,currentRampProfile);
                     SelectedRampIndex = currentIndex - 1;
                 }
             }
@@ -668,12 +585,12 @@ namespace PunkHPX8_MainPages.ViewModels
         {
             if (Recipe != null)
             {
-                if (SelectedRampIndex>=0&&SelectedRampIndex <Recipe.CurrentRampProfileSteps.Count-1 &&Recipe.CurrentRampProfileSteps.Count>1)
+                if (SelectedRampIndex>=0&&SelectedRampIndex <Recipe.DepSteps.Count-1 &&Recipe.DepSteps.Count>1)
                 {
                     int currentIndex = SelectedRampIndex;
-                    CurrentRampProfile currentRampProfile = Recipe.CurrentRampProfileSteps[SelectedRampIndex];
-                    Recipe.CurrentRampProfileSteps.RemoveAt(SelectedRampIndex);
-                    Recipe.CurrentRampProfileSteps.Insert(currentIndex + 1, currentRampProfile);
+                    CurrentRampProfile currentRampProfile = Recipe.DepSteps[SelectedRampIndex];
+                    Recipe.DepSteps.RemoveAt(SelectedRampIndex);
+                    Recipe.DepSteps.Insert(currentIndex + 1, currentRampProfile);
                     SelectedRampIndex = currentIndex + 1;
                 }
             }
@@ -686,102 +603,9 @@ namespace PunkHPX8_MainPages.ViewModels
         {
             if (SelectedRampIndex != -1)
             {
-                if (Recipe != null && Recipe.CurrentRampProfileSteps.Count > SelectedRampIndex)
-                {
-                    Recipe.CurrentRampProfileSteps.RemoveAt(SelectedRampIndex);
-                }
-            }
-        }
-        #endregion
-
-        #region Pulse按钮
-        /// <summary>
-        /// 增加
-        /// </summary>
-        /// <param name="param"></param>
-        private void AddBelowPulseAction(object param)
-        {
-            if (Recipe != null)
-            {
-                if (Recipe.PulsePowerSupplySteps.Count < 4)
-                {
-                    PulsePowerSupplyStep pulsePowerSupplyStep = new PulsePowerSupplyStep();
-                    Recipe.PulsePowerSupplySteps.Insert(SelectedPulseIndex + 1, pulsePowerSupplyStep);
-                    SelectedPulseIndex++;
-                }
-            }
-        }
-        /// <summary>
-        /// 增加
-        /// </summary>
-        /// <param name="param"></param>
-        private void AddAbovePulseAction(object param)
-        {
-            if (Recipe != null)
-            {
-                if (Recipe.PulsePowerSupplySteps.Count < 4)
-                {
-                    PulsePowerSupplyStep pulsePowerSupplyStep = new PulsePowerSupplyStep();
-                    if (SelectedPulseIndex == -1)
-                    {
-                        Recipe.PulsePowerSupplySteps.Add(pulsePowerSupplyStep);
-                        SelectedPulseIndex = 0;
-                    }
-                    else
-                    {
-                        Recipe.PulsePowerSupplySteps.Insert(SelectedPulseIndex, pulsePowerSupplyStep);
-                        SelectedPulseIndex--;
-                    }
-                }
-            }
-        }
-        /// <summary>
-        /// 上移
-        /// </summary>
-        /// <param name="param"></param>
-        private void MoveUpPulseAction(object param)
-        {
-            if (Recipe != null)
-            {
-                if (SelectedPulseIndex > 0)
-                {
-                    int currentIndex = SelectedPulseIndex;
-                    PulsePowerSupplyStep pulsePowerSupplyStep = Recipe.PulsePowerSupplySteps[currentIndex];
-                    Recipe.PulsePowerSupplySteps.RemoveAt(currentIndex);
-                    Recipe.PulsePowerSupplySteps.Insert(currentIndex - 1, pulsePowerSupplyStep);
-                    SelectedPulseIndex = currentIndex - 1;
-                }
-            }
-        }
-        /// <summary>
-        /// 下移
-        /// </summary>
-        /// <param name="param"></param>
-        private void MoveDownPulseAction(object param)
-        {
-            if (Recipe != null)
-            {
-                if (SelectedPulseIndex >= 0 && SelectedPulseIndex < Recipe.PulsePowerSupplySteps.Count - 1 && Recipe.PulsePowerSupplySteps.Count > 1)
-                {
-                    int currentIndex = SelectedPulseIndex;
-                    PulsePowerSupplyStep pulsePowerSupplyStep = Recipe.PulsePowerSupplySteps[currentIndex];
-                    Recipe.PulsePowerSupplySteps.RemoveAt(currentIndex);
-                    Recipe.PulsePowerSupplySteps.Insert(currentIndex + 1, pulsePowerSupplyStep);
-                    SelectedPulseIndex = currentIndex + 1;
-                }
-            }
-        }
-        /// <summary>
-        /// 删除
-        /// </summary>
-        /// <param name="param"></param>
-        private void DeletePulseAction(object param)
-        {
-            if (Recipe != null)
-            {
-                if(SelectedPulseIndex!=-1&&Recipe.PulsePowerSupplySteps.Count>SelectedPulseIndex)
+                if (Recipe != null && Recipe.DepSteps.Count > SelectedRampIndex)
                 {
-                    Recipe.PulsePowerSupplySteps.RemoveAt(SelectedPulseIndex);
+                    Recipe.DepSteps.RemoveAt(SelectedRampIndex);
                 }
             }
         }

+ 1 - 13
PunkHPX8_MainPages/ViewModels/ResRecipeViewModel.cs

@@ -126,9 +126,6 @@ namespace PunkHPX8_MainPages.ViewModels
         public ICommand ANDIReplenEnableTrueCommand { get; private set; }
         [IgnorePropertyChange]
         public ICommand ANDIReplenEnableFalseCommand { get; private set; }
-        public ICommand IdleFlowEnableTrueCommand { get; private set; }
-        [IgnorePropertyChange]
-        public ICommand IdleFlowEnableFalseCommand { get; private set; }
         [IgnorePropertyChange]
         public ICommand TimeBasedTrueCommand { get; private set; }
         [IgnorePropertyChange]
@@ -149,8 +146,7 @@ namespace PunkHPX8_MainPages.ViewModels
             DIReplenEnableFalseCommand = new DelegateCommand<object>(EnableFalseAction);
             ANDIReplenEnableTrueCommand = new DelegateCommand<object>(ANEnableTrueAction);
             ANDIReplenEnableFalseCommand = new DelegateCommand<object>(ANEnableFalseAction);
-            IdleFlowEnableTrueCommand = new DelegateCommand<object>(IdleFlowEnableTrueAction);
-            IdleFlowEnableFalseCommand = new DelegateCommand<object>(IdleFlowEnableFalseAction);
+
             TimeBasedTrueCommand = new DelegateCommand<object>(TimeBasedTrueAction);
             TimeBasedFalseCommand = new DelegateCommand<object>(TimeBasedFalseAction);
             CurrentBasedTrueCommand = new DelegateCommand<object>(CurrentBasedTrueAction);
@@ -423,14 +419,6 @@ namespace PunkHPX8_MainPages.ViewModels
         {
             Recipe.ANDIReplenEnable = false;
         }
-        private void IdleFlowEnableTrueAction(object param)
-        {
-            Recipe.IdleFlowEnable = true;
-        }
-        private void IdleFlowEnableFalseAction(object param)
-        {
-            Recipe.IdleFlowEnable = false;
-        }
         private bool CheckValid(bool editType)
         {
             foreach (string key in _propertyValidResultDic.Keys)

+ 280 - 140
PunkHPX8_MainPages/Views/DepRecipeView.xaml

@@ -30,10 +30,10 @@
             <ColumnDefinition Width="700"></ColumnDefinition>
             <ColumnDefinition/>
         </Grid.ColumnDefinitions>
-        <UserControls:RecipeFileLoadControl Grid.Row="1" Grid.RowSpan="2" Grid.Column="1" Title="Dep Recipe" RecipeNodes="{Binding RecipeNodes}" OperationCommand="{Binding OperationCommand}"
+        <UserControls:RecipeFileLoadControl Grid.Row="0" Grid.RowSpan="3" Grid.Column="1" Title="Dep Recipe" RecipeNodes="{Binding RecipeNodes}" OperationCommand="{Binding OperationCommand}"
                                             RecipeLocation="{Binding CurrentNode.RecipeLocation}" EditEnable="{Binding EditEnable}" CreateEnable="{Binding CreateEnable}" RecipeFileName="{Binding CurrentNode.FileName}"
                                             CreateCommand="{Binding CreateCommand}" EditCommand="{Binding EditCommand}"/>
-        <Grid Grid.Row="1" Grid.Column="2">
+        <Grid Grid.Row="0" Grid.Column="2" Grid.RowSpan="2">
             <Grid.RowDefinitions>
                 <RowDefinition Height="70"></RowDefinition>
                 <RowDefinition Height="70"></RowDefinition>
@@ -48,7 +48,27 @@
                 </TextBlock>
             </GroupBox>
         </Grid>
-        <Grid Grid.Row="1" Grid.Column="3">
+        <GroupBox Header="Author" Grid.Row="1" Grid.Column="2" Width="180" Margin="-500,60,10,20">
+            <Label Content="{Binding Recipe.Author}" Height="30" Width="180" VerticalAlignment="Center" HorizontalAlignment="Left" Foreground="White" Background="Gray" 
+                                          HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Grid.Column="1" Margin="6,0,0,0"></Label>
+        </GroupBox>
+        <GroupBox Header="Creation Date" Grid.Row="1" Grid.Column="2" Width="180" Margin="-120,60,10,20">
+            <Label Content="{Binding Recipe.CreateDate}" Height="30" Width="180" VerticalAlignment="Center" HorizontalAlignment="Left" Foreground="White" Background="Gray" 
+                                        HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Grid.Column="1" Margin="6,0,0,0"></Label>
+        </GroupBox>
+        <GroupBox Header="Save Date" Grid.Row="1" Grid.Column="2" Width="180" Margin="260,60,10,20">
+            <Label Content="{Binding Recipe.SaveDate}" Height="30" Width="180" VerticalAlignment="Center" HorizontalAlignment="Left" Foreground="White" Background="Gray" 
+                                        HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Grid.Column="1" Margin="6,0,0,0"></Label>
+        </GroupBox>
+        <GroupBox Header="Chemistry" IsEnabled="{Binding Enable}"   Grid.Row="1" Grid.Column="2" Grid.ColumnSpan="2" Width="180" Margin="-60,60,10,20" >
+            <ComboBox Height="30" Margin="10,0,10,0" ItemsSource="{Binding ChemistryList}" SelectedItem="{Binding Recipe.Chemistry, Mode=TwoWay}">
+            </ComboBox>
+        </GroupBox>
+        <GroupBox Header="Total Time" IsEnabled="{Binding Enable}"  Grid.Row="1" Grid.Column="3" Grid.ColumnSpan="2" Margin="-75,60,500,20" Width="180">
+            <Label Content="{Binding Recipe.TotalTime}" Height="30" Width="180" VerticalAlignment="Center" HorizontalAlignment="Left" Foreground="White" Background="Gray" 
+                           HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Grid.Column="1" Margin="6,0,0,0"></Label>
+        </GroupBox>
+        <Grid Grid.Row="0" Grid.Column="3" Grid.RowSpan="2">
             <Grid.RowDefinitions>
                 <RowDefinition Height="70"></RowDefinition>
                 <RowDefinition Height="70"></RowDefinition>
@@ -64,93 +84,94 @@
                 <Button Grid.Column="0" IsEnabled="{Binding Enable}" Style="{StaticResource SysBtnStyle}"  Content="Save" Height="35" Width="100" Command="{Binding SaveRecipeCommand}"></Button>
                 <Button Grid.Column="1" Style="{StaticResource SysBtnStyle}"  Content="SaveAs" Height="35" Width="100" Command="{Binding SaveAsRecipeCommand}"></Button>
             </Grid>
-
-            <GroupBox Header="Total Time" Grid.Row="1" HorizontalAlignment="Left" Margin="40,0,0,0" Width="200">
-                <Grid>
-                    <Label Content="{Binding Recipe.TotalTime}" Height="30" Width="120" VerticalAlignment="Center" HorizontalAlignment="Left" Foreground="White" Background="Gray" 
-                           HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Grid.Column="1" Margin="17,0,0,0"></Label>
-                    <Label Content="sec" Height="30" Width="50" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="142,0,0,0" Grid.Column="1"></Label>
-                </Grid>
-            </GroupBox>
         </Grid>
 
         <Grid Grid.Row="2" Grid.Column="2" Grid.ColumnSpan="2">
             <Grid>
                 <Grid Grid.Row="0">
                     <Grid.ColumnDefinitions>
-                        <ColumnDefinition Width="300"></ColumnDefinition>
+                        <ColumnDefinition Width="1300"></ColumnDefinition>
                         <ColumnDefinition/>
                     </Grid.ColumnDefinitions>
-                    <GroupBox Header="Scanning" Grid.Column="0">
-                        <Grid>
-                            <Grid.RowDefinitions>
-                                <RowDefinition Height="60"/>
-                                <RowDefinition Height="75"/>
-                                <RowDefinition Height="75"/>
-                                <RowDefinition Height="75"/>
-                                <RowDefinition Height="75"/>
-                                <RowDefinition Height="75"/>
-                                <RowDefinition Height="75"/>
-                                <RowDefinition/>
-                            </Grid.RowDefinitions>
-                            <GroupBox Header="Chemistry" IsEnabled="{Binding Enable}">
-                                <ComboBox Height="30" Margin="0,0,20,0" ItemsSource="{Binding ChemistryLst}" SelectedItem="{Binding Recipe.Chemistry,Mode=TwoWay}">
-                                </ComboBox>
-                            </GroupBox>
-                            <UserControls:GroupTextBoxControl Grid.Row="1" Title="Current Warning %" Unit="%" MinValue="3" MaxValue="100" IntValue="{Binding Recipe.CurrentWarningLevel,Mode=TwoWay}"
-                                                                      ValidResult="{Binding PropertyValidResultDic[CurrentWarningLevel],Mode=TwoWay}" Width="290"/>
-                            <UserControls:GroupTextBoxControl Grid.Row="2" Title="Current Fault %" Unit="%" MinValue="3" MaxValue="100" IntValue="{Binding Recipe.FaultPercent,Mode=TwoWay}"
-                                  ValidResult="{Binding PropertyValidResultDic[FaultPercent],Mode=TwoWay}" Width="290"/>
-                            <UserControls:GroupTextBoxControl Grid.Row="3" Title="Min Voltage Fault" Unit="V" MinValue="0" MaxValue="12" IntValue="{Binding Recipe.VolatageLimitMin,Mode=TwoWay}"
-                                                                  ValidResult="{Binding PropertyValidResultDic[VolatageLimitMin],Mode=TwoWay}" Width="290"/>
-                            <UserControls:GroupTextBoxControl Grid.Row="4" Title="Max Voltage Fault" Unit="V" MinValue="0" MaxValue="12" IntValue="{Binding Recipe.VolatageLimitMax,Mode=TwoWay}"
-                                  ValidResult="{Binding PropertyValidResultDic[VolatageLimitMax],Mode=TwoWay}" Width="290"/>
-                            <UserControls:GroupTextBoxControl Grid.Row="5" Title="Max Voltage Warning" Unit="V" MinValue="0" MaxValue="12" IntValue="{Binding Recipe.VoltageWarningLevel,Mode=TwoWay}"
-                                                                  ValidResult="{Binding PropertyValidResultDic[VoltageWarningLevel],Mode=TwoWay}" Width="290"/>
-                            <UserControls:GroupTextBoxControl Grid.Row="6" Title="Plating Delay" Unit="sec" MinValue="5" MaxValue="240" IntValue="{Binding Recipe.PlatingDelaySeconds,Mode=TwoWay}"
-                                  ValidResult="{Binding PropertyValidResultDic[PlatingDelaySeconds],Mode=TwoWay}" Width="290"/>
-                        </Grid>
-                    </GroupBox>
-                    <TabControl Grid.Column="1" Background="Transparent">
+
+                    <TabControl Grid.Column="0"  Background="Transparent">
+                        <TabItem Header="Entry">
+                            <Grid>
+                                <Grid.RowDefinitions>
+                                    <RowDefinition Height="100"></RowDefinition>
+                                    <RowDefinition Height="100"></RowDefinition>
+                                    <RowDefinition Height="100"></RowDefinition>
+                                    <RowDefinition Height="100"></RowDefinition>
+                                    <RowDefinition/>
+                                </Grid.RowDefinitions>
+                                <Grid.ColumnDefinitions>
+                                    <ColumnDefinition Width="86"></ColumnDefinition>
+                                    <ColumnDefinition Width="214"/>
+                                    <ColumnDefinition Width="300"></ColumnDefinition>
+                                    <ColumnDefinition/>
+                                </Grid.ColumnDefinitions>
+                                <UserControls:GroupTextBoxControl Grid.Row="0" Grid.Column="0" Title="Entry Spin Speed" Unit="RPM" MinValue="0" MaxValue="1000" Margin="20,10,20,10"
+                                   IntValue="{Binding Recipe.EntrySpinSpeed,Mode=TwoWay}" 
+                                   ValidResult="{Binding PropertyValidResultDic[EntrySpinSpeed],Mode=TwoWay}"  Width="260" Grid.ColumnSpan="2"/>
+                                <UserControls:GroupDigitalBoxControl Grid.Column="0" Grid.Row="1" Title="Entry Z Offset" Unit="mm" MinValue="-100" MaxValue="100"  Margin="20,10,20,10"
+                                                                     DigitalValue="{Binding Recipe.EntryZoffset,Mode=TwoWay}" 
+                                                                     ValidResult="{Binding PropertyValidResultDic[EntryZoffset],Mode=TwoWay}" Width="260" Grid.ColumnSpan="2" />
+                                <UserControls:GroupTextBoxControl Grid.Row="0" Grid.Column="2" Title="Plating Delay" Unit="sec" MinValue="0" MaxValue="300" Margin="20,10,20,10"
+                                        IntValue="{Binding Recipe.PlatingDelay,Mode=TwoWay}" 
+                                        ValidResult="{Binding PropertyValidResultDic[PlatingDelay],Mode=TwoWay}"  Width="260"/>
+                                <UserControls:GroupTextBoxControl Grid.Row="2" Grid.Column="2" Title="Entry Current" Unit="mA" MinValue="0" MaxValue="1000" Margin="20,10,20,10"
+                                        IntValue="{Binding Recipe.EntryCurrent,Mode=TwoWay}" 
+                                        ValidResult="{Binding PropertyValidResultDic[EntryCurrent],Mode=TwoWay}"  Width="260"/>
+                                <UserControls:GroupTextBoxControl Grid.Row="3" Grid.Column="2" Title="Entry Voltage" Unit="mV" MinValue="0" MaxValue="5000" Margin="20,10,20,10"
+                                        IntValue="{Binding Recipe.EntryVoltage,Mode=TwoWay}" 
+                                        ValidResult="{Binding PropertyValidResultDic[EntryVoltage],Mode=TwoWay}"  Width="260"/>
+                                <GroupBox Grid.Row="1" Grid.Column="2" IsEnabled="{Binding Enable}" Margin="10,10,10,10" Width="260" Header="Entry Type">
+                                    <Grid>
+                                        <RadioButton Content="Cold" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Left"
+                                        Command="{Binding AutoCurrentBasedFalseCommand}"  IsChecked="{Binding Recipe.IsEntryTypeCold ,Mode=TwoWay}" Margin="28,-1,0,-6" ></RadioButton>
+                                        <RadioButton Content="Hot" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Center" 
+                                         Command="{Binding AutoCurrentBasedTrueCommand}"  IsChecked="{Binding Recipe.IsEntryTypeCold,Mode=TwoWay,Converter={StaticResource boolReverseConverter}}" Margin="100,-1,0,-6" ></RadioButton>
+                                    </Grid>
+                                </GroupBox>
+                            </Grid>
+                        </TabItem>
                         <TabItem Header="RampSteps">
                             <Grid>
                                 <Grid.RowDefinitions>
                                     <RowDefinition Height="100"></RowDefinition>
+                                    <RowDefinition Height="100"></RowDefinition>
+                                    <RowDefinition Height="100"></RowDefinition>
+                                    <RowDefinition Height="100"></RowDefinition>
                                     <RowDefinition/>
                                 </Grid.RowDefinitions>
                                 <Grid.ColumnDefinitions>
+                                    <ColumnDefinition Width="9"></ColumnDefinition>
+                                    <ColumnDefinition Width="13.5"/>
+                                    <ColumnDefinition Width="197.5"/>
                                     <ColumnDefinition Width="220"></ColumnDefinition>
+                                    <ColumnDefinition Width="550"></ColumnDefinition>
                                     <ColumnDefinition/>
                                 </Grid.ColumnDefinitions>
-                                <Grid Grid.Row="0" Grid.Column="0">
-                                    <GroupBox Header="Hot Plating" IsEnabled="{Binding Enable}" Margin="0,10,0,0">
-                                        <Grid>
-                                            <RadioButton Content="False" Height="35" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Right" 
-                                                         IsChecked="{Binding Recipe.HotPlatingCurrentOn,Converter={StaticResource boolReverseConverter}}" Margin="0,15,40,16"></RadioButton>
-                                            <RadioButton Content="True" Height="35" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Left" 
-                                                         IsChecked="{Binding Recipe.HotPlatingCurrentOn}" Margin="40,15,0,16" ></RadioButton>
-                                        </Grid>
-                                    </GroupBox>
-                                </Grid>
-                                <Grid Grid.Row="0" Grid.Column="1">
-                                    <GroupBox Header="Cycle Clamps" IsEnabled="{Binding Enable}" Margin="0,10,0,0">
-                                        <Grid>
-                                            <RadioButton Content="False" Height="35" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Left" 
-                                                         IsChecked="{Binding Recipe.CycleClampsEnable,Converter={StaticResource boolReverseConverter}}" Margin="100,15,0,16"></RadioButton>
-                                            <RadioButton Content="True" Height="35" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Left" 
-                                                         IsChecked="{Binding Recipe.CycleClampsEnable}" Margin="40,15,0,16" ></RadioButton>
-                                            <UserControls:GroupTextBoxControl Grid.Row="1" Title="Max Tries" Unit="" MinValue="1" MaxValue="3" 
-                                                                              IntValue="{Binding Recipe.CycleClampsMaxTries,Mode=TwoWay}" 
-                                                                              ValidResult="{Binding PropertyValidResultDic[CycleClampsMaxTries],Mode=TwoWay}" Width="290"/>
-
-                                        </Grid>
-                                    </GroupBox>
-                                </Grid>
-                                <GroupBox Header="Deposition Step" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2">
+                                <UserControls:GroupTextBoxControl Grid.Row="0" Grid.Column="2" Width="200" Title="Current Warning" Unit="%" MinValue="0" MaxValue="100" Margin="0,10,218,10"
+                                    IntValue="{Binding Recipe.DepCurrentWarning,Mode=TwoWay}" 
+                                ValidResult="{Binding PropertyValidResultDic[DepCurrentWarning],Mode=TwoWay}" Grid.ColumnSpan="2"   />
+                                <UserControls:GroupTextBoxControl Grid.Row="1" Grid.Column="2" Width="200" Title="Current Fault" Unit="%" MinValue="0" MaxValue="100" Margin="0,10,218,10"
+                IntValue="{Binding Recipe.DepCurrentFault,Mode=TwoWay}" 
+            ValidResult="{Binding PropertyValidResultDic[DepCurrentFault],Mode=TwoWay}" Grid.ColumnSpan="2"   />
+                                <UserControls:GroupTextBoxControl Grid.Row="2" Grid.Column="2" Width="200" Title="Max Voltage Warning" Unit="%" MinValue="0" MaxValue="100" Margin="0,10,218,10"
+                IntValue="{Binding Recipe.DepMaxVoltageWarning,Mode=TwoWay}" 
+            ValidResult="{Binding PropertyValidResultDic[DepMaxVoltageWarning],Mode=TwoWay}" Grid.ColumnSpan="2"   />
+                                <UserControls:GroupTextBoxControl Grid.Row="3" Grid.Column="2" Width="200" Title="Max Voltage Fault" Unit="%" MinValue="0" MaxValue="100" Margin="0,10,218,10"
+                IntValue="{Binding Recipe.DepMaxVoltageFault,Mode=TwoWay}" 
+            ValidResult="{Binding PropertyValidResultDic[DepMaxVoltageFault],Mode=TwoWay}" Grid.ColumnSpan="2"/>
+                                <UserControls:GroupDigitalBoxControl Grid.Column="3" Grid.Row="0" Title="Plating Z Offset" Unit="mm" MinValue="-100" MaxValue="100"  Margin="-270,10,200,10"
+                                      DigitalValue="{Binding Recipe.DepZoffset,Mode=TwoWay}" 
+                                      ValidResult="{Binding PropertyValidResultDic[DepZoffset],Mode=TwoWay}" Width="260" Grid.ColumnSpan="2" />
+                                <GroupBox Header="Deposition Step" Grid.Row="1" Grid.Column="3" Grid.ColumnSpan="2" Grid.RowSpan="4" Margin="20,0,0,20">
                                     <Grid>
                                         <Grid.RowDefinitions>
                                             <RowDefinition Height="75"></RowDefinition>
-                                            <RowDefinition/>
+                                            <RowDefinition Height="280"/>
                                             <RowDefinition Height="65"></RowDefinition>
                                         </Grid.RowDefinitions>
                                         <Grid Grid.Row="0">
@@ -161,102 +182,221 @@
                                                 <ColumnDefinition Width="180"></ColumnDefinition>
                                                 <ColumnDefinition/>
                                             </Grid.ColumnDefinitions>
-                                            <GroupBox Header="Plating Steps">
-                                                <Label Content="{Binding Recipe.DepositionPlatingSteps}" Height="30" Width="151" VerticalAlignment="Center" HorizontalAlignment="Left" Foreground="White" Background="Gray" 
+                                            <GroupBox Header="Plating Steps" Grid.Row="0" Grid.Column="0">
+                                                <Label Content="{Binding Recipe.DepStepCount}" Height="30" Width="151" VerticalAlignment="Center" HorizontalAlignment="Left" Foreground="White" Background="Gray" 
                                                        HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Grid.Column="1" Margin="6,0,0,0"></Label>
                                             </GroupBox>
-                                            <GroupBox Header="Total Time" Grid.Column="1">
-                                                <Label Content="{Binding Recipe.DepositionTotalTime}" Height="30" Width="151" VerticalAlignment="Center" HorizontalAlignment="Left" Foreground="White" Background="Gray" 
+                                            <GroupBox Header="Total Time" Grid.Row="0" Grid.Column="1">
+                                                <Label Content="{Binding Recipe.DepStepTotalTime}" Height="30" Width="151" VerticalAlignment="Center" HorizontalAlignment="Left" Foreground="White" Background="Gray" 
                                                        HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Grid.Column="1" Margin="6,0,0,0"></Label>
                                             </GroupBox>
-                                            <GroupBox Header="Total Current" Grid.Column="2">
+                                            <GroupBox Header="Total Current" Grid.Row="0" Grid.Column="2">
                                                 <Label Height="30" Width="151" VerticalAlignment="Center" HorizontalAlignment="Left" Foreground="White" Background="Gray" 
                                                        HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Grid.Column="1" Margin="6,0,0,0">
                                                     <Label.Content>
-                                                        <TextBlock Text="{Binding Recipe.DepositionTotalCurrent,StringFormat=\{0:F3\} Amp Hours}"/>
+                                                        <TextBlock Text="{Binding Recipe.DepStepTotalCurrent,StringFormat=\{0:F3\} Amp_Minutes}"/>
                                                     </Label.Content>
                                                 </Label>
                                             </GroupBox>
-                                            <GroupBox Header="Anode Type" IsEnabled="{Binding Enable}" Grid.Column="3">
-                                                <ComboBox Height="30" Margin="0,0,20,0" SelectedIndex="{Binding Recipe.AnodeType}" SelectedItem="{Binding SelectedAnodeType}">
-                                                    <ComboBoxItem>Multi Zone</ComboBoxItem>
-                                                    <ComboBoxItem>Single Zone</ComboBoxItem>
-                                                </ComboBox>
-                                            </GroupBox>
                                         </Grid>
-                                        <DataGrid x:Name="RampDataGrid" MinRowHeight="27" Grid.Row="1" AutoGenerateColumns="False"  CanUserAddRows="False"  FontFamily="Arial" FontSize="14" Margin="0,10,0,0" 
-                                                  ItemsSource="{Binding Recipe.CurrentRampProfileSteps}" SelectionMode="Single" IsEnabled="{Binding Enable}" SelectedIndex="{Binding SelectedRampIndex,Mode=TwoWay}"
-                                                  >
+                                        <DataGrid x:Name="RampDataGrid" Grid.Row="1" Grid.Column="0" Grid.RowSpan="1" Grid.ColumnSpan="2" MinRowHeight="27" AutoGenerateColumns="False"  CanUserAddRows="False"  FontFamily="Arial" FontSize="14" Margin="0,10,0,20" 
+                     ItemsSource="{Binding Recipe.DepSteps}" SelectionMode="Single" IsEnabled="{Binding Enable}" SelectedIndex="{Binding SelectedRampIndex,Mode=TwoWay}"    >
                                             <DataGrid.Resources>
                                                 <extendedControls:BindingProxy x:Key="DataShowProxy"  Data="{Binding}" />
                                             </DataGrid.Resources>
                                             <DataGrid.Columns>
-                                                <DataGridTextColumn Header="Time&#x0a;(Sec)" Width="70"  Binding="{Binding CurrentRampDurartionSeconds,Mode=TwoWay}" CanUserSort="false" CanUserReorder="False" CanUserResize="False"/>
-                                                <DataGridCheckBoxColumn Header="Pulse" Binding="{Binding PulseEnabled,Mode=TwoWay}" Width="70" CanUserSort="False" CanUserReorder="False" CanUserResize="True" 
-                                                                    Visibility="{Binding Data.MultiZoneShow, Converter={StaticResource boolVisibilityConverter},Source={StaticResource DataShowProxy}}" >
-
-                                                </DataGridCheckBoxColumn>
-                                                <DataGridTextColumn Header="Forward&#x0a;Current" Width="100"  Binding="{Binding ForwardAmps,StringFormat=\{0:F3\},Mode=TwoWay}" CanUserSort="false" CanUserReorder="False" CanUserResize="False" >
+                                                <DataGridTextColumn Header="Time&#x0a;(Sec)" Width="100"  Binding="{Binding DurartionSeconds,Mode=TwoWay}" CanUserSort="false" CanUserReorder="False" CanUserResize="False"/>
+                                                <DataGridTextColumn Header="Current&#x0a;(Amps)" Width="120"  Binding="{Binding CurrentValue,StringFormat=\{0:F3\},Mode=TwoWay}" CanUserSort="false" CanUserReorder="False" CanUserResize="False" >
                                                 </DataGridTextColumn>
-                                                <DataGridTextColumn Header="Forward&#x0a;Current2" Width="100"  Binding="{Binding ForwardAmps2,StringFormat=\{0:F3\},Mode=TwoWay}" CanUserSort="false" CanUserReorder="False" CanUserResize="False" 
-                                                                     Visibility="{Binding Data.MultiZoneShow, Converter={StaticResource boolVisibilityConverter},Source={StaticResource DataShowProxy}}"/>
-                                                <DataGridTextColumn Header="Forward&#x0a;Current3" Width="100"  Binding="{Binding ForwardAmps3,StringFormat=\{0:F3\},Mode=TwoWay}" CanUserSort="false" CanUserReorder="False" CanUserResize="False" 
-                                                                     Visibility="{Binding Data.MultiZoneShow, Converter={StaticResource boolVisibilityConverter},Source={StaticResource DataShowProxy}}"/>
-                                                <DataGridTextColumn Header="Forward&#x0a;Current4" Width="100"  Binding="{Binding ForwardAmps4,StringFormat=\{0:F3\},Mode=TwoWay}" CanUserSort="false" CanUserReorder="False" CanUserResize="False" 
-                                                                     Visibility="{Binding Data.MultiZoneShow, Converter={StaticResource boolVisibilityConverter},Source={StaticResource DataShowProxy}}"/>
-                                                <DataGridTextColumn Header="Forward&#x0a;Current5" Width="100"  Binding="{Binding ForwardAmps5,StringFormat=\{0:F3\},Mode=TwoWay}" CanUserSort="false" CanUserReorder="False" CanUserResize="False" 
-                                                                     Visibility="{Binding Data.MultiZoneShow, Converter={StaticResource boolVisibilityConverter},Source={StaticResource DataShowProxy}}"/>
-                                                <DataGridTextColumn Header="Forward&#x0a;Current6" Width="100"  Binding="{Binding ForwardAmps6,StringFormat=\{0:F3\},Mode=TwoWay}" CanUserSort="false" CanUserReorder="False" CanUserResize="False" 
-                                                                     Visibility="{Binding Data.MultiZoneShow, Converter={StaticResource boolVisibilityConverter},Source={StaticResource DataShowProxy}}"/>
-                                                <DataGridTextColumn Header="Reverse&#x0a;Current" Width="100"  Binding="{Binding ReversedAmps,StringFormat=\{0:F3\},Mode=TwoWay}" CanUserSort="false" CanUserReorder="False" CanUserResize="False" 
-                                                                     Visibility="{Binding Data.SingleZoneShow, Converter={StaticResource boolVisibilityConverter},Source={StaticResource DataShowProxy}}"/>
-                                                <DataGridTextColumn Header="Shear Plate&#x0a;Speed %" Width="100"  Binding="{Binding ShearPlateSpeed,StringFormat=\{0:F3\},Mode=TwoWay}" CanUserSort="false" CanUserReorder="False" CanUserResize="False" />
-                                                <DataGridTextColumn Header="Average&#x0a;Current" Width="100"  Binding="{Binding ForwardAmps6,StringFormat=\{0:F3\},Mode=TwoWay}" CanUserSort="false" CanUserReorder="False" CanUserResize="False" 
-                                                                    Visibility="{Binding Data.SingleZoneShow, Converter={StaticResource boolVisibilityConverter},Source={StaticResource DataShowProxy}}"/>
+                                                <DataGridTextColumn Header="Plating Z Offset&#x0a;(mm)" Width="120"  Binding="{Binding PlatingZoffset,StringFormat=\{0:F3\},Mode=TwoWay}" CanUserSort="false" CanUserReorder="False" CanUserResize="False" >
+                                                </DataGridTextColumn>
+                                                <DataGridTextColumn Header="Plating Speed&#x0a;(rpm)" Width="120"  Binding="{Binding PlatingSpeed,StringFormat=\{0:F3\},Mode=TwoWay}" CanUserSort="false" CanUserReorder="False" CanUserResize="False" />
+                                                <DataGridCheckBoxColumn Header="Bi-Direaction" Binding="{Binding BiDireaction,Mode=TwoWay}" Width="120" CanUserSort="False" CanUserReorder="False" CanUserResize="True" >
+                                                </DataGridCheckBoxColumn>
+                                                <DataGridTextColumn Header="B-D Frequency&#x0a;(sec)" Width="120"  Binding="{Binding BiDFrequency,StringFormat=\{0:F3\},Mode=TwoWay}" CanUserSort="false" CanUserReorder="False" CanUserResize="False" />
                                             </DataGrid.Columns>
                                         </DataGrid>
-                                        <Grid Grid.Row="2" IsEnabled="{Binding Enable}">
-                                            <Button Style="{StaticResource SysBtnStyle}"  Content="Add Below" Height="35" Width="100" Command="{Binding AddBelowCommand}" HorizontalAlignment="Left" Margin="10,15,0,15"></Button>
-                                            <Button Style="{StaticResource SysBtnStyle}"  Content="Add Above" Height="35" Width="100" Command="{Binding AddAboveCommand}" HorizontalAlignment="Left" Margin="140,15,0,15"></Button>
-                                            <Button Style="{StaticResource SysBtnStyle}"  Content="Move Up" Height="35" Width="100" Command="{Binding MoveUpCommand}" HorizontalAlignment="Left" Margin="270,15,0,15"></Button>
-                                            <Button Style="{StaticResource SysBtnStyle}"  Content="Move Down" Height="35" Width="100" Command="{Binding MoveDownCommand}" HorizontalAlignment="Left" Margin="400,15,0,15"></Button>
-                                            <Button Style="{StaticResource SysBtnStyle}"  Content="Delete" Height="35" Width="100" Command="{Binding DeleteCommand}" HorizontalAlignment="Left" Margin="530,15,0,15"></Button>
-
+                                        <Grid Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="4" IsEnabled="{Binding Enable}" Margin="0,-20,0,30">
+                                            <Button Style="{StaticResource SysBtnStyle}"  Content="Add Below" Height="35" Width="100" Command="{Binding AddBelowCommand}" HorizontalAlignment="Left" Margin="0,0,0,0"></Button>
+                                            <Button Style="{StaticResource SysBtnStyle}"  Content="Add Above" Height="35" Width="100" Command="{Binding AddAboveCommand}" HorizontalAlignment="Left" Margin="120,0,0,0"></Button>
+                                            <Button Style="{StaticResource SysBtnStyle}"  Content="Move Up" Height="35" Width="100" Command="{Binding MoveUpCommand}" HorizontalAlignment="Left" Margin="240,0,0,0"></Button>
+                                            <Button Style="{StaticResource SysBtnStyle}"  Content="Move Down" Height="35" Width="100" Command="{Binding MoveDownCommand}" HorizontalAlignment="Left" Margin="360,0,0,0"></Button>
+                                            <Button Style="{StaticResource SysBtnStyle}"  Content="Delete" Height="35" Width="100" Command="{Binding DeleteCommand}" HorizontalAlignment="Left" Margin="480,0,0,0"></Button>
                                         </Grid>
                                     </Grid>
                                 </GroupBox>
+                                <GroupBox Header="Smart Spin" Grid.Row="0" Grid.Column="5" Grid.RowSpan="5" Margin="10,10,0,20">
+                                    <Grid>
+                                        <Grid.RowDefinitions>
+                                            <RowDefinition Height="80"></RowDefinition>
+                                            <RowDefinition Height="80"></RowDefinition>
+                                            <RowDefinition Height="80"></RowDefinition>
+                                            <RowDefinition Height="80"></RowDefinition>
+                                            <RowDefinition Height="80"></RowDefinition>
+                                            <RowDefinition Height="80"></RowDefinition>
+                                        </Grid.RowDefinitions>
+                                        <GroupBox Header="Number of Smart Sping" Grid.Row="0" Margin="10,10,10,10"  IsEnabled="{Binding Enable}" >
+                                            <TextBox Text="{Binding Recipe.DepStepCount}" Height="30" Width="175" VerticalAlignment="Center" HorizontalAlignment="Left" Foreground="White"  
+                                                HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Grid.Column="1" Margin="18,0,0,0"></TextBox>
+                                        </GroupBox>
+                                        <UserControls:GroupTextBoxControl  Grid.Row="1"  Width="260" Title="Section 1 Speed" Unit="rpm" MinValue="0" MaxValue="100" Margin="10,0,10,0"
+                                        IntValue="{Binding Recipe.Section1Speed,Mode=TwoWay}" 
+                                                ValidResult="{Binding PropertyValidResultDic[Section1Speed],Mode=TwoWay}" />
+                                        <GroupBox Header="Section 1 Angle" Grid.Row="2" Margin="10,0,10,0">
+                                            <Grid>
+                                                <Grid.RowDefinitions>
+                                                    <RowDefinition Height="20"></RowDefinition>
+                                                    <RowDefinition Height="50"></RowDefinition>
+                                                </Grid.RowDefinitions>
+                                                <Grid.ColumnDefinitions>
+                                                    <ColumnDefinition Width="20"></ColumnDefinition>
+                                                    <ColumnDefinition Width="80"></ColumnDefinition>
+                                                    <ColumnDefinition Width="20"></ColumnDefinition>
+                                                    <ColumnDefinition Width="80"></ColumnDefinition>
+                                                    <ColumnDefinition/>
+                                                </Grid.ColumnDefinitions>
+                                                <Label Grid.Row="1" Grid.Column="0" Content="0"></Label>
+                                                <Label Grid.Row="1" Grid.Column="4" Content="360"></Label>
+                                                <Label Grid.Row="0" Grid.Column="1" Content="Start" Margin="5,-3,0,0"></Label>
+                                                <Label Grid.Row="0" Grid.Column="3" Content="End" Margin="35,-3,0,0"></Label>
+                                                <TextBox Text="{Binding Recipe.Section1AngleStartPosiotion,Mode=TwoWay}"  IsEnabled="{Binding Enable}"  Grid.Row="1" Grid.Column="1" Height="30" Width="50" VerticalAlignment="Top" HorizontalAlignment="Left" Foreground="White"  
+                                                        HorizontalContentAlignment="Center" VerticalContentAlignment="Center"></TextBox>
+                                                <TextBox Text="{Binding Recipe.Section1AngleEndPostion,Mode=TwoWay}"  IsEnabled="{Binding Enable}"  Grid.Row="1" Grid.Column="3" Margin="0,0,5,0" Height="30" Width="50" VerticalAlignment="Top" HorizontalAlignment="Right" Foreground="White"
+                        HorizontalContentAlignment="Center" VerticalContentAlignment="Center"></TextBox>
+                                            </Grid>
+                                        </GroupBox>
+                                        <UserControls:GroupTextBoxControl  Grid.Row="3"  Width="260" Title="Section 2 Speed" Unit="rpm" MinValue="0" MaxValue="100" Margin="10,10,10,0"
+                IntValue="{Binding Recipe.Section2Speed,Mode=TwoWay}" 
+                        ValidResult="{Binding PropertyValidResultDic[Section2Speed],Mode=TwoWay}" />
+                                        <GroupBox Header="Section 2 Angle" Grid.Row="4" Margin="10,0,10,0">
+                                            <Grid>
+                                                <Grid.RowDefinitions>
+                                                    <RowDefinition Height="20"></RowDefinition>
+                                                    <RowDefinition Height="50"></RowDefinition>
+                                                </Grid.RowDefinitions>
+                                                <Grid.ColumnDefinitions>
+                                                    <ColumnDefinition Width="20"></ColumnDefinition>
+                                                    <ColumnDefinition Width="80"></ColumnDefinition>
+                                                    <ColumnDefinition Width="20"></ColumnDefinition>
+                                                    <ColumnDefinition Width="80"></ColumnDefinition>
+                                                    <ColumnDefinition/>
+                                                </Grid.ColumnDefinitions>
+                                                <Label Grid.Row="1" Grid.Column="0" Content="0"></Label>
+                                                <Label Grid.Row="1" Grid.Column="4" Content="360"></Label>
+                                                <Label Grid.Row="0" Grid.Column="1" Content="Start" Margin="5,-3,0,0"></Label>
+                                                <Label Grid.Row="0" Grid.Column="3" Content="End" Margin="35,-3,0,0"></Label>
+                                                <TextBox Text="{Binding Recipe.Section2AngleStartPosiotion,Mode=TwoWay}"  IsEnabled="{Binding Enable}"  Grid.Row="1" Grid.Column="1" Height="30" Width="50" VerticalAlignment="Top" HorizontalAlignment="Left" Foreground="White" 
+                                HorizontalContentAlignment="Center" VerticalContentAlignment="Center"></TextBox>
+                                                <TextBox Text="{Binding Recipe.Section2AngleEndPostion,Mode=TwoWay}"  IsEnabled="{Binding Enable}"  Grid.Row="1" Grid.Column="3" Margin="0,0,5,0" Height="30" Width="50" VerticalAlignment="Top" HorizontalAlignment="Right" Foreground="White" 
+HorizontalContentAlignment="Center" VerticalContentAlignment="Center"></TextBox>
+                                            </Grid>
+                                        </GroupBox>
+                                        <UserControls:GroupTextBoxControl  Grid.Row="5"  Width="260" Title="Normal Speed" Unit="rpm" MinValue="0" MaxValue="100" Margin="10,10,10,0"
+        IntValue="{Binding Recipe.NormalSpeed,Mode=TwoWay}" 
+        ValidResult="{Binding PropertyValidResultDic[NormalSpeed],Mode=TwoWay}" />
+                                    </Grid>
+                                </GroupBox>
                             </Grid>
+
                         </TabItem>
                         <TabItem Header="PulseSteps">
-                            <GroupBox Header="Pulse Setup" Width="400" HorizontalAlignment="Left" Margin="0,10,0,0">
-                                <Grid>
-                                    <Grid.RowDefinitions>
-                                        <RowDefinition Height="150"></RowDefinition>
-                                        <RowDefinition Height="120"></RowDefinition>
-                                        <RowDefinition Height="200"></RowDefinition>
-                                        <RowDefinition/>
-                                    </Grid.RowDefinitions>
-                                    <DataGrid MinRowHeight="27" AutoGenerateColumns="False"  CanUserAddRows="False"  FontFamily="Arial" FontSize="14" Margin="0,10,0,0" 
-                                              ItemsSource="{Binding Recipe.PulsePowerSupplySteps}" SelectionMode="Single" IsEnabled="{Binding Enable}" SelectedIndex="{Binding SelectedPulseIndex,Mode=TwoWay}">
-                                        <DataGrid.Resources>
-                                            <extendedControls:BindingProxy x:Key="PulseTypeListProxy"  Data="{Binding PulseTypeList}" />
-                                        </DataGrid.Resources>
-                                        <DataGrid.Columns>
-                                            <DataGridComboBoxColumn Header="Type" Width="150" ItemsSource="{Binding Data,Source={StaticResource PulseTypeListProxy}}" SelectedItemBinding="{Binding Type,Mode=TwoWay}" CanUserSort="false" CanUserReorder="False" CanUserResize="False">
-                                            </DataGridComboBoxColumn>
-                                            <DataGridTextColumn Header="Pulse (mSec)" Width="200"  Binding="{Binding DurationHundredsMicroSeconds,Mode=TwoWay}" CanUserSort="false" CanUserReorder="False" CanUserResize="False"/>
-                                        </DataGrid.Columns>
-                                    </DataGrid>
-                                    <Grid Grid.Row="1" IsEnabled="{Binding Enable}">
-                                        <Button Style="{StaticResource SysBtnStyle}"  Content="Add Below" Height="35" Width="100" Command="{Binding AddBelowPulseCommand}" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,15,0,0"></Button>
-                                        <Button Style="{StaticResource SysBtnStyle}"  Content="Add Above" Height="35" Width="100" Command="{Binding AddAbovePulseCommand}" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="140,15,0,0"></Button>
-                                        <Button Style="{StaticResource SysBtnStyle}"  Content="Move Up" Height="35" Width="100" Command="{Binding MoveUpPulseCommand}" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="270,15,0,0"></Button>
-                                        <Button Style="{StaticResource SysBtnStyle}"  Content="Move Down" Height="35" Width="100" Command="{Binding MoveDownPulseCommand}" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,65,0,0"></Button>
-                                        <Button Style="{StaticResource SysBtnStyle}"  Content="Delete" Height="35" Width="100" Command="{Binding DeletePulseCommand}" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="140,65,0,0"></Button>
-
+                            <Grid>
+                                <Grid.ColumnDefinitions>
+                                    <ColumnDefinition Width="300"></ColumnDefinition>
+                                    <ColumnDefinition Width="300"></ColumnDefinition>
+                                    <ColumnDefinition Width="300"></ColumnDefinition>
+                                    <ColumnDefinition Width="300"></ColumnDefinition>
+                                </Grid.ColumnDefinitions>
+                                <GroupBox Header="Reclaim" Grid.Column="0" HorizontalAlignment="Left" Margin="10,10,10,10" Width="280">
+                                    <Grid>
+                                        <Grid.RowDefinitions>
+                                            <RowDefinition Height="120"></RowDefinition>
+                                            <RowDefinition Height="120"></RowDefinition>
+                                            <RowDefinition Height="120"></RowDefinition>
+                                            <RowDefinition Height="120"></RowDefinition>
+                                            <RowDefinition/>
+                                        </Grid.RowDefinitions>
+                                        <UserControls:GroupTextBoxControl Grid.Row="0"  Width="250" Title="Speed" Unit="rpm" MinValue="0" MaxValue="1000" Margin="10,20,10,20"
+                                                IntValue="{Binding Recipe.ReclaimSpeed,Mode=TwoWay}" 
+                                                ValidResult="{Binding PropertyValidResultDic[ReclaimSpeed],Mode=TwoWay}"/>
+                                        <UserControls:GroupTextBoxControl Grid.Row="1"  Width="250" Title="Time" Unit="sec" MinValue="0" MaxValue="100" Margin="10,20,10,20"
+                                                IntValue="{Binding Recipe.ReclaimTime,Mode=TwoWay}" 
+                                                ValidResult="{Binding PropertyValidResultDic[ReclaimTime],Mode=TwoWay}"/>
+                                        <UserControls:GroupDigitalBoxControl Grid.Row="2" Width="250"  Title="Z Offset" Unit="mm" MinValue="-100" MaxValue="100"  Margin="10,20,10,20"
+                                                DigitalValue="{Binding Recipe.ReclaimZoffset,Mode=TwoWay}" 
+                                                ValidResult="{Binding PropertyValidResultDic[ReclaimZoffset],Mode=TwoWay}"  />
+                                    </Grid>
+                                </GroupBox>
+                                <GroupBox Header="Rinse" Grid.Column="1" Margin="10,10,0,10" HorizontalAlignment="Left" Width="280">
+                                    <Grid>
+                                        <Grid.RowDefinitions>
+                                            <RowDefinition Height="120"></RowDefinition>
+                                            <RowDefinition Height="120"></RowDefinition>
+                                            <RowDefinition Height="120"></RowDefinition>
+                                            <RowDefinition Height="120"></RowDefinition>
+                                            <RowDefinition/>
+                                        </Grid.RowDefinitions>
+                                        <UserControls:GroupTextBoxControl Grid.Row="0"  Width="250" Title="Speed" Unit="rpm" MinValue="0" MaxValue="1000" Margin="10,20,10,20"
+IntValue="{Binding Recipe.RinseSpeed,Mode=TwoWay}" 
+ValidResult="{Binding PropertyValidResultDic[RinseSpeed],Mode=TwoWay}"/>
+                                        <UserControls:GroupTextBoxControl Grid.Row="1"  Width="250" Title="Time" Unit="sec" MinValue="0" MaxValue="100" Margin="10,20,10,20"
+IntValue="{Binding Recipe.RinseTime,Mode=TwoWay}" 
+ValidResult="{Binding PropertyValidResultDic[RinseTime],Mode=TwoWay}"/>
+                                        <UserControls:GroupDigitalBoxControl Grid.Row="2" Width="250"  Title="Z Offset" Unit="mm" MinValue="-100" MaxValue="100"  Margin="10,20,10,20"
+DigitalValue="{Binding Recipe.RinseZoffset,Mode=TwoWay}" 
+ValidResult="{Binding PropertyValidResultDic[RinseZoffset],Mode=TwoWay}"  />
                                     </Grid>
-                                </Grid>
-                            </GroupBox>
+                                </GroupBox>
+                                <GroupBox Header="Dry" Grid.Column="2" HorizontalAlignment="Left" Margin="10,10,10,10" Width="280">
+                                    <Grid>
+                                        <Grid.RowDefinitions>
+                                            <RowDefinition Height="120"></RowDefinition>
+                                            <RowDefinition Height="120"></RowDefinition>
+                                            <RowDefinition Height="120"></RowDefinition>
+                                            <RowDefinition Height="120"></RowDefinition>
+                                            <RowDefinition/>
+                                        </Grid.RowDefinitions>
+                                        <UserControls:GroupTextBoxControl Grid.Row="0"  Width="250" Title="Speed" Unit="rpm" MinValue="0" MaxValue="1000" Margin="10,20,10,20"
+IntValue="{Binding Recipe.DrySpeed,Mode=TwoWay}" 
+ValidResult="{Binding PropertyValidResultDic[DrySpeed],Mode=TwoWay}"/>
+                                        <UserControls:GroupTextBoxControl Grid.Row="1"  Width="250" Title="Time" Unit="sec" MinValue="0" MaxValue="100" Margin="10,20,10,20"
+IntValue="{Binding Recipe.DryTime,Mode=TwoWay}" 
+ValidResult="{Binding PropertyValidResultDic[DryTime],Mode=TwoWay}"/>
+                                        <UserControls:GroupDigitalBoxControl Grid.Row="2" Width="250"  Title="Z Offset" Unit="mm" MinValue="-100" MaxValue="100"  Margin="10,20,10,20"
+DigitalValue="{Binding Recipe.DryZoffset,Mode=TwoWay}" 
+ValidResult="{Binding PropertyValidResultDic[DryZoffset],Mode=TwoWay}"  />
+                                    </Grid>
+                                </GroupBox>
+                                <GroupBox Header="Interval Rinse" Grid.Column="3" HorizontalAlignment="Left" Margin="10,10,10,10" Width="280">
+                                    <Grid>
+                                        <Grid.RowDefinitions>
+                                            <RowDefinition Height="120"></RowDefinition>
+                                            <RowDefinition Height="120"></RowDefinition>
+                                            <RowDefinition Height="120"></RowDefinition>
+                                            <RowDefinition Height="120"></RowDefinition>
+                                            <RowDefinition/>
+                                        </Grid.RowDefinitions>
+                                        <GroupBox Grid.Row="0" IsEnabled="{Binding Enable}" Margin="10,10,10,10" Header="Rinse Before Entry">
+                                            <Grid>
+                                                <RadioButton Content="Enable" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Left"
+                  Command="{Binding AutoCurrentBasedFalseCommand}"  IsChecked="{Binding Recipe.RinseBeforeEntryEnable ,Mode=TwoWay}" Margin="18,-1,0,-6" ></RadioButton>
+                                                <RadioButton Content="Disable" Height="30" Width="65" VerticalContentAlignment="Center" HorizontalAlignment="Center" 
+                   Command="{Binding AutoCurrentBasedTrueCommand}"  IsChecked="{Binding Recipe.RinseBeforeEntryEnable,Mode=TwoWay,Converter={StaticResource boolReverseConverter}}" Margin="60,-1,0,-6" ></RadioButton>
+                                            </Grid>
+                                        </GroupBox>
+                                        <UserControls:GroupTextBoxControl Grid.Row="1"  Width="250" Title="Speed" Unit="rpm" MinValue="0" MaxValue="1000" Margin="10,20,10,20"
+IntValue="{Binding Recipe.IntervalRinseSpeed,Mode=TwoWay}" 
+ValidResult="{Binding PropertyValidResultDic[IntervalRinseSpeed],Mode=TwoWay}"/>
+                                        <UserControls:GroupTextBoxControl Grid.Row="2"  Width="250" Title="Time" Unit="sec" MinValue="0" MaxValue="100" Margin="10,20,10,20"
+IntValue="{Binding Recipe.IntervalRinseTime,Mode=TwoWay}" 
+ValidResult="{Binding PropertyValidResultDic[IntervalRinseTime],Mode=TwoWay}"/>
+                                        <UserControls:GroupDigitalBoxControl Grid.Row="3" Width="250"  Title="Z Offset" Unit="mm" MinValue="-100" MaxValue="100"  Margin="10,20,10,20"
+DigitalValue="{Binding Recipe.IntervalRinseZoffset,Mode=TwoWay}" 
+ValidResult="{Binding PropertyValidResultDic[IntervalRinseZoffset],Mode=TwoWay}"  />
+                                    </Grid>
+                                </GroupBox>
+
+                            </Grid>
                         </TabItem>
                     </TabControl>
                 </Grid>

+ 7 - 226
PunkHPX8_MainPages/Views/ResRecipeView.xaml

@@ -85,10 +85,7 @@
             <GroupBox Header="Metal" Grid.Row="2" Grid.Column="3" IsEnabled="{Binding Enable}">
                 <ComboBox Height="30" ItemsSource="{Binding ChemistryLst}" SelectedItem="{Binding Recipe.Metal,Mode=TwoWay}"/>
             </GroupBox>
-            <GroupBox Header="ChemistryVendor" Grid.Row="2" Grid.Column="4" IsEnabled="{Binding Enable}">
-                <TextBox Text="{Binding Recipe.ChemistryVendor,Mode=TwoWay}" Height="30" Width="195" VerticalAlignment="Center" HorizontalAlignment="Left"  
-                                                    HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Grid.Column="1" Margin="6,0,0,0"></TextBox>
-            </GroupBox>
+
         </Grid>
 
 
@@ -163,7 +160,7 @@
                                             <RowDefinition Height="75"></RowDefinition>
                                             <RowDefinition Height="75"></RowDefinition>
                                             <RowDefinition Height="75"></RowDefinition>
-                                            <RowDefinition Height="75"></RowDefinition>
+
                                         </Grid.RowDefinitions>
                                         <Grid.ColumnDefinitions>
                                             <ColumnDefinition Width="220"></ColumnDefinition>
@@ -171,15 +168,7 @@
                                         <UserControls:GroupTextBoxControl Grid.Column="0" Grid.Row="0" Title="CA Flow Set Point" Unit="L/min" MinValue="5" MaxValue="10" IntValue="{Binding Recipe.CAFlowSetPoint,Mode=TwoWay}" ValidResult="{Binding PropertyValidResultDic[CAFlowSetPoint],Mode=TwoWay}" Width="220"/>
                                         <UserControls:GroupTextBoxControl Grid.Column="0" Grid.Row="1" Title="CA Flow Rate Warning Low" Unit="L/min" MinValue="0" MaxValue="10" IntValue="{Binding Recipe.CAFlowRateWarningLow,Mode=TwoWay}" ValidResult="{Binding PropertyValidResultDic[CAFlowRateWarningLow],Mode=TwoWay}" Width="220"/>
                                         <UserControls:GroupTextBoxControl Grid.Column="0" Grid.Row="2" Title="CA Flow Rate Error Low" Unit="L/min" MinValue="0" MaxValue="10" IntValue="{Binding Recipe.CAFlowRateErrorLow,Mode=TwoWay}" ValidResult="{Binding PropertyValidResultDic[CAFlowRateErrorLow],Mode=TwoWay}" Width="220"/>
-                                        <GroupBox Header="Idle Flow Enable" Grid.Column="0" Grid.Row="3" IsEnabled="{Binding Enable}">
-                                            <Grid>
-                                                <RadioButton Content="False" Height="35" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Right" 
-                                                         Command="{Binding IdleFlowEnableFalseCommand}" IsChecked="{Binding Recipe.IdleFlowEnable,Converter={StaticResource boolReverseConverter}}" Margin="0,15,40,0"></RadioButton>
-                                                <RadioButton Content="True" Height="35" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Left" 
-                                                         Command="{Binding IdleFlowEnableTrueCommand}" IsChecked="{Binding Recipe.IdleFlowEnable}" Margin="40,15,0,0" ></RadioButton>
-                                            </Grid>
-                                        </GroupBox>
-
+                                        
                                     </Grid>
 
                                 </GroupBox>
@@ -215,7 +204,7 @@
                                     <RowDefinition/>
                                 </Grid.RowDefinitions>
                                 <Grid.ColumnDefinitions>
-                                    <ColumnDefinition Width="480"/>
+                                    <ColumnDefinition Width="280"/>
                                     <ColumnDefinition Width="340"></ColumnDefinition>
                                     <ColumnDefinition Width="340"/>
                                 </Grid.ColumnDefinitions>
@@ -229,8 +218,7 @@
                                         </Grid.RowDefinitions>
                                         <Grid.ColumnDefinitions>
                                             <ColumnDefinition Width="200"></ColumnDefinition>
-                                            <ColumnDefinition Width="10"></ColumnDefinition>
-                                            <ColumnDefinition Width="*"></ColumnDefinition>
+                                  
                                         </Grid.ColumnDefinitions>
                                         <GroupBox Header="AN DI Replen Enable" Grid.Column="0" Grid.Row="0" IsEnabled="{Binding Enable}">
                                             <Grid>
@@ -243,13 +231,10 @@
                                         <UserControls:GroupTextBoxControl Grid.Column="0" Grid.Row="1" Title="AN DI Replen Time Rate" Unit="mL/day" MinValue="0" MaxValue="9000" IntValue="{Binding Recipe.ANDIReplenTimeRate,Mode=TwoWay}" ValidResult="{Binding PropertyValidResultDic[ANDIReplenTimeRate],Mode=TwoWay}" Width="200"/>
                                         <UserControls:GroupTextBoxControl Grid.Column="0" Grid.Row="2" Title="AN DI Replen Current Rate" Unit="mL/Ah" MinValue="0" MaxValue="9000" IntValue="{Binding Recipe.ANDIReplenCurrentRate,Mode=TwoWay}" ValidResult="{Binding PropertyValidResultDic[ANDIReplenCurrentRate],Mode=TwoWay}" Width="200"/>
 
-                                        <UserControls:GroupTextBoxControl Grid.Column="2" Grid.Row="0" Title="AN Level Error High" Unit="L" MinValue="0" MaxValue="60" IntValue="{Binding Recipe.ANLevelErrorHigh,Mode=TwoWay}" ValidResult="{Binding PropertyValidResultDic[ANLevelErrorHigh],Mode=TwoWay}" Width="200"/>
-                                        <UserControls:GroupTextBoxControl Grid.Column="2" Grid.Row="1" Title="Reservoir AN Level" Unit="L" MinValue="0" MaxValue="60" IntValue="{Binding Recipe.ReservoirANLevel,Mode=TwoWay}" ValidResult="{Binding PropertyValidResultDic[ReservoirANLevel],Mode=TwoWay}" Width="200"/>
-                                        <UserControls:GroupTextBoxControl Grid.Column="2" Grid.Row="2" Title="AN Level Warning Low" Unit="L" MinValue="0" MaxValue="60" IntValue="{Binding Recipe.ANLevelWarningLow,Mode=TwoWay}" ValidResult="{Binding PropertyValidResultDic[ANLevelWarningLow],Mode=TwoWay}" Width="200"/>
-                                        <UserControls:GroupTextBoxControl Grid.Column="2" Grid.Row="3" Title="AN Level Error Low" Unit="L" MinValue="0" MaxValue="60" IntValue="{Binding Recipe.ANLevelErrorLow,Mode=TwoWay}" ValidResult="{Binding PropertyValidResultDic[ANLevelErrorLow],Mode=TwoWay}" Width="200"/>
+                                      
                                     </Grid>
                                 </GroupBox>
-                                <GroupBox  Header="Flow Rate" Grid.Row="0" Grid.Column="1" Grid.RowSpan="3" Margin="80,10,10,10" Padding="10">
+                                <GroupBox  Header="Flow Rate" Grid.Row="0" Grid.Column="1" Grid.RowSpan="3" Margin="30,10,30,10" Padding="10">
                                     <Grid>
                                         <Grid.RowDefinitions>
                                             <RowDefinition Height="75"></RowDefinition>
@@ -264,213 +249,9 @@
                                         <UserControls:GroupDigitalBoxControl Grid.Column="0" Grid.Row="1" Title="AN Flow Rate Warning Low" Unit="L/min" MinValue="0" MaxValue="1" DigitalValue="{Binding Recipe.ANFlowRateWarningLow,Mode=TwoWay}" ValidResult="{Binding PropertyValidResultDic[ANFlowRateWarningLow],Mode=TwoWay}" Width="220"/>
                                         <UserControls:GroupDigitalBoxControl Grid.Column="0" Grid.Row="2" Title="AN Flow Rate Error Low" Unit="L/min" MinValue="0" MaxValue="1" DigitalValue="{Binding Recipe.ANFlowRateErrorLow,Mode=TwoWay}" ValidResult="{Binding PropertyValidResultDic[ANFlowRateErrorLow],Mode=TwoWay}" Width="220"/>
                                     </Grid>
-
-                                </GroupBox>
-                                <GroupBox Header="Cross Dose" Grid.Row="0" Grid.Column="3" Grid.RowSpan="4" Margin="80,10,10,0" Padding="10">
-                                    <Grid>
-                                        <Grid.RowDefinitions>
-                                            <RowDefinition Height="75"></RowDefinition>
-                                            <RowDefinition Height="75"></RowDefinition>
-                                            <RowDefinition Height="75"></RowDefinition>
-                                            <RowDefinition Height="75"></RowDefinition>
-                                        </Grid.RowDefinitions>
-                                        <Grid.ColumnDefinitions>
-                                            <ColumnDefinition Width="220"></ColumnDefinition>
-                                        </Grid.ColumnDefinitions>
-                                        <GroupBox Header="Time Based" Grid.Row="0" IsEnabled="{Binding Enable}">
-                                            <Grid>
-                                                <Grid.ColumnDefinitions>
-                                                    <ColumnDefinition Width="73*"/>
-                                                    <ColumnDefinition Width="135*"/>
-                                                </Grid.ColumnDefinitions>
-                                                <RadioButton Content="False" Height="35" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Right" 
-                                                             Command="{Binding TimeBasedFalseCommand}"  IsChecked="{Binding Recipe.TimeBased,Converter={StaticResource boolReverseConverter},Mode=TwoWay}" Margin="0,16,40,2" Grid.Column="1"></RadioButton>
-                                                <RadioButton Content="True" Height="35" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Left" 
-                                                             Command="{Binding TimeBasedTrueCommand}"  IsChecked="{Binding Recipe.TimeBased,Mode=TwoWay}" Margin="40,16,0,2" Grid.ColumnSpan="2" ></RadioButton>
-                                            </Grid>
-                                        </GroupBox>
-                                        <GroupBox Grid.Row="1" Header="CrossDoseTimeRate" IsEnabled="{Binding Enable}">
-                                            <Grid>
-                                                <Rectangle Fill="Transparent" Stroke="Transparent" StrokeThickness="1" HorizontalAlignment="Left" 
-                           VerticalAlignment="Top" Width="435" Height="36" Margin="10,0,0,0"/>
-                                                <Control:IntegerTextBox Value="{Binding Recipe.CrossDoseTimeRate,Mode=TwoWay}" Height="30" VerticalAlignment="Top"  Margin="18,3,55,0" Width="135"/>
-                                                <Label Content="mL/day" HorizontalAlignment="Right" VerticalAlignment="Top" Height="30" Width="55" Margin="0,3,0,0"></Label>
-                                            </Grid>
-                                        </GroupBox>
-                                        <GroupBox Header="Current Based" Grid.Row="2" IsEnabled="{Binding Enable}">
-                                            <Grid>
-                                                <Grid.ColumnDefinitions>
-                                                    <ColumnDefinition Width="73*"/>
-                                                    <ColumnDefinition Width="135*"/>
-                                                </Grid.ColumnDefinitions>
-                                                <RadioButton Content="False" Height="35" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Right" 
-                                                             Command="{Binding CurrentBasedFalseCommand}"  IsChecked="{Binding Recipe.CurrentBased,Converter={StaticResource boolReverseConverter},Mode=TwoWay}" Margin="0,16,40,2" Grid.Column="1"></RadioButton>
-                                                <RadioButton Content="True" Height="35" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Left" 
-                                                             Command="{Binding CurrentBasedTrueCommand}"  IsChecked="{Binding Recipe.CurrentBased,Mode=TwoWay}" Margin="40,16,0,2" Grid.ColumnSpan="2" ></RadioButton>
-                                            </Grid>
-                                        </GroupBox>
-                                        <GroupBox Grid.Row="3" Header="CrossDoseCurrentRate" IsEnabled="{Binding Enable}">
-                                            <Grid>
-                                                <Rectangle Fill="Transparent" Stroke="Transparent" StrokeThickness="1" HorizontalAlignment="Left" 
-                           VerticalAlignment="Top" Width="435" Height="36" Margin="10,0,0,0"/>
-                                                <Control:IntegerTextBox Value="{Binding Recipe.CrossDoseCurrentRate,Mode=TwoWay}" Height="30" VerticalAlignment="Top"  Margin="18,3,55,0" Width="135"/>
-                                                <Label Content="mL/Ah" HorizontalAlignment="Right" VerticalAlignment="Top" Height="30" Width="55" Margin="0,3,0,0"></Label>
-                                            
-                                            </Grid>
-                                        </GroupBox>
-                                        
-
-                                    </Grid>
-                                </GroupBox>
-                            </Grid>
-                        </TabItem>
-                        <TabItem Header="Options">
-                            <Grid>
-                                <Grid.RowDefinitions>
-                                    <RowDefinition Height="130"></RowDefinition>
-                                    <RowDefinition Height="85"></RowDefinition>
-                                    <RowDefinition Height="110"></RowDefinition>
-                                    <RowDefinition Height="85"></RowDefinition>
-                                    <RowDefinition/>
-                                </Grid.RowDefinitions>
-                                <Grid.ColumnDefinitions>
-                                    <ColumnDefinition Width="610"></ColumnDefinition>
-                                    <ColumnDefinition Width="340"></ColumnDefinition>
-                                    <ColumnDefinition Width="340"/>
-                                </Grid.ColumnDefinitions>
-                                <GroupBox Header="Burn In" Grid.Row="0" Grid.Column="0" Grid.RowSpan="5" Margin="10 10 10 10" Padding="10" >
-                                    <Grid>
-                                        <Grid.RowDefinitions>
-                                            <RowDefinition Height="75"></RowDefinition>
-                                            <RowDefinition Height="*"></RowDefinition>
-
-                                        </Grid.RowDefinitions>
-                                        <Grid.ColumnDefinitions>
-                                            <ColumnDefinition Width="200"></ColumnDefinition>
-                                            <ColumnDefinition Width="115"></ColumnDefinition>
-                                            <ColumnDefinition Width="220"></ColumnDefinition>
-                                        </Grid.ColumnDefinitions>
-                                        <GroupBox Header="Burn In Enable" Grid.Column="0" Grid.Row="0" IsEnabled="{Binding Enable}">
-                                            <Grid>
-                                                <RadioButton Content="False" Height="35" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Right" 
-                                                         IsChecked="{Binding Recipe.BurnInEnable,Converter={StaticResource boolReverseConverter},Mode=TwoWay}" Margin="0,16,26,2"></RadioButton>
-                                                <RadioButton Content="True" Height="35" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Left" 
-                                                         IsChecked="{Binding Recipe.BurnInEnable,Mode=TwoWay}" Margin="26,16,0,2" ></RadioButton>
-                                            </Grid>
-                                        </GroupBox>
-                                        <GroupBox Header="Method" Grid.Row="1" Grid.Column="0" Grid.RowSpan="4" Grid.ColumnSpan="2" Padding="10" IsEnabled="{Binding Enable}">
-                                            <Grid>
-                                                <Grid.RowDefinitions>
-                                                    <RowDefinition Height="70"></RowDefinition>
-                                                    <RowDefinition Height="70"></RowDefinition>
-                                                    <RowDefinition Height="70"></RowDefinition>
-                                                    <RowDefinition Height="*"></RowDefinition>
-
-                                                </Grid.RowDefinitions>
-                                                <Grid.ColumnDefinitions>
-                                                    <ColumnDefinition Width="80"></ColumnDefinition>
-                                                    <ColumnDefinition Width="200"></ColumnDefinition>
-                                                </Grid.ColumnDefinitions>
-
-                                                <RadioButton Grid.Row="0" Grid.Column="0" Content="Idle Time" Height="35" Width="80" VerticalContentAlignment="Center" HorizontalAlignment="Left" 
-                                                        IsChecked="{Binding Recipe.IdleTime,Mode=TwoWay}" Margin="0,15,0,0" ></RadioButton>
-
-                                                
-                                                <RadioButton  Grid.Row="1" Grid.Column="0" Content="Charge" Height="35" Width="80" VerticalContentAlignment="Center" HorizontalAlignment="Left" 
-                                                        IsChecked="{Binding Recipe.Charge,Mode=TwoWay}" Margin="0,15,0,0" ></RadioButton>
-
-
-                                                <RadioButton Grid.Row="2" Grid.Column="0" Content="Cycles" Height="35" Width="80" VerticalContentAlignment="Center" HorizontalAlignment="Left" 
-                                                        IsChecked="{Binding Recipe.Cycles,Mode=TwoWay}" Margin="0,15,0,0" ></RadioButton>
-
-                                                
-                                                <RadioButton Grid.Row="3" Grid.Column="0" Content="Start Time" Height="35" Width="80" VerticalContentAlignment="Center" HorizontalAlignment="Left" 
-                                                        IsChecked="{Binding Recipe.StartTime,Mode=TwoWay}" Margin="0,15,0,0" ></RadioButton>
-                                               
-                                                <UserControls:GroupTextBoxControl Grid.Column="1" Grid.Row="0" IsEnabled="{Binding Recipe.IdleTime}"  Title="Burn In Time" Unit="min" MinValue="60" MaxValue="1440" IntValue="{Binding Recipe.BurnInTime,Mode=TwoWay}" ValidResult="{Binding PropertyValidResultDic[BurnInTime],Mode=TwoWay}" Width="200"/>
-
-                                                <UserControls:GroupTextBoxControl Grid.Column="1" Grid.Row="1" IsEnabled="{Binding Recipe.Charge}" Title="Burn In Current" Unit="Ah" MinValue="0" MaxValue="5000" IntValue="{Binding Recipe.BurnInCurrent,Mode=TwoWay}" ValidResult="{Binding PropertyValidResultDic[BurnInCurrent],Mode=TwoWay}" Width="200"/>
-                                                <UserControls:GroupTextBoxControl Grid.Column="1" Grid.Row="2" IsEnabled="{Binding Recipe.Cycles}" Title="Burn In Cycles" Unit="" MinValue="0" MaxValue="9000" IntValue="{Binding Recipe.BurnInCycles,Mode=TwoWay}" ValidResult="{Binding PropertyValidResultDic[BurnInCycles],Mode=TwoWay}" Width="200"/>
-                                                <Grid Grid.Column="1" Grid.Row="3">
-                                                    <wfi:WindowsFormsHost Margin="5,0,0,0" FontSize="14" FontFamily="Arial" Width="170" Height="22" VerticalAlignment="Center" IsEnabled="{Binding Recipe.StartTime}">
-                                                        <wf:DateTimePicker x:Name="wfTimeFrom" Value="2011-8-1" CustomFormat="HH:mm:ss" Format="Time" ShowUpDown="True"></wf:DateTimePicker>
-                                                    </wfi:WindowsFormsHost>
-                                                </Grid>
-                                            </Grid>
-                                        </GroupBox>
-                                        <GroupBox Header="Idel Time Options" Grid.Row="1" Grid.Column="2" Padding="10" Margin="10,0,-22,110" >
-                                            <Grid>
-                                                <Grid.RowDefinitions>
-                                                    <RowDefinition Height="70"></RowDefinition>
-                                                    <RowDefinition Height="70"></RowDefinition>
-                                                </Grid.RowDefinitions>
-                                                <Grid.ColumnDefinitions>
-                                                    <ColumnDefinition Width="200"></ColumnDefinition>
-                                                </Grid.ColumnDefinitions>
-                                                <GroupBox Header="Burn In Current Limit Enable" Grid.Column="0" Grid.Row="0" IsEnabled="{Binding Enable}">
-                                                    <Grid>
-                                                        <RadioButton Content="False" Height="35" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Right" 
-                                                         IsChecked="{Binding Recipe.BurnInCurrentLimitEnable,Converter={StaticResource boolReverseConverter},Mode=TwoWay}" Margin="0,15,40,0"></RadioButton>
-                                                        <RadioButton Content="True" Height="35" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Left" 
-                                                         IsChecked="{Binding Recipe.BurnInCurrentLimitEnable,Mode=TwoWay}" Margin="40,15,0,0" ></RadioButton>
-                                                    </Grid>
-                                                </GroupBox>
-                                                <UserControls:GroupTextBoxControl Grid.Column="0" Grid.Row="1" Title="Burn In Min Current Limit" Unit="A" MinValue="0" MaxValue="10" IntValue="{Binding Recipe.BurnInMinCurrentLimit,Mode=TwoWay}" ValidResult="{Binding PropertyValidResultDic[BurnInMinCurrentLimit],Mode=TwoWay}" Width="200"/>
-
-                                            </Grid>
-                                        </GroupBox>
-
-                                    </Grid>
-                                </GroupBox>
-
-                                <GroupBox Visibility="Hidden" Header="MicroCurrentRecipe" Grid.Row="0" Grid.Column="2" Grid.RowSpan="4" Margin="80 10 10 10" Padding="10">
-                                    <Grid>
-                                        <Grid.RowDefinitions>
-                                            <RowDefinition Height="75"></RowDefinition>
-                                            <RowDefinition Height="75"></RowDefinition>
-                                            <RowDefinition Height="75"></RowDefinition>
-                                            <RowDefinition Height="75"></RowDefinition>
-                                            <RowDefinition Height="75"></RowDefinition>
-                                        </Grid.RowDefinitions>
-                                        <Grid.ColumnDefinitions>
-                                            <ColumnDefinition Width="220"></ColumnDefinition>
-                                        </Grid.ColumnDefinitions>
-
-                                    </Grid>
-
-                                </GroupBox>
-                                <GroupBox  Header="Chemical Maintenance Module (CMM)" Grid.Row="0" Grid.Column="1" Grid.RowSpan="5" Margin="80 10 10 0 " Padding="10">
-                                    <Grid>
-                                        <Grid.RowDefinitions>
-                                            <RowDefinition Height="70"></RowDefinition>
-                                            <RowDefinition Height="75"></RowDefinition>
-                                            <RowDefinition Height="75"></RowDefinition>
-                                            <RowDefinition Height="75"></RowDefinition>
-                                            <RowDefinition Height="75"></RowDefinition>
-                                        </Grid.RowDefinitions>
-                                        <Grid.ColumnDefinitions>
-                                            <ColumnDefinition Width="220"></ColumnDefinition>
-                                        </Grid.ColumnDefinitions>
-
-                                        <GroupBox Header="CMM Enable" Grid.Column="0" Grid.Row="0" IsEnabled="{Binding Enable}">
-                                            <Grid>
-                                                <RadioButton Content="False" Height="35" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Right" 
-                                                         IsChecked="{Binding Recipe.CMMEnable,Converter={StaticResource boolReverseConverter}}" Margin="0,15,40,0"></RadioButton>
-                                                <RadioButton Content="True" Height="35" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Left" 
-                                                         IsChecked="{Binding Recipe.CMMEnable}" Margin="40,15,0,0" ></RadioButton>
-                                            </Grid>
-                                        </GroupBox>
-                                        <UserControls:GroupDigitalBoxControl Grid.Column="0" Grid.Row="1" Title="CMM Set Point" Unit="A" MinValue="0.1" MaxValue="10" DigitalValue="{Binding Recipe.CMMCurrentSetPoint,Mode=TwoWay}" ValidResult="{Binding PropertyValidResultDic[CMMCurrentSetPoint],Mode=TwoWay}" Width="220"/>
-                                        <UserControls:GroupTextBoxControl Grid.Column="0" Grid.Row="2" Title="CMM Current Fault %" Unit="%" MinValue="3" MaxValue="100" IntValue="{Binding Recipe.CMMCurrentFaultPercent,Mode=TwoWay}" ValidResult="{Binding PropertyValidResultDic[CMMCurrentFaultPercent],Mode=TwoWay}" Width="220"/>
-                                        <UserControls:GroupTextBoxControl Grid.Column="0" Grid.Row="3" Title="CMM Current Warning %" Unit="%" MinValue="3" MaxValue="100" IntValue="{Binding Recipe.CMMCurrentWarningPercent,Mode=TwoWay}" ValidResult="{Binding PropertyValidResultDic[CMMCurrentWarningPercent],Mode=TwoWay}" Width="220"/>
-                                        <UserControls:GroupTextBoxControl Grid.Column="0" Grid.Row="4" Title="CMM Min Voltage" Unit="V" MinValue="0" MaxValue="10" IntValue="{Binding Recipe.CMMMinVoltage,Mode=TwoWay}" ValidResult="{Binding PropertyValidResultDic[CMMMinVoltage],Mode=TwoWay}" Width="220"/>
-
-                                    </Grid>
                                 </GroupBox>
                             </Grid>
-
                         </TabItem>
-                    
                     </TabControl>
                 </Grid>
             </Grid>

+ 1 - 1
PunkHPX8_MainPages/Views/VpwRecipeView.xaml

@@ -82,7 +82,7 @@
                 <Label Content="{Binding Recipe.SaveDate}" Height="30" Width="195" VerticalAlignment="Center" HorizontalAlignment="Left" Foreground="White" Background="Gray" 
                                             HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Grid.Column="1" Margin="6,0,0,0"></Label>
             </GroupBox>
-            <GroupBox Header="Total TIme" IsEnabled="{Binding Enable}"  Grid.Row="2" Grid.Column="3">
+            <GroupBox Header="Total Time" IsEnabled="{Binding Enable}"  Grid.Row="2" Grid.Column="3">
                 <Label Content="{Binding Recipe.TotalTime}" Height="30" Width="195" VerticalAlignment="Center" HorizontalAlignment="Left" Foreground="White" Background="Gray" 
                              HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Grid.Column="1" Margin="6,0,0,0"></Label>
             </GroupBox>

+ 1 - 1
PunkHPX8_RT/Config/System.sccfg

@@ -5,7 +5,7 @@
 		<config default="0.11" name="RampStepSize" nameView="RampStepSize" description="内外温度差的误差" max="1" min="0.01" paramter="" tag="" unit="" type="Double" visible="true"/>
 		<config default="5" name="TemeratureDelatLimit" nameView="TemeratureDelatLimit" description="TC温度差报警值" max="10" min="1" paramter="" tag="" unit="" type="Double" visible="true"/>
 		<config default="10." name="ControlIPFilter" description="Control IP Config" max="0" min="0" paramter="" tag="" unit="" type="String" />
-		<config default="Any,SnAg,Cu,Ni,Au" name="ChemistryList" nameView="Chemistry List" description="化学液集合" max="" min="" paramter="" tag="" unit="" type="String" visible="true"/>
+		<config default="Any,SnAg,Cu,Ni" name="ChemistryList" nameView="Chemistry List" description="化学液集合" max="" min="" paramter="" tag="" unit="" type="String" visible="true"/>
 		<config default="1,2,3,4" name="LSType" nameView="Lis Seal Type" description="Lip Seal类型" max="" min="" paramter="" tag="" unit="" type="String" visible="true"/>
 		<config default="200" name="WaferSize" nameView="Wafer Size" description="Wafer尺寸" max="300" min="0" paramter="" tag="" unit="" type="Integer" visible="true"/>
 		<config default="0.1" name="Increment" nameView="Increment" description="步进" max="100" min="0" paramter="" tag="" unit="" type="Double" visible="true"/>

+ 4 - 4
PunkHPX8_Themes/UserControls/GroupDigitalBoxControl.xaml

@@ -16,11 +16,11 @@
         <GroupBox Grid.Row="3" Header="{Binding ElementName=self,Path=Title}" IsEnabled="{Binding Enable}">
             <Grid>
                 <Rectangle x:Name="RectangleSetPoint" Fill="Transparent" Stroke="Transparent" StrokeThickness="1" HorizontalAlignment="Left" 
-                           VerticalAlignment="Top" Width="435" Height="36" Margin="10,0,0,0"/>
-                <Control:NumbericTextBox Name="txtValue" Value="{Binding ElementName=self,Path=DigitalValue,Mode=TwoWay}" Height="30" VerticalAlignment="Top"  Margin="18,3,55,0"/>
+                VerticalAlignment="Top" Width="435" Height="36" Margin="10,0,0,0"/>
+                <Control:NumbericTextBox Name="txtValue" Value="{Binding ElementName=self,Path=DigitalValue,Mode=TwoWay,StringFormat={}{0:F1}}" Height="30" VerticalAlignment="Top"  Margin="18,3,55,0"/>
                 <Label Content="{Binding ElementName=self,Path=Unit}" HorizontalAlignment="Right" VerticalAlignment="Top" Height="30" Width="55" Margin="0,3,0,0"></Label>
-                <Label Content="{Binding ElementName=self,Path=MinValue}" HorizontalAlignment="Left" Width="40" Margin="17,31,0,-9"/>
-                <Label Content="{Binding ElementName=self,Path=MaxValue}" HorizontalAlignment="Right" Width="40" Margin="0,31,30,-9"/>
+                <TextBlock Text="{Binding ElementName=self,Path=MinValue,StringFormat={}{0:F1}}" HorizontalAlignment="Left" Width="40" Margin="17,36,0,-9"/>
+                <TextBlock Text="{Binding ElementName=self,Path=MaxValue,StringFormat={}{0:F1}}" HorizontalAlignment="Right" Width="40" Margin="0,36,30,-9"/>
             </Grid>
         </GroupBox>
     </Grid>