using System; namespace SHARP_CLAS_UI { public enum AblationStageSteps { S0000_WAIT, S1000_PANEL_LOAD_START, S1100_MOVE_STAY_POSITION, S1105_POSITION_CHECK, S1200_PANEL_EXIST_CHECK, S1999_PANEL_LOAD_END, S2000_PANEL_ID_READ_START, S2100_MOVE_STAGE_BCR_POSITION, S2105_POSITION_CHECK, S2100_FINE_ALIGN_STATUS_CHECK, S2300_READ_BCR_START, S2310_READ_BCR_WAIT, S2999_PANEL_ID_READ_END, S3000_FINE_ALIGN_START, S3100_MOVE_STAGE_FINE_ALIGN_LEFT_POSITION, S3105_POSITION_CHECK, S3110_FINE_ALIGN_LEFT_START, S3120_FINE_ALIGN_LEFT_WAIT, S3200_MOVE_STAGE_FINE_ALIGN_RIGHT_POSITION, S3205_POSITION_CHECK, S3210_FINE_ALIGN_RIGHT_START, S3220_FINE_ALIGN_RIGHT_WAIT, S3300_FINE_ALIGN_CHECK, S3310_USER_COMMAND_START, S3320_USER_COMMAND_WAIT, S3999_FINE_ALIGN_END, S4000_ABLATION_START, S4100_MOVE_STAGE_ABLATION_LEFT_POSITION, S4105_POSITION_CHECK, S4110_ABLATION_STATUS_CHECK, S4120_ABLATION_LEFT_START, S4130_ABLATION_WAIT, S4200_MOVE_STAGE_ABLATION_RIGHT_POSITION, S4205_POSITION_CHECK, S4210_ABLATION_STATUS_CHECK, S4220_ABLATION_RIGHT_START, S4230_ABLATION_WAIT, S4999_ABLATION_END, S5000_PLASMA_START, S5100_MOVE_STAGE_PLASMA_LEFT_POSITION, S5105_POSITION_CHECK, S5110_PLASMA_STATUS_CHECK, S5120_PLASMA_LEFT_START, S5130_PLASMA_WAIT, S5200_MOVE_STAGE_PLASMA_RIGHT_POSITION, S5205_POSITION_CHECK, S5210_PLASMA_STATUS_CHECK, S5220_PLASMA_RIGHT_START, S5230_PLASMA_WAIT, S5999_PLASMA_END, S6000_PANEL_UNLOAD_START, S6100_MOVE_UNLOAD_POSITION, S6105_POSITION_CHECK, S6200_PANEL_EMPTY_CHECK, S6999_PANEL_UNLOAD_END, } public enum AblationStageHomeSteps { S0000_WAIT, S1000_STATUS_CHECK, S2000_Y_HOME_START, S2100_Y_HOME_CHECK, S3000_MOVE_LOAD_POSITION, S3100_POSITION_CHECK, S9999_END, } public abstract class AblationStage : Unit { #region Property public Axis MotorY { get { return _motorY; } set { _motorY = value; } } public VacuumStageCh2 Stage1 { get { return _stage1; } set { _stage1 = value; } } public VacuumStageCh2 Stage2 { get { return _stage2; } set { _stage2 = value; } } public abstract Panel_Info Panel1 { get; set; } public abstract Panel_Info Panel2 { get; set; } public override bool IsHomeComplete { get { return isHomeComplete && MotorY.IsHomed; } } public override bool IsExist { get { return Stage1.IsExist || Stage2.IsExist; } } #endregion #region Field private Axis _motorY; private VacuumStageCh2 _stage1; private VacuumStageCh2 _stage2; #endregion #region Construct public AblationStage(Equipment equipment, MotorAxis motorY, string unitName): base(equipment, unitName) { MotorY = equipment.Board_Control.Motors[motorY]; Stage1 = new VacuumStageCh2(equipment); Stage2 = new VacuumStageCh2(equipment); } #endregion } }