namespace SHARP_CLAS_UI { #region Enum public enum LiftInSteps { S0000_WAIT, //Lift Load. S1000_LIFT_LOAD_START, S1100_TRAY_TRANSTER_POSITION_STAY_CHECK, S1200_ALIGN_TOP_BACKWARD, S1210_STACKER_BACKWARD, S1220_UNCLAMP, S1300_LIFT_UP, S1305_LIFT_UP_CHECK, S1310_LIFT_PITCH_DOWN, S1315_LIFT_PITCH_DOWN_CHECK, S1320_LIFT_PITCH_UP, S1325_LIFT_PITCH_UP_CHECK, S1330_LIFT_PITCH_LAST_UP, S1335_LIFT_PITCH_LAST_UP_CHECK, S1340_LIFT_DOWN, S1345_LIFT_DOWN_CHECK, S1350_TRAY_COUNT_SET, S1400_CLAMP, S1410_ALIGN_TOP_FORWARD, S1420_STACKER_FORWARD, S1500_TRAY_ID_READ_WAIT, S1510_TRAY_PANEL_DATA_SET, S1515_TRAY_PANEL_DATA_SET_CHECK, S1520_PORT_STATUS_CIM_SEND, S1525_PORT_STATUS_CIM_SEND_CHECK, S1530_PANEL_IN_DATA_CIM_SEND, S1535_PANEL_IN_DATA_CIM_SEND_CHECK, S1540_CIM_SERVER_RESULT_CHECK, S1999_LIFT_LOAD_END, //Lift Up. S2000_LIFT_UP_START, S2100_TRAY_TRANSTER_POSITION_STAY_CHECK, S2200_ALIGN_TOP_BACKWARD, S2210_STACKER_BACKWARD, S2220_UNCLAMP, S2300_LIFT_UP, S2305_LIFT_UP_CHECK, S2310_LIFT_PITCH_DOWN, S2315_LIFT_PITCH_DOWN_CHECK, S2320_LIFT_PITCH_UP, S2325_LIFT_PITCH_UP_CHECK, S2330_LIFT_PITCH_LAST_UP, S2335_LIFT_PITCH_LAST_UP_CHECK, S2340_LIFT_DOWN, S2345_LIFT_DOWN_CHECK, S2350_TRAY_COUNT_SET, S2400_CLAMP, S2410_ALIGN_TOP_FORWARD, S2420_STACKER_FORWARD, S2500_TRAY_ID_READ_WAIT, S2510_TRAY_PANEL_DATA_SET, S2515_TRAY_PANEL_DATA_SET_CHECK, S2520_PORT_STATUS_CIM_SEND, S2525_PORT_STATUS_CIM_SEND_CHECK, S2530_PANEL_IN_DATA_CIM_SEND, S2535_PANEL_IN_DATA_CIM_SEND_CHECK, S2540_CIM_SERVER_RESULT_CHECK, S2999_LIFT_UP_END, //Tray Unload S3000_TRAY_UNLOADING_START, S3100_CONVEYOR_LIFT_SENSOR_CHECK, S3200_UNCLAMP, S3210_STACKER_BACKWARD, S3220_ALIGN_TOP_BACKWARD, S3230_ALIGN_Y_FORWARD, S3240_ALIGN_X_BACKWARD, S3300_LIFT_DOWN, S3305_LIFT_DOWN_CHECK, S3400_CONVEYOR_UNLOAD, S3405_CONVEYOR_UNLOAD_CHECK, S3500_PORT_STATUS_CIM_SEND, S3505_PORT_STATUS_CIM_SEND_CHECK, S3999_TRAY_UNLOADING_END, } public enum LiftOutSteps { S0000_WAIT, //Tray Load S1000_LIFT_MOVE_START, S1100_CONVEYOR_LIFT_SENSOR_CHECK, S1110_TRAY_TRANSTER_POSITION_STAY_CHECK, S1200_ALIGN_TOP_BACKWARD, S1210_STACKER_BACKWARD, S1220_UNCLAMP, S1300_LIFT_MOVE, S1305_LIFT_MOVE_CHECK, S1310_ALIGN_TOP_FORWARD, S1320_CLAMP, S1400_TRAY_TRANSFER_PLACE_WAIT, S1410_LIFT_PITCH_DOWN, S1415_LIFT_PITCH_DOWN_CHECK, S1420_LIFT_PITCH_UP, S1425_LIFT_PITCH_UP_CHECK, S1430_LIFT_PITCH_LAST_UP, S1435_LIFT_PITCH_LAST_UP_CHECK, S1440_TRAY_SCRAP_CHECK, S1500_CLAMP, S1510_ALIGN_TOP_FORWARD, S1520_TRAY_ID_READ_WAIT, S1600_TRAY_PANEL_DATA_SET, S1605_TRAY_PANEL_DATA_SET_CHECK, S1610_PORT_STATUS_CIM_SEND, S1615_PORT_STATUS_CIM_SEND_CHECK, S1620_PANEL_IN_DATA_CIM_SEND, S1625_PANEL_IN_DATA_CIM_SEND_CHECK, S1999_LIFT_MOVE_END, //Tray Unload S2000_TRAY_UNLOADING_START, S2100_PANEL_REPORT_CIM_SEND, S2105_PANEL_REPORT_CIM_SEND_WAIT, S2110_PORT_STATUS_CIM_SEND, S2115_PORT_STATUS_CIM_SEND_WAIT, S2200_UNCLAMP, S2210_STACKER_BACKWARD, S2220_ALIGN_TOP_BACKWARD, S2300_CONVEYOR_LIFT_SENSOR_CHECK, S2310_ALIGN_Y_FORWARD, S2320_ALIGN_X_BACKWARD, S2400_LIFT_DOWN, S2405_LIFT_DOWN_CHECK, S2420_CONVEYOR_UNLOAD, S2425_CONVEYOR_UNLOAD_CHECK, S2500_PORT_STATUS_CIM_SEND, S2505_PORT_STATUS_CIM_SEND_CHECK, S2999_TRAY_UNLOADING_END, } public enum LiftHomeSteps { S0000_WAIT, S1000_STATUS_CHECK, S1100_CONVEYOR_HOME_CHECK, S1110_CONVEYOR_LIFT_SENSOR_CHECK, S1200_MOTOR_Z_HOME, S1205_MOTOR_Z_HOME_CHECK, S1300_MOVE_STAY_POSITION, S1305_POSITION_CHECK, S9999_END, } #endregion public abstract class Lift : Unit { #region Property public Axis MotorZ { get { return _motorZ; } set { _motorZ = value; } } public Aligner AlignerTop { get { return _alignerTop; } set { _alignerTop = value; } } public Clamper Clamper { get { return _clamper; } set { _clamper = value; } } public Stacker Stacker { get { return _stacker; } set { _stacker = value; } } public bool IsLiftLimitSensor1 { get { return equipment.Board_Control.IO_manager.Get_Input(_liftLimitSensor1); } } public bool IsLiftLimitSensor2 { get { return equipment.Board_Control.IO_manager.Get_Input(_liftLimitSensor2); } } public bool IsLiftInSensor1 { get { return equipment.Board_Control.IO_manager.Get_Input(_liftInSensor1); } } public bool IsLiftInSensor2 { get { return equipment.Board_Control.IO_manager.Get_Input(_liftInSensor2); } } public bool IsBcrReadBit { get { return _isBcrReadBit; } set { _isBcrReadBit = value; } } public override bool IsHomeComplete { get { return _motorZ.PowerOn && _motorZ.IsHomed && _motorZ.ErrorStop == false && isHomeComplete; } } public override bool IsExist { get { return IsLiftInSensor1 || IsLiftInSensor2 || IsLiftLimitSensor1 || IsLiftLimitSensor2; } } public abstract bool IsPanelEmpty { get; } public abstract bool IsPanelFull { get; } protected abstract double UpPosition { get; } public abstract double TrayInPosition { get; } public abstract double TrayWaitPosition { get; } public abstract string TrayID { get; set; } public bool IsFirstTray { get { return _isFirstTray; } set { _isFirstTray = value; } } #endregion #region Field private Axis _motorZ; private Aligner _alignerTop; private Clamper _clamper; private Stacker _stacker; private InputData _liftLimitSensor1; private InputData _liftLimitSensor2; private InputData _liftInSensor1; private InputData _liftInSensor2; private bool _isBcrReadBit; private bool _isFirstTray; protected int _trayCount; protected double _pitchPosition; #endregion #region Construct public Lift(Equipment equipment, MotorAxis motorZ, string unitName) : base(equipment, unitName) { _motorZ = equipment.Board_Control.Motors[motorZ]; _alignerTop = new Aligner(equipment); _clamper = new Clamper(equipment); _stacker = new Stacker(equipment); } public void Initialize(InputData liftLimitSensor1, InputData liftLimitSensor2, InputData liftInSensor1, InputData liftInSensor2) { _liftLimitSensor1 = liftLimitSensor1; _liftLimitSensor2 = liftLimitSensor2; _liftInSensor1 = liftInSensor1; _liftInSensor2 = liftInSensor2; } #endregion } }